BASIC INDICATORS | AMIBROKER AFL -Higher High Lower High AFL

CAO HƠN CAO HƠN CAO AFL CHO AMIBROKER

Higher High Lower High AFL thực sự phân tích hiệu suất giao dịch của bạn. Đúng vậy. Amibroker AFL này cung cấp thông tin mà bạn muốn. HH, LH, Giá mục tiêu, mục tiêu giá dừng lỗ, v.v. Afl được tạo ra dựa trên khái niệm Higher high lower high. Nó cũng tuân theo chiến lược đột phá high low ngày trước và công thức chỉ báo hỗ trợ kháng cự swing high low.

Hãy cùng tìm hiểu khái niệm HH LH qua hình ảnh bên dưới.

Trong hình cho bạn thấy rõ khái niệm mạnh mẽ về đỉnh cao thấp hơn. Hình ảnh cho chúng ta biết rằng khi xu hướng tạo ra dao động đỉnh cao dao động đáy thấp  hơn thì xu hướng được tạo ra để tăng giá. Theo AFL này, bạn có thể dễ dàng nắm bắt được điểm mấu chốt và giao dịch theo nó. 

Hình ảnh của AFL [ ngôn ngữ công thức amibroker ].

Trong hình ảnh Afl, chúng ta có thể thấy rằng khi xu hướng giá tạo ra đỉnh cao hơn hoặc tạo ra đỉnh thấp hơn thì đó là tín hiệu sẵn sàng mua hoặc bán. Bản thân Afl thông báo cho bạn giá mục tiêu bán hoặc mua được thể hiện trong hình. 

//  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=750;

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();

 

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

 

_SECTION_BEGIN("HA");

 

tchoice=Param("Title Selection ",2,1,2,1);

Q=Param("% Change",2.1,1,10,1);

Z= Ref(Zig(C ,q ),-1) ;

HH=Ref(((Z<Ref(Z,-1) AND Ref(Z,-1) > Ref(Z,-2)) AND (Peak(z,q,1 ) >Peak(Z,q,2))),-1);

LH=Ref(((Z<Ref(Z,-1) AND Ref(Z,-1) > Ref(Z,-2)) AND (Peak(Z,q,1 ) <Peak(Z,q,2))),-1);

HL=Ref(((Z>Ref(Z,-1) AND Ref(Z,-1) < Ref(Z,-2)) AND (Trough(Z,q,1 ) >Trough(Z,q,2))),-1);

LL=Ref(((Z>Ref(Z,-1) AND Ref(Z,-1) < Ref(Z,-2)) AND (Trough(Z,q,1 ) <Trough(Z,q,2))),-1);

GraphXSpace = 5;

dist = 0.5*ATR(20);

 

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

{

if( HH[i] ) PlotText( "HH", i, H[ i ]+dist[i], colorCustom12 );

if( LH[i] ) PlotText( "LH", i, H[ i ]+dist[i], colorCustom12 );

if( HL[i] ) PlotText( "HL", i, L[ i ]-dist[i], colorBlack );

if( LL[i] ) PlotText( "LL", i, L[ i ]-dist[i], colorBlack );

 

}

 

//calculates floor pivots from previous days data & plots it on the present intraday chart.

//RED LINE = RESISTANCE

//RED DASHED LINE = MINI RESISTANCE

//BLUE LINE = SUPPORT

//BLUE DASHED LINE = MINI SUPPORT

//YELLOW DOTTED LINE = PIVOT

//RED DOTTED LINE = PREVIOUS Day High

//BLUE DOTTED LINE = PREVIOUS Day Low

//BLACK DOTTED LINE = PREVIOUS Day Close

 

 

//2 - IN - 1 PRICE CHART

Pstyle = ParamToggle("Heikin Ashi","On|Off",1);

if(Pstyle==0){

HaClose = (O+H+L+C)/4;

HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );

HaHigh = Max( H, Max( HaClose, HaOpen ) );

HaLow = Min( L, Min( HaClose, HaOpen ) );

//PlotOHLC(HaOpen,HaHigh,HaLow,HaClose,"",IIf(HaClose > HaOpen,colorGreen,colorBrown),styleCandle);

 

//Sell = (abs(HaOpen -HaClose )<= ((HaHigh -HaLow )*0.1));

//Buy = (abs(HaOpen -HaClose )<= ((HaHigh -HaLow )*0.1)) ;

 

Buy = ExRem( Buy, Sell );

