krishna afl

Upload: suresh-ram-r

Post on 17-Oct-2015

278 views

Category:

Documents


8 download

DESCRIPTION

AFL

TRANSCRIPT

/*

HARMONIC PATTERN DETECTION

Automatic Detection of Harmonic Patterns - Gartley, Bat, Butterfly and Crab. Zig Zag is not used in this AFL. It is based on fractals Contact - [email protected] */ _SECTION_BEGIN("Price"); SetChartOptions(0,chartShowArrows|chartShowDates); _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Cl ose %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) )); Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("S tyle") | GetPriceStyle() ); _SECTION_END(); _SECTION_BEGIN("Gartley"); GBmin GBmax GCmin GCmax GDmin GDmax = = = = = = Param("Swing Param("Swing Param("Swing Param("Swing Param("Swing Param("Swing B B C C D D Min.",0.55,0.3,1,0.01); Max.",0.72,0.4,1,0.01); Min.",0.38,0.3,1.27,0.01); Max.",1.0,0.4,1.27,0.01); Min.(XA)",0.55,0.3,1,0.01); Max.(XA)",1.0,0.4,1.0,0.01);

_SECTION_END(); _SECTION_BEGIN("Bat"); BatBmin BatBmax BatCmin BatCmax BatDmin BatDmax = = = = = = Param("Swing Param("Swing Param("Swing Param("Swing Param("Swing Param("Swing B B C C D D Min.",0.38,0.3,1,0.01); Max.",0.55,0.4,1,0.01); Min.",0.38,0.3,1.62,0.01); Max.",1.27,0.4,1.62,0.01); Min.(XA)",0.5,0.3,1,0.01); Max.(XA)",1.0,0.4,1.0,0.01);

_SECTION_END(); _SECTION_BEGIN("Butterfly"); BtBmin BtBmax BtCmin BtCmax BtDmin BtDmax // Max = Param("Swing B Min.",0.55,0.3,1,0.01); = Param("Swing B Max.",0.9,0.4,1,0.01); = Param("Swing C Min.",0.38,0.3,1.62,0.01); = Param("Swing C Max.",1.27,0.4,1.62,0.01); = Param("Swing D Min.(XA)",1,1,1.8,0.01); = Param("Swing D Max.(XA)",1.8,1,1.8,0.01); XA of Butterfly = (1.0 - 1.618)

_SECTION_END(); _SECTION_BEGIN("Crab"); CBmin CBmax CCmin CCmax = = = = Param("Swing Param("Swing Param("Swing Param("Swing B B C C Min.",0.38,0.3,1,0.01); Max.",0.65,0.4,1,0.01); Min.",0.38,0.3,1.62,0.01); Max.",1.270,0.4,1.62,0.01);

