交易回測 腳本執行問題

  •   419 
  • 最後發表   阿貝勳  2023 一月 18
阿貝勳 發文於   2022/12/11

小幫手你好

 我有一個交易腳本如下,就是此腳本執行的標的為 台達電(2308.TW) 時,我就把相關資料輸出到檔案。

if leftStr(symbol, 4) = "2308" then 

             print(file("D:\XQ_Files\RSI 指標.log"), symbol, symbolName, date, close);

在回測這個交易腳本時,我的設定如下圖: (1) 執行頻率(日); (2) 執行商品為我寫的選股腳本。

在這樣的回測設定下,有兩個問題請教一下,

 

(1) 當執行頻率為 日,這個腳本的回測應該是每日以日K棒執行一次,但是為何在輸出檔案中顯示,這個腳本在有些日期會被執行一次,但是在有些日期卻是會被執行很多次。

(2) 我的執行商品是根據我的選股策略來決定,對單一股票(例如: 台達電(2308.TW)),理論上交易腳本被執行的日期,應該與選股策略選到該股票的日期一致(下圖是我執行選股的輸出結果),可是好像結果不是這樣。

懇請解答,萬分感謝

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

 Hello 阿貝勳,

 

1.因為是逐筆洗價,在回測時會以1分鐘的Bar來模擬洗價。

所以雖然執行頻率為日頻率,但1天會執行 270 次運算 (股票的話)。 

交易腳本在回測時若選擇日頻率的話會強制開啟逐筆洗價。

如果需要用日頻率不逐筆洗價的話,可以使用警示腳本或選股腳本。

 

2.回測的時候,回測區間內選股有選出的商品交易腳本都會運算整個回測區間。

但要在選股條件符合時才會進場。

阿貝勳 發文於   2023/01/11

XQ 小幫手 你好

根據你上述的回覆,每次逐筆洗價,交易腳本程式應該會被執行一次,

換言之,交易腳本1天會被執行 270次,

因此,我寫了一個交易腳本如下,單純紀錄被執行的商品、日期與收盤價

print(file("D:\XQ_Files\RSI 指標.log"), symbol, symbolName, date, close);

接著分別對兩個商品台積電與聯發科進行回測,結果發現回測期間(12/10 ~ 01/10),

台積電與聯發科每日被執行的次數不一樣,分別為 266次 與 263次,也不是 270次。

懇請解答,非常謝謝

 

XQ小幫手 發文於   2023/01/12

Hello 阿貝勳,

 

小幫手這邊簡單測試沒有發生您所說的狀況。

推測您應該是勾選到系統參數裡面的不揭示未成交分鐘,導致成交量為0的Bar沒有執行才會如此。(參考附圖)

建議您可以取消勾選後重新print。

 

若還是有問題的話,麻煩您提供 回測腳本 以及 XQ Log 來檢驗。

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

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

感謝。

附加文件

阿貝勳 發文於   2023/01/12

XQ 小幫手你好

謝謝你的回覆,經過確認,系統中的"不揭示未成交分鐘" 的設定並沒有勾選,

我的回測執行頻率是設定為日,因此我的腳本(如下)的輸出中,時間部份都是 0.000000 (跟你答覆的文件不同,你的執行頻率應該不是日)

print(file("D:\XQ_Files\RSI 指標.log"), symbol, symbolName, date, time, close);

而且執行後,輸出結果同我上一個問題所說,台積電與聯發科"每日"輸出的次數都是分別為 266 與 263 次,

回測的檔案如附件,腳本如上所述。

附加文件

XQ小幫手 發文於   2023/01/17

Hello 阿貝勳,

 

小幫手和相關人士確認過,日頻率逐筆洗價回測時是不會運算該根1分鐘Bar成交量為0的資料。

但1分鐘頻率回測的時候若沒有勾選不揭示未成交分鐘的話會運算。

小幫手用印出資訊缺少的時間點和技術線圖比對確實為成交量0的1分鐘Bar。

 

您在日頻率逐筆洗價若要印出該根1分鐘Bar的時間和成交量的話,可以使用 currenttime / getfield("Time", "1") 和 getfield("Volume", "1") 的欄位來印出即可確認。

阿貝勳 發文於   2023/01/18

XQ 小幫手

很謝謝你回覆

 

發表回覆
Close