Sell = ExRem( Sell, Buy );

 

//PlotShapes( IIf( Sell, shapeDownArrow+ shapePositionAbove, shapeNone), colorCustom12 );

//Plot(EMA(HaClose,20), "", colorBlue , styleLine|styleThick );

//Plot(Wilders(H,260.6), "",colorCustom12 , styleDashed|styleThick );

//Plot(EMA(HaClose,10), "",colorTan, styleLine|styleThick );

 

 

 

TimeFrameSet(inHourly);

Hh=HHV (L,24);

Ll =LLV (H,24);

TimeFrameRestore();

Hh1=(TimeFrameExpand( Hh, inHourly));

Ll1=(TimeFrameExpand( Ll, inHourly));

 

Plot(Hh1 , "27dayssellbelclose",colorRed, 4+8+2048);

Plot(Ll1 , "27daysbuyabvclose",colorGreen, 4+8+2048);

 

Buy=Cross(C,LL);

Sell=Cross(HH,C);

Filter=Buy OR Sell;

 

 

 

_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

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

}

 

 

Pivot = ParamToggle("Pivot", "weekly|monthly", 1);

 

if(Pivot)

{

H1 = TimeFrameGetPrice("H", inMonthly, -1); // yesterdays high

L1 = TimeFrameGetPrice("L", inMonthly, -1); // low

C1= TimeFrameGetPrice("C", inMonthly, -1); // close

 

 

}

else

{

H1 = TimeFrameGetPrice("H", inWeekly, -1); // yesterdays high

L1 = TimeFrameGetPrice("L", inWeekly, -1); // low

C1= TimeFrameGetPrice("C", inWeekly, -1); // close

}

 

// PIVOT Calculation

P = ( H1+ L1+ C1 )/3;

R1 = P+(H1-L1)/2-(P-C1)/2;

R2 = H1-L1+P;

R3 = H1-L1+R1;

R4 = H1-L1+R2;

R5 = H1-L1+R3;

R6 = H1-L1+R4;

R7 = H1-L1+R5;

R8 = H1-L1+R6;

R9 = H1-L1+R7;

R10 = H1-L1+R8;

 

 

 

S1 = P -(H1-L1)/2-(P-C1)/2;

S2 = P -(H1-L1);

S3 = S1 -(H1-L1);

S4 = S2 -(H1-L1);

S5 = S3 -(H1-L1);

S6 = S4 -(H1-L1);

S7 = S5 -(H1-L1);

S8 = S6 -(H1-L1);

S9 = S7 -(H1-L1);

S10 =S8 -(H1-L1);

 

// PIVOT mid points

MIDR1 = (P+R1)/2;

MIDR2 = (R1+R2)/2;

MIDR3 = (R2+R3)/2;

MIDR4 = (R3+R4)/2;

MIDR5 = (R4+R5)/2;

MIDR6 = (R5+R6)/2;

MIDR7 = (R6+R7)/2;

MIDR8 = (R7+R8)/2;

MIDR9 = (R8+R9)/2;

MIDR10 = (R9+R10)/2;

 

MIDS1 = (P+S1)/2;

MIDS2 = (S1+S2)/2;

MIDS3 = (S2+S3)/2;

MIDS4 = (S3+S4)/2;

MIDS5 = (S4+S5)/2;

MIDS6 = (S5+S6)/2;

MIDS7 = (S6+S7)/2;

MIDS8 = (S7+S8)/2;

MIDS9 = (S8+S9)/2;

MIDS10 = (S9+S10)/2;

 

n=130;

per =11.5;

x = Cum(1);

s1=IIf(RSIa(L,n)>Min(RSIa(C,n),RSIa(O,n)),Min(RSIa (C,n),RSIa(O,n)),RSIa(L,n));

s11=IIf(RSIa(H,n)<Max(RSIa(C,n),RSIa(O,n)),Max(RSIa(C,n),RSIa(O,n)),RSIa(H,n));

pS = TroughBars( s1, per, 1 ) == 0;

endt= LastValue(ValueWhen( pS, x, 1 ));

startt=LastValue(ValueWhen( pS, x, 2 ));

dtS =endt-startt;

endS = LastValue(ValueWhen( pS, s1, 1 ) );

startS = LastValue( ValueWhen( pS, s1, 2 ));

aS = (endS-startS)/dtS;bS = endS;

trendlineS = aS * ( x -endt ) + bS;