CDmin = Param("Swing D Min.(XA)",1.25,1,1.8,0.01); CDmax = Param("Swing D Max.(XA)",1.8,1,2,0.01); _SECTION_END(); _SECTION_BEGIN("AB=CD"); abcd_Cmin 0.01); abcd_Cmax 0.01); abcd_Dmin abcd_Dmax 0.01); = Param("Swing C Min.",0.3, = Param("Swing C Max.",0.8, = Param("Swing D Min.",1.2, = Param("Swing D Max.",3.7, 0.3 0.8 1, 1, , , 1, 1, 2.7, 4, 0.01);

_SECTION_END(); _SECTION_BEGIN("Patterns"); //strength = Param("Strength",5,2,15,1); // Best use: 3, 4, 5 strength = Param("BARS of each LINE",5,2,15,1); // So luong bar cho moi duong XA, AB, BC, bu = ParamToggle("Bullish Pattern","Off|On",1); // So bar/lines se quyet dinh. mo^ hinh` duoc ve the' nao` be = ParamToggle("Bearish Pattern","Off|On",1); bi = Cum(1)-1; function GetTop(bars) // Lay' gia' tri cao nhat' = di?nh { Top = H == HHV(H,2*bars) AND Ref(HHV(H,bars),bars) < H; Top = Top AND LastValue(bi)-ValueWhen(Top,bi) > bars; return Top; } function GetValley(bars) // La'y gia tri thap' nhat' = day' { Valley = L == LLV(L,2*bars) AND Ref(LLV(L,bars),bars) > L; Valley = Valley AND LastValue(bi)-ValueWhen(Valley,bi) > bars; return Valley; } // Build fractals array P1 = GetTop(strength); // so' bar cho 1 duong` XA, AB, BC, CD V1 = GetValley(Strength); P1 = IIf(P1,IIf(ValueWhen(P1,bi,2) < ValueWhen(V1,bi),P1,IIf(ValueWhen(P1,H,2) > H,False,P1)),P1); P1 = IIf(P1 AND ValueWhen(P1,bi,0) > bi,IIf(ValueWhen(P1,bi,0) < ValueWhen(V1,bi ,0),IIf(ValueWhen(P1,H,0) >= H,False,P1),P1),P1); V1 = IIf(V1,IIf(ValueWhen(V1,bi,2) < ValueWhen(P1,bi),V1,IIf(ValueWhen(V1,L,2) bi ,IIf(ValueWhen(V1,bi,0) < ValueWhen(P1,b i,0),IIf(ValueWhen(V1,L,0) V1Bar1 AND V1Bar1 > P1Bar2 AND P1bar2 > V1Bar2) AND P1; // P eaks and troughs are in order myAX myAB myBC myAB_AX myBC_AB = = = = = P1H2-V1L2; P1H2-V1L1; P1H1-V1L1;

myAB/ myAX; myBC/ myAB; AND AND ( ( myAB_AX > GBmin ) (

BullGartley4 = PTvalid AND ( myAB_AX < GBmax ) myBC_AB > GCMin BullBat4 n ) AND ( )

AND myBC_AB < GCMax ); AND ) (

= PTvalid myAB_AX < BatBmax AND ( AND ) AND ( AND (

myAB_AX > BatBmi AND ); (

myBC_AB > BatCMin ) BullButterfly4 = PTvalid AND ( myAB_AX < BtBMax myBC_AB > BtCmin ) BullCrab4 ) myBC_AB > CCmin ) BullABCD4 AND ( myBC_AB < abcd_Cmax strPattern = "";

myBC_AB < BatCMax (

myAB_AX > BtBmin ) AND ); ( ) (

myBC_AB < BtCmin

= PTvalid AND myAB_AX < CBmax AND (

myAB_AX > CBmin AND (

myBC_AB < CCmax ); ( myBC_AB > abcd_Cmin)

= PTvalid AND );

//==================================================

// BULLISH ABCD // Bullish pattern found. D retracement level is not evaluated //================================================== dHigh = HighestSince(BullABCD4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD dLow = LowestSince(BullABCD4,L); myC myB myA myX myCB = = = = = ValueWhen(BullABCD4,P1H1); ValueWhen(BullABCD4,V1L1); ValueWhen(BullABCD4,P1H2); ValueWhen(BullABCD4,V1L2); myC - myB;

my_d_min = myCB * abcd_DMin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min my_d_max = myCB * abcd_DMax ; my_Cd_min = myC - my_d_min; // Khoang dich chuyen cua duong Ad con. my_Cd_max = myC - my_d_max; BullABCD n ) my_Cd_max ) AND ( dLow < my_Cd_mi

( dLow == );

AND ( dHigh L), True, False

BullABCD < myB);

=

BullABCD

AND (dLow

//================================================== // BULLISH GARTLEY //================================================== dHigh = HighestSince(BullGartley4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD dLow = LowestSince(BullGartley4,L); myC myB myA myX myAX = = = = = ValueWhen(BullGartley4,P1H1); ValueWhen(BullGartley4,V1L1); ValueWhen(BullGartley4,P1H2); ValueWhen(BullGartley4,V1L2); myA - myX; myAX * GDmin; gia' giam? tu` tre^n xuong' thi` max -> myAX * GDMax; myA - my_d_min; myA - my_d_max; ( dLow < ( dLow == ); AND (dLow my_Ad_min AND ( dHigh L), True, False myAX * BtDmax ; myA - my_d_min; myA - my_d_max; ( dLow < my_Ad_min

my_d_min = // Tinh' gia' tri cua duong Ad con. Khi min my_d_max = my_Ad_min = // Khoang dich chuyen cua duong Ad con. my_Ad_max = BullButterfly ) AND ( dHigh my_Ad_max ) ) AND

BullButterfly = myX); strPattern Y",strPattern);

=

AND ( dLow == L), True, False ); BullButterfly AND (dLow < // diem D thap' hon X WriteIf(BullButterfly ,"BULLISH BUTTERFL

//========================================================== // VE DUONG CHO MO HINH BULLISH ABCB //========================================================== BullHar4 = BullABCD4; BullHar = BullABCD; Point4 = IIf(BullHar,ValueWhen(BullHar4,bi),Null); BullHar = IIf(BullHar, IIf(Point4 == ValueWhen(BullHar,point4,0) AND ValueWhen(B ullHar,bi,0) > bi ,False,BullHar),BullHar); A = ValueWhen(BullHar4,P1H2); Abar = ValueWhen(BullHar4,P1bar2); B = ValueWhen(BullHar4,V1L1); Bbar = ValueWhen(BullHar4,V1bar1); C1 = ValueWhen(BullHar4,P1H1); C1bar = ValueWhen(BullHar4,P1bar1);

D = ValueWhen(BullHar,L); Dbar = ValueWhen(BullHar,bi); BCdAB = (C1-B)/(A-B); BCdCD = (C1-D)/(C1-B); PlotPattern = Dbar > C1bar; if(LastValue(PlotPattern) AND bu) { ColorX = colorGreen; // Ve cac duong AB, BC, CD Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(Bbar),Last Value(B)),"",ColorX ,styleThick); Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(C1bar),Las tValue(C1)),"",ColorX ,styleThick); Plot(LineArray(LastValue(C1bar),LastValue(C1),LastValue(Dbar),La stValue(D)),"",ColorX ,styleThick); Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(C1bar),Las tValue(C1)),"",ColorX ,styleDashed); Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(Dbar),Last Value(D)),"",ColorX ,styleDashed); // Ve cac gia tri Fibo PlotText(NumToStr(LastValue(BCdAB),1.2),(LastValue(C1bar)+LastVa lue(Abar))/2,(LastValue(C1)+LastValue(A))/2,ColorX ); PlotText(NumToStr(LastValue(BCdCD),1.2),(LastValue(Bbar)+LastVal ue(Dbar))/2,(LastValue(B)+LastValue(D))/2,ColorX ); //---------- Viet cac diem X, A, B, C, xlech = 0; ylech = 2; PlotText("A",LastValue(Abar) ylech, ColorX ); PlotText("B",LastValue(Bbar) ylech, ColorX ); PlotText("C",LastValue(C1bar) ylech, ColorX ); PlotText("D",LastValue(Dbar) ylech, ColorX ); D: by binhnd--------------------+ + + + xlech, LastValue(A) xlech, LastValue(B) xlech, LastValue(C1) xlech, LastValue(D)

+ + -

//--------- Viet thuyet minh mo hinh: by binhnd-------------if (strPattern!="") { myStr = "Pattern: BULLISH AB=CD" ; toadoX toadoY } } // end of Ve duong` bullish abcd = = LastValue(Abar); LastValue(D);

PlotText(myStr,toadoX,toadoY,ColorX );

//========================================================== // VE DUONG CHO MO HINH BULLISH BAT, GARTLEY, BUTTERFLY, CRAB //==========================================================

BullHar4 = BullGartley4 OR BullButterfly4 OR BullBat4 OR BullCrab4 ; BullHar = BullGartley OR BullButterfly OR BullBat OR BullCrab; Point4 = IIf(BullHar,ValueWhen(BullHar4,bi),Null); BullHar = IIf(BullHar, IIf(Point4 == ValueWhen(BullHar,point4,0) AND ValueWhen(B ullHar,bi,0) > bi ,False,BullHar),BullHar); X = ValueWhen(BullHar4,V1L2); Xbar = ValueWhen(BullHar4,V1Bar2); A = ValueWhen(BullHar4,P1H2); Abar = ValueWhen(BullHar4,P1bar2); B = ValueWhen(BullHar4,V1L1); Bbar = ValueWhen(BullHar4,V1bar1); C1 = ValueWhen(BullHar4,P1H1); C1bar = ValueWhen(BullHar4,P1bar1); D = ValueWhen(BullHar,L); Dbar = ValueWhen(BullHar,bi); ABdXA BCdAB ADdXA BCdCD = = = = (A-B)/(A-X); (C1-B)/(A-B); (A-D)/(A-X); (C1-D)/(C1-B);

PlotPattern = Dbar > C1bar; if(LastValue(PlotPattern) AND bu) { ColorX = colorBlue; // Ve cac duong XA, AB, BC, CD Plot( LineArray(LastValue(Xbar),LastValue(X),LastValue(A bar),LastValue(A)),"",ColorX,styleThick); Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(Bb ar),LastValue(B)),"",ColorX,styleThick); Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(C1 bar),LastValue(C1)),"",ColorX,styleThick); Plot(LineArray(LastValue(C1bar),LastValue(C1),LastValue( Dbar),LastValue(D)),"",ColorX,styleThick); Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Bb ar),LastValue(B)),"",ColorX,styleDashed); Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Ab ar),LastValue(A)),"",ColorX,styleThick); Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(C1 bar),LastValue(C1)),"",ColorX,styleDashed); Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(Db ar),LastValue(D)),"",ColorX,styleDashed); Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Db ar),LastValue(D)),"",ColorX,styleDashed); // Ve cac gia tri Fibo PlotText(NumToStr(LastValue(ABdXA),1.2),(LastValue(Bbar) +LastValue(Xbar))/2,(LastValue(B)+LastValue(X))/2,ColorX); PlotText(NumToStr(LastValue(BCdAB),1.2),(LastValue(C1bar )+LastValue(Abar))/2,(LastValue(C1)+LastValue(A))/2,ColorX); PlotText(NumToStr(LastValue(ADdXA),1.2) ,(LastValue(Dbar )+LastValue(Xbar))/2,(LastValue(D)+LastValue(X))/2,ColorX); PlotText(NumToStr(LastValue(BCdCD),1.2),(LastValue(Bbar) +LastValue(Dbar))/2,(LastValue(B)+LastValue(D))/2,ColorX); //---------- Viet cac diem X, A, B, C, D: by binhnd-------------

-------xlech = 0; ylech = 2; PlotText("X",LastValue(Xbar) ColorX); PlotText("A",LastValue(Abar) ColorX); PlotText("B",LastValue(Bbar) ColorX); PlotText("C",LastValue(C1bar) ColorX); PlotText("D",LastValue(Dbar) ColorX); + + + + + xlech, LastValu xlech, LastValu xlech, LastValu xlech, LastValu xlech, LastValu

e(X) e(A) e(B) e(C1) e(D)

+ + -

ylech, ylech, ylech, ylech, ylech,

//--------- Viet thuyet minh mo hinh: by binhnd-------------if (strPattern!="") { strPattern = "Pattern: " + strPattern ; toadoX +LastValue(Xbar))/2; toadoY stValue(X))/2; PlotText(strPattern,toadoX,toadoY-2,ColorX); } } // end of Ve duong cho cac mo hinh Crab, Butterfly, Bat = (LastValue(D)+La = (LastValue(Dbar)

//============================================================= // BEARISH PATTERNS //============================================================= PTvalid = (V1Bar1 > P1Bar1 AND P1Bar1 > V1Bar2 AND V1Bar2 > P1Bar2) AND V1; /*===================== X = P1H2 o hinh` bear: Die^m X cao hon diem A. MyAX = X-> A A = V1L2 B = P1H1 C = V1L1 =======================*/ myAX = myAB = myBC = myAB_AX myBC_AB = = P1H2-V1L2; P1H1-V1L2; P1H1-V1L1; Trong m

myAB/ myAX; myBC/ myAB; AND AND ( ( myAB_AX > GBmin ) (

BearGartley4 = PTvalid AND ( myAB_AX < GBmax ) myBC_AB > GCMin BearBat4 n ) AND ( )

AND myBC_AB < GCMax ); AND ) (

= PTvalid myAB_AX < BatBmax AND (

myAB_AX > BatBmi AND ); (

myBC_AB > BatCMin )

myBC_AB < BatCMax

BearButterfly4 = PTvalid AND ( myAB_AX < BtBMax myBC_AB > BtCmin ) BearCrab4 ) myBC_AB > CCmin ) BearABCD4 AND ( myBC_AB < abcd_Cmax strPattern = ""; AND (

AND ) AND (

(

myAB_AX > BtBmin ) AND ); ( ) (

myBC_AB < BtCmin

= PTvalid AND myAB_AX < CBmax AND (

myAB_AX > CBmin AND (

myBC_AB < CCmax ); ( myBC_AB > abcd_Cmin)

= PTvalid AND );

//========================================================== // BEARISH ABCD // Bearish pattern found. D retracement level is not evaluated //========================================================== dHigh = HighestSince(BearABCD4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD dLow = LowestSince(BearABCD4,L); myA myB myC myCB = = = = ValueWhen(BearABCD4,V1L2); ValueWhen(BearABCD4,P1H1); ValueWhen(BearABCD4,V1L1); myB - myC;

my_d_min = myCB * abcd_DMin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min my_d_max = myCB * abcd_DMax ; my_Cd_min = myC + my_d_min; // Khoang dich chuyen cua duong Ad con. my_Cd_max = myC + my_d_max; BearABCD my_Cd_min >= myC ) = AND ) IIf( ( dHigh ( dHigh < my_Cd_max ) AND >

AND ( dLow ( dHigh == H), True, False ); AND (dHigh

BearABCD > myB);

=

BearABCD

//============================================================= // BEARISH GARTLEY //============================================================= dHigh = HighestSince(BearGartley4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD dLow = LowestSince(BearGartley4,L); myX myA myAX = = = ValueWhen(BearGartley4,P1H2); ValueWhen(BearGartley4,V1L2); myX - myA;

myB myC

= =

ValueWhen(BearGartley4,P1H1); ValueWhen(BearGartley4,V1L1); myAX * GDmin; gia' giam? tu` tre^n xuong' thi` max -> myAX myA myA * + + GDMax; my_d_min; my_d_max; my_Ad_min

my_d_min = // Tinh' gia' tri cua duong Ad con. Khi min my_d_max = my_Ad_min = // Khoang dich chuyen cua duong Ad con. my_Ad_max = BearGartley ) AND >= myC = = =

IIf( ( dHigh < my_Ad_max ) ) AND

( dHigh >

BearGartley myB); strPattern n);

AND ( dLow ( dHigh == H), True, False ); BearGartley AND (dHigh > // diem D cao hon B WriteIf(BearGartley ,"BEARISH GARTLEY",strPatter

//============================================================= // BEARISH BAT //============================================================= dHigh = HighestSince(BearBat4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD dLow = LowestSince(BearBat4,L); myX myA myAX myB myC = = = = = ValueWhen(BearBat4,P1H2); ValueWhen(BearBat4,V1L2); myX - myA; ValueWhen(BearBat4,P1H1); ValueWhen(BearBat4,V1L1); myAX * BatDmin ; gia' giam? tu` tre^n xuong' thi` max -> myAX myA myA * + + BatDMax ; my_d_min; my_d_max; ( dHigh > my_Ad_mi

my_d_min = // Tinh' gia' tri cua duong Ad con. Khi min my_d_max = my_Ad_min = // Khoang dich chuyen cua duong Ad con. my_Ad_max = BearBat n ) >= myC = = = AND

IIf( ( dHigh < my_Ad_max ) ) AND

BearBat > myB); strPattern

AND ( dLow ( dHigh == H), True, False ); BearBat AND (dHigh // diem D cao hon B WriteIf(BearBat ,"BEARISH BAT",strPattern);

//============================================================= // BEARISH BUTTERFLY //=============================================================

dHigh = HighestSince(BearButterfly4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD dLow = LowestSince(BearButterfly4,L); myX myA myAX myB myC = = = = = ValueWhen(BearButterfly4,P1H2); ValueWhen(BearButterfly4,V1L2); myX - myA; ValueWhen(BearButterfly4,P1H1); ValueWhen(BearButterfly4,V1L1); myAX * BtDmin ; gia' giam? tu` tre^n xuong' thi` max -> myAX myA myA * + + BtDmax ; my_d_min; my_d_max; my_Ad_min

my_d_min = // Tinh' gia' tri cua duong Ad con. Khi min my_d_max = my_Ad_min = // Khoang dich chuyen cua duong Ad con. my_Ad_max = BearButterfly = ) AND >= myC

IIf( ( dHigh < my_Ad_max ) ) AND

( dHigh >

BearButterfly = myX); strPattern Y",strPattern);

=

AND ( dLow ( dHigh == H), True, False ); BearButterfly AND (dHigh > // diem D cao hon X WriteIf(BearButterfly ,"BEARISH BUTTERFL

//============================================================= // BEARISH CRAB //============================================================= dHigh = HighestSince(BearCrab4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD dLow = LowestSince(BearCrab4,L); myX myA myAX myB myC = = = = = ValueWhen(BearCrab4,P1H2); ValueWhen(BearCrab4,V1L2); myX - myA; ValueWhen(BearCrab4,P1H1); ValueWhen(BearCrab4,V1L1); myAX * CDmin ; gia' giam? tu` tre^n xuong' thi` max -> myAX myA myA * + + CDmax ; my_d_min; my_d_max; ( dHigh > AND ( dHigh == my_Ad_mi ( dLow H),

my_d_min = // Tinh' gia' tri cua duong Ad con. Khi min my_d_max = my_Ad_min = // Khoang dich chuyen cua duong Ad con. my_Ad_max = BearCrab n ) >= myC = AND

IIf( ( dHigh < my_Ad_max ) ) AND

BearCrab > myX); strPattern

= =

True, False ); BearCrab AND (dHigh // diem D cao hon X WriteIf(BearCrab ,"BEARISH CRAB",strPattern);

//========================================================== // VE DUONG CHO MO HINH BEARISH ABCD //========================================================== BearHar4 = BearABCD4; BearHar = BearABCD; Point4 = IIf(BearHar,ValueWhen(BearHar4,bi),Null); BearHar = IIf(BearHar, IIf(Point4 == ValueWhen(BearHar,point4,0) AND ValueWhen(B earHar,bi,0) > bi ,False,BearHar),BearHar); A = ValueWhen(BearHar4,V1L2); Abar = ValueWhen( BearHar4,V1bar2); B = ValueWhen(BearHar4,P1H1); Bbar = ValueWhen(BearHar4,P1bar1); C1 = ValueWhen(BearHar4,V1L1); C1bar = ValueWhen(BearHar4,V1bar1); D = ValueWhen(BearHar,H); Dbar = ValueWhen(BearHar,bi); BCdAB = (B-C1)/(B-A); BCdCD = (D-C1)/(B-C1); PlotPattern = Dbar > C1bar; //--------- Ve duong -----------------if(LastValue(Plotpattern) AND be) { ColorX = colorYellow; // Ve duong AB, BC Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(Bbar),Last Value(B)),"",ColorX ,styleThick); Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(C1bar),Las tValue(C1)),"",ColorX ,styleThick); Plot(LineArray(LastValue(C1bar),LastValue(C1),LastValue(Dbar),La stValue(D)),"",ColorX ,styleThick); Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(C1bar),Las tValue(C1)),"",ColorX ,styleDashed); Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(Dbar),Last Value(D)),"",ColorX ,styleDashed); // Viet cac gia tri Fibo tren duong AB, BC PlotText(NumToStr(LastValue(BCdAB),1.2),(LastValue(C1bar)+LastVa lue(Abar))/2,(LastValue(C1)+LastValue(A))/2,ColorX ); PlotText(NumToStr(LastValue(BCdCD),1.2) ,(LastValue(Dbar)+LastVa lue(Bbar))/2,(LastValue(D)+LastValue(B))/2,ColorX ); //---------- Viet cac diem A, B, C, D: by binhnd--------------------xlech = -1; ylech = 1; PlotText("A",LastValue(Abar) + xlech, LastValue(A)

+ +

ylech, ColorX ); PlotText("B",LastValue(Bbar) ylech, ColorX ); PlotText("C",LastValue(C1bar) ylech, ColorX ); PlotText("D",LastValue(Dbar) ylech, ColorX );

+ + +

xlech, LastValue(B) xlech, LastValue(C1) xlech, LastValue(D)

//--------- Viet thuyet minh mo hinh: by binhnd-------------if (strPattern!="") { myStr = "Pattern: BEARIS H AB=CD"; toadoaX = LastValue(Abar); toadoY = LastValue(D); PlotText(myStr,toadoaX,toadoY+1,ColorX ); } } // end of VE DUONG CHO MO HINH BEARISH ABCD

//========================================================== // VE DUONG CHO MO HINH BEARISH BAT, GARTLEY, BUTTERFLY, CRAB //========================================================== BearHar4 = BearGartley4 OR BearButterfly4 OR BearBat4 OR BearCrab4 ; BearHar = BearGartley OR BearButterfly OR BearBat OR BearCrab ; Point4 = IIf(BearHar,ValueWhen(BearHar4,bi),Null); BearHar = IIf(BearHar, IIf(Point4 == ValueWhen(BearHar,point4,0) AND ValueWhen(B earHar,bi,0) > bi ,False,BearHar),BearHar); X = ValueWhen(BearHar4,P1H2); Xbar = ValueWhen(BearHar4,P1Bar2); A = ValueWhen(BearHar4,V1L2); Abar = ValueWhen( BearHar4,V1bar2); B = ValueWhen(BearHar4,P1H1); Bbar = ValueWhen(BearHar4,P1bar1); C1 = ValueWhen(BearHar4,V1L1); C1bar = ValueWhen(BearHar4,V1bar1); D = ValueWhen(BearHar,H); Dbar = ValueWhen(BearHar,bi); ABdXA BCdAB ADdXA BCdCD = = = = (B-A)/(X-A); (B-C1)/(B-A); (D-A)/(X-A); (D-C1)/(B-C1);

PlotPattern = Dbar > C1bar; //--------- Ve duong -----------------if(LastValue(Plotpattern) AND be) { ColorX = colorRed; // Ve duong XA, AB, BC Plot( LineArray(LastValue(Xbar),LastValue(X),LastValue(Abar),Las tValue(A)),"",ColorX ,styleThick); Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(Bbar),Last Value(B)),"",ColorX ,styleThick);

Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(C1bar),Las tValue(C1)),"",ColorX ,styleThick); Plot(LineArray(LastValue(C1bar),LastValue(C1),LastValue(Dbar),La stValue(D)),"",ColorX ,styleThick); Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Bbar),Last Value(B)),"",ColorX ,styleDashed); Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Abar),Last Value(A)),"",ColorX ,styleThick); Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(C1bar),Las tValue(C1)),"",ColorX ,styleDashed); Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(Dbar),Last Value(D)),"",ColorX ,styleDashed); Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Dbar),Last Value(D)),"",ColorX ,styleDashed); // Viet cac gia tri Fibo tren duong XA, AB, BC PlotText(NumToStr(LastValue(ABdXA),1.2),(LastValue(Bbar)+LastVal ue(Xbar))/2,(LastValue(B)+LastValue(X))/2,ColorX ); PlotText(NumToStr(LastValue(BCdAB),1.2),(LastValue(C1bar)+LastVa lue(Abar))/2,(LastValue(C1)+LastValue(A))/2,ColorX ); PlotText(NumToStr(LastValue(BCdCD),1.2) ,(LastValue(Dbar)+LastVa lue(Bbar))/2,(LastValue(D)+LastValue(B))/2,ColorX ); PlotText(NumToStr(LastValue(ADdXA),1.2) ,(LastValue(Dbar)+LastVa lue(Xbar))/2,(LastValue(D)+LastValue(X))/2,ColorX ); //---------- Viet cac diem X, A, B, C, xlech = -1; ylech = 1; PlotText("X",LastValue(Xbar) ylech, ColorX ); PlotText("A",LastValue(Abar) ylech, ColorX ); PlotText("B",LastValue(Bbar) ylech, ColorX ); PlotText("C",LastValue(C1bar) ylech, ColorX ); PlotText("D",LastValue(Dbar) ylech, ColorX ); D: by binhnd--------------------+ + + + + xlech, LastValue(X) xlech, LastValue(A) xlech, LastValue(B) xlech, LastValue(C1) xlech, LastValue(D)

