自動交易和回測不一致

  •   382 
  • 最後發表   Shu(Sharon)  2022 四月 26
Shu(Sharon) 發文於   2022/04/19

       我已經用自動交易大約10多天了,發現每天的實單交易和回測都不一樣,就拿4/18舉例好了,執行頻率都是5分鐘,條件是以突破前三根k棒的高低點,且當根k是紅k才進場做多,當根k是黑k才進場做空。

       結果自動交易實單是在 8:45:01,根本當根5分K都還沒收盤就進場放空,連1分k也沒收紅。

    然而今天回測卻又是照著腳本跑,開盤並沒有放空,到了9:09, 漲破前三根K高點,且收紅K才做多。

    腳本如下:

    我的問題是:

    1·照理說以5分鐘為執行頻率,"close<open" 是不是要等5分K收盤,才能判斷是否要進場,怎麼可能在8:45:01進場?

    2.即使以5分鐘為執行頻率,在"print"資料夾打開的檔案,卻是每1分鐘都列印出來,我本來推測自動交易錯用了1分K,可      

       是這樣也不可能在8:46以前就下單。

   3.同樣的腳本,在實單是8:45:01 下空單16894, 回測卻是在9:09下多單16929,  不知道哪一個才是照著腳本下單?

XQ小幫手 發文於   2022/04/26

Hello Shu(Sharon),

 

1.如果您有勾選逐筆洗價的話,那就不會是K棒結束時運算,而是每次洗價時運算。

所以第一次洗價在 8:45:01,運算出來的結果是符合進場條件的話是會下單的。

 

2.即時的逐筆洗價 => 每次洗價時腳本運算 (快市時可能沒辦法作到每筆)。

回測的逐筆洗價:

1分鐘頻率 => 用1分鐘Bar的OHLC來模擬1分鐘Bar的洗價。

其他頻率 => 用1分鐘Bar來模擬其他頻率的洗價。

就您描述而言,小幫手推測應該是回測時使用逐筆洗價,所以才會是每一分鐘印出一次。(如果是即時洗價的話,就會是每次執行腳本時印出,一分鐘可能會有數次)

 

3.如同上面描述,即時洗價的狀態下回測和即時運作是有差別的。

所以是有可能發生即時的狀況觸發,但回測卻沒有觸發的狀況。

若要讓兩者更為接近的話,建議您不要使用逐筆洗價,或是用 [1] 取上一筆的資訊來作進場判斷。

這樣兩者的進場應該就會更為貼近相同。

發表回覆
Close