pR = PeakBars( s11, per, 1 ) == 0;

endt1= LastValue(ValueWhen( pR, x, 1 ));

startt1=LastValue(ValueWhen( pR, x, 2 ));

dtR =endt1-startt1;

endR = LastValue(ValueWhen( pR, s11, 1 ) );

startR = LastValue( ValueWhen( pR, s11, 2 ));

aR = (endR-startR)/dtR;

bR = endR;

trendlineR = aR * ( x -endt1 ) + bR;

//Plot(ValueWhen( (S1==trendlineS ), L),"", colorGreen, styleDashed|styleNoRescale|styleThick);

//Plot(ValueWhen((S11==trendlineR ), H),"", colorRed, styleDashed|styleNoRescale|styleThick);

Buy = Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(S1==trendlineS,-1),-1),-1),-1),-1),-1),-1),-1),-1),-1),-1);

Sell = Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(S11==trendlineR,-1 ),-1),-1),-1),-1),-1),-1),-1),-1),-1),-1),-1),-1 ),-1 ),-1 ),-1 ),-1 );

Buy = ExRem( Buy, Sell );

Sell = ExRem( Sell, Buy );

AlertIf( Buy, "", "BUY @ " + C, 1 );

AlertIf( Sell, "", "SELL @ " + C, 2 );

//PlotShapes( Buy * shapeUpArrow + Sell * shapeDownArrow, IIf( Buy, colorGold, colorPink) );

dist = 2.5*ATR(10);

dist1 = 0.7*ATR(10);

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

{

 if( Buy[i] )

 {

  PlotText( "\n     Heavy Fire Up Ahead     "  , i, L[ i ]-dist[i], colorBlack, colorGreen );

  //Say("Heavy Fire Up Ahead");

 }

 if( Sell[i] )

 {

  PlotText( "     Heavy Down Fall Ahead     "  , i, H[ i ]+dist1[i], colorBlack, colorRed );

  //Say("Heavy Down Fall Ahead");

 }

}

 

n=45;

per =20;

x = Cum(1);

s1=IIf(RSIa(L,n)>Min(RSIa(C,n),RSIa(O,n)),Min(RSIa (C,n),RSIa(O,n)),RSIa(L,n));

s11=IIf(RSIa(H,n)<Max(RSIa(C,n),RSIa(O,n)),Max(RSIa(C,n),RSIa(O,n)),RSIa(H,n));

pS = TroughBars( s1, per, 1 ) == 0;

endt= LastValue(ValueWhen( pS, x, 1 ));

startt=LastValue(ValueWhen( pS, x, 2 ));

dtS =endt-startt;

endS = LastValue(ValueWhen( pS, s1, 1 ) );

startS = LastValue( ValueWhen( pS, s1, 2 ));

aS = (endS-startS)/dtS;bS = endS;

trendlineS = aS * ( x -endt ) + bS;

pR = PeakBars( s11, per, 1 ) == 0;

endt1= LastValue(ValueWhen( pR, x, 1 ));

startt1=LastValue(ValueWhen( pR, x, 2 ));

dtR =endt1-startt1;

endR = LastValue(ValueWhen( pR, s11, 1 ) );

startR = LastValue( ValueWhen( pR, s11, 2 ));

aR = (endR-startR)/dtR;

bR = endR;

trendlineR = aR * ( x -endt1 ) + bR;

//Plot(trendlineR , "trendlineR" ,colorRed , styleLine);

//Plot(ValueWhen( (S1==trendlineS ), L),"", colorGreen, styleDashed|styleNoRescale|styleThick);

//Plot(ValueWhen((S11==trendlineR ), H),"", colorRed, styleDashed|styleNoRescale|styleThick);

Buy = Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(S1==trendlineS,-1),-1),-1),-1),-1),-1),-1),-1),-1),-1),-1);

Sell = Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(Ref(S11==trendlineR,-1 ),-1),-1),-1),-1),-1),-1),-1),-1),-1),-1),-1),-1 ),-1 ),-1 ),-1 ),-1 );

Buy = ExRem( Buy, Sell );

Sell = ExRem( Sell, Buy );

// Plot the ribbon

ribboncol= IIf( BarsSince(Buy)<BarsSince(Sell), colorGreen, colorRed );

Plot( 3, "", ribboncol, styleArea | styleOwnScale | styleNoLabel, 0, 100 );

