/* Done by Rajandran R */
/* Author of www.marketcalls.in */
_SECTION_BEGIN("Two Pole Butterworth Filter");
SetBarsRequired(100000,0);
GraphXSpace = 15;
SetChartOptions(0,chartShowArrows|chartShowDates);
SetBarFillColor(IIf(C>O,ParamColor("Candle UP Color", colorGreen),IIf(C<=O,ParamColor("Candle Down Color", colorRed),colorLightGrey)));
Plot(C,"\nPrice",IIf(C>O,ParamColor("Wick UP Color", colorDarkGreen),IIf(C<=O,ParamColor("Wick Down Color", colorDarkRed),colorLightGrey)),64,0,0,0,0);
SetTradeDelays(1,1,1,1);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
CutoffPeriod=15;
Shift=0;
coef1=coef2=coef3=coef4=0;
tempReal= atan(1.0);
rad2Deg = 45/tempReal;
deg2Rad = 1.0/ rad2Deg;
pi = atan(1.0)* 4;
a1 = exp(-sqrt(2) * pi / CutoffPeriod);
b1 = 2 * a1 * cos(deg2Rad * sqrt(2) * 180 / CutoffPeriod);
coef2 = b1;
coef3 = -a1 * a1;
coef1 = (1 - b1 + a1 * a1) / 4;
mean=C;
TPBFilter[0]=Null;
up[0]=Null;
down[0]=Null;
for(i = 1; i <BarCount; i++){
if(i>3){
TBFilter[i]=coef1 *(mean[i]+2.0*mean[i-1] +mean[i-2])+coef2*TBFilter[i-1]+coef3*TBFilter[i-2];
}else{
TBFilter[i]=mean[i];
}
if(TBFilter[i]>TBFilter[i-1]){
up[i]=TBFilter[i];
up[i-1]=TBFilter[i-1];
}else{
down[i]=TBFilter[i];
down[i-1]=TBFilter[i-1];
}
}
TBFilter1[BarCount-1]=Null;
for(i=0;i<BarCount-1;i++)
{
TBFilter1[i]=TBFilter[i];
}
Plot(TBFilter1,"TBFilter",IIf(down==0,colorGreen,colorRed),styleThick);
Buy = TBFilter1>Ref(TBFilter1,-1);
Sell= TBFilter1<Ref(TBFilteR1,-1);
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;
BuyPrice=ValueWhen(Buy,C);
SellPrice=ValueWhen(Sell,C);
ShortPrice=ValueWhen(Short,C);
CoverPrice=ValueWhen(Cover,C);
Title = EncodeColor(colorWhite)+ "Two Pole Butterworth Filter AFL code from www.marketcalls.in" + " - " + Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
" - " + Date() +" - "+"\n" +EncodeColor(colorRed) +"Op-"+O+" "+"Hi-"+H+" "+"Lo-"+L+" "+
"Cl-"+C+" "+ "Vol= "+ WriteVal(V)+"\n"+
EncodeColor(colorLime)+
WriteIf (Buy , " GO LONG / Reverse Signal at "+C+" ","")+
WriteIf (Sell , " EXIT LONG / Reverse Signal at "+C+" ","")+"\n"+EncodeColor(colorYellow)+
WriteIf(Sell , "Total Profit/Loss for the Last Trade Rs."+(C-BuyPrice)+"","")+
WriteIf(Buy , "Total Profit/Loss for the Last trade Rs."+(SellPrice-C)+"","");
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
_SECTION_END();Hướng dẫn: Copy đoạn mã trên, mở AmiBroker Formula Editor, dán vào và lưu lại với tên tương ứng.