自動交易的回測,如何避免當日出場呢

  •   135 
  • 最後發表   FrankLi  2021 十月 17
FrankLi 發文於   2021/10/11

您好, 

想請問自動交易的回測, 

若當天進場了, 但我不想要當沖, 最快是隔日才能出場的話, 

程式應該怎麼寫比較正確呢?

 

原本測試這樣寫, 看來不行, 下1根1分K, 取到的 MyEntryDate 仍為 0,

是因為沒用 IntrabarPersist 嗎? 

var: MyEntryDate(0);

//若跟進場時保存的日期相同則返回
if MyEntryDate = date then return; //※這行應該怎麼寫比較正確呢?
//if MyEntryDate[1] = date then return; 

if position = 0 and filled = 0 then
begin
    // 當某條件符合時, 保存目前日期然後下單
    if condition77 then 
    begin
        MyEntryDate = date;
        setposition(1, C);
    end;
end
else if filled > 0 then
begin
    if condition88 then setposition(0, C);
end;

 

後來用這個做法..結果看起來好像可行,

但邏輯上覺得不太對的, 所以想問看看怎麼寫比較正確?

if FilledRecordCount > 0 and FilledRecordDate(1)=date then return;

 

 

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

Hello FrankLi,

 

如果您使用的是日頻率的話,那麼需要加上 IntraBarPersist 沒錯,因為日逐筆雖然是以分鐘的方式來模擬,但是只要是同一日都會算在同根Bar內,所以當日內執行變數不會更新。

小幫手測試用1分鐘的話不會有問題。

後面的作法應該修改為:

if FilledRecordCount > 0 and FilledRecordDate(FilledRecordCount)=date then return;

這樣才會是取用到最新一筆交易日期,而不是第一筆交易日期。

  • 按讚來自於
  • YYFrankLi0813
FrankLi 發文於   2021/10/17

了解了, 謝謝小幫手

發表回覆
Close