Harmonic Trading - page 314

 

Je n'ai pas vu votre dernier message

=======================

faisons un nouveau départ

sélectionnez le motif =8 si nous utilisons Dragon,4PointPattern, 5-0,ABCD

select pattern =7 si nous utilisons 1,2,3 - ou tous les 27 patterns

Dossiers :
 

Il devrait être Ok maintenant

zup_v134rev02.mq4

Dossiers :
 
poruchik:
Je n'ai pas vu votre dernier message

=======================

prenons un nouveau départ

sélectionnez le motif =8 si nous utilisons Dragon,4PointPattern, 5-0,ABCD

sélectionner le motif =7 si on utilise 1,2,3 - ou les 27 motifs

Désolé, j'ai oublié de dire. Maintenant, vous ne pouvez pas utiliser select pattern dans cette version modifiée. Au lieu de cela, vous pouvez utiliser

section 3 gartley

----------------------

extern bool SearchSharkPatterns = true ;

extern bool SearchCypherPatterns = true ;

extern bool Search5_0Patterns = true ;

extern bool SearchABCDPatterns = true ;

Afin de le rendre convivial, j'ai dû réécrire la fonction void _Gartley(string _Depth, int Depth) depuis le début.

C'est la fonction qui effectue la recherche de motifs.

 

ok à demain

 

Demain, à 19 heures (GMT+2), je montrerai comment ajouter vos modèles au code.

 

Minsk maintenant 22.43

 

Voici quelques lignes du code original (void _Fonction Gartley)

while (k < maxPeak-5 && (aXABCD[D] < bartoD+2 || patternInfluence==2))

{

aXABCD[X] = aNumBarPeak[k + 4] ;

aXABCD[A] = aNumBarPeak[k + 3] ;

aXABCD = aNumBarPeak[k + 2] ;

aXABCD[C] = aNumBarPeak[k + 1] ;

aXABCD[D] = aNumBarPeak[k] ;

vBullBear = "" ;

vNamePattern = "" ;

if (CustomPattern<2)

{

tangensXB=(zz[aXABCD]-zz[aXABCD[X]])/(aXABCD[X]-aXABCD) ;

si (zz[aXABCD[C]]>zz[aXABCD[D]] && (zz[aXABCD]+(aXABCD-aXABCD[D])*tangensXB)>zz[aXABCD[D]])

{

vBullBear = vBull ;

}

else if (zz[aXABCD[C]]<zz[aXABCD[D]] && (zz[aXABCD]+(aXABCD-aXABCD[D])*tangensXB)<zz[aXABCD[D]])

{

vBullBear = vBear ;

}

si (StringLen(vBullBear)>0)

{

// îïðåäåëÿåì ðåòðåñìåíòû

retXB = (zz[aXABCD[A]] - zz[aXABCD]) / (zz[aXABCD[A]] - zz[aXABCD[X]] + vDelta0) ;

retAC = (zz[aXABCD[C]] - zz[aXABCD]) / (zz[aXABCD[A]] - zz[aXABCD] + vDelta0) ;

retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD] + vDelta0) ;

if ((zz[aXABCD[A]]>zz[aXABCD[C]] && vBullBear == vBull) || (zz[aXABCD[A]]<zz[aXABCD[C]] && vBullBear == vBear)) retXD = (zz[aXABCD[A]] - zz[aXABCD[D]]) / (zz[aXABCD[A]] - zz[aXABCD[X]] + vDelta0) ;

sinon retXD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD[X]] + vDelta0) ;

Et voici mon code modifié

while (k < maxPeak-5 && (aXABCD[D] < bartoD+2 || patternInfluence==2))

