|
這些是我在‘共筆’中比較沒有看到的。從共筆中受益許多,在這裡慢慢回饋大家。希望有用。
1. Loop Vs array
大家都知道AFL最強大的地方就是array 語言。這對公式形態的trading 系統很好寫,但是對pattern 的就。。。
現在在寫wolfe wave的系統,簡單看一下附圖
有點像在找double top, 但是很多細節的規矩,反正就是要把這些點都找到。。這個就無法簡潔的pure array 來寫。 在yahoo forum上問了,看來也沒有好方法,只好自己全部bar loop 一遍。 現在問題來了,如果要做backtest, 那到底 AB 是怎麼做的呢,是每個bar 我的AFL code 都跑一遍。如果是這樣,每年假設200天,一天8小時,一年就是 1600 bars. 跑個5年就是 8000 bars, 每個bar 都 loop 一遍, 便是要跑 8000 * 8000. .. 小時就這樣,那就別想5min了。。。
官方文件對於backtest結構都沒有說。找了很久,總算找到。發現這是AB非常獨特的地方,希望設計的人都要知道。 那就是,AB backtest 是先對你的code, 對所有的bars, 全部算一次。 yes, 就一次。然後所有的data都算好了,在從第一個bar 開始往‘後’走,只算buy/sell/short/cover。 算到最後你的profit/loss 就是 backtest 結果。 這就是AB backtest 比其他的快很多的原因。 其他的系統(wealth lab等)都是,在模擬往後走的時候是碰到每個bar就你的code跑一遍,當然包括buy/sell.
這個基本architecture的差別對你在設計系統時,最大的差別就是,在AB系統,千萬別用到’look into the future'的function.
這也是為什麼在AFL 手冊上,每個有look into the future的function都會特別提到。
拿 zigzag 來說,wealth lab 也有,但是因為譬如在第 i個bar的時候正好是peak,wealth lab是一個一個跑,所以要再等2個bar才能確定是peak, 但是 AB 在跑zigzag的時候,‘未來’的兩個bar都在,所以在i 的時候就知道是peak,結果跑出來的哇賺好多錢,但是在實際trading的時候就沒這麼好了。。。
結論,
1. 寫code是一定要用 formula editor/tools/code check and profile 確認沒有 look into the future, 或是,如果check回報會多看兩個bar,就要看看你的系統是否可以接受。譬如,我的系統用到 ref(x, -1) (就是偷看一個bar), 我覺得可以接受,那就ok.
2. 如果非得要用到譬如是zigzag的function, 可以從參考這裡
http://www.mail-archive.com/amibroker@yahoogroups.com/msg50271.html
讓你的backtest很‘實際’。
另外google可以有15天 1-min backfill, 而且應該有台灣的股票。半自動化請參考
http://finance.groups.yahoo.com/group/amibroker/message/165871 |
評分
-
查看全部評分
|