+ + +

//--------- Viet thuyet minh mo hinh: by binhnd-------------if (strPattern!="") { strPattern = "Pattern: " + strPattern ; toadoaX ue(Xbar))/2; toadoY stValue(X))/2; PlotText(strPattern,toadoaX,toadoY+1,ColorX ); } } TERFLY, CRAB // end of VE DUONG CHO MO HINH BEARISH BAT, GARTLEY, BUT = (LastValue(D)+La = (LastValue(Dbar)+LastVal

//================================= // Show diem ho^~ tro. va` khang' cu. ko?

//================================= plotFractals = ParamToggle("Plot Fractals","Off|On",1); if(PlotFractals) { PlotShapes(shapeSmallCircle*P1,colorBlack,0,H,10); PlotShapes(shapeSmallCircle*V1,colorBlue,0,L,-10); }

//============================================== // DAT DIEU KIEN cho TIM KIEM BULL //============================================== dkBull = False; ListBull = ParamList("Type of Bullish", "None|AB=CD|Gartley |Butterfly|Bat|Crab|All Patterns", 6); if ( ListBull == "None" ) dkBull = True; if ( ListBull =="AB=CD" ) dkBull = BullABCD ; if ( ListBull =="Gartley" ) dkBull = BullGartley ; if ( ListBull =="Butterfly" ) dkBull = BullButt erfly ; if ( ListBull =="Bat" ) dkBull = BullBat ; if ( ListBull =="Crab" ) dkBull = BullCrab ; if ( ListBull =="All Patterns") dkBull = (BullABC D) OR (BullGartley) OR (BullButterfly ) OR (BullBat ) OR (BullCrab); //============================================== // DAT DIEU KIEN cho TIM KIEM BEAR //============================================== dkBear = False; ListBear = ParamList("Type of Bearish", "None|AB=CD|Gartley |Butterfly|Bat|Crab|All Patterns", 0); if ( ListBear == "None" ) dkBear = True; if ( ListBear =="AB=CD" ) dkBear = BearABCD ; if ( ListBear =="Gartley" ) dkBear = BearGartley ; if ( ListBear =="Butterfly" ) dkBear = BearButt erfly ; if ( ListBear =="Bat" ) dkBear = BearBat ; if ( ListBear =="Crab" ) dkBear = BearCrab ; if ( ListBear =="All Patterns") dkBear = (BearABC D ) OR (BearGartley ) OR (BearButterfly ) OR (BearBat ) OR (BearCrab ); //=============================== AddColumn(V,"Volume",1.0); Filter = (dkBull) AND (dkBear); _SECTION_BEGIN("Kpl System"); /* my entry is very simple(daily data for trading)

