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

無言的自動交易回測
- 697
- 最後發表 帥哥元 2022 七月 15
Hello 帥哥元,
您附上的圖解析度有點小所以不是很清楚,不過看起來每次回測執行商品有失敗的部分都不太相同,可能是此原因造成的。
小幫手會請工程師確認伺服器上的紀錄,但還是麻煩您提供 回測的相關腳本(選股跟交易)、不相同回測報表 以及 XQ Log 來檢驗。
Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。
您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。
感謝。
Hello 帥哥元,
經工程師確認,由於回測的錯誤代碼有問題,導致原本因為商品計算逾時而不回傳的回測報表還是顯示出來。
目前相關人員已經調整完畢,應該不會在發生這種狀況,而是在計算逾時會直接顯示回測失敗。
若是要避免回測逾時的狀況,建議您可以縮小回測的商品數量和回測的時間長度。
至於選股選出商品異常的部分,需要麻煩您提供上述的相關資訊來檢驗才能確認。
感謝。
觀察了好幾次,自動交易以 逐筆洗價 去回測,真的是有問題
策略是當沖,為了怕漲跌停被鎖死,所以寫了一段程式碼,在股價接近漲跌停時就出場
模擬測試 和 實單出場,自動交易都沒問題
但是回測報告卻是落差很大
以下案例:建達(6118) 回測的條件,我是設定 觸發即成交,程式碼如下
if AddSpread(Close, 2) = GetField("漲停價", "D") then SetPosition(0);
111/07/06當天的9:30,建達曾觸碰漲停,當下自動交易也觸發進場了
可是回測報告卻是在尾盤時間到才出場
導致實單是賠錢,回測績效卻是賺錢





既然是回測,那成交價格與實際狀況有差,這點可以理解
但是成交價格與成交時間 與 實際 有落差,那就很令人費解了
日頻率下,逐筆洗價採一分K的OHLC來模擬,那也沒關係,畢竟有效能問題
但是以下幾張圖,說明了就算用一分K的OHLC來模擬逐筆洗價,回測報告還是一樣有問題啊
以 111/07/11當天的鴻翊(3521)這檔股票來看,在9:03分的時候程式就已經觸發下單
用一分K的Low價格,也是應該會觸發程式的執行(程式碼在下圖中有)
但是回測報告很明顯的在9:03分的時候並未進場







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 且務必附上 討論文章連結網址(小幫手才能盡早處理)。
感謝。
5 評論