(已寄出Log,待解決) 請問,為什麼交易回測變得非常的慢,最後出現回測錯誤?或是一直出現錯誤"取消執行回測"?

  •   504 
  • 最後發表   Sadless  2022 四月 18
Sadless 發文於   2021/08/24

從今天20210824開始,我所有的策略都都無法正確執行回測。

我寫了一個簡單的交易策略來測試,仍然如題,無法回測。重新開機也無法解決這個問題。

請問,XS回測環境是否發生了甚麼問題?要怎麼解決呢?

{交易_測試XQ回測時間}

if  Close > Close[1]
then
    SetPosition(1, Market);

{出場 尾盤 132000}  
if  time >= 132000
then
    SetPosition(0, Market);

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/08/27

Hello Sadless,

 

小幫手這邊測試回測單一商品或是多商品短期間是不會發生您所說的問題。(參考附圖)

推測可能是商品多且所需歷史資料長所導致。

由於回測是使用伺服器資源,建議您可以先試著將單次回測商品數量減少或是回測區間縮短應該可以成功。

如果還是有問題的話,需要麻煩您提供 交易腳本、回測報告儲存檔(.BTReport)以及XQ Log來檢驗。

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

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

感謝。

 

附加文件

XQ小幫手 發文於   2021/08/27

Hello Sadless,

 

小幫手另外補充,建議您進出場時加上 position 或 filled 作判斷。

您的腳本若是在13:20以後,但是同時符合 close > close[1] 的狀況下只會執行 setposition(1, market)。

因為若腳本同時有兩個 setposition 指令需要執行的話,只會執行位於腳本上方的那一個。

Sadless 發文於   2021/08/27

相關檔案已寄出。

我目前的測試發現,下午四點之前還能執行完回測腳本,下午四點之後,回測幾乎會慢到無法執行。請問下午四點之後,回測伺服器會發生甚麼大型負荷,導致回測伺服器的資源不夠用,或是分配不均的問題嗎?依照小幫手的說明,我修改了測試腳本如下:

{交易_測試XQ回測時間}

if  Close > Close[1]
and Filled = 0
then
    SetPosition(1, Market);

{出場 尾盤 132000}  
if  time >= 132000
and Filled <> 0
then
    SetPosition(0, Market);

得到的結果如下:

費時32分7秒,而且還有五個失敗(逾時)的錯誤,

失敗的截圖如下:

 

請問此問題應該怎麼解決呢?

Sadless 發文於   2021/08/27

同樣的腳本,在周六晚上9點半,卻可以正常執行。

回測設定為如下:

 感覺是回測伺服器的記憶體或是網路被占滿了,然後到了晚上,回測伺服器比較少人用,所以又變正常了。

或是回測伺服器因為腳本某些原因造成的錯誤,造成記憶體溢出,佔據了大量的記憶體,之後伺服器重啟,清掉記憶體之後,就又變正常了。

再麻煩小幫手查明,看看怎麼解決。

小李飛刀 發文於   2021/08/27

有同樣問題+1
回測速度變非常慢
之前就算跑1000商品+半年區間
也不會太慢(約1分鐘)
現在同樣條件下都至少10分鐘起跳

Sadless 發文於   2021/08/28

我發現一件事情,提供小幫手做線索。

我發現,把腳本的文字複製到一個新開的腳本,然後重新編譯和回測,第一次的回測會正常的回測,但是第二次的回測就會開始不正常。

不正常包括時間會變得很久,以及會出現很多失敗。

我的猜測是,第一次新開腳本,會在程式空間裡自動產生一些變數,而這些變數,因為某些原因,發生錯誤,如記憶體溢出,導致第二次編譯之後,仍然保留在程式空間,因此程式空間的記憶體空間就變得越來越少,所以回測就會越來越慢,然後最後就會一直發生逾時失敗。

另外,我也發現會發生一種回測失敗,就是回測全部都失敗,然後失敗的原因全部都是"取消回測",他會發生在執行腳本之後1秒鐘,就會出現的失敗。

提供給小幫手參考。

全部失敗如圖:

取消回測失敗如圖:

 

 

XQ小幫手 發文於   2021/09/01

Hello Sadless,

 

經工程師確認後,關於取消執行回測的部分可能跟邊修改腳本邊回測有關,由於伺服器上的腳本沒有記錄到最新內容編譯而導致失敗。

這種狀況的話應該是很快就會收到取消執行回測的錯誤。

可以試著隨便修改一下腳本編譯後再回測看是否可以正常。

 

交易回測慢則可能是因為當時伺服器繁忙,或是近期對伺服器作更動所導致。

這部分小幫手會繼續觀察,建議您可以採取以下動作來縮短回測時間:

縮短回測的區間。

減少一次回測的商品數量(分批回測)。

等一陣子再來回測。

帥哥元 發文於   2022/04/12

我也是遇到  取消回測 的狀況,不僅重新編譯,甚至連XQ都重開,還是一樣沒用

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

Hello 帥哥元,

 

需要麻煩您提供 XQ Log 並告知問題發生的日期時間來確認。

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

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

感謝。

發表回覆
Close