回測結果差異

  •   124 
  • 最後發表   rocky  2024 六月 12
rocky 發文於   2024/06/06

1.if getField("委買均", "D") > getField("委賣均", "D") and Position = 0

  then setposition(1);

  if getField("委買均", "D") < getField("委賣均", "D") and Position >= 1

  then setposition(0);

2.if (getField("累計委買","D") / getField("累委買筆","D")) > (getField("累計委賣","D") / getField("累委賣筆","D"))

    and Position = 0

   then setposition(1);

  if (getField("累計委買","D") / getField("累委買筆","D")) < (getField("累計委賣","D") / getField("累委賣筆","D")) and   Position >= 1

 then setposition(0);

請問上述的程式有何不同,回測出來的結果差異很大!

 還有一個問題就是把getField("三大法人交易買口", "D") 、 getField("三大法人交易賣口", "D")放在自動交易程式中,有時會出現異常,要等更新完資料才能使用,這是正常的嗎?還是只有第一次執行才會這樣,只要一直開著就會正常執行?

附加文件

XS小編 發文於   2024/06/12

 Hello rocky,

 

委買均 / 委賣均 欄位只有提供日頻率,且由於資料對位的原因導致使用當期[0]的話在回測中會取得對應日期結束時 (也就是未來) 的資料。

故正確的使用法應該為 getField("委買均", "D")[1] (取昨日的資料),這樣才能夠避開在盤中就取得收盤後的資料。

 

而累計的資料有對應的分鐘頻率資料,故可以模擬當日分鐘頻率下資料的變化。

使用 [0] 能夠取得當時的資料。

 

您可以在腳本中將欄位印出確認,會比較好理解。

 

就小編所知 三大法人交易買口 和 三大法人交易賣口 都只有日頻率,要等盤後資料更新後才會有當日的資料。

故在盤中使用應該要取 [1] 才對。

發表回覆
Close