kpl system for entry only & exit as follow: 1 st exit at x % from entry price only 1/3 quantity.(ie 1st profit target) 2 nd exit when exit Signal comes from kpl sys remaining 1/3 quantity. 3. scale-in to initial quantity if new kpl Buy Signal comes. re-do above scaling-out & scaling-in till filal exit. 4. final exit all quantity when Close below 21 Day EMA. kpl system code bellow : */ //AFL by Kamalesh Langote. Email:kpl@... no=Param( "Swing", 8, 1, 55 ); tsl_col=ParamColor( "Color", colorLightGrey ); res=HHV(H,no); sup=LLV(L,no); avd=IIf(C>Ref(res,-1),1,IIf(C(tsl) ,colorWhite, IIf(( tsl )>( C ), colorOrange,colorYello w)); Plot(3, "Ribbon", Ribbon1, styleOwnScale| styleArea| styleNoLabel,-0.5,100); _SECTION_END(); MAPeriod = Param("MA Period", 4, 1, 100); MAOpen = EMA(Open, MAPeriod); MAHigh = EMA(High, MAPeriod); MALow = EMA(Low, MAPeriod); MAClose = EMA(Close, MAPeriod);

HaClose = (MAOpen + MAHigh + MALow + MAClose) / 4; HaOpen = AMA(Ref(HaClose, -1), 0.5); // for graph collapse //for(i = 0; i Ref(HaHigh,-1) AND Ref(HaHigh,1) < HaHigh;//Peak PKV0 = ValueWhen(PK,HaHigh,0);//PeakValue0 PKV1 = ValueWhen(PK,HaHigh,1);//PeakValue1 PKV2 = ValueWhen(PK,HaHigh,2);//PeakValue2 MPK = PKV2 < PKV1 AND PKV1 > PKV0 ;//MajorPeak MPKV = ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, PKV1,1); //MajorPeakValue MPKD = ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, DateNum(),1); //MajorPeakDate SD = IIf(DateNum() < LastValue(MPKD,lastmode = True ), Null, LastValue(MPKV,Last mode = True));//SelectedDate Plot(SD, "LastMinorResistance",colorRed,styleLine,styleThick); //PLOT THE SECOND LAST MAJOR PEAK RESISTANCE LINE MPKV2 = ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, PKV1,2); //MajorPeakValue MPKD2 = ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, DateNum(),2); //MajorPeakDate SD2 = IIf(DateNum() < LastValue(MPKD2,lastmode = True ), Null, LastValue(MPKV2,L astmode = True));//SelectedDate Plot(SD2, "LastMajorResistance",colorRed,styleLine); _SECTION_END(); _SECTION_BEGIN("Support"); SP = Ref(HaLow,1) > HaLow AND HaLow < Ref(HaLow,-1);//Peak SPV0 = ValueWhen(SP,HaLow,0);//PeakValue0 SPV1 = ValueWhen(SP,HaLow,1);//PeakValue1 SPV2 = ValueWhen(SP,HaLow,2);//PeakValue2 MSP = SPV2 > SPV1 AND SPV1 < SPV0 ;//MajorPeak MSPV = ValueWhen(Ref(MSP,-1) == 0 AND MSP == 1, SPV1,1); MSPD = ValueWhen(Ref(MSP,-1) == 0 AND MSP == 1, DateNum(),1); SD = IIf(DateNum() < LastValue(MSPD,lastmode = True ), Null, LastValue(MSPV,Last mode = True)); Plot(SD,"LastMinorSupport",colorGreen,styleLine,styleThick); MSPV2 = ValueWhen(Ref(MSP,-1) == 0 AND MSP == 1, SPV1,2); MSPD2 = ValueWhen(Ref(MSP,-1) == 0 AND MSP == 1, DateNum(),2); SD2 = IIf(DateNum() < LastValue(MSPD2,lastmode = True ), Null, LastValue(MSPV2,L astmode = True)); Plot(SD2,"LastMajorSupport",colorGreen,styleLine);

