[教學]AB 的自動交易樂章 -- 三部曲 (AFL基本邏輯)
本帖最後由 王子 於 10-1-15 09:10 PM 編輯呃~ 王子! 我邏輯很差很差~~怎麼辦呢?
恩 以正常人來說都有一定基本的邏輯的...不用太擔心!!
在程式交易裡我們只要會 1*1 =1 1*0=0 就好了!夠簡單吧!
就只有「成立」或「不成立」而已...所以別想太多!
在 AB 之中有下列的基本邏輯,重點也是想辦法來判斷當下的值成不成立
一、 IF 判斷
if (判斷式)
{
程式碼
}
else
{
程式碼
}
這個是最常用的 就是判斷!沒有什麼好說...
二、switch
switch ( 參數)
{
case判斷1: statement;
break;
case判斷2 : statement;
...
break;
case判斷N : statement;
break;
default :
statement;
break;
}
這一個呢? 就是判斷的進階版,如果我們喜歡寫又臭又長的義式判式的也是可以啦!只是用上面這種方法比較好
直接輸入判斷的參數,然後根據不同的判斷撰寫相關的情況..
三、for 迴圈
val[ 0 ] = Close[ 0 ];
for( i =
1; i < BarCount; i++ )
{
val [ i ] = 0.1 * Close[ i ] + 0.9 * val[ i - 1 ];
}
這個就是跑一個迴圈,不斷的計算出相關的值!
以上面例子來說,定義一個陣列 在每一個根 K棒結束的時候累加 0.1的收值 + 0.9上根Val的值
一直到所有 K棒結束 (BarCount)
迴圈 除了上述這個之外,還有另外二個 do while 與 while ,大家別學這麼多! 懂一個夠用就好XD~
▲▲_____________________ 以上就是邏輯!!
現在用一個小小例子來說明如何寫一個 EMA Function
function EMA0(A, p)
{
r = a;
ep = 2/(p+1);
for(i = 1; i < BarCount; i++)
{
r = r + (a - r) * ep;
}
return r;
}
上面就是一個 EMA 它接受二個參數,我們取二絛快慢 EMA (周期分別是 8 和 21 )
fast = EMA0(C, 8));
slow = EMA0(C, 21);
當程式呼叫該 EMAO 程式,並傳這二個參數時它就依上述我們所寫的迴圈分別跑數一個數值回來
OK... 接下來... 我們買進和賣出的絛件就是
Buy = Cross(fast, slow);
Sell = Cross(slow, fast);
快的那絛EMA 由下往上穿過時買進
快的那絛EMA 由上往下穿過時賣出
簡單的程式就這樣!! 總之我們就是需要不斷的計算是條件有沒有符合 ...
有符合就動作!! 好清楚!謝謝。
請問,afl的程式裡,switch裡的case敘述後面要不要加上break;呢? 要要!!不然它不會跳出去哦~ 還有一個問題。
從上面看來,a的0是指今天,那昨天呢?是1或是-1? 我下個月在試
現在我在忙其他東西中
SO都在替別人準備東西中~我有新客戶要設新場{:7_450:}
辛苦你了王子,我到時一定會逐一跟著做的!! {:4_153:}很像C語言........... 回復 4# 綠茶妹
可以用Ref function. Ref(Array,Shift). 譬如 Ref(C,-1) 就會提供 昨天收盤的價錢. 回復綠茶妹
可以用Ref function. Ref(Array,Shift). 譬如 Ref(C,-1) 就會提供 昨天收盤的價錢. ...
flamshun 發表於 10-2-26 02:34 PM http://www.coco-in.net/images/common/back.gif
{:5_261:} 謝謝。記下來。 感謝分享...................
頁:
[1]