如何寫出回測報表的持有區間天數

  •   398 
  • 最後發表   帥哥元  2021 五月 17
帥哥元 發文於   2021/05/13

回測報表上面的持有區間,是扣除六日的,也就是只計算上班日

但是使用 DateDiff( CurrentDate , Date ) 函數,計算出來的是日曆天(包含六日在內)

請問小幫手,要如何寫出  只計算工作天呢?

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/05/14

Hello 帥哥元,

 

最大持有區間的設定您可以參考此篇文章

依照您的情況,可以計算進場後過了幾根bar來達到相同的條件。

只要設一個變數來記錄過去了幾根 bar 或過去了幾天即可。

舉例而言,如果頻率為天的話:

var: day_count(0);

if filled <> 0 then day_count+=1;    

if 進場條件 and filled = 0 then begin

    setposition(1, market); 

    day_count = 1;

    end;

if 出場條件 and filled <> 0 then begin

    setposition(0, market);

    day_count = 0;

    end;

 

如果頻率小於天的話則可以改用換天時在計算即可:

var: day_count(0);

if filled <> 0 and GetFieldDate("Date")[1] <> GetFieldDate("Date") then day_count+=1;    //日期不同時才增加

if 進場條件 and filled = 0 then begin

    setposition(1, market); 

    day_count = 1;

    end;

if 出場條件 and filled <> 0 then begin

    setposition(0, market);

    day_count = 0;

    end;

帥哥元 發文於   2021/05/14

謝謝小幫手,這個方法我有想過,只是不知道有沒有類似  DateDiff  這樣的函數

XQ小幫手 發文於   2021/05/17

Hello 帥哥元,

 

那您可以考慮使用GetBarOffset函數。

此函數會去計算傳入日期與現在的相對Bar偏移量。

如果您頻率是用日的話就可以取得相差幾天。

而頻率小於日的話可以考慮將出來的結果除以該頻率一日Bar的數量來取得近似值。

帥哥元 發文於   2021/05/17

謝謝小幫手,那我再試試看

發表回覆
Close