MOVING AVERAGE | AMIBROKER AFL -Advanced Moving Average Buy Sell Afl

Đường trung bình động (MA) – là một phép tính để phân tích các điểm dữ liệu bằng cách tạo ra một loạt các giá trị trung bình của các tập hợp con khác nhau của toàn bộ tập dữ liệu. Đường trung bình động (MA) là một chỉ báo được sử dụng rộng rãi trong phân tích kỹ thuật giúp làm mịn hành động giá bằng cách lọc nhiễu từ các biến động giá ngắn hạn ngẫu nhiên. Đường trung bình động làm mịn dữ liệu giá để tạo thành một chỉ báo theo xu hướng. Chúng không dự đoán hướng giá, mà xác định hướng hiện tại, mặc dù chúng chậm trễ do dựa trên giá trong quá khứ. 

Một cách hay để sử dụng đường trung bình động là giúp bạn xác định xu hướng. Cách đơn giản nhất là chỉ vẽ một đường trung bình động duy nhất trên biểu đồ. Khi hành động giá có xu hướng duy trì trên đường trung bình động, điều đó báo hiệu rằng giá đang trong XU HƯỚNG TĂNG chung. Nếu hành động giá có xu hướng duy trì dưới đường trung bình động, điều đó chỉ ra rằng giá đang trong XU HƯỚNG GIẢM.

Đường trung bình động là một chỉ báo kỹ thuật phổ biến mà các nhà đầu tư sử dụng để phân tích xu hướng giá. Nó chỉ đơn giản là  giá đóng cửa trung bình của một chứng khoán  trong số ngày cụ thể gần nhất. Nó là một chỉ báo theo xu hướng hoặc chậm trễ vì nó dựa trên giá trong quá khứ.

TÍN HIỆU MUA ĐƯỜNG TRUNG BÌNH DI ĐỘNG (MA)

Trong hình ảnh, rõ ràng là tập trung vào tín hiệu mua. Khi đường trung bình động ngắn hạn cắt đường trung bình động dài hạn từ bên dưới thì đó là tín hiệu MUA. 

Theo một nghĩa nào đó, khi đường trung bình động giao nhau thì AFL cung cấp tùy chọn thay đổi màu. Điều đó có nghĩa là khi nó chuyển màu trắng sang màu xanh lá cây thì đó là Tín hiệu mua. Cũng như AFL cung cấp định dạng Văn bản để thông báo Tín hiệu MUA. 

TÍN HIỆU BÁN TRUNG BÌNH ĐỘNG (MA)

Trong hình ảnh, rõ ràng là tập trung vào tín hiệu Bán. Khi đường trung bình động ngắn hạn cắt đường trung bình động dài hạn từ trên xuống thì đó là tín hiệu BÁN. 

Theo một nghĩa nào đó, khi đường trung bình động giao nhau thì AFL cung cấp tùy chọn thay đổi màu. Điều đó có nghĩa là khi nó chuyển màu xanh lá cây sang màu trắng thì đó là Tín hiệu bán. Cũng như AFL cung cấp định dạng Văn bản để thông báo Tín hiệu BÁN. 

//  Author      :      KrT group

//  Uploader  :      www.pipschart.com

//  E-mail        :      info@pipschart.com

//  Amibroker Blog:    www.pipschart.com/amibroker

//  Origin        :      Modified & Collected from different sources.

//----------------------------------------------

 

_SECTION_BEGIN("KrT group");

GfxSetBkMode(1);

X=850;

Y=1;

Font=10;

GfxSelectFont("Impact",Font*2.2, 550);GfxSetTextColor(colorRed);GfxTextOut("KrT group",x,y);

GfxSelectFont("Impact",Font*2.2, 550);GfxSetTextColor(colorGreen);GfxTextOut("RESEARCH",x+120,Y);

 

_SECTION_END();

 

//-----------------------------------------

 

SetChartOptions(0,chartShowDates|chartShowArrows|chartLogarithmic|chartWrapTitle);

function GetSecondNum()

{

    Time                      = Now( 4 );

    Seconds   = int( Time % 100 );

    Minutes    = int( Time / 100 % 100 );

    Hours        = int( Time / 10000 % 100 );

    SecondNum = int( Hours * 60 * 60 + Minutes * 60 + Seconds );

    return SecondNum;

}

 

