Showing posts with label MOVING AVERAGE | AMIBROKER AFL -Advanced Moving Average Buy Sell Afl. Show all posts
Showing posts with label MOVING AVERAGE | AMIBROKER AFL -Advanced Moving Average Buy Sell Afl. Show all posts

Wednesday, October 9, 2024

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. 

_SECTION_BEGIN("Ami");

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)

;

👉Tải tại đây

https://drive.google.com/file/d/12Wmd_JNFwSaDxVL088yAarpnvYzME_Fz/view?usp=drive_link