# Gartley 222

El código de TradeStation para el patrón Gartley 222 se encuentra en "Trading the Gartley 222" por Aaron Behle y Mark Conway, p. 38:

Inputs:

Length(100),

Strength(8),

Tolerance(0.10),

BullColor(Blue),

BearColor(Red);

Variables:

F1(0.618),

F2(0.786),

F3(1.27),

F4(1.618),

P1Bar(-1),

P2Bar(-1),

T1Bar(-1),

T2Bar(-1),

P1(0.0),

P2(0.0),

T1(0.0),

T2(0.0),

PTValid(False),

HLValid(False),

InZone(False),

GD(0.0),

XA(0.0),

AB(0.0),

BC(0.0),

CD(0.0),

C1(False),

C2(False),

C3(False),

C4(False),

ABdXA(0.0),

BCdAB(0.0),

CDdBC(0.0),

TL1(-1),

TL2(-1),

TL3(-1),

TL4(-1),

TL5(-1),

TL6(-1);

P1Bar = SwingHighBar(1, High, Strength, Length);

P2Bar = SwingHighBar(2, High, Strength, Length);

T1Bar = SwingLowBar(1, Low, Strength, Length);

T2Bar = SwingLowBar(2, Low, Strength, Length);

If P1Bar -1 and

P2Bar -1 and

T1Bar -1 and

T2Bar -1 Then Begin

{Test for a bullish 222}

{Trough X is T2}

T2 = Low[T2Bar];

{Peak A is P2}

P2 = High[P2Bar];

{Trough B is T1}

T1 = Low[T1Bar];

{Peak C is P1}

P1 = High[P1Bar];

GD = Low;

PTValid = P1Bar < T1Bar and T1Bar < P2Bar and P2Bar < T2Bar;

HLValid = P1 T2 and P1 > T1;

InZone = GD T2 and P2 >= Highest(High, T2Bar);

If PTValid and HLValid and InZone Then Begin

XA = P2 - T2;

AB = P2 - T1;

BC = P1 - T1;

CD = P1 - GD;

ABdXA = AB / XA; {AB should be 61.8% of XA}

C1 = ABdXA > F1 - Tolerance and ABdXA < F1 + Tolerance;

BCdAB = BC / AB; {BC should be 61.8-78.6% of AB}

C2 = BCdAB > F1 - Tolerance and BCdAB < F2 + Tolerance;

CDdBC = CD / BC; {CD should be 127-161.8% of BC}

C3 = CDdBC > F3 - Tolerance and CDdBC < F4 + Tolerance;

C4 = ADdXA > F2 - Tolerance and ADdXA < F2 + Tolerance;

If C1 and C2 and C3 and C4 Then Begin

TL1 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date[P2Bar], Time[P2Bar], P2);

If TL1 >= 0 Then Begin

TL_SetColor(TL1, BullColor);

TL_SetStyle(TL1, Tool_Solid);

TL_SetSize(TL1, 2);

End;

TL2 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date[T1Bar], Time[T1Bar], T1);

If TL2 >= 0 Then Begin

TL_SetColor(TL2, BullColor);

TL_SetStyle(TL2, Tool_Solid);

TL_SetSize(TL2, 2);

End;

TL3 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date[P1Bar], Time[P1Bar], P1);

If TL3 >= 0 Then Begin

TL_SetColor(TL3, BullColor);

TL_SetStyle(TL3, Tool_Solid);

TL_SetSize(TL3, 2);

End;

TL4 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date, Time, GD);

If TL4 >= 0 Then Begin

TL_SetColor(TL4, BullColor);

TL_SetStyle(TL4, Tool_Solid);

TL_SetSize(TL4, 2);

End;

TL5 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date, Time, GD);

If TL5 >= 0 Then Begin

TL_SetColor(TL5, BullColor);

TL_SetStyle(TL5, Tool_Dotted);

End;

TL6 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date, Time, GD);

If TL6 >= 0 Then Begin

TL_SetColor(TL6, BullColor);

TL_SetStyle(TL6, Tool_Dotted);

End;

End;

End;

{Test for a bearish 222}

{Peak X is P2}

{Trough A is T2}

{Peak B is P1}

{Trough C is T1}

{GD is the short point}

GD = High;

