AFL 腦力訓練 - 如何於每 n 次信號交易一次
假設:有一個簡單的買賣信號如下:
Buy=Cross(MACD(),Signal());
Sell=Cross(Signal(), MACD());
點子:由於這個信號在某一檔商品(symbol) 被 8 的太慘
於是希望使用 AFL 令這個信號每 2 次或是每 3 次發生時才執行一次
舉例:(以1分盤為例)
信號發生時間 1 = 08:46:00 --> 不執行
信號發生時間 2 = 09:06:00 --> 不執行
信號發生時間 3 = 09:16:00 --> 要執行
是確切的時間點決定要不要執行嗎?
還是某段時間決定要不要執行?
時間請參考 timenum() 作為條件去濾掉你不想要進場的時間
本帖最後由 keymaker 於 13-10-20 13:22 編輯
kilroy 發表於 13-10-20 13:18 static/image/common/back.gif
喔..........並不是確切的時間點執不執行..........
是說好像計數器.....計數到了指定次數才執行...........
例如, 計數 Buy 每出現 3 次就執行一次...接著 Buy 計數器歸零...
計數 Short 每出現 3 次就執行一次...接著 Short 計數器歸零...
keymaker 發表於 13-10-20 13:21
喔..........並不是確切的時間點執不執行..........
是說好像計數器.....計數到了指定次數才執行......... ...
for 迴圈拿來用吧
只是小弟好奇這樣的成效如何
當然,任何的突發奇想都是一個契機
試出來就是你的了
keymaker 發表於 13-10-20 13:21 static/image/common/back.gif
喔..........並不是確切的時間點執不執行..........
是說好像計數器.....計數到了指定次數才執行......... ...
就 Power language而言
If mod(count,3)=0 then......
只有能被3整除那次才執行.....
Do you mean the third signal every new day?
dn = DateNum();
newday = dn != Ref( dn, -1 );
//define your Buy rule:
Buy = ....;
//then you can add an additional rule like:
Buy = Buy AND Sum( Buy, BarsSince( newday ) ) == 3;
dn = DateNum();
NewDay = dn != Ref( dn, -1 );
Buy = Cross( MACD(), Signal() );
BuyNum = Cum( Buy );
DailyBuyNum = BuyNum - ValueWhen( NewDay, BuyNum );
Buy = Buy AND DailyBuyNum == 3;
joshsmi 發表於 13-10-21 04:31 static/image/common/back.gif
dn = DateNum();
NewDay = dn != Ref( dn, -1 );
I mean the 3rd signal every new minute,
so I think maybe just modify 'dn = DateNum()' to 'dn = TimeNum()' could reach my goal..
joshsmi 發表於 13-10-21 04:31 static/image/common/back.gif
dn = DateNum();
NewDay = dn != Ref( dn, -1 );
very good answer but sum() need more cpu power in some cases.
Be careful ~~
頁:
[1]