無言的自動交易回測

  •   697 
  • 最後發表   帥哥元  2022 七月 15
帥哥元 發文於   2022/06/05

無言的回測,連續回測四次,結果都不同 回測內的交易分析,也與實際模擬不同 都不知道策略能不能拿去實際使用了

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/06/09

Hello 帥哥元,

 

您附上的圖解析度有點小所以不是很清楚,不過看起來每次回測執行商品有失敗的部分都不太相同,可能是此原因造成的。

小幫手會請工程師確認伺服器上的紀錄,但還是麻煩您提供 回測的相關腳本(選股跟交易)、不相同回測報表 以及 XQ Log 來檢驗。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。

您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

XQ小幫手 發文於   2022/06/10

Hello 帥哥元,

 

經工程師確認,由於回測的錯誤代碼有問題,導致原本因為商品計算逾時而不回傳的回測報表還是顯示出來。

目前相關人員已經調整完畢,應該不會在發生這種狀況,而是在計算逾時會直接顯示回測失敗。

若是要避免回測逾時的狀況,建議您可以縮小回測的商品數量和回測的時間長度。

 

至於選股選出商品異常的部分,需要麻煩您提供上述的相關資訊來檢驗才能確認。

感謝。

帥哥元 發文於   2022/07/08

觀察了好幾次,自動交易以  逐筆洗價  去回測,真的是有問題

策略是當沖,為了怕漲跌停被鎖死,所以寫了一段程式碼,在股價接近漲跌停時就出場

模擬測試 和 實單出場,自動交易都沒問題

但是回測報告卻是落差很大

以下案例:建達(6118) 回測的條件,我是設定  觸發即成交,程式碼如下

if AddSpread(Close, 2) = GetField("漲停價", "D") then SetPosition(0);

111/07/06當天的9:30,建達曾觸碰漲停,當下自動交易也觸發進場了

可是回測報告卻是在尾盤時間到才出場

導致實單是賠錢,回測績效卻是賺錢

帥哥元 發文於   2022/07/12

既然是回測,那成交價格與實際狀況有差,這點可以理解

但是成交價格與成交時間  與  實際  有落差,那就很令人費解了

日頻率下,逐筆洗價採一分K的OHLC來模擬,那也沒關係,畢竟有效能問題

但是以下幾張圖,說明了就算用一分K的OHLC來模擬逐筆洗價,回測報告還是一樣有問題啊

以 111/07/11當天的鴻翊(3521)這檔股票來看,在9:03分的時候程式就已經觸發下單

用一分K的Low價格,也是應該會觸發程式的執行(程式碼在下圖中有)

但是回測報告很明顯的在9:03分的時候並未進場

XQ小幫手 發文於   2022/07/15

Hello 帥哥元,

 

1. 6118 7/5日收盤價為 33.25,7/6日的漲停價為 36.55。

7/6當日1分鐘Bar最高的收盤價會是在 120300 的 36.15,加2檔後為 36.25,不會碰觸到漲停價,所以小幫手用日頻率回測時是在 7/7 號才出場。

細節可以參考附圖。

即時執行時的逐筆洗價,會在每次洗價時運算 (快市時可能會沒辦法洗到每筆tick),所以可能會發生剛好在high的時候洗價,這樣的話 7/6 093000 的高 36.55 就會符合條件。

回測時如果是1分鐘逐筆洗價的話,若您設定為市價或更優的觸發價的話,是會在093000賣出。

 

 

2. 這部分小幫手要更正一下。

1分鐘頻率逐筆洗價 => 用1分鐘OHLC來模擬,1根1分鐘Bar計算4次。

其他頻率逐筆洗價 => 用1分鐘Bar來模擬,1根1分鐘Bar計算一次。

您可以用 print(date, time, currenttime, open, high, low, close); 來測試不同頻率的逐筆洗價即可得知。

所以這邊是會用1分鐘Bar的close而不是low來運算。

就圖片來看,是要在接下來的幾根收盤價才會下到 090300 的 low。

 

小幫手建議您在遇到問題時可以限用 print 將相關數值印出檢驗。

如果還是有問題的話,麻煩您提供 交易腳本 以及 回測設定 來檢驗。

您可以直接將檔案上傳,也可以Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

 

附加文件

發表回覆
Close