// Downloaded From https://www.WiseStockTrader.com d1max = 60; d1min = 20; Buy = 0; for (d1=d1min;d1<d1max;d1++) { d2=4; Hi = H; Lo = L; Body = ParamToggle("Use candle body rather than H & L","No|Yes", 0); if(Body == 1) { Hi = Max(O,C); Lo = Min(O,C); } z1=HHV(Hi,d1); za1=HHVBars(Hi,d1); zb1=za1-d2; z2=HHV(Hi,zb1); za2=HHVBars(Hi,zb1); w1=LLV(Lo,d1); wa1=LLVBars(Lo,d1); wb1=wa1-d2; w2=LLV(Lo,wb1); wa2=LLVBars(Lo,wb1); aa1=LastValue(Hi); aa2=LastValue(Lo); C3 = ParamToggle("Use a more liberal triangle shape test?", "No|Yes",0); ExVol = ParamToggle("Exclude volume test?","No|Yes",0); Cond1 = ((z1>=z2 AND w2>w1) OR(z1>z2 AND w2>=w1));//Allows for horizontal top or bottom Cond2 = za1>za2 AND wa1>wa2;//Automatically satisfied if za1,za2,wa1 and wa2 all exist //Cond3 ensures triangle shape Cond3 =((za1>wa1 AND wa1>za2 AND za2>wa2) OR (wa1>za1 AND za1>wa2 AND wa2>za2)); if(C3 == 1) { Cond3 =((za1>wa1 AND wa1>za2) OR (wa1>za1 AND za1>wa2)); } Cond4 = aa1<z2 AND aa2>w2 ;// Triangle shape continues to last Value Cond5 = Ref(Volume,-za1) > MA(Volume,d2); if(ExVol == 1) { Cond5 =1; } //Conditions 6 & 7 require close price trend to be up Cond6 = Ref(MA(Close,d1),-za1) > Ref(MA(Close,d1),-2*za1) ; Cond7= MA(Close,d1) > Ref(MA(Close,d1),-2*za1); Buying = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 AND Cond6 AND Cond7; Buy = Buy + Buying; } for(i=1;i<BarCount;i++) { if(Buy[i]>=1) { Buy[i-1]=0; Buy[i] = 1; } } //Retain only the last of consecutive buy signals Filter=Buy; NumColumns = 8; Column0 = Cond1; Column1 = Cond2; Column2 = Cond3; Column3 = Cond4; Column4 = Cond5; Column5 = Cond6; Column6 = Cond7; Column7 = Buy;