_SECTION_END();

_SECTION_BEGIN("Background text"); C11=ParamColor("up panel",colorDarkOliveGreen ); C12=ParamColor("dn panel",colorDarkGrey ); C13=Param("fonts",20,10,30,1 ); C14=Param("left-right",2.1,1.0,5.0,0.1 ); C15=Param("up-down",12,1,20,1 ); Miny = Status("axisminy"); Maxy = Status("axismaxy"); lvb = Status("lastvisiblebar"); fvb = Status("firstvisiblebar"); pxwidth = Status("pxwidth"); pxheight = Status("pxheight"); GfxSetBkMode( 0 ); GfxSetOverlayMode(1); GfxGradientRect(0,0,pxwidth, pxheight, C11, C12 ); GfxSelectFont("Tahoma", Status("pxheight")/C13 ); GfxSetTextAlign( 6 ); GfxTextOut( "LTP "+WriteVal(C,1.2), Status("pxwidth")/C14, Status("pxheight")/C1 5); GfxSelectFont("MS Sans Serif", 10, 500, False, False, 0); GfxSetTextColor(colorYellow); GfxTextOut(""+edc+"", Status("pxwidth")/1.15, Status("pxheight")/C15*0.3 ); //ESSENTIAL TRADER TOOLS// // Compiled by K.Vidyasagar, [email protected] // //Previous Days HI LO // DayH = TimeFrameGetPrice("H", inDaily, -1); DayHI = LastValue (DayH,1);// y esterdays high DayL = TimeFrameGetPrice("L", inDaily, -1); DayLI = LastValue (DayL,1); // yesterdays low DayC = TimeFrameGetPrice("C", inDaily, -1); // yesterdays close DayO = TimeFrameGetPrice("O", inDaily); // current day open WeekH= TimeFrameGetPrice("H", inWeekly, 1); WeekHI = LastValue (WeekH,1); // On e Week before high WeekL= TimeFrameGetPrice("L", inWeekly, 1); WeekLI = LastValue (WeekL,1); // O ne Week before low MonthH= TimeFrameGetPrice("H", inMonthly, 1); MonthHI = LastValue (MonthH,1); // One Month before high MonthL= TimeFrameGetPrice("L", inMonthly, 1); MonthLI = LastValue (MonthL,1); // One Month before low numbars = LastValue(Cum(Status("barvisible"))); hts = -33.5; YHL = ParamToggle("Yesterday HI LO","Hide|Show",1); if(YHL==1) { Plot(DayL,"YL",colorTurquoise,styleDashed|styleNoRescale|styleNoTitle); Plot(DayH,"YH",colorOrange,styleDashed|styleNoRescale|styleNoTitle); PlotText(" YstrdayH " , LastValue(BarIndex())-(numbars/Hts), DayHI, colo rOrange); PlotText(" YstrdayL " , LastValue(BarIndex())-(numbars/Hts), DayLI, colo rTurquoise); } TDBHL = ParamToggle("Week And Month HI LO","Hide|Show",1);