PTValid = T1Bar < P1Bar and P1Bar < T2Bar and T2Bar < P2Bar;

HLValid = T1 > T2 and P1 < P2 and T1 < P1;

InZone = GD > P1 and GD < P2 and T2 <= Lowest(Low, P2Bar);

If PTValid and HLValid and InZone Then Begin

XA = P2 - T2;

AB = P1 - T2;

BC = P1 - T1;

CD = GD - T1;

ABdXA = AB / XA; {AB should be 61.8% of XA}

C1 = ABdXA > F1 - Tolerance and ABdXA < F1 + Tolerance;

BCdAB = BC / AB; {BC should be 61.8-78.6% of AB}

C2 = BCdAB > F1 - Tolerance and BCdAB < F2 + Tolerance;

CDdBC = CD / BC; {CD should be 127-161.8% of BC}

C3 = CDdBC > F3 - Tolerance and CDdBC < F4 + Tolerance;

C4 = ADdXA > F2 - Tolerance and ADdXA < F2 + Tolerance;

If C1 and C2 and C3 and C4 Then Begin

TL1 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date[T2Bar], Time[T2Bar], T2);

If TL1 >= 0 Then Begin

TL_SetColor(TL1, BearColor);

TL_SetStyle(TL1, Tool_Solid);

TL_SetSize(TL1, 2);

End;

TL2 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date[P1Bar], Time[P1Bar], P1);

If TL2 >= 0 Then Begin

TL_SetColor(TL2, BearColor);

TL_SetStyle(TL2, Tool_Solid);

TL_SetSize(TL2, 2);

End;

TL3 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date[T1Bar], Time[T1Bar], T1);

If TL3 >= 0 Then Begin

TL_SetColor(TL3, BearColor);

TL_SetStyle(TL3, Tool_Solid);

TL_SetSize(TL3, 2);

End;

TL4 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date, Time, GD);

If TL4 >= 0 Then Begin

TL_SetColor(TL4, BearColor);

TL_SetStyle(TL4, Tool_Solid);

TL_SetSize(TL4, 2);

End;

TL5 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date, Time, GD);

If TL5 >= 0 Then Begin

TL_SetColor(TL5, BearColor);

TL_SetStyle(TL5, Tool_Dotted);

End;

TL6 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date, Time, GD);

If TL6 >= 0 Then Begin

TL_SetColor(TL6, BearColor);

TL_SetStyle(TL6, Tool_Dotted);

End;

End;

End;

End;[/CODE]

Or from Wealth-Lab code to metatrader4:

[CODE]procedure Gartley222

(

VPFactor: float;

Tolerance: float;

Lookback: integer;

HoldBars: integer;

VolMin: integer

);

begin

var ATRValue, VP, Reversal: float;

var F1, F2, F3, F4, P1, P2, T1, T2: float;

var Bar, P1Bar, P2Bar, T1Bar, T2Bar, p: integer;

var XA, AB, BC, CD, AD, D, XD, DT, ABdXA, BCdAB, CDdBC, ADdXA: float;

var PTValid, HLValid, InZone, C1, C2, C3, C4: boolean;

var BT, BS, ST, SS: float;

{Fibonacci Constants}

F1 := 0.618;

F2 := 0.786;

F3 := 1.27;

F4 := 1.618;

InstallTimeBasedExit(HoldBars);

for Bar := Lookback to BarCount() - 1 do

begin

ApplyAutoStops(Bar);

ATRValue := ATR(Bar, Lookback);

SetShareSize( 1000 * Int( 10 / ATRValue ) );

VP := 100 * ATRValue / PriceClose(Bar);

{Find peaks and troughs}

Reversal := Int(VPFactor * VP);