RequestTimedRefresh( 1 );

TimeFrame = Interval();

SecNumber = GetSecondNum();

Newperiod = SecNumber % TimeFrame == 0;

SecsLeft       = SecNumber - int( SecNumber / TimeFrame ) * TimeFrame;

SecsToGo    = TimeFrame - SecsLeft;

 

SetChartOptions(0,chartShowArrows|chartShowDates);

showsig=ParamList("Show Signals","YES|NO");

Showprice=ParamList("Show Buy/Sell Prices","YES|NO");

 

Plot( C, "Close", ParamColor("Color", colorBlack), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

 

period = Param("Period", 13, 1, 240, 1);

mult = Param("Multiplier", 2.21, 0, 3, 0.01);

A=EMA (RSI(14),5);

B=EMA (RSI(21),5);

 

f=ATR(period);

x=5;

VS[0] = Close[0];

trend[0] = 0;

HighC[0]=0;

Lowc[0]=0;

for( i = period+1; i < BarCount; i++ )

{

 

vs[i] = vs[i-1];

trend[i] = trend[i-1];

highC[i] = HighC[i-1];

lowc[i] = lowc[i-1];

 

if ((trend[i]>=0) AND ( C[i] <VS[i]))

{

trend[i] =-1;

HighC[i] = C[i];

lowc[i] = C[i];

}

 

if ((trend[i]<=0) AND (C[i] >VS[i]))

{

trend[i]=1;

HighC[i] = C[i];

lowc[i] = C[i];

}

 

if (trend[i]==-1)

{

if (C[i]<lowc[i]) lowc[i] = C[i];

VS[i]= lowc[i]+ (mult*f[i]);

}

if (trend[i]==1)

{

if (C[i]>HighC[i]) HighC[i] = C[i];

VS[i]= HighC[i]-(mult*f[i]);

}

 

}

Pribbon=ParamList("Ribbon? ", "Yes|No");

if (Pribbon=="Yes")

{

Plot( 2, /* defines the height of the ribbon in percent of pane width */"ribbon",

IIf( trend==1, colorGreen, IIf( trend==-1, colorRed, 0 )), /* choose color */

styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );

}

_SECTION_BEGIN("Volume");

Plot( Volume, _DEFAULT_NAME(), IIf( C > O, ParamColor("Up Color", colorGreen ), ParamColor("Down Color",

 

colorRed ) ), ParamStyle( "Style", styleHistogram | styleThick |styleOwnScale, maskHistogram  ),7 );

_SECTION_END();

 

TrailStop = HHV( C - 2.1 * ATR(3), 7);

 

//trailstop=(IIf(!downtrend OR uptrend, trailstop, Null));

//Plot( trailstop , "Trailing stop", colorCustom12, 8);

 

//Plot( IIf(shrttgt<TrailStop,trailstop,(shrttgt+trailstop)/2) , "Trailing stop", colorCustom11, 8);

 

 

TrailStop1 = LLV( C + 2.1 * ATR(3), 7);

//trailstop1=(IIf(!uptrend OR downtrend, trailstop1, Null));

//Plot( TrailStop1, "Trailing stop1", colorBlack, 8);

 

_SECTION_BEGIN("GMMA");

a=C;

g=(EMA(Close,3) * (2 / 4 - 1)-EMA(Close,60) * (2 / 61 - 1)) / (2 /4- 2 /61);

e=Ref(g,-1);

Plot (EMA(a,3), "3ema", colorBlue,styleNoLabel);

Plot (EMA(a,5), "5ema", colorBlue,styleNoLabel);

Plot (EMA(a,8), "8ema", colorBlue,styleNoLabel);

Plot (EMA(a,10), "10ema", colorBlue,styleNoLabel);

Plot (EMA(a,12), "12ema", colorBlue,styleNoLabel);

Plot (EMA(a,15), "15ema", colorBlue,styleNoLabel);

 

Plot (EMA(a,30), "30ema", colorRed,styleNoLabel);

Plot (EMA(a,35), "35ema", colorRed,styleNoLabel);

Plot (EMA(a,40), "40ema", colorRed,styleNoLabel);

Plot (EMA(a,45), "45ema", colorRed,styleNoLabel);

Plot (EMA(a,50), "50ema", colorRed,styleNoLabel);

Plot (EMA(a,55), "55ema", colorRed,styleNoLabel);

Plot (EMA(a,60), "60ema", colorRed,styleNoLabel);

//Plot(C,"close", colorBlack,styleCandle);

 

Cond1=StochK(14)>StochD(14);

Cond2=StochK(14)<StochD(14);

Buy=Cross(EMA(C,15),EMA(C,60));

Sell=Cross(EMA(C,60),EMA(C,15));

 

Filter = Buy OR Sell;

 

_SECTION_END();

AddColumn( IIf( Buy, 66, 83 ), "Signal", formatChar );

AddColumn(Close,"Close",1.2);

AddColumn(Volume,"Volume",1.0);

Cond13=PDI()>MDI();

 

_SECTION_END();

_SECTION_END();

_SECTION_BEGIN("my FIST");

 

Slowavg=Param("Slow Average",10,10,70,1);

Fastavg=Param("Fast Average",3,1,15,1);

gapx=Param("Tolerance",3,0,10,.001);

SPsignals=ParamList("Generate new Buy/Sells after SP","YES|NO");

n4=4;

Datex=DateNum();

Buy1=Cross(EMA(C,fastavg),EMA(C,slowavg));

Sell1=Cross(EMA(C,slowavg),EMA(C,fastavg));

 

EMA3=EMA(C,3);

EMA30=EMA(C,30);

Lastsig=0;

diff=5;

for (i=1;i<BarCount;i++)

{

            if(Datex[i]!=Datex[i-1] AND Interval()<86400)

            {

            if(EMA3[i]> EMa30[i] ) buy1[i]=1;

            if(EMA3[i]< EMA30[i] ) Sell1[i]=1;

            }

            if(Buy1[i])

            {

            if(Sell1[i-1])

            {

                        Buy1[i]=0;

                        Sell1[i-1]=0;

            }

            }

            if(Sell1[i])

            {

            if(Buy1[i-1])

            {

                        Buy1[i-1]=0;

                        Sell1[i]=0;

            }

            }

}

gapema=abs(EMA(C,fastavg)-EMA(C,slowavg));

 

Nowbuy=0;Nowsell=0;starti=0;Lastbuy=Lastsell=0;

avp=(O+C)/2;

for (i=1;i<BarCount;i++)

{

            if(Datex[i]!=Datex[i-1])

            {

            Nowbuy=0;Nowsell=0;starti=0;Lastbuy=Lastsell=0;

            }          

            if(Buy1[i]       )

            {

                        if (lastbuy==0)Nowbuy=1;

                        Nowsell=0;

                        Buy1[i]=0;

            }

            if(Sell1[i]        )

            {

                        Nowbuy=0;

                        if(Lastsell==0)Nowsell=1;

                        Sell1[i]=0;

            }

            if (Nowbuy==1 AND gapema[i]>gapx)

            {

                        Buy1[i]=1;

                        Nowbuy=0;

                        Nowsell=0;

            }

 

            if (Nowsell==1 AND gapema[i]>gapx )

            {

                        Sell1[i]=1;

                        starti=i;

                        Nowsell=0;

                        Nowbuy=0;

            }

            if (Buy1[i])

            {

                        Lastbuy=1;

                        Lastsell=0;

            }

            if (Sell1[i])

            {

                        Lastbuy=0;

                        Lastsell=1;

            }

           

 

}

 

slhigh=HHV(H,BarsSince(Buy1));

sllow=LLV(L,BarsSince(Sell1));

gapy=Param("SP",10,0,50,0.01);

Lastshort=0;priceatcover=priceatshort=0;Cover2=0;Lastcover=0;Sell2=0;Lastsell=newbuy=newshort=0;

for (i=1; i<BarCount-1;i++)

{

                                    if(Datex[i]!=Datex[i-1]         )

                                    {

                                               

 

Lastshort=0;priceatsell=priceatcover=priceatshort=0;Lastcover=0;Lastsell=newbuy=newshort=0;

                                    }

                                    if (Sell1[i])

                                    {

                                                Lastshort=1;

                                                Lastbuy=0;

                                                Lastsell=0;

                                                starti=i;

                                                priceatshort=H[i];

 

                                    }          

                                   

                                    if(Buy1[i])

                                    {

                                                Lastbuy=1;

                                                Lastshort=0;

                                                Lastcover=0;

                                                starti=i;

                                                priceatbuy=L[i];

                                    }

                                    if (spsignals=="YES")

                                    {                                  

                                                if (newshort==1 AND avp[i]<priceatcover-n4 AND O[i]>C[i])

                                                {

                                                            sell1[i]=1;

                                                            newshort=0;

                                                }                                              

                                    }

 

 

                                    if (C[i]-sllow[i]>gapy AND Lastshort==1 AND Lastcover==0 AND I>starti AND

 

sllow[i]==sllow[i-1])

                                    {

                                                Cover2[i]=1;

                                                Lastcover=1;

                                                priceatcover=C[i];

                                                newshort=1;

 

                                    }          

                                    if ((Lastcover==1 AND C[i]<priceatcover-(gapy/2)) )Lastcover=0;

                                    if (spsignals=="YES")

                                    {

                                                if (newbuy==1 AND avp[i]>priceatsell+n4 AND O[i]<C[i])

                                                {

                                                            Buy1[i]=1;

                                                            newbuy=0;

                                                }                      

                                    }

 

                                   

                                    if(slhigh[i]-C[i]>gapy AND Lastbuy==1 AND Lastsell==0 AND i>starti AND

 

slhigh[i]==slhigh[i-1])

 

                                    {

                                                Sell2[i]=1;

                                                Lastsell=1;

//                                              priceatsell=avp[i];

                                                priceatsell=C[i];

                                    }

                                    if ((Lastsell==1 AND C[i]>priceatsell+(gapy/2)) )Lastsell=0;

 

 

 

}          

 

 

 

shape = Buy * shapeUpArrow + Sell * shapeDownArrow;

shape1 = Buy1 * shapeUpTriangle + Sell1 * shapeDownTriangle;

shape2 = Cover2 * shapeHollowUpArrow+ Sell2*shapeHollowDownArrow;

if(showsig=="YES")

{

PlotShapes( shape, IIf( Buy, colorBlue, colorRed ),0, IIf( Buy, Low, High ) );

PlotShapes( shape1, IIf( Buy1, colorBlue, colorRed ),0, IIf( Buy1, Low, High ) );

PlotShapes( shape2, IIf( Cover2, colorGreen, colorGreen ),0, IIf( Cover2, Low, High ) );

}

GraphXSpace = 5;

dist = 5*ATR(10);

mth=int(DateNum()/100)-int(DateNum()/10000)*100;

Currmthstart=int(DateNum()/100)*100;

 

Profit=profitmth=0;

Lastsig=Lastbuysig=Lastsellsig=Lastcoversig=Lastshortsig=0;

for( i = 0; i < BarCount; i++ )

{

if (i>0)

{

                        if(mth[i]!=mth[i-1])

                        {

                                    profitmth[i]=0;

                        }

                        else

                                    {

                                    profitmth[i]=profitmth[i-1];

                                    }

 

}

 

if(i>0)profit[i]=profit[i-1];

if((i>0 AND Datex[i]!= Datex[i-1]) OR i==(BarCount-1))

{

if(i!=BarCount-1)

{          

            if (Lastbuysig==1)profit[i]=profit[i]+avp[i-1]-priceatbuy;

            if (Lastshortsig==1)profit[i]=profit[i]+priceatshort-avp[i-1];

}

else

{          

            if (Lastbuysig==1)profit[i]=profit[i]+avp[i]-priceatbuy;

            if (Lastshortsig==1)profit[i]=profit[i]+priceatshort-avp[i];

}

 

            if (showprice=="YES" AND Interval()< 86400)PlotText( "Profit\n" + WriteVal(Profit[ i ],1.0) , i, L[ i ]-

 

dist[i]/2, colorBlack );

            if(Datex[i]>Currmthstart[i] AND mth[i]==mth[i-1] )

            {

                        ProfitMth[i]=profitmth[i-1]+profit[i];

            }

 

 

            profit[i]=0;

            Lastsig=Lastbuysig=Lastsellsig=Lastcoversig=Lastshortsig=0;

}

 

 

 

 

if (Buy1[i])

{

            Lastbuysig=1;

            priceatbuy=avp[i];

            if (Lastshortsig==1)

            {

                        profit[i]=profit[i]+priceatshort-avp[i];

                        Lastshortsig=0;

            }

}                      

 

 

           

 

if (Sell1[i])

{

            Lastshortsig=1;

            priceatshort=avp[i];

            if (Lastbuysig==1)

            {

                        profit[i]=profit[i]+avp[i]-priceatbuy;

                        Lastbuysig=0;

            }

           

}

if (Cover2[i])

{

            Lastcoversig=1;

            priceatcover=avp[i];

            if (Lastshortsig==1)

            {

                        profit[i]=profit[i]+priceatshort-avp[i];

                        Lastshortsig=0;

            }

}

if (Sell2[i])

{

            Lastsellsig=1;

            priceatsell=avp[i];

            if (Lastbuysig==1)

            {

                        profit[i]=profit[i]+avp[i]-priceatbuy;

                        Lastbuysig=0;

            }

           

}

 

if(showprice=="YES"  )

{

if( Buy[i] ) PlotText( "CBuy\n@" + avp[ i ] , i, L[ i ]-dist[i], colorBlue );

if( Sell[i] ) PlotText( "CSell\n@" + avp[ i ], i, H[ i ]+dist[i], colorBlue);

if( Buy1[i] ) PlotText( "EBuy\n@" + avp[ i ], i, L[ i ]-dist[i], colorBlue );

if( Sell1[i] ) PlotText( "ESell\n@" + avp[ i ], i, H[ i ]+dist[i], colorBlue);

}

}

Plot( 1, "", IIf(EMA(C,15)>EMA(C,60) , colorPaleGreen, colorRose ),styleArea | styleOwnScale, 0, 1 );

_SECTION_END();

 

 

_SECTION_BEGIN("Volume At Price");

//PlotVAPOverlay(Param("Lines", 1000, 100, 1000, 10), Param("Width", 15, 1, 100, 1), ParamColor("Color",

 

colorBlue), ParamToggle("Side", "Left|Right", 1) | 4 *ParamToggle("Z-order", "On top|Behind", 1));

 

