Aide au codage - page 522

 

Bonjour à tous,

Je souhaite savoir si c'est la bonne façon de calculer la valeur d'un indicateur dans une boucle for (sur toutes les barres disponibles) :

int OnCalculate(...)

{

//...

ArraySetAsSeries(SignalLine,false) ;

//...

for(int i=0 ; i<Bars ; i++)

{

double ma=iMA(NULL,0,MaPeriod,0,MaMethod,MaPrice,i) ;

//...

SignalLine=ma ;

}

//...

}

//...

return rates_total

}

P.S. Logiquement, dans ce cas simple, je voudrais représenter et tracer une réplication MA par un objet iMA. Mais je ne suis pas sûr de la façon dont je règle la boucle. J'obtiens un peu de différence par rapport à celle calculée avec MT4 intégré. Je n'arrive pas à comprendre pourquoi !

Merci

 
har:
Bonjour à tous,

Je souhaite savoir si c'est la bonne façon de calculer la valeur de l'indicateur dans une boucle for (sur toutes les barres disponibles) :

int OnCalculate(...)

{

//...

ArraySetAsSeries(SignalLine,false) ;

//...

for(int i=0 ; i<Bars ; i++)

{

double ma=iMA(NULL,0,MaPeriod,0,MaMethod,MaPrice,i) ;

//...

SignalLine=ma ;

}

//...

}

//...

return rates_total

}

P.S. Logiquement, dans ce cas simple, je voudrais représenter et tracer une réplication MA par un objet iMA. Mais je ne suis pas sûr de la façon dont je règle la boucle. J'obtiens un peu de différence par rapport à celle calculée avec MT4 intégré. Je n'arrive pas à comprendre pourquoi !

Merci

Lorsque vous utilisez iMA(), l'ordre n'a pas d'importance.

Mais la bonne méthode devrait être for(int i=Bars-1 ; i>=0 ; i--) - de cette façon, vous éviterez les erreurs dans de nombreux cas.

 

Merci mladen. Donc si je configure ArraySetAsSeries(SignalLine,false) je devrais itérer avec

for (int i = 0 ; i < Bars ; i++)

alors qu'au contraire, si ArraySetAsSeries(SignalLine,true) je devrais itérer avec

for (int = Bars - 1 ; i >= 0 ; i--)

C'est bien ça ?

 
har:
Merci mladen. C'est parce que nous utilisons la fonction ArraySetAsSeries() que nous devons itérer en sens inverse dans le tableau, n'est-ce pas ? Merci !

Cela ne change rien - vous obtiendrez l'élément 0 avec la valeur courante, et quand une nouvelle valeur courante arrive, cet élément 0 de la SignalLine sera écrasé par la nouvelle valeur.

Si SignalLine est un tampon, il suffit de ne pas utiliser la fonction ArraySetAsSeries(SignalLine,false) ;

 

Bonjour mladen mr tools et Igorad

Merci beaucoup pour la sagesse que vous avez partagée et l'aide offerte.

Je sollicite à nouveau votre aide après une longue gestation et j'espère qu'elle attirera votre attention. Votre indication T3 adaptive ma _ica.mq4 est mon indicateur favori pour le trading bien qu'il soit visuellement bon et difficile à suivre manuellement en raison de la non-disponibilité de temps, je souhaite donc que quelqu'un m'aide à coder un Expert advisor avec cet indicateur fléché comme signaux d'achat et de vente pour prendre des ordres avec les commodités normales d'un EA comme le trailing, le bep et le sl,tp ainsi que le lot sizing.

Mladen et Igorad devraient être occupés - s'ils peuvent m'aider je suis doué, sinon quelqu'un qui veut m'aider peut le faire.si vous voulez je peux joindre l'indicateur aussi. Voici la page où se trouve l'indicateur T3 adaptive ma"https://c.mql5.com/forextsd/forum/167/t3_adaptive_ma_i-ca_2.01_alerts_nmc.mq4

Je peux aussi demander d'autres indicateurs avec T3 cci mais chaque indicateur fonctionne séparément dans un EA avec une option d'utilisation vrai ou faux. Entre toute personne intéressée par les flèches de Lukas et les courbes EA basé sur l'indicateur - il a encore besoin d'amélioration dans l'analyse de la courbe réelle de la rotation des prix, car il est basé sur le ma, le prix n'est pas analysé mais son tout LIMITE dans le forex sinon tout le monde sera un millionnaire par choix.

J'ai essayé de le coder mais je ne suis pas un programmeur donc tout est parti en vain, d'où ma demande d'aide ici. Sans compétences de codage, il est certainement difficile de transmettre des indicateurs très sophistiqués comme T3 adaptatif avec le super cerveau de mladen.difficile de coder pour un débutant et un non-technicien.

Le rêve est grand mais ce qui est dans la main est minuscule.

 

Oh okkk... Merci !

En C++, il n'y avait pas ce genre de problèmes...

 

Bonjour Mladen

J'espère que vous considérerez cette aide, s'il vous plaît jetez un coup d'oeil à ce post -#5118 juste un post au-dessus de votre post #5220.

Ce serait le meilleur cadeau pour moi avec des mains claires comme les vôtres.

 
har:
Oh okkk... Merci ! En C++ il n'y avait pas ce genre de problèmes...

Comme je travaille toujours avec des tableaux en mode C/C++, l'indexation dans ces tableaux va de 0 (la plus ancienne) à Bars-1 (la plus récente). Si vous utilisez l'index 0 pour la barre la plus récente, il réécrira toujours le 0ème élément.

Si vous voulez l'utiliser à la manière de C/C++, utilisez un tableau, vérifiez si sa taille est égale à Bars, sinon, redimensionnez-le à la taille de Bars, puis attribuez des valeurs aux éléments en utilisant Bars-i-1 comme index.

S'il s'agit d'un tampon, l'indexation est inversée par rapport à la méthode C/C++ et vous n'avez rien à changer dans cette boucle - il suffit de supprimer la partie qui définit le tableau comme série à false.

 

Oui, j'ai vu ! Je l'ai aussi compris... De toute façon, ce ne sont que de petites différences entre MQL et C++. Il y a beaucoup de C dans MQL pour ce que j'ai vu ! Mais j'aime définitivement MQL

Je souhaite partager mon indicateur une fois prêt (et si je peux comprendre s'il est utile) et vous donner un coup de main !

 
har:
Oui, j'ai vu ! Je l'ai compris aussi... De toute façon, il n'y a que de petites différences entre MQL et C++. Il y a beaucoup de C dans MQL pour ce que j'ai vu ! Mais j'aime définitivement MQL Je souhaite partager mon indicateur une fois prêt (et si je peux comprendre s'il est utile) et vous donner un coup de main !

Même s'ils se ressemblent, ils sont loin d'être similaires lorsque vous les exécutez. ex4 est un P-code. Sa vitesse d'exécution est au moins 100 fois plus lente que celle de son homologue C/C++.

Si vous le pouvez, écrivez les parties cruciales dans un DLL C/C++ - ce sera beaucoup plus rapide.