{

aXABCD[X] = aNumBarPeak[k + 4] ;

aXABCD[A] = aNumBarPeak[k + 3] ;

aXABCD = aNumBarPeak[k + 2] ;

aXABCD[C] = aNumBarPeak[k + 1] ;

aXABCD[D] = aNumBarPeak[k] ;

vBullBear = "" ;

vNamePattern = "" ;

dotX=zz[aXABCD[X]] ;

dotA=zz[aXABCD[A]] ;

dotB=zz[aXABCD] ;

dotC=zz[aXABCD[C]] ;

dotD=zz[aXABCD[D]] ;

retXB=(dotA - dotB) / (dotA - dotX + vDelta0) ;

retAC=(dotC - dotB) / (dotA - dotB + vDelta0) ;

retBD=(dotC - dotD) / (dotC - dotB + vDelta0) ;

retXD=(dotA - dotD) / (dotA - dotX + vDelta0) ;

retXC=(dotA - dotC) / (dotA - dotX + vDelta0) ; //Modèles de chiffrement

AB=MathAbs(dotA-dotB) ;

CD=MathAbs(dotC-dotD) ;

AC=MathAbs(dotA-dotC) ;

BD=MathAbs(dotB-dotD) ;

if(currentDTime==0) currentDTime=Time[aXABCD[D]] ;

foundPatternDTime=Time[aXABCD[D]] ;

patternDotC=dotC ;

searchClassicalPatterns=false ;

searchSharkPatterns=false ;

searchCypherPatterns=false ;

search5_0Patterns=false ;

searchABCDPatterns=false ;

si((dotA > dotX && dotB > dotX && dotB dotB && dotC < dotA && dotD < dotB)|| (dotA < dotX && dotB dotA && dotC dotA && dotD > dotB))searchClassicalPatterns=true ;

else if((dotA > dotX && dotB > dotX && dotB dotB && dotC > dotA && dotD < dotB)|| (dotA < dotX && dotB dotA && dotC < dotB && dotC dotB)){searchSharkPatterns=true ; searchCypherPatterns=true;}

else if((dotA > dotX && dotB < dotX && dotB dotB && dotC > dotA && dotD > dotB)|| (dotA dotX && dotB > dotA && dotC < dotB && dotC < dotA && dotD < dotB))search5_0Patterns=true ;

else if((dotB dotB && dotC < dotA && dotD dotA && dotC dotA && dotD > dotB))searchABCDPatterns=true ;

//RECHERCHE DE MOTIFS GARTLEY CLASSIQUES

if(searchClassicalPatterns==true)

{

if(dotA > dotX && dotB > dotX && dotB dotB && dotC < dotA && dotD < dotB)

{

vBullBear="Haussier" ;

}

if(dotA < dotX && dotB dotA && dotC dotA && dotD > dotB)

{

vBullBear="Baissier" ;

}

// Début de la recherche Gartley

if (retAC >= 0.382*min_DeltaGartley && retAC <= 0.886*max_DeltaGartley && retXD < 1.000 && retXD = 1.270*min_DeltaGartley && retBD =0.618*min_DeltaGartley && retXB <= 0.618*max_DeltaGartley)

{

vNamePattern="Gartley" ;

PriceD_XD=dotA-0.786*(dotA-dotX) ;

PriceD_BD=dotC-1.618*(dotC-dotB) ;

si (vBullBear=="Bullish")

{

si(MathMax(PriceD_XD,PriceD_BD)==PriceD_XD)

{

LevelForDmin = dotA-0.786*min_DeltaGartley*(dotA-dotX) ;

LevelForDmax = dotA-0.786*max_DeltaGartley*(dotA-dotX) ;

}

else if(MathMax(PriceD_XD,PriceD_BD)==PriceD_BD)

{

LevelForDmin = dotC-1.618*min_DeltaGartley*(dotC-dotB) ;

LevelForDmax = dotC-1.618*max_DeltaGartley*(dotC-dotB) ;

}

}

si (vBullBear=="Bearish")

{

if(MathMin(PriceD_XD,PriceD_BD)==PriceD_XD)

{

LevelForDmin = dotA-0.786*min_DeltaGartley*(dotA-dotX) ;

LevelForDmax = dotA-0.786*max_DeltaGartley*(dotA-dotX) ;

}

else if(MathMin(PriceD_XD,PriceD_BD)==PriceD_BD)

{

LevelForDmin = dotC-1.618*min_DeltaGartley*(dotC-dotB) ;

LevelForDmax = dotC-1.618*max_DeltaGartley*(dotC-dotB) ;

}

}

}// Fin de la recherche de Gartley

 
poruchik:
Minsk maintenant 22.43

21.:47 ici

 

dotX=zz[aXABCD[X]] ;

dotA=zz[aXABCD[A]] ;

dotB=zz[aXABCD] ;

dotC=zz[aXABCD[C]] ;

dotD=zz[aXABCD[D]] ;

sont les points X, A, B, C et D

 

retXB=(dotA - dotB) / (dotA - dotX + vDelta0) ;

retAC=(dotC - dotB) / (dotA - dotB + vDelta0) ;

retBD=(dotC - dotD) / (dotC - dotB + vDelta0) ;

retXD=(dotA - dotD) / (dotA - dotX + vDelta0) ;

retXB, retAC, retBD, retXD sont des retracements en fibre.