除權息前一日進場問題

  •   489 
  • 最後發表   charlie1234  2021 十月 13
charlie1234 發文於   2021/10/01

小幫手好

先感謝之前一些問題的回覆

又發現了一個新問題,希望是我的問題,因為數據的落差實在有點大啊

 

寫了一個簡單的交易邏輯

除權息日前一天的132300以後進場,隔天開盤出場

用原始分線跟還原分線回測 (2018/9/30~2021/9/30),僅使用金融類股(35檔),發現以下問題

1. 完全一樣的設定條件,且進出場不牽涉到價格,只跟除權息日有關,但用原始分線跟還原分線回測後,兩者進場次數竟會有差異

2. 比對回測進場點跟各股票的除權息日發現,有很多的除權息日前一日,都沒有進場紀錄,35檔股票,竟有16股票都有缺漏,感覺這數據的正確性有很大問題,而且還只是因為只能回測近三年﹑更遠的數據會不會問題更嚴重呢?

請小幫手了解下是何問題,謝謝

if position=0 and time>=132300 then begin
   if DateAdd(date, "D", 1)=GetField("除權息日期") then begin
        setposition(1);
    end;
end;   

if position=1 and filled=1 and date<>date[1] then setposition(0); 

 

 

 

 

 

 

附加文件

排序方式: 標準 | 最新
charlie1234 發文於   2021/10/01

補充資料

附加文件

XQ小幫手 發文於   2021/10/06

Hello charlie1234,

 

XS 自動交易運作的邏輯有一點需要注意,就是若該筆沒有成交量的話,就不會交易。

小幫手舉2852為例,如果您用非逐筆洗價的話,會是一筆(2019/07/31)都沒有,因為沒有成交量。

直到最後的收盤集合競價才有成交量,這時用逐筆的話可以進場,但如果是及時運作自動交易的話,自動交易不會在集合競價時進場。

要避免這種狀況的話,您可以把時間限制設得寬鬆點 (該天除了集合競價外最後有交易的時間為13:15 ~ 13:16)。

 

另外 2020年的除權息日期為 7/27(星期一),前一個交易日是7/24(星期五)。

所以dateadd在7/24算出來的會是7/25,與7/27不符合。

而下一天就直接進到7/27了,所以這個除權息日就會被跳過。

2021除權息日期是在 9/13(星期一),會是相同的狀況。

您可以在腳本裡加一行

print(date, time, volume, DateAdd(date, "D", 1), GetField("除權息日期"));

就可以看出問題所在。

 

另外關於還原日與原始值會有差的問題,小幫手以2801測了好幾次都沒有發生您所說的狀況。(參考附圖)

需要麻煩您提供您的 腳本匯出檔、回測設定的截圖 以及 XQ Log 來檢驗問題原因。

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

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

感謝。

 

附加文件

charlie1234 發文於   2021/10/06

謝謝小幫手的說明

改了程式碼的寫法,也差不多都能在除權息前一日進場了

不過,我的還原日與原始值還是會有差異,比對了下原始日跟還原日的成交量,也都是一樣,也有量

是何原因就在麻煩小幫手了,log已經email,謝謝

 

 

 

 

XQ小幫手 發文於   2021/10/13

Hello charlie1234,

 

工程師研究過後,這狀況會發生是因為還原值在下單的時候系統會把價格調到跳動點。

該筆觸發的價格為17.66,調整過後會以17.65為基準,且您設定為觸發價+-0檔,所以就是17.65委託。

這樣的話接下來的價格都沒有到這個價格,所以不會成交。

如果您用的是預設+-1檔,或是以市價進場的話,那麼就會成交。

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