使用'融券到期日'回測問題

  •   448 
  • 最後發表   小小的茶米  2024 七月 21
小小的茶米 發文於   2024/07/05

小幫手您好,我在交易程式寫入

if (Getfield("融券最後回補日") - CurrentDate) > 10 then return;//融券最後回補日前十天前起不執行

就是希望回補日10天內才執行此程式,但回測跑出來卻不符合,請問是何原因?

ps:程式如附件

附加文件

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

策略執行與策略回測,邏輯上往往不同。你的currentDate是目前電腦的日期,而非跑K棒時的那根K棒。

試著改用下列寫法試試看。

condition1=DateDiff(Getfield("融券最後回補日"), Date)>10; //距離未來的最後回補日超過10天

condition2=DateDiff(Getfield("融券最後回補日"), Date)<0; //未來的最後回補日還沒出現,上次的最後回補日是在過去的某一天

if condition1 or condition2 then return;

 

小小的茶米 發文於   2024/07/08

謝謝許教授的回覆,我有改過Date結果一樣。

而XQ設計如下

歷史區間為當時的意思是,例如回溯、回測與策略部位計算功能,都是腳本執行在歷史的時間範圍中,這時的CurrentDate就會是歷史當天,而非今天。

即時區間為當日的意思是,腳本執行在當下,因此CurrentDate就會是今天。

https://xshelp.xq.com.tw/XSHelp/?HelpName=CurrentDate&group=DATEFUNC

XS小編 發文於   2024/07/15

Hello 小小的茶米,

 

小編補充,日期的加減不能直接使用減法,要用 dateadddatediff 函數。

舉例來說,20240701 -20240630 = 71,但兩者實際上只差一天。

您可以將 融券最後回補日 和 CurrentDate 印出來確認。

若還是有問題的話,麻煩告知有問題的商品和日期,以及回測的設定 (截圖或回測報告皆可) 來確認。

 

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

小小的茶米 發文於   2024/07/21

謝謝小編,我再測試驗證看看:)

發表回覆
Close