_SECTION_END();

Title = "Moving Average TRADES "+Date()+"  "+ Interval(format=2)+"  "+Name()+" "+"O "+WriteVal(O,1.2)+"

 

"+"H "+WriteVal(H,1.2)+"  L"+WriteVal(L,1.2)+"    C "+WriteVal(C,1.2)+" Vol "+WriteVal(V,1.0)+" "+EncodeColor

 

(colorRed)+WriteIf(EMA(C,3)>EMA(C,16),EncodeColor(colorGreen),EncodeColor(colorRed))+" EMA 3/16

 

"+WriteVal(EMA(C,3),1.0)+"/"+WriteVal(EMA(C,16),1.0)+WriteIf(EMA(C,15)>EMA(C,60),EncodeColor

 

(colorGreen),EncodeColor(colorRed))+" EMA 15/60 "+WriteVal(EMA(C,15),1.0)+"/"+WriteVal(EMA(C,60),1.0)+"

 

ProfitMth "+WriteVal(profitmth+profit,1.0)+" Bar Secs Left "+ WriteVal(secstogo,1.0)+" "+

"\n"+EncodeColor(colorRed)+" Stoploss " +WriteVal(Trailstop,1.2)

;

 Cách sử dụng AFL  cho Amibroker 

  • Tải xuống tệp Amibroker AFL.
  • Bây giờ hãy sao chép tệp afl và dán vào \Program Files\AmiBroker\Formulas\Custom. [Dành cho 32 bit] hoặc \Program Files(x86)\AmiBroker\Formulas\Custom. [Dành cho 64 bit]
  • Vào phần công thức của Amibroker và bạn sẽ thấy afl trong thư mục Custom.

Nguồn thông tin Dòng tiền chứng khoán sưu tầm 

https://pipschart.com/advanced-moving-average-buy-sell-afl/

 

Comments

Popular posts from this blog

TẠI SAO NÊN ĐẦU TƯ CHỨNG KHOÁN ?

LỰA CHỌN CÔNG TY CHỨNG KHOÁN MỞ TÀI KHOẢN GIAO DỊCH

ĂN NHỊP HỒI VNINDEX THÁNG 10/2024

Labels

Show more