PlotShapes(IIf(Buy, shapeSquare,shapeNone) ,colorBlue,0, Close, Offset=-10) ;

PlotShapes(IIf(Buy, shapeSmallUpTriangle,shapeNone) ,colorLime,0, Close, Offset=-10) ;

PlotShapes(IIf(Sell, shapeSquare,shapeNone),colorRed,0, Close, Offset=-1) ;

PlotShapes(IIf(Sell, shapeSmallDownTriangle,shapeNone),colorLime,0, Close, Offset=-1) ;

PlotShapes( Buy * shapeNone + Sell * shapeNone, IIf( Buy, colorBlue, colorPink) );

dist = 0.8*ATR(10);

dist1 = 2*ATR(10);

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

{

 if( Buy[i] )

 {

  PlotText( "\nHNI Buy 10 Lots @" + C[ i ] + "\nTGT= " + (C[i]*1.0045) + "\nSL= " + (C[i]*0.9970), i, L[ i ]-dist[i], colorGreen, colorBlack );

 }

 if( Sell[i] )

 {

  PlotText( "HNI Sell 10 Lots @" + C[ i ] + "\nT= " + (C[i]*0.995) + "\nSL= " + (C[i]*1.0025), i, H[ i ]+dist1[i], colorRed, colorBlack );

 }

}

 

_SECTION_END();

 

Uphigh =  HHV(C,90);

downhigh = LLV (C, 40);

//Buy = C>= Uphigh;

//Sell = C<= downhigh;

Buy  = ExRem (Buy,Sell);

Sell = ExRem (Sell,Buy);

 

 

_SECTION_BEGIN("BACK COLOR");

SetChartBkGradientFill( ParamColor("BgTop", colorPlum),

 

ParamColor("BgBottom", colorBlack),ParamColor("titleblock",colorPlum));

 

Title = (EncodeColor(colorGold)+Day() + EncodeColor(colorWhite) + Name()+"  " + Date() +"  "+Interval(2) +"  "+ EncodeColor(colorWhite)+",Open "+Open +" , High "+H+" , Low "+L+" , Close "+C+" "+"{{VALUES}}");

 

BuyPrice = Open;

SellPrice = Open;

 

Derived=WMA(WMA(WMA(((H+L)/2)+(O-C),92),1),1);

i=WMA(Derived,3);

Upper=(Derived+StDev(Derived,7))+ATR(2)/1.5;

Lower=(Derived-StDev(Derived,7))-ATR(2)/1;

 

color=IIf(BarsSince(Cross(Lower,Low))>

BarsSince(Cross(C,Upper)), colorBrightGreen,colorRed);

Plot(C,"",color,64);

 

 

 

//WriteIf(s,"EXIT all Short positions\nif trading long positions, enter long Now-\nOR at the market price on tomorrow's Open with stop="+EncodeColor(4)+WriteVal(L+.75*ATR(5),1.4)+" ,","");

//WriteIf(ss,"exit all long positions today with a Market On Close (MOC) order\nOR at the market price on tomorrow's Open with stop="+EncodeColor(4)+WriteVal(Ref(H+.75*ATR(5), -1),1.4)+",","");

//WriteIf( sss ,"No trading signals today.","") ;

 

 

 

SetBarsRequired( 600, 0 );

 

GraphXSpace = 8;

SetChartOptions( 0, chartShowArrows | chartShowDates );

 

 

//============== TITLE ==============

 

_SECTION_BEGIN("Magnified Market Price");

FS=Param("Font Size",30,11,100,1);

GfxSelectFont("Times New Roman", FS, 700, True );

GfxSetBkMode( colorWhite ); 

GfxSetTextColor( ParamColor("Color",colorGold) );

Hor=Param("Horizontal Position",970,1,1200,1);

Ver=Param("Vertical Position",50,1,830,1);

GfxTextOut(""+C, Hor , Ver );

YC=TimeFrameGetPrice("C",inDaily,-1);

DD=Prec(C-YC,2);

xx=Prec((DD/YC)*100,2);

GfxSelectFont("Times New Roman", 11, 700, True );

GfxSetBkMode( colorWhite ); 

GfxSetTextColor(ParamColor("Color",colorBlack) );

GfxTextOut(""+DD+"  ("+xx+"%)", Hor , Ver+45 );

 

_SECTION_END();

 

 

_SECTION_BEGIN("Price Line");

dp= Param("dps",3,0,1000,1);

PriceLineColor=ParamColor("PriceLineColor",colorOrange);

