一分K模組想跨多日回測

  •   208 
  • 最後發表   Ysheng  2022 二月 16
Ysheng 發文於   2022/02/10

你好~

var: IntrabarPersist day_entry(0);//如果換交易日的話則重置

if getfielddate("Date") <> getfielddate("Date")[1] then day_entry = 0;

一分K模組中已寫入上面的語法,模組若只回測當日時有效,

一旦回測日期跨日就跑出完全不同的標的,

有語法可解決此問題?還是系統設定就是得乖乖一天一天回測?

麻煩了~感謝~!

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/02/11

Hello Ysheng,

 

var: IntrabarPersist day_entry(0);//如果換交易日的話則重置

if getfielddate("Date") <> getfielddate("Date")[1] then day_entry = 0;

這兩行只是令了一個叫做day_entry的變數,以及讓其換日時重置。

並無法知道您的腳本如何進出場。

需要您提供完整的腳本以及兩次回測的設定(截圖亦可) 讓小幫手研究。

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

感謝。

 

Ysheng 發文於   2022/02/13

你好~以所附警示腳本測試2021年12/16-21共4天為例,

起始與結束日期皆為當日時,12/16-1個標的,12/17-0個,12/20-0個,12/21-11個標的,如附圖所示

跨日後變成這樣

再麻煩一下看看到底是哪裡語法須修正,謝謝小幫手~!

附加文件

XQ小幫手 發文於   2022/02/15

Hello Ysheng,

 

問題出在於您腳本中有需多變數 (ex. value99) 是直接使用 += 1 的方式,然後在每次換日時沒有將其重置。

所以這些變數會持續累積上去,自然一次回測多日跟單日就會有所差別。

您可以將這些變數改為每日重置,像是把:

if getfielddate("Date") <> getfielddate("Date")[1] then day_entry = 0;

改為:

if getfielddate("Date") <> getfielddate("Date")[1] then begin

    day_entry = 0;

    value99 = 0;

    value96 = 0;

    value90 = 0;

    value95 = 0;

    value93 = 0;

    value92 = 0;

    value91 = 0;

    value94 = 0;

    value97 = 0;

    value98 = 0;

    end;

這樣兩者回測就會相同。

Ysheng 發文於   2022/02/16

非常感謝小幫手~

發表回覆
Close