Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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
Il devrait être Ok maintenant
zup_v134rev02.mq4
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 motifsDé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
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.