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;
1 評論