隨便寫了個日內策略,想限制一天內的交易次數為1次(多倉或者空倉,二選一,1次);但是測試了幾次發現,整個測試期間2年才1筆交易!
代碼如下,求解!!
VARIABLE:NUM=0;//統計交易次數用
MA1:MA(C,5);
MA2:MA(C,10);
BUYCOND:=CROSS(MA1,MA2);
BUYSHORTCOND:=CROSS(MA2,MA1);
IF TIME=OPENTIME(0) THEN NUM=0;//每天開盤時置0
IF TIME>091500 AND TIME<145500 AND HOLDING=0 AND NUM<=1 THEN //NUM<=1限制每天只能開倉1次
BEGIN
BUY(BUYCOND,1,MARKET);
NUM=NUM+1;//標記開倉一次
END
IF TIME>091500 AND TIME<145500 AND HOLDING=0 AND NUM<=1 THEN
BEGIN
BUYSHORT(BUYSHORTCOND,1,MARKET);
NUM=NUM+1;//標記開倉一次
END
IF TIME>=145500 THEN EXIT;//最后5分鐘平倉
察覺了2個問題:
1、不能用NUM<=1來表達,而要用NUM<CS,INPUT:CS(1,1,2,1);
但是為啥???NUM不能直接和常數進行比較?參數CS不是視為常數?
2、語法錯誤;NUM賦值語句掉了冒號;
IF TIME>=145500 THEN EXIT;//最后5分鐘平倉
這個不叫最后5分鐘平倉
把這句刪了,添加:
if time<=145500 then begin
sell(1,0,market);
sellshort(1,0,market);
end
if time=closetime(0) then num:=0;