PriceLevel = ParamField("PriceField", field = 3 );

PriceLeve2 = ParamField("PriceField", field = dp );

Daysback    = Param("Bars Back",1,10,500,1);

FirstBar    = BarCount - DaysBack;

 YY        = IIf(BarIndex() >= Firstbar,EndValue(PriceLevel),Null);

 

Plot(YY,"Current Price",PriceLineColor,ParamStyle("LineStyle",styleLine|styleDashed|styleNoTitle|styleNoLabel|styleThick,maskAll));

 

side = Param("side",1,0,1000,1);

 

dist = 0;

 

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

{

 if(i+side== BarCount) PlotText( "\n    " + PriceLevel[ i ], i, YY[ i ]-dist[i], colorGold );

 

}

 

_SECTION_END();

 

       /****************/

                        /*              */

                        /* ALERT OUTPUT */

                        /*              */

                        /****************/

 

                        TxtX = Param("Text Left", 600, 0, 1000, 10);

                        TxtY = Param("Text Top", 60, 1, 650, 10);

 

                        GfxSelectFont("Tahoma", 14, 700 );

                        GfxSetBkMode(1);

 

                        if(LastValue(Buy) OR SelectedValue(Buy))

                                    {

                                                GfxSetTextColor(colorGold);

                                                GfxTextOut("Waiting For Next Signal", TxtX, TxtY);

                                                Say("");

                                    }

 

                        else if(LastValue(Sell) OR SelectedValue(Sell))

                                    {

                                                GfxSetTextColor(colorGold);

                                                GfxTextOut("Waiting For Next Signal", TxtX, TxtY);

                                                Say("");

                                    }

 

                        else

                                    {

                                                GfxSetTextColor(colorGold);

              GfxTextOut("Waiting For Next Signal ", TxtX, TxtY); 

                                                GfxTextOut("", TxtX, TxtY);

                                    }

_SECTION_BEGIN("sys");

 

x=Param("xposn",315,0,1000,1);

y=Param("yposn",576,0,1000,1);

 

 

 

_SECTION_END();

 

 

 

 

_SECTION_BEGIN("Background text");

C11=ParamColor("up panel",colorBlack );

C12=ParamColor("dn panel",colorBlack );

C13=Param("fonts",20,10,30,1 );

C14=Param("left-right",2.1,1.0,5.0,0.1 );

C15=Param("up-down",8,1,30,1 );

Miny = Status("axisminy");

Maxy = Status("axismaxy");

lvb = Status("lastvisiblebar");

fvb = Status("firstvisiblebar");

pxwidth = Status("pxwidth");

pxheight = Status("pxheight");

GfxSetBkMode( 0 );

GfxSelectFont("Tahoma", 12, 500, False, False, 0);

GfxSetTextColor(colorCustom12);

GfxSetTextAlign( 6 );

GfxSelectFont("Tahoma", 15, 600, False, False, 0);

GfxSetTextColor(colorWhite);

GfxSetTextAlign( 6 );

 

GfxSelectFont("Tahoma", 12, 400, False, False, 0);

GfxSetTextColor(colorBrightGreen);

 

GfxSelectFont("Tahoma", 12, 400, False, False, 0);

GfxSetTextColor(colorRed);

 

pricechange=(C-Ref(C,-1))*100/Ref(C,-1);

changeponit=C-Ref(C,-1);

Vlp=Param("Volume lookback period",15,10,300,10);

Vrg=MA(V,Vlp);

St = StDev(Vrg,Vlp);

Vp3 = Vrg + 3*st;

Vp2 = Vrg + 2*st;;

Vp1 = Vrg + 1*st;;

Vn1 = Vrg -1*st;

Vn2 = Vrg -2*st;

 

x=Param("xposn",1,0,1000,1);

y=Param("yposn",1,0,1000,1);

 

GfxGradientRect( 1, 1, 1400, 40, colorViolet, colorBlack);

GfxSetBkMode(0);

GfxSelectFont( "Georgia", 18, 800, False );

GfxSetTextColor( colorGold );

GfxTextOut( "www.pipschart.com | KrT group Research ", x+600, y+10 );

GfxSelectFont( "Tahoma", 10, 800, False );

GfxSetTextColor( colorGold );

GfxTextOut( Name(), x+100, y+10 );

GfxSelectFont( "Century Gothic", 15, 100, False );

GfxSetTextColor( colorGold );

