把盤後選股套用到策略回測裡面出現問題

  •   48 
  • 最後發表   gha  2025 七月 24
gha 發文於   2025/07/22

我使用盤後回測筆數有40幾筆 然後把它用到自動交易中心然後再寫跟盤後選股的進場出場邏輯一樣,都是選到股票隔天開盤第一盤買進,但是交易筆數卻大大減少,以下是我的程式碼,請幫我看一下是哪邊有問題

SetTotalBar(30);  // 預留足夠資料

 

Vars:  

    entrySignalDay(0),    // 紀錄觸發日  

    entryDay(0),          // 實際建倉日  

    myEntryPrice(0),      // 進場價格(避開保留字)  

    barSinceEntry(0),     // 持有天數  

    floatReturn(0.0);     // 報酬率(百分比)  

 

// ===== 每天都記錄訊號日(代表這檔股票今天被選到了)=====

If entrySignalDay = 0 then  

    entrySignalDay = Date;  

 

// ===== 隔日開盤價買進 =====  

If Filled = 0 and Date > entrySignalDay then begin  

    SetPosition(1, Open);         // 用隔日開盤價進場  

    entryDay = Date;  

    myEntryPrice = Open;  

    barSinceEntry = 0;  

    entrySignalDay = 0;           // 重置觸發日  

end;  

 

// ===== 出場條件(每日收盤檢查)=====  

If Filled = 1 then begin  

    barSinceEntry += 1;  

 

    // 計算報酬率(百分比)  

    If myEntryPrice > 0 then  

        floatReturn = (C - myEntryPrice) / myEntryPrice * 100  

    Else  

        floatReturn = 0;  

 

    // 停利  

    If floatReturn >= 65 then  

        SetPosition(0, C);  

 

    // 停損  

    If floatReturn <= -10 then  

        SetPosition(0, C);  

 

    // 最長持有  

    If barSinceEntry >= 365 then  

        SetPosition(0, C);  

end;

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/07/22

交易策略的執行商品,若選擇指定選股法,則回測時監控的商品是當天選股法選出的商品,之前進場的商品若不在執行商品中,是不會監控出場的。應該是這個原因造成交易次數變少。解決方法:把選股邏輯也寫進交易腳本。

gha 發文於   2025/07/22

謝謝教授回復

XS小編 發文於   2025/07/24

Hello gha,

 

小編補充,選股選出的商品並非只有在選出的日期才運算,而是 回測區間內選股有選出的商品,在回測區間內都會運算,但進場交易指令只有在選股該日有選出的狀況下才會執行。

出場 (平倉) 的部分則不會受選股篩選的影響。

如果您交易腳本是回測在日頻率的話,請確保所需的變數有用 IntrabarPersist 來宣告,並搭配print確認。

發表回覆
Close