日線回測如何在收定後才下單

  •   37 
  • 最後發表   灰熊  4 週前
灰熊 發文於   2025/12/30

想請教一下,日線回測無法取消逐筆回測,所以回測出來如下,這要如何處理,和式如下

目標:有訊號則在當日收盤下單,而不是有訊號1天來來回回交易,謝謝

input: Length(9), RSVt(2), Kt(2),_Length(20, "MA的天數"),UpperBand(2, "上通道標準差倍數"),LowerBand(2, "下通道標準差倍數"),gap(150); 

 

variable: _rsv(0),_k(0),_d(0),_midband(0), _upband(0),_downband(0),_60MA(0),flag1(0),flag2(0),_stop(0),_D_V(0);

variable:rsv5(0),k5(0),d5(0),rsv60(0),k60(0),d60(0),_rsv60(0),_k60(0),_d60(0),rsvD(0),K_D(0),d_D(0);

variable: intrabarpersist flag(0);

Stochastic(Length, 2, 2, rsvD,K_D,d_D);//60分鐘9,2,2

 

_upband = bollingerband(Close,_Length, UpperBand);

_midband = average(close,_Length);

_downband = bollingerband(Close, _Length, -1 * LowerBand);

_60MA=average(close,60);

 

 

 

if (K_D cross above d_D) and (_upband-close>gap) and (K_D<90) then begin//(K_D>20),日KD向上交叉且離上軌道有150點空間則買進,高鈍95怎處理

   flag2=1;

end;

if ((K_D cross under d_D) and (close-_downband>gap) and K_D<80) or ((K_D<d_D) and (K_D<80)) then begin//(K_D>20),日KD向上交叉且離下軌道有150點空間則買進

   flag2=-1;

end;

 

if  position=0 and filled=0 then begin

    if flag2=1 then begin

    setposition(1,market);//範圍市場委託,非市價單喔。證券帳號的話,會傳送市價委託,如果是期貨帳號的話,則會傳送範圍市價委託

    flag=1;

end;

end;

//買單出場(9,3,3)

if position=1 then begin

if flag2=-1  then begin  //日KD向下交叉且離下軌道超過150點

     setposition(0,market);

flag=0; 

 

end;

 

end;

截圖圖片

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/12/30

日頻率之所以強迫逐筆洗價,是因為若用非逐筆洗價,則收盤才可洗價,既然都收盤了,洗價就毫無意義。你可以嘗試用currentTime控制時間是132500至132900才判斷是否有訊號。

灰熊 發文於   2025/12/30

謝謝許教授的解答,我試試看,謝謝

發表回覆
Close