Thư viện AFL
Thư viện AFL
Bộ lọc hai cực Butterworth - Mã AFL Amibroker

Bộ lọc hai cực Butterworth - Mã AFL Amibroker

Bộ lọc hai cực Butterworth là một trong những chủ đề phổ biến được tìm thấy trong Xử lý tín hiệu số (DSP). Bộ lọc hai cực Butterworth được sử dụng để thiết kế Bộ lọc thông thấp có phản hồi làm mịn tốt hơn. Và nó cũng được thảo luận trong Phân tích điều khiển học cho cổ phiếu và tương lai ở Chương 13 –

Siêu Mượt Mà

P.Số 191

Đây là mã Ngôn ngữ dễ dàng từ TradeStation. Và tôi đã cố gắng viết mã tương tự trong mã Amibroker AFL.

Biểu đồ 15 phút tiện lợi – Bộ lọc hai cực Butterworth

Trong các biểu đồ trên, Bộ lọc Butterworth hai cực được áp dụng và nó cho thấy bộ lọc butterworth mượt mà như thế nào. Để kiểm tra mức độ mượt mà của bộ lọc, bạn có thể thử và so sánh với các đường trung bình động truyền thống khác như EMA, MA, WMA.

Công thức AFL để vẽ đồ thị bộ lọc Butterworth hai cực

Tải xuống Mã AFL Bộ lọc Hai cực Butterworth cho Amibroker

Tuyên bố từ chối trách nhiệm: Đây chỉ là một chỉ báo chứ không phải một hệ thống giao dịch, Tín hiệu Mua và Bán được thêm vào nhằm mục đích xác định lượt trong bộ lọc.

Dưới đây là video xem trước mã Super Trend AFL sắp ra mắt trong Marketcalls

httpv://www.youtube.com/watch?v=WGSBAsGNGnM

Liên quan

Mã nguồn (.afl)
/* 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.