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
.
De toute façon, j'essayais de faire en sorte que les fractales hautes ne se forment que lorsqu'une autre condition se produit, comme le croisement d'un iMACD, d'une EMA ou d'un autre indicateur.
Ainsi, les fractales n'apparaîtront sur l'indicateur que lorsque toutes les conditions seront remplies.
Je n'étais pas sûr de ce que vous essayez de faire mais essayez ceci, remarquez les entrées externes.
Comment êtes-vous arrivé à cette conclusion exactement et quelle est la différence fonctionnelle ?
J'en suis arrivé à cette conclusion, parce que j'ai probablement regardé du point de vue de la POO. Oui, ce n'est pas vrai pour le cas de MQL4, je m'en souviens maintenant. Bien que cela puisse être une bonne pratique ?
Ou peut-être quelque chose comme ceci ?
vous devriez vraiment utiliser IndicatorCounted(), parce que si vous le faites comme ça, votre indicateur redessine tous ces objets à chaque nouveau tick au lieu de les dessiner tous en une seule fois et d'en ajouter de nouveaux au fur et à mesure que les barres se forment.
Je suis arrivé à cette conclusion, parce que probablement, je regardais du point de vue de la POO. Oui, ce n'est pas vrai pour le cas de MQL4, je me souviens maintenant. Bien que cela puisse être une bonne pratique ?
C'est toujours une bonne pratique de limiter la portée. C'est toujours une bonne pratique de définir les variables/objets là où ils sont utilisés et de les initialiser à ce moment-là.
Définir un objet en dehors de la boucle résulte en une construction par défaut plus N affectations. Défini à l'intérieur de la boucle résulte en N constructions avec valeur - généralement plus rapide.
Ne vous préoccupez jamais des optimisations tant que vous ne pouvez pas prouver que le changement fait une différence.
C'est toujours une bonne pratique de limiter la portée. C'est toujours une bonne pratique de définir les variables/objets là où ils sont utilisés et de les initialiser à ce moment-là.
Définir un objet en dehors de la boucle résulte en une construction par défaut plus N affectations. Défini à l'intérieur de la boucle résulte en N constructions avec valeur - généralement plus rapide.
Ne vous préoccupez jamais des optimisations tant que vous ne pouvez pas prouver que le changement fait une différence.
Cela devrait également s'appliquer à son itérateur. for (int i=0 ;.. ..
Cependant, je suis légèrement confus quant à la raison pour laquelle la déclaration des variables (plus rapide et plus lente) en dehors de la boucle n'est pas bonne alors qu'elle est correcte à l'intérieur de la boucle.
Et pourtant l'int i = Bars fonctionne en dehors de la boucle ou à l'intérieur de la boucle ?
Quoi qu'il en soit, il est bon de voir que certaines de mes idées sur lesquelles je travaillais sont déjà postées dans ce fil de discussion, c'est donc une bonne nouvelle et cela signifie que je me rapproche un peu plus de la possibilité de coder quelque chose par moi-même un jour. Un petit progrès, c'est mieux que rien. Merci
Donc maintenant je peux travailler sur la comparaison de certains temps d'indicateur, je vais essayer de comprendre cela maintenant.
Par exemple :
Comparer v1[i] à v2[i] Temps des indicateurs actuellement formés && / || if(v1[i] time is > v2[i] time) et d'autres comparaisons de ce genre.
Merci pour tous les conseils, cela a été d'une grande aide.
C'est toujours une bonne pratique de limiter la portée. C'est toujours une bonne pratique de définir les variables/objets là où ils sont utilisés et de les initialiser à ce moment-là.
Définir un objet en dehors de la boucle résulte en une construction par défaut plus N affectations. Défini à l'intérieur de la boucle résulte en N constructions avec valeur - généralement plus rapide.
Ne vous préoccupez jamais des optimisations tant que vous ne pouvez pas prouver que le changement fait une différence.
Ok, il semble que j'ai quelques variantes d'un code qui fonctionne maintenant, merci.
Cependant, je suis un peu confus quant à la raison pour laquelle la déclaration des variables (plus rapide et plus lente) en dehors de la boucle n'est pas bonne alors qu'elle est correcte à l'intérieur de la boucle.
Et pourtant l'int i = Bars fonctionnera en dehors de la boucle ou à l'intérieur de la boucle ?
Vous devez considérer ce que vous faites, lorsque vous créez un indicateur, vous appliquez votre code à chaque barre du graphique, ce qui signifie que vous devez obtenir la valeur de l'indicateur macd telle qu'elle était pour chacune de ces barres historiques.
C'est ce que vous avez fait dans votre code original :
le dernier paramètre 1 est la valeur du macd telle qu'elle était à la barre 1 du graphique, la barre précédente à la barre actuelle qui est indexée comme barre 0Il est évident que vous ne voulez pas utiliser cette seule valeur de l'indicateur macd dans votre opérateur conditionnel sur l'ensemble du graphique historique.
Vous devez indexer le macd au même indice de barre que chaque barre, donc par exemple à la barre 500 vous avez besoin de ceci
ce dernier paramètre doit changer pour correspondre au numéro de la barre sur laquelle votre indicateur applique ses algorithmes.
C'est pourquoi vous en avez besoin à l'intérieur de la boucle, afin que vous puissiez utiliser l'itérateur de cycle de boucle ( i ) pour le dernier paramètre. Ainsi, vous obtenez votre valeur macd telle qu'elle était pour chaque barre du graphique historique.
J'espère que cela aidera à clarifier un peu les choses.
Essayez ce changement
Et pourquoi est-ce mieux que for(int i = Bars ?) ?
Veuillez me conseiller, merci.