GfxTextOut( Date(), x+1000, y+10 );

GfxSelectFont( "Comic Sans MS", 15, 500, False );

GfxSetTextColor( colorYellow );

GfxTextOut( Interval(2), x+275, y+10 );

//------------------------------------------------------------ H, L, O, C----------------------

GfxGradientRect( 1, 40, 1400, 55, colorViolet, colorBlack );

GfxSetBkMode(0);

GfxSelectFont( "Areal", 9, 200, False );

GfxSetTextColor( colorWhite );

GfxTextOut( "High:"+WriteVal(H,1.2), x+100, y+40 );

GfxSelectFont( "Areal", 9, 200, False );

GfxSetTextColor( colorWhite );

GfxTextOut( "Low:"+WriteVal(L,1.2), x+200, y+40 );

GfxSelectFont( "Areal", 9, 200, False );

GfxSetTextColor( colorWhite );

GfxTextOut( "Open:"+WriteVal(O,1.2), x+300, y+40 );

GfxSelectFont( "Areal", 9, 200, False );

GfxSetTextColor( colorWhite );

GfxTextOut( "Close:"+WriteVal(C,1.2), x+400, y+40 );

GfxSelectFont( "comic sans ms", 12, 100, False );

//-----------------------------------------------------------Valume-------------------------------

 

 

// set criteria to scan for big stock only;

BigStock = MA( V, 10 ) * MA( C, 10 ) > 100;

 

//---------------Color------------------------

per1 = 6;

per2 = 2;

Om = MA( O, per1 );

hm = MA( H, per1 );

lm = MA( L, per1 );

Cm = MA( C, per1 );

 

// 1. Heiken Ashi

HACLOSE = ( Om + Hm + Lm + Cm ) / 4;

HaOpen = AMA( Ref( HaClose,  -1 ),  0.5 );

HaHigh = Max( Hm,  Max( HaClose,  HaOpen ) );

HaLow = Min( Lm,  Min( HaClose,  HaOpen ) );

 

 

Of = MA( Haopen, per2 );

Cf = MA( Haclose, per2 );

Lf = IIf( haOpen < haClose, MA( Halow, per2 ), MA( Hahigh, per2 ) );

Hf = IIf( haOpen < haClose, MA( Hahigh, per2 ), MA( Halow, per2 ) );

//Color = IIf( Cf > Of, colorGreen, colorRed );

 

 

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

 

TrailStop = HHV( C - 2 * ATR( 10 ), 15 );

ProfitTaker = EMA( H, 13 ) + 2 * ATR( 10 );

 

/* **********************************

Code to automatically identify pivots

********************************** */

 

// -- what will be our lookback range for the hh and ll?

farback = 140; //How Far back to go

nBars = 12; //Number of bars

 

// -- Create 0-initialized arrays the size of barcount

aHPivs = H - H;

aLPivs = L - L;

 

// -- More for future use, not necessary for basic plotting

aHPivHighs = H - H;

aLPivLows = L - L;

aHPivIdxs = H - H;

aLPivIdxs = L - L;

nHPivs = 0;

nLPivs = 0;

lastHPIdx = 0;

lastLPIdx = 0;

lastHPH = 0;

lastLPL = 0;

curPivBarIdx = 0;

 

// -- looking back from the current bar, how many bars

// back were the hhv and llv values of the previous

// n bars, etc.?

aHHVBars = HHVBars( O, nBars );

aLLVBars = LLVBars( O, nBars );

aHHV = HHV( O, nBars );

aLLV = LLV( O, nBars );

 

// -- Would like to set this up so pivots are calculated back from

// last visible bar to make it easy to "go back" and see the pivots

// this code would find. However, the first instance of

// _Trace output will show a value of 0

aVisBars = Status( "barvisible" );

nLastVisBar = LastValue( Highest( IIf( aVisBars, BarIndex(), 0 ) ) );

_TRACE( "Last visible bar: " + nLastVisBar );

 

// -- Initialize value of curTrend

curBar = ( BarCount - 1 );

curTrend = "";

 

if ( aLLVBars[curBar] < aHHVBars[curBar] )

{

    curTrend = "D";

}

else

{

    curTrend = "U";

}

 

// -- Loop through bars. Search for

// entirely array-based approach

// in future version

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

{

    curBar = ( BarCount - 1 ) - i;

// -- Have we identified a pivot? If trend is down...

 

    if ( aLLVBars[curBar] < aHHVBars[curBar] )

    {

// ... and had been up, this is a trend change

        if ( curTrend == "U" )

        {

            curTrend = "D";

// -- Capture pivot information

            curPivBarIdx = curBar - aLLVBars[curBar];

            aLPivs[curPivBarIdx] = 1;

            aLPivLows[nLPivs] = L[curPivBarIdx];

            aLPivIdxs[nLPivs] = curPivBarIdx;

            nLPivs++;

        }

 

// -- or current trend is up

    }

    else

    {

        if ( curTrend == "D" )

        {

            curTrend = "U";

            curPivBarIdx = curBar - aHHVBars[curBar];

            aHPivs[curPivBarIdx] = 1;

            aHPivHighs[nHPivs] = H[curPivBarIdx];

            aHPivIdxs[nHPivs] = curPivBarIdx;

            nHPivs++;

        }

 

// -- If curTrend is up...else...

    }

 

// -- loop through bars

}

 

// -- Basic attempt to add a pivot this logic may have missed

// -- OK, now I want to look at last two pivots. If the most

// recent low pivot is after the last high, I could

// still have a high pivot that I didn't catch

// -- Start at last bar

curBar = ( BarCount - 1 );

 

candIdx = 0;

 

candPrc = 0;

 

lastLPIdx = aLPivIdxs[0];

 

lastLPL = aLPivLows[0];

 

lastHPIdx = aHPivIdxs[0];

 

lastHPH = aHPivHighs[0];

 

if ( lastLPIdx > lastHPIdx )

{

// -- Bar and price info for candidate pivot

    candIdx = curBar - aHHVBars[curBar];

    candPrc = aHHV[curBar];

 

    if (

        lastHPH < candPrc AND

        candIdx > lastLPIdx AND

        candIdx < curBar )

    {

// -- OK, we'll add this as a pivot...

        aHPivs[candIdx] = 1;

// ...and then rearrange elements in the

// pivot information arrays

 

        for ( j = 0; j < nHPivs; j++ )

        {

            aHPivHighs[nHPivs-j] = aHPivHighs[nHPivs- ( j+1 )];

            aHPivIdxs[nHPivs-j] = aHPivIdxs[nHPivs-( j+1 )];

        }

 

        aHPivHighs[0] = candPrc ;

 

        aHPivIdxs[0] = candIdx;

        nHPivs++;

    }

}

else

{

// -- Bar and price info for candidate pivot

    candIdx = curBar - aLLVBars[curBar];

    candPrc = aLLV[curBar];

 

    if (

        lastLPL > candPrc AND

        candIdx > lastHPIdx AND

        candIdx < curBar )

    {

// -- OK, we'll add this as a pivot...

        aLPivs[candIdx] = 1;

// ...and then rearrange elements in the

// pivot information arrays

 

        for ( j = 0; j < nLPivs; j++ )

        {

            aLPivLows[nLPivs-j] = aLPivLows[nLPivs-( j+1 )];

            aLPivIdxs[nLPivs-j] = aLPivIdxs[nLPivs-( j+1 )];

        }

 

        aLPivLows[0] = candPrc;

 

        aLPivIdxs[0] = candIdx;

        nLPivs++;

    }

}

 

//============== EXPLORATION ==============

Buy = Cover = BigStock AND aLPivs == 1;

 

Sell = Short = BigStock AND aHPivs == 1;

 

SellPrice = ValueWhen( Sell, C, 1 );

 

BuyPrice = ValueWhen( Buy, C, 1 );

 

Long = Flip( Buy, Sell );

 

Shrt = Flip( Sell, Buy );

 

//============== Plot price ==============

n = 15;

 

a =  C > ( MA( H, n ) + MA( L, n ) ) / 2;// then Buy next bar at market;

 

b = C < ( MA( H, n ) + MA( L, n ) ) / 2;// then Sell Short next bar at market;

 

state = IIf( BarsSince( a ) < BarsSince( b ), 1, 0 );

 

Longs = state == 1;

 

shorts = state == 0;

 

_SECTION_BEGIN("SkyBlue's Animated BkGround");

 

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

z = (GetPerformanceCounter()/100)%256;

anim=ColorHSB( ( i + z ) % 256, 255, 100 );

SetChartBkColor(anim);

RequestTimedRefresh(1);

 

_SECTION_END();

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/higher-high-lower-high-afl/

Comments

Post a Comment

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