選股回測時,有設停利停損,並選擇下期開盤進出,結果當期觸及就出場

  •   384 
  • 最後發表   FrankLi  2024 八月 02
FrankLi 發文於   2024/07/20

你好,

下面有貼二種比較案例, 不確定XQ原本就這樣設計, 還是這是Bug?

請問關於 [異常案例] 的幾個問題:

(1) 我是日K回測也沒洗價, 湧德 8/16 觸發出場, 理論要下期 8/17 開盤價出場, 結果當天就出場了, 為何?

(2) 目前看起來 "進場隔天以後" 和 "進場當天" 觸及停利/停損時, 雖然出場設定都相同, 實際出場邏輯卻不一致, 

      而且 "進場當天" 就出場的 湧德 價格是 66.98, 在日K是不存在的無效價格,

      是因為回測考量除權息, 即時我選擇日K回測, 但實際是使用還原日K的價格跑嗎?

     (雖然我比對還原K也是對不起來)

      還是就只是簡單的 進場價62.6*1.07=出場價66.982 (一個不存在的價格)

 

[選股腳本]

 

SetBarFreq("D");
SetTotalBar(1);
SetBackBar(1);
if (symbol="3526.TW" and date=20230807) or //凡甲
    (symbol="3689.TW" and date=20230815) then //湧德
begin
    ret = 1;
end;

 

[選股回測]

回測資料範圍:日K, 2023/8/1 ~ 2023/8/31

進場設定:

  最大同時進場1

  下期開盤價

出場設定:

  下期開盤價

  停利 : 股票7%

  停損 : 股票7%

 

[正常案例]

標的: 3526 凡甲

選股: 2023/8/7 盤後選出

進場: 2023/8/8 開盤價 183

出場訊號: 2023/8/9 觸及-7%停損

實際出場: 2023/8/10 開盤價 166

 

[異常案例]

標的: 3689 湧德

選股: 2023/8/15 盤後選出

進場: 2023/8/16 開盤價 62.6

出場訊號: 2023/8/16 當天就觸及7%停利

實際出場: 2023/8/16 奇怪的價格 66.98

 

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

買進價格62.60,漲7%,是66.982。按照50-100之間的漲跌單位為0.1,超過7%的價位是67,不應該有66.98這個價位。超過7%發生在當天10:17。按照XQ逐筆洗價的邏輯,成交價應該在那一分鐘的最低價66.30才對。

  • 按讚來自於
  • YYFrankLi0813
XS小編 發文於   2024/07/26

Hello FrankLi,

 

選股腳本的停損停利會依據1分鐘頻率資訊來判斷,而非使用日頻率。

關於停利出場價格的部分小編會請相關人員確認。

 

感謝 虎科大許教授 的熱心回覆。

  • 按讚來自於
  • YYFrankLi0813
FrankLi 發文於   2024/07/26

感謝小編解答, 還真的是依據1分K, 

雖然之前有推測過是這情況, 當時覺得套在 [正常案例] 的 凡甲 不合理, 8/9觸及停損, 8/10才出場.

剛才仔細看才發現, 8/9觸及停損時, 恰恰好也是當天的跌停價, 因此無法出場, 才會變隔天出, 

那這樣邏輯就合理了. 

 

只剩下出場價格無效的問題, 推測是1分K觸及停損停利時,

你們系統應該只是簡單的用 "出場價" = "進場價" x (1+N%) 來算還原報酬, 

而不會真的檢查Tick有效性, 想了想似乎也合理, 還原價本來就不可能完美切齊Tick. 

 

另一個是在除權息旺季時, 出場價格特別容易亂跳, 導致每天重跑回測, 報酬都會有小偏差,

這可能是用 "向前" 還原計算時, 才容易發生的鬼故事(小數點進位或捨去),

許願:希望XQ未來也能提供 "向後" 還原的價格序列 ^^

 

XS小編 發文於   2024/08/02

Hello FrankLi,

 

停損停利價格若是在K棒價格區間內的話,會以開盤價或停利停損價出場 (看哪一個價格先觸發),並不會特別去切齊要在符合實際的Tick價格。

小編會將您的意見反映給相關人員作參考。

  • 按讚來自於
  • YYFrankLi0813
發表回覆
Close