I have a Amibroker AFL I want to add indicator as filter to the signal to reduce whipsaws, Indicator is ready and when added is not giving signal at required place, Coder need to modify condition to get signals at proper place
Filter indicator : Plot buy only if price closes in blue ribbon and plot sell only if price closes in red ribbon
main system afl and indicator code
_SECTION_BEGIN("EASY FINAL HEIN");
HACLOSE=(O+H+L+C)/4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
HaHigh = Max( H, HaOpen );
HaLow = Min( L, HaOpen );
_SECTION_BEGIN("SmmA");
per=Param("Major MA",5,5,200,10);
mmaH=EMA(H,per);
smmaH=EMA(mmaH,per);
mmaL=EMA(L,per);
smmaL=EMA(mmaL,per);
mycEH=IIf(HaClose>smmaH,colorBlue,
IIf(HaCLose<smmaL,colorRed,//31));
IIf(HaClose<smmaH AND HaCLose>smmaL ,colorYellow,31)));
_SECTION_END();
_SECTION_BEGIN("Trend Reversal");
TDO = Open; // current open
TDH = High; // current high
TDL = Low; // current low
TDC = Close; // current close
PDO = Ref(Open,-1); // last candle Open
PDH = Ref(High,-1); // last candle high
PDL = Ref(Low,-1); // last candle low
PDC = Ref(Close,-1); // last candle close
slow = LLV(Low, 21);
shigh = HHV(High, 21);
Plot(shigh,"",colorYellow,styleLine);
Plot(slow,"",colorYellow,styleLine);
bull=((H-L)/2)+L;
bear=H-((H-L)/2);
BRev = TDL == LLV(Low, 11);
SRev = TDH == HHV(High, 11);
BTR = PDL == LLV(Low, 11);
STR = PDH == HHV(High, 11);
BB = Ref(Low,-1) == LLV(Low, 11);
SS = Ref(High,-1) == HHV(High, 11);
BuyX= BRev AND PDL>TDL AND TDC>PDC AND TDC>TDO AND C>bull;
ShortX= SRev AND PDH<TDH AND TDC<PDC AND TDC<TDO AND C<bear;
BuyY= BTR AND TDO>PDC AND TDC>TDO AND TDL>PDC AND C>bull;
ShortY= STR AND TDO<PDC AND TDC<TDO AND TDL<PDC AND C<bear;
BuyZ=(BB AND Ref(L,-1)<Ref(L,-2) AND Ref(L,-1)<L AND C>Ref(H,-1)) OR (BTR AND Ref(L,-1)<Ref(L,-2) AND Ref(L,-1)<L AND C>Ref(H,-1));
ShortZ=(SS AND Ref(H,-1)>Ref(H,-2) AND Ref(H,-1)>H AND C<Ref(L,-1)) OR (STR AND Ref(H,-1)>Ref(H,-2) AND Ref(H,-1)>H AND C<Ref(L,-1));
Buy= (BuyX OR BuyY OR BuyZ) AND HaClose>smmaH;
Sell=L < Ref(LLV(L, 11), -1);
Short= (ShortX OR ShortY OR ShortZ) AND HaCLose<smmaL;
Cover=H > Ref(HHV(H, 11), -1);
Buy=ExRem(Buy,Sell);
Short=ExRem(Short,Cover);
Sell=ExRem(Sell,Buy);
Cover=ExRem(Cover,Short);
PlotShapes(Buy* shapeSquare,colorSkyblue, 0, L, Offset=-40);
PlotShapes(Buy* shapeSquare,colorSkyblue, 0,L, Offset=-50);
PlotShapes(Buy* shapeUpArrow,colorBlue, 0,L, Offset=-45);
PlotShapes(Short* shapeSquare,colorPink, 0, H, Offset=40);
PlotShapes(Short* shapeSquare,colorPink, 0,H, Offset=50);
PlotShapes(Short* shapeDownArrow,colorRed, 0,H, Offset=-45);
PlotShapes(Sell*shapeHollowDownArrow,colorPink,0,L,-45);
PlotShapes(Cover*shapeHollowUpArrow,colorSkyblue,0,H,-45);
_SECTION_END();
_SECTION_BEGIN( "Price" );
SetChartOptions( 0, chartShowDates | chartShowArrows | chartLogarithmic | chartWrapTitle );
_N( Title = StrFormat( "{{NAME}} - " + SectorID( 1 ) + " - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) Vol " + WriteVal( V, 1.0 ) + " {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ) );
Plot( C, "Close", colorRose, styleCandle | styleNoTitle | ParamStyle( "Style" ) | GetPriceStyle() );
_SECTION_END();