請問變數有使用次數的限制嗎?

  •   393 
  • 最後發表   陳成功之必勝  2024 十月 17
陳成功之必勝 發文於   2024/01/02

請問變數有使用次數的限制嗎?

為何下面這個測試從2023年1月1日開始測試頻率60分自動交易回測,只能成交15筆,第15筆開始,就會失效,買進之後,就不賣出?在其它地方只要用到variable變數比較,好像就會出現這種問題,但用在計算布林通道的變數好像沒有這種問題,是我的用法錯誤了嗎?

variable: k(0); 

if k<>0 then k=k+1;

 

if  position=0  then begin   

    setposition(-1,market);       

k=1;    

end;    

if position=-1 and k=5 then begin

  setposition(0,market);      

k=0;   

end;   

 

附加文件

排序方式: 標準 | 最新
XS小編 發文於   2024/01/03

Hello 陳成功之必勝,

 

變數不會有變數限制,但回測時有些狀況不會下單。

舉例來說,若當根Bar沒有成交量,或是當根Bar為交易期間的最後一根Bar時,就算該跟Bar符合條件系統也不會下單。

因為在策略實際運作時遇到這種狀況策略也不為下單,前者因為沒有洗價所以腳本不會運算,後者因為腳本計算時已經收盤。

 

這邊發生的狀況是後者,下出出場指令的Bar為 20230106 的 124500,此根Bar是日盤的最後一根。

雖然沒有出場,但變數已經被改回0,所以之後策略的狀況就會是 position = 1 但 k = 0,故策略不會再進出場。

建議您可以在腳本中加上 print 印出相關數值有助於檢察原因。

 

陳成功之必勝 發文於   2024/10/09

謝謝您的解答,上面第二段提到:

當根Bar為交易期間的最後一根Bar時,就算該跟Bar符合條件系統也不會下單。

這樣系統如何在60分鐘的執行頻率中進行自動交易?若策略是有連貫性的,剛好又在最後一根Bar

判斷要進出場,該如何執行?如我想讓前一天走勢判讀結果,在第一根Bar執行怎麼辦?

虎科大許教授 發文於   2024/10/10

使用逐筆洗價,控制每根K棒洗價一次,將程式改成每根K棒的第一個Tick判斷前一根K棒收盤時是否有訊號,若有訊號就送委託單。

XS小編 發文於   2024/10/17

Hello 陳成功之必勝,

 

小編補充,如果您使用非逐筆洗價,可以在隔天的第一根Bar時判斷前一天最後一根Bar條件是否符合,若有的話則補下單。

 

若是逐筆洗價的話,只要在最後一根Bar洗價時不是當天最後一個Tick,那麼都可以送出單。

如果是最後一個Tick的話,一樣可以比照非逐筆洗價的狀況,在隔天第一次洗價的時候判斷前一天收盤是否有符合。

 

至於要怎麼作,小編這邊簡單舉例:

condition1 = 進場條件;

if condition1 or (IsSessionFirstBar and condition1[1]) then setposition(1, market);

 

這樣在 condition1 或是 當天第一根Bar且前一根Bar condition1符合時 執行交易指令。

發表回覆
Close