交易腳本符合條件發生時若遇到收盤不會進場要怎麼解決呢

  •   95 
  • 最後發表   Roger995  2023 四月 28
Roger995 發文於   2023/04/25

小幫手您好

如題

我想單純用ATR通道交易台指期

 

input:period(20,"計算TrueRange的區間"),N(2,"N倍通道");

 

// 資料讀取筆數設定

settotalbar(period + 3);

 

value1=average(truerange,period);

value2=average(close,period);

value3=value2 + N * value1; //通道上緣

value4=value2 - N * value1; //通道下緣

 

var:long_condition(false), short_condition(false);

long_condition = close[1] < value3[1] and close > value3;

short_condition = close[1] > value4[1] and close < value4;

 

// 多方進場策略:向上突破上通道。出場策略:跌至上通道以下。

if position = 0 and long_condition then setposition(1); //向上突破上通道

if position = 1 and filled = 1 then begin

if close < value3 then setposition(0);

end;

 

//空方進場策略:向下跌破下通道。出場策略:漲至下通道以上。

if position = 0 and short_condition then setposition(-1);

if position = -1 and filled = -1 then begin

if close > value4 then setposition(0);

end;

 

後來去回測2022全年60分k發現

有時候凌晨4點最後一根60分K棒收定後會判定下一根K棒要進場,但因為已經收盤了所以不會進場

在早上8:45期貨開盤後也不會再自動進場(如2張附圖出現時機)

想請問在語法上或是策略設定上要怎麼寫或調整才能解決這個問題呢(如果凌晨4點那根收定判定條件符合該進場,則早上8:45開盤時就照著策略進場)

 

感謝小幫手

附加文件

XQ小幫手 發文於   2023/04/28

Hello Roger995,

 

您可以在084500時判斷前一根Bar條件是否成立。

舉例來說:

if position = 0 and long_condition then setposition(1);

可以修改為:

if position = 0 and (long_condition or (time = 084500 and long_condition[1])) then setposition(1);

這樣就會在早上開盤時去檢查前一根的long_condition是否有符合,如果有的話一併交易。

發表回覆
Close