if(TDBHL==1) { Plot(WeekL,"WeekL",colorTurquoise,styleDots|styleNoLine|styleNoRescale|styleNo Title); Plot(WeekH,"WeekH",colorOrange,styleDots|styleNoLine|styleNoRescale|styleNoTit le); Plot(MonthL,"MonthL",colorTurquoise,styleDots|styleNoLine|styleNoRescale|style NoTitle); Plot(MonthH,"MonthH",colorOrange,styleDots|styleNoLine|styleNoRescale|styleNoT itle); PlotText(" WeekH " , LastValue(BarIndex())-(numbars/Hts), WeekHI, colorOrange ); PlotText(" WeekL " , LastValue(BarIndex())-(numbars/Hts), WeekLI, colorTurquo ise); PlotText(" MonthH " , LastValue(BarIndex())-(numbars/Hts), MonthHI, co lorOrange); PlotText(" MonthL " , LastValue(BarIndex())-(numbars/Hts), MonthLI, co lorTurquoise); } // PP R1 S1 R2 S2 R3 S3 Pivot Levels // = (DayL + DayH + DayC)/3; = (PP * 2) - DayL; = (PP * 2) - DayH; = PP + R1 - S1; = PP - R1 + S1; = PP + R2 - S1; = PP - R2 + S1; PPI R1I S1I R2I S2I R3I S3I = = = = = = = LastValue LastValue LastValue LastValue LastValue LastValue LastValue (PP,1); (R1,1); (S1,1); (R2,1); (S2,1); (R3,1); (S3,1); // // // // // // // Pivot Resistance 1 Support 1 Resistance 2 Support 2 Resistance 3 Support 3