P1 := Peak(Bar, #High, F1 * Reversal);

P1Bar := PeakBar(Bar, #High, F1 * Reversal);

P2 := Peak(P1Bar, #High, Reversal);

P2Bar := PeakBar(P1Bar, #High, Reversal);

T1 := Trough(Bar, #Low, F1 * Reversal);

T1Bar := TroughBar(Bar, #Low, F1 * Reversal);

T2 := Trough(T1Bar, #Low, Reversal);

T2Bar := TroughBar(T1Bar, #Low, Reversal);

{Test for a bullish 222}

{Trough X is T2}

{Peak A is P2}

{Trough B is T1}

{Peak C is P1}

D := PriceLow(Bar);

PTValid := (P1Bar > T1Bar) and (T1Bar > P2Bar) and (P2Bar > T2Bar);

HLValid := (P1 T2) and (P1 > T1);

InZone := (D T2);

if (MarketPosition = 0) and

(SMA(Bar, #Volume, Lookback) >= VolMin) and

(PTValid) and (HLValid) and (InZone) then

begin

XA := P2 - T2;

AB := P2 - T1;

BC := P1 - T1;

XD := P2 - (F2 * XA);

CD := P1 - XD;

ABdXA := AB / XA; {AB should be 61.8% of XA}

C1 := (ABdXA > F1 - Tolerance) and (ABdXA < F1 + Tolerance);

BCdAB := BC / AB; {BC should be 61.8-78.6% of AB}

C2 := (BCdAB > F1 - Tolerance) and (BCdAB < F2 + Tolerance);

CDdBC := CD / BC; {CD should be 127-161.8% of BC}

C3 := (CDdBC > F3 - Tolerance) and (CDdBC < F4 + Tolerance);

C4 := (ADdXA > F2 - Tolerance) and (ADdXA < F2 + Tolerance);

if C1 and C2 and C3 and C4 then

begin

DrawLine(P2Bar, P2, T2Bar, T2, 0, #Blue, #Solid);

DrawLine(T1Bar, T1, P2Bar, P2, 0, #Blue, #Solid);

DrawLine(P1Bar, P1, T1Bar, T1, 0, #Blue, #Solid);

DrawLine(Bar, D, P1Bar, P1, 0, #Blue, #Solid);

DrawLine(Bar, D, T1Bar, T1, 0, #Blue, #Dotted);

DrawLine(Bar, D, T2Bar, T2, 0, #Blue, #Dotted);

AnnotateBar('B', Bar, True, #Blue, 10);

DT := F1 * CD;

BT := XD + DT;

BS := T2;

end;

end;

{Test for a bearish 222}

{Peak X is P2}

{Trough A is T2}

{Peak B is P1}

{Trough C is T1}

{D is the short zone}

D := PriceHigh(Bar);

PTValid := (T1Bar > P1Bar) and (P1Bar > T2Bar) and (T2Bar > P2Bar);

HLValid := (T1 > T2) and (P1 < P2) and (T1 < P1);

InZone := (D > P1) and (D < P2);

if (MarketPosition = 0) and

(PriceClose( Bar ) >= 5) and

(SMA(Bar, #Volume, Lookback) >= VolMin) and

(PTValid) and (HLValid) and (InZone) then

begin

XA := P2 - T2;

AB := P1 - T2;

BC := P1 - T1;

XD := T2 + (F2 * XA);

CD := XD - T1;

ABdXA := AB / XA; {AB should be 61.8% of XA}

C1 := (ABdXA > F1 - Tolerance) and (ABdXA < F1 + Tolerance);

BCdAB := BC / AB; {BC should be 61.8-78.6% of AB}

C2 := (BCdAB > F1 - Tolerance) and (BCdAB < F2 + Tolerance);

CDdBC := CD / BC; {CD should be 127-161.8% of BC}

C3 := (CDdBC > F3 - Tolerance) and (CDdBC < F4 + Tolerance);

C4 := (ADdXA > F2 - Tolerance) and (ADdXA < F2 + Tolerance);

if C1 and C2 and C3 and C4 then

begin

DrawLine(T2Bar, T2, P2Bar, P2, 0, #Red, #Solid);

DrawLine(P1Bar, P1, T2Bar, T2, 0, #Red, #Solid);

DrawLine(T1Bar, T1, P1Bar, P1, 0, #Red, #Solid);

DrawLine(Bar, D, T1Bar, T1, 0, #Red, #Solid);

DrawLine(Bar, D, P1Bar, P1, 0, #Red, #Dotted);

DrawLine(Bar, D, P2Bar, P2, 0, #Red, #Dotted);

AnnotateBar('S', Bar, False, #Red, 10);

ShortAtLimit(Bar, XD, 'G222 SE');

DT := F1 * CD;

ST := XD - DT;

SS := P2;

end;

end;

if LastPositionActive then

begin

if MarketPosition = 1 then begin

SellAtLimit(Bar+1, BT, #All, 'G222 LX+');

SellAtStop(Bar+1, BS, #All, 'G222 LX-');

end;

if MarketPosition = -1 then begin

CoverAtLimit(Bar+1, ST, #All, 'G222 LX+');

CoverAtStop(Bar+1, SS, #All, 'G222 LX-');

end;

end;

end;

end;

Gartley222(2.0, 0.1, 20, 7, 2000000);

leutzuro:

El código de TradeStation para el patrón Gartley 222 se encuentra en "Trading the Gartley 222" por Aaron Behle y Mark Conway, p. 38:

Inputs:

Length(100),

Strength(8),

Tolerance(0.10),

BullColor(Blue),

BearColor(Red);

Variables:

F1(0.618),

F2(0.786),

F3(1.27),

F4(1.618),

P1Bar(-1),

P2Bar(-1),

T1Bar(-1),

T2Bar(-1),

P1(0.0),

P2(0.0),

T1(0.0),

T2(0.0),

PTValid(False),

HLValid(False),

InZone(False),

GD(0.0),

XA(0.0),

AB(0.0),

BC(0.0),

CD(0.0),

C1(False),

C2(False),

C3(False),

C4(False),

ABdXA(0.0),

BCdAB(0.0),

CDdBC(0.0),

TL1(-1),

TL2(-1),

TL3(-1),

TL4(-1),

TL5(-1),

TL6(-1);

P1Bar = SwingHighBar(1, High, Strength, Length);

P2Bar = SwingHighBar(2, High, Strength, Length);

T1Bar = SwingLowBar(1, Low, Strength, Length);

T2Bar = SwingLowBar(2, Low, Strength, Length);

If P1Bar -1 and

P2Bar -1 and

T1Bar -1 and

T2Bar -1 Then Begin

{Test for a bullish 222}

{Trough X is T2}

T2 = Low[T2Bar];

{Peak A is P2}

P2 = High[P2Bar];

{Trough B is T1}

T1 = Low[T1Bar];

{Peak C is P1}

P1 = High[P1Bar];

GD = Low;

PTValid = P1Bar < T1Bar and T1Bar < P2Bar and P2Bar < T2Bar;

HLValid = P1 T2 and P1 > T1;

InZone = GD T2 and P2 >= Highest(High, T2Bar);

If PTValid and HLValid and InZone Then Begin

XA = P2 - T2;

AB = P2 - T1;

BC = P1 - T1;

CD = P1 - GD;

ABdXA = AB / XA; {AB should be 61.8% of XA}

C1 = ABdXA > F1 - Tolerance and ABdXA < F1 + Tolerance;

BCdAB = BC / AB; {BC should be 61.8-78.6% of AB}

C2 = BCdAB > F1 - Tolerance and BCdAB < F2 + Tolerance;

CDdBC = CD / BC; {CD should be 127-161.8% of BC}

C3 = CDdBC > F3 - Tolerance and CDdBC < F4 + Tolerance;

C4 = ADdXA > F2 - Tolerance and ADdXA < F2 + Tolerance;

If C1 and C2 and C3 and C4 Then Begin

TL1 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date[P2Bar], Time[P2Bar], P2);

If TL1 >= 0 Then Begin

TL_SetColor(TL1, BullColor);

TL_SetStyle(TL1, Tool_Solid);

TL_SetSize(TL1, 2);

End;

TL2 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date[T1Bar], Time[T1Bar], T1);

If TL2 >= 0 Then Begin

TL_SetColor(TL2, BullColor);

TL_SetStyle(TL2, Tool_Solid);

TL_SetSize(TL2, 2);

End;

TL3 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date[P1Bar], Time[P1Bar], P1);

If TL3 >= 0 Then Begin

TL_SetColor(TL3, BullColor);

TL_SetStyle(TL3, Tool_Solid);

TL_SetSize(TL3, 2);

End;

TL4 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date, Time, GD);

If TL4 >= 0 Then Begin

TL_SetColor(TL4, BullColor);

TL_SetStyle(TL4, Tool_Solid);

TL_SetSize(TL4, 2);

End;

TL5 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date, Time, GD);

If TL5 >= 0 Then Begin

TL_SetColor(TL5, BullColor);

TL_SetStyle(TL5, Tool_Dotted);

End;

TL6 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date, Time, GD);

If TL6 >= 0 Then Begin

TL_SetColor(TL6, BullColor);

TL_SetStyle(TL6, Tool_Dotted);

End;

End;

End;

{Test for a bearish 222}

{Peak X is P2}

{Trough A is T2}

{Peak B is P1}

{Trough C is T1}

{GD is the short point}

GD = High;

PTValid = T1Bar < P1Bar and P1Bar < T2Bar and T2Bar < P2Bar;

HLValid = T1 > T2 and P1 < P2 and T1 < P1;

InZone = GD > P1 and GD < P2 and T2 <= Lowest(Low, P2Bar);

If PTValid and HLValid and InZone Then Begin

XA = P2 - T2;

AB = P1 - T2;

BC = P1 - T1;

CD = GD - T1;

ABdXA = AB / XA; {AB should be 61.8% of XA}

C1 = ABdXA > F1 - Tolerance and ABdXA < F1 + Tolerance;

BCdAB = BC / AB; {BC should be 61.8-78.6% of AB}

C2 = BCdAB > F1 - Tolerance and BCdAB < F2 + Tolerance;

CDdBC = CD / BC; {CD should be 127-161.8% of BC}

C3 = CDdBC > F3 - Tolerance and CDdBC < F4 + Tolerance;

C4 = ADdXA > F2 - Tolerance and ADdXA < F2 + Tolerance;

If C1 and C2 and C3 and C4 Then Begin

TL1 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date[T2Bar], Time[T2Bar], T2);

If TL1 >= 0 Then Begin

TL_SetColor(TL1, BearColor);

TL_SetStyle(TL1, Tool_Solid);

TL_SetSize(TL1, 2);

End;

TL2 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date[P1Bar], Time[P1Bar], P1);

If TL2 >= 0 Then Begin

TL_SetColor(TL2, BearColor);

TL_SetStyle(TL2, Tool_Solid);

TL_SetSize(TL2, 2);

End;

TL3 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date[T1Bar], Time[T1Bar], T1);

If TL3 >= 0 Then Begin

TL_SetColor(TL3, BearColor);

TL_SetStyle(TL3, Tool_Solid);

TL_SetSize(TL3, 2);

End;

TL4 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date, Time, GD);

If TL4 >= 0 Then Begin

TL_SetColor(TL4, BearColor);

TL_SetStyle(TL4, Tool_Solid);

TL_SetSize(TL4, 2);

End;

TL5 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date, Time, GD);

If TL5 >= 0 Then Begin

TL_SetColor(TL5, BearColor);

TL_SetStyle(TL5, Tool_Dotted);

End;

TL6 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date, Time, GD);

If TL6 >= 0 Then Begin

TL_SetColor(TL6, BearColor);

TL_SetStyle(TL6, Tool_Dotted);

End;

End;

End;

End;[/CODE]

Or from Wealth-Lab code to metatrader4:

[CODE]procedure Gartley222

(

VPFactor: float;

Tolerance: float;

Lookback: integer;

HoldBars: integer;

VolMin: integer

);

begin

var ATRValue, VP, Reversal: float;

var F1, F2, F3, F4, P1, P2, T1, T2: float;

var Bar, P1Bar, P2Bar, T1Bar, T2Bar, p: integer;

var XA, AB, BC, CD, AD, D, XD, DT, ABdXA, BCdAB, CDdBC, ADdXA: float;

var PTValid, HLValid, InZone, C1, C2, C3, C4: boolean;

var BT, BS, ST, SS: float;

{Fibonacci Constants}

F1 := 0.618;

F2 := 0.786;

F3 := 1.27;

F4 := 1.618;

InstallTimeBasedExit(HoldBars);

for Bar := Lookback to BarCount() - 1 do

begin

ApplyAutoStops(Bar);

ATRValue := ATR(Bar, Lookback);

SetShareSize( 1000 * Int( 10 / ATRValue ) );

VP := 100 * ATRValue / PriceClose(Bar);

{Find peaks and troughs}

Reversal := Int(VPFactor * VP);

P1 := Peak(Bar, #High, F1 * Reversal);

P1Bar := PeakBar(Bar, #High, F1 * Reversal);

P2 := Peak(P1Bar, #High, Reversal);

P2Bar := PeakBar(P1Bar, #High, Reversal);

T1 := Trough(Bar, #Low, F1 * Reversal);

T1Bar := TroughBar(Bar, #Low, F1 * Reversal);

T2 := Trough(T1Bar, #Low, Reversal);

T2Bar := TroughBar(T1Bar, #Low, Reversal);

{Test for a bullish 222}

{Trough X is T2}

{Peak A is P2}

{Trough B is T1}

{Peak C is P1}

D := PriceLow(Bar);

PTValid := (P1Bar > T1Bar) and (T1Bar > P2Bar) and (P2Bar > T2Bar);

HLValid := (P1 T2) and (P1 > T1);

InZone := (D T2);

if (MarketPosition = 0) and

(SMA(Bar, #Volume, Lookback) >= VolMin) and

(PTValid) and (HLValid) and (InZone) then

begin

XA := P2 - T2;

AB := P2 - T1;

BC := P1 - T1;

XD := P2 - (F2 * XA);

CD := P1 - XD;

ABdXA := AB / XA; {AB should be 61.8% of XA}

C1 := (ABdXA > F1 - Tolerance) and (ABdXA < F1 + Tolerance);

BCdAB := BC / AB; {BC should be 61.8-78.6% of AB}

C2 := (BCdAB > F1 - Tolerance) and (BCdAB < F2 + Tolerance);

CDdBC := CD / BC; {CD should be 127-161.8% of BC}

C3 := (CDdBC > F3 - Tolerance) and (CDdBC < F4 + Tolerance);

C4 := (ADdXA > F2 - Tolerance) and (ADdXA < F2 + Tolerance);

if C1 and C2 and C3 and C4 then

begin

DrawLine(P2Bar, P2, T2Bar, T2, 0, #Blue, #Solid);

DrawLine(T1Bar, T1, P2Bar, P2, 0, #Blue, #Solid);

DrawLine(P1Bar, P1, T1Bar, T1, 0, #Blue, #Solid);

DrawLine(Bar, D, P1Bar, P1, 0, #Blue, #Solid);

DrawLine(Bar, D, T1Bar, T1, 0, #Blue, #Dotted);

DrawLine(Bar, D, T2Bar, T2, 0, #Blue, #Dotted);

AnnotateBar('B', Bar, True, #Blue, 10);

DT := F1 * CD;

BT := XD + DT;

BS := T2;

end;

end;

{Test for a bearish 222}

{Peak X is P2}

{Trough A is T2}

{Peak B is P1}

{Trough C is T1}

{D is the short zone}

D := PriceHigh(Bar);

PTValid := (T1Bar > P1Bar) and (P1Bar > T2Bar) and (T2Bar > P2Bar);

HLValid := (T1 > T2) and (P1 < P2) and (T1 < P1);

InZone := (D > P1) and (D < P2);

if (MarketPosition = 0) and

(PriceClose( Bar ) >= 5) and

(SMA(Bar, #Volume, Lookback) >= VolMin) and

(PTValid) and (HLValid) and (InZone) then

begin

XA := P2 - T2;

AB := P1 - T2;

BC := P1 - T1;

XD := T2 + (F2 * XA);

CD := XD - T1;

ABdXA := AB / XA; {AB should be 61.8% of XA}

C1 := (ABdXA > F1 - Tolerance) and (ABdXA < F1 + Tolerance);

BCdAB := BC / AB; {BC should be 61.8-78.6% of AB}

C2 := (BCdAB > F1 - Tolerance) and (BCdAB < F2 + Tolerance);

CDdBC := CD / BC; {CD should be 127-161.8% of BC}

C3 := (CDdBC > F3 - Tolerance) and (CDdBC < F4 + Tolerance);

C4 := (ADdXA > F2 - Tolerance) and (ADdXA < F2 + Tolerance);

if C1 and C2 and C3 and C4 then

begin

DrawLine(T2Bar, T2, P2Bar, P2, 0, #Red, #Solid);

DrawLine(P1Bar, P1, T2Bar, T2, 0, #Red, #Solid);

DrawLine(T1Bar, T1, P1Bar, P1, 0, #Red, #Solid);

DrawLine(Bar, D, T1Bar, T1, 0, #Red, #Solid);

DrawLine(Bar, D, P1Bar, P1, 0, #Red, #Dotted);

DrawLine(Bar, D, P2Bar, P2, 0, #Red, #Dotted);

AnnotateBar('S', Bar, False, #Red, 10);

ShortAtLimit(Bar, XD, 'G222 SE');

DT := F1 * CD;

ST := XD - DT;

SS := P2;

end;

end;

if LastPositionActive then

begin

if MarketPosition = 1 then begin

SellAtLimit(Bar+1, BT, #All, 'G222 LX+');

SellAtStop(Bar+1, BS, #All, 'G222 LX-');

end;

if MarketPosition = -1 then begin

CoverAtLimit(Bar+1, ST, #All, 'G222 LX+');

CoverAtStop(Bar+1, SS, #All, 'G222 LX-');

end;

end;

end;

end;

Gartley222(2.0, 0.1, 20, 7, 2000000);

hmm deberían haber proporcionado el código de Metatrader también alguien debe tener este indicador por lo que cualquiera que tenga este indicador puede compartir?

tal vez no es posible tener esto en metatrader4

leutzuro:
tal vez no es posible tener esto en metatrader4

hola leutzuro,

Sé que todo es posible dada la plataforma proporciona el entorno de desarrollo como MT4 no soy un buen programador, pero voy a tratar de crear algo de este código gracias por compartir

sé que hay algunos grandes programadores aquí si alguien puede convertir esto sería útil para el aprendizaje y el comercio

super-newbie:
hola leutzuro,

Sé que todo es posible dado que la plataforma proporciona el entorno de desarrollo como MT4 no soy un buen programador, pero voy a tratar de crear algo de este código gracias por compartir

sé que hay algunos grandes programadores aquí si alguien puede convertir esto sería útil para el aprendizaje y el comercio

Hola leutzuro

mi primer intento de crear este indicador

el patrón fue creado en 1 hr gbp-usd hace algún tiempo donde la entrada fue en Jan20 ( no gartley manera ya que todavía no puedo programar esto correctamente)

las líneas de tendencia se dibujan automáticamente

Esto no es 100% Gartley tal vez ni siquiera el 60%, pero funcionó ese día no soy bueno en la programación y tratando de arreglarlo por cualquier conocimiento que tengo

no se como calcular la distancia entre los puntos para poder empezar a comprobar los retrocesos y ahora mismo solo da patrón de compra.

gbp_6.gif  22 kb

hola super

Gracias por su esfuerzo. Tengo un indicador que es capaz de reconocer el patrón de mariposa, pero es wtitten para MT3.i adjuntarlo.tal vez le ayuda a completar su trabajo

butterfly.mql  3 kb

super-newbie:
y esto es actual en 5 min -- no tomar cualquier comercio porque no cómo va a trabajar voy a comprobar las líneas de tendencia. El problema es el primero que solo crea para la compra y no para la venta, el segundo fractal puede estar mal, así que no lo sé.

Lo curioso es que la "D" seguirá cambiando hacia abajo y hacia abajo hasta que se cree un mínimo por encima de la "X" y la línea de tendencia superior es la entrada ... confuso para mí también, pero como he dicho no un programador tal vez nuevo sistema gracias por el código kamyar voy a comprobar lo que puedo hacer con él

super-newbie:
Hola leutzuro

mi primer intento de crear este indicador

el patrón fue creado en 1 hora gbp-usd hace algún tiempo, donde la entrada fue en Jan20 (no en la forma gartley ya que todavía no puedo programar esto correctamente)

las líneas de tendencia se dibujan automáticamente

Esto no es 100% Gartley tal vez ni siquiera el 60%, pero funcionó ese día no soy bueno en la programación y tratando de arreglarlo por cualquier conocimiento que tengo

no se como calcular la distancia entre los puntos para poder empezar a comprobar los retrocesos y ahora mismo solo da patrón de compra.

y esto es actual en 5 min - no tomar cualquier comercio porque yo no cómo va a funcionar voy a comprobar las líneas de tendencia. El problema es el primero que sólo ahora crea para la compra no la venta segundo fractal tal vez mal así que no sé

gran trabajo hombre

supernuevo comprueba el EUR/USD con tu indicador que tienes ahora y mira si funciona como en esta imagen porque tenemos este patrón ahora mismo