為何下列程式不能跑?如何修正?

  •   87 
  • 最後發表   huang fu  2022 一月 24
huang fu 發文於   2022/01/19

input:_stdev(1.5,"標準差"),day(20,"壓縮期間"),_range(0.05,"壓縮range"),_power(1,"突破力道");

variable:upband(0),dnband(0),_band(0),flag(0),nowband(0);

 

upband=bollingerband(close,20,_stdev); // 上軌

dnband=bollingerband(close,20,_stdev); // 下軌

                                      //透過bollingerband函數,得Bband的上界值,下界值

if flag=0 and dnband<>0 then        //通道壓縮

if trueall(upband/dnband-1<_range,day) then flag=1;//帶寬計算方式 ,如flag=0則,下界值不等於0,近20期帶寬壓縮在5%之內,則flag=1。

                                                     

if flag=1 and dnband<>0 then _band=average(upband/dnband-1,day);//flag=1表通道滿足壓縮條件

 

if dnband<>0 then nowband=upband/dnband-1; //計算現在的帶寬

if flag =1 and nowband>_band[1]*(1+_power)then //現在帶寬>壓縮期帶寬1倍以上

begin

  flag=0;  //滿足後還原為0,免以後誤導訊號

  ret=1;     

  end;

附加文件

XQ小幫手 發文於   2022/01/24

Hello huang fu,

 

您在

if flag=0 and dnband<>0 then

if trueall(upband/dnband-1<_range,day) then flag=1;

這邊檢查了 day 期的 upband/dnband 但只對當期的 dnband 作確認是否不等於0。

 

建議您可以修改為

if flag=0 and trueall(dnband<>0, day) then 

if trueall(upband/dnband-1<_range,day) then flag=1;

這樣就可以執行。

發表回覆
Close