ppl = ParamToggle("Pivot Levels","Hide|Show",0); if(ppl==1) { Plot(PP, "PP",colorYellow,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(R1, "R1",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(S1, "S1",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(R2, "R2",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(S2, "S2",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(R3, "R3",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(S3, "S3",colorViolet,styleDots|styleNoLine|styleNoRescale|styleNoTitle); PlotText(" PlotText(" PlotText(" PlotText(" PlotText(" PlotText(" PlotText(" Pivot ", R1 " , S1 " , R2 " , S2 " , R3 " , S3 " , LastValue(BarIndex())-(numbars/Hts), LastValue(BarIndex())-(numbars/Hts), LastValue(BarIndex())-(numbars/Hts), LastValue(BarIndex())-(numbars/Hts), LastValue(BarIndex())-(numbars/Hts), LastValue(BarIndex())-(numbars/Hts), LastValue(BarIndex())-(numbars/Hts), PPI, R1I, S1I, R2I, S2I, R3I, S3I, colorYellow); colorViolet); colorViolet); colorViolet); colorViolet); colorViolet); colorViolet);

} // Camerilla Levels // rg = (DayH - DayL); H5=DayC+1.1*rg; H4=DayC+1.1*rg/2; H3=DayC+1.1*rg/4; H2=DayC+1.1*rg/6; H1=DayC+1.1*rg/12; L1=DayC-1.1*rg/12; L2=DayC-1.1*rg/6; L3=DayC-1.1*rg/4; L4=DayC-1.1*rg/2; L5=DayC-1.1*rg; H5I H4I H3I H2I H1I L1I L2I L3I L4I L5I = = = = = = = = = = LastValue LastValue LastValue LastValue LastValue LastValue LastValue LastValue LastValue LastValue (H5,1); (H4,1); (H3,1); (H2,1); (H1,1); (L1,1); (L2,1); (L3,1); (L4,1); (L5,1);

pcl = ParamToggle("Camerilla Levels","Hide|Show",0); if(pcl==1) { Plot(H5,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(H4,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(H3,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(H2,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(H1,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L1,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L2,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L3,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L4,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); Plot(L5,"",colorRose,styleDots|styleNoLine|styleNoRescale|styleNoTitle); PlotText(" H5 = " , LastValue(BarIndex())-(numbars/Hts), H5I +0.05, colorRo se); PlotText(" H4 = " , LastValue(BarIndex())-(numbars/Hts), H4I +0.05, colorRo se); PlotText(" H3 = " , LastValue(BarIndex())-(numbars/Hts), H3I +0.05, colorRo se); PlotText(" H2 = " , LastValue(BarIndex())-(numbars/Hts), H2I +0.05, colorRo se); PlotText(" H1 = " , LastValue(BarIndex())-(numbars/Hts), H1I +0.05, colorRo se); PlotText(" L1 = " , LastValue(BarIndex())-(numbars/Hts), L1I +0.05, colorRo se); PlotText(" L2 = " , LastValue(BarIndex())-(numbars/Hts), L2I +0.05, colorRo se); PlotText(" L3 = " , LastValue(BarIndex())-(numbars/Hts), L3I +0.05, colorRo se); PlotText(" L4 = " , LastValue(BarIndex())-(numbars/Hts), L4I +0.05, colorRo se); PlotText(" L5 = " , LastValue(BarIndex())-(numbars/Hts), L5I +0.05, colorRo se); } // Current Days Hi Lo // THL = ParamToggle("Todays Hi Lo","Hide|Show",1); if(THL==1) { isRth = TimeNum() >= 084500 & TimeNum() = 084500 & TimeNum() = 94500 AND TimeNum() < 095959);//,BarIndex(),1); // AND DateNum()==LastValue(DateNum()); x0 = BarCount-LastValue(Bars); x1 = BarCount-1; DayHline=LineArray(x0,LastValue(DayH),x1,LastValue (DayH),0); DayLline=LineArray(x0,LastValue(DayL),x1,LastValue (DayL),0); DayHlineI = LastValue (DayHline,1); DayLlineI = LastValue (DayLline,1); Plot(DayHline,"DayH",colorGold,styleDashed|styleNoRescale|styleNoTitle); Plot(DayLline,"DayL",colorBlue,styleDashed|styleNoRescale|styleNoTitle); PlotText(" Day Hi " , LastValue(BarIndex())-(numbars/Hts), DayHlineI +0.05, colorYellow); PlotText(" Day Lo " , LastValue(BarIndex())-(numbars/Hts), DayLlineI

+0.05, colorYellow); }