老師您好
目前在測試做多程式但有一個困擾是會直接開盤買漲停價
如果要限制漲幅在5%以上不買進的話
交易語法要如何寫呢?
麻煩老師了
謝謝!!
老師您好
目前在測試做多程式但有一個困擾是會直接開盤買漲停價
如果要限制漲幅在5%以上不買進的話
交易語法要如何寫呢?
麻煩老師了
謝謝!!
Hello 阿棟伯,
您可以設一個條件為 (今開 - 昨收) / 昨收 小於 5%,符合此條件後才可進場。
舉例來說:
condition1 = (getfield("開盤價", "D") - getfield("收盤價", "D")[1]) / getfield("收盤價", "D")[1] <= 0.05;
condition2 = ...... //其他條件
condition3 = ...... //其他條件
if condition1 and condition2 and condition3 then setposition(1);
謝謝老師的回答
另外想請問在自動交易中,發現觸發策略進場了,之後也平倉了;後來又再觸發一次進場。想請教老師同一商品只要觸發進場一次就好的語法要如何寫呢?
Hello 阿棟伯,
您可以設定一個變數來記錄,例如說
var: IntrabarPersist entry_time(0);
//進場條件
condition1 = ...;
condition2 = ...;
condition3 = ...;
condition4 = entry_time = 0;
if condition1 and condition2 and condition3 and condition4 then setposition(1, market);
//出場條件
condition5 = ...;
condition6 = ...;
condition7 = ...;
if condition5 and condition6 and condition7 then begin
setposition(0, market);
entry_time = 1;
end;
這樣在出場後 entry_time 就會被設定為1,讓condition4不符合而不再進場。
老師好
我用了上述的方法跑回測就不會有交易紀錄
改回來後跑回測又會有平倉後再次進場的問題
還是說只能透過安控設定的選項去控制單一商品的部位限制及進場次數?
Hello 阿棟伯,
這應該是 entry_time 在預先執行筆數中就有被變動到,導致回測期間因 entry_time = 1 所以不會進場。
您可以在外面包一層時間判斷式即可,例如:
var: entry_time(0);
if date >= 20210428 then begin
if position > 0 then begin
setposition(0);
entry_time = 1;
end;
if entry_time = 0 then setposition(1);
end;
這段腳本就只會在20210428以後進場一次。
安控設定可以限制進場次數和最大部位,不過是以日作進場次數限制,隔日後還是會交易。
5 評論