Explication détaillée d'iCustom - page 5

 
William Roeder:
En continuant à partir de #23 et en encapsulant dans une fonction #26, je montre maintenant une structure qui fonctionne à la fois sur MT4 et MT5. (Pour le post-build 600, j'ai changé les points invalides(#29) dans les noms de variables, et j'ai remplacé les ints par des énumérations standard).
Non compilé, non testé. Non compilé, non testé.

Bonjour William & Co.

Si vous appelez iCustom plusieurs fois pour un indicateur donné avec le même symbole et la même période, est-ce que le code complet de l'indicateur est exécuté à plusieurs reprises ou est-ce que MQL4 fait quelque chose d'intelligent en coulisse pour mettre en cache les tampons résultants ? J'espère que c'est la dernière solution, surtout pour les indicateurs les plus lourds... Je crois savoir que MQL5 améliore cette situation en utilisant des handles, traitant les indicateurs de la même manière que l'ouverture/la fermeture de fichiers.

De plus, lorsque je programme des EAs, je suis intéressé par l'utilisation des classes dérivées CIndicator de la bibliothèque standard qui offre probablement un meilleur contrôle (et une plus grande extensibilité) par rapport aux fonctions intégrées (iCustom, iMACD, iBands, etc.), sans oublier que théoriquement, elles devraient offrir une sémantique de programmation similaire sur les deux plateformes, MT4 et MT5. Cependant, je ne l'ai pas encore essayé moi-même et je reste perplexe devant les différences significatives dans le code sourceentre MQL4 et MQL5(Include/Indicators/*.mqh). Auriez-vous l'amabilité de m'offrir votre point de vue sur les avantages et les inconvénients de ces fonctions/bibliothèques, selon votre compréhension et votre expérience ?

 
Dima Diall: Si vous appelez iCustom plusieurs fois pour un indicateur donné avec le même symbole et la même période, est-ce que le code complet de l'indicateur est exécuté à plusieurs reprises ou est-ce que MQL4 fait quelque chose d'intelligent en coulisse pour mettre en cache les tampons résultants ?
  1. Si le graphique symbole/TF spécifique n'existe pas, il est créé de manière invisible.
  2. Si la combinaison indicateur/paramètre(s) spécifique(s) n'existe pas sur le graphique symbole/TF, elle est ajoutée de manière invisible.
  3. Ensuite, il lit à partir du tampon [index] demandé.
 
William Roeder:
  1. Si le graphique symbole/TF spécifique n'existe pas, il est créé de manière invisible.
  2. Si la combinaison indicateur/paramètre(s) spécifique(s) n'existe pas sur le graphique symbole/TF, elle est ajoutée de manière invisible.
  3. Ensuite, il lit à partir du tampon [index] demandé.

Merci beaucoup pour cette réponse rapide, William - c'est une approche intéressante en effet... Ces indicateurs créés de manière invisible sont-ils automatiquement détruits lorsque l'EA est terminé ? Je suppose que oui, au moins dans MQL4 ; peut-être que dans MQL5 il faut explicitement appeler IndicatorRelease() pour les handles des indicateurs utilisés par l'EA.

PS : Avez-vous une quelconque expérience des classes CIndicator dans la bibliothèque standard? J'ai cherché en ligne des exemples de code et je n'ai pas trouvé grand chose, à part le maigre matériel de référence sur http://www.mql5.com/en/docs/standardlibrary/technicalindicators/CIndicators/CIndicator (ou le système d'aide intégré).

PPS : Y a-t-il un moyen d'activer les notifications par e-mail dans ce forum ? J'ai cherché dans les paramètres de mon compte et je n'ai rien trouvé.

Documentation on MQL5: Standard Library
Documentation on MQL5: Standard Library
  • www.mql5.com
MQL5 Standard Library is written in MQL5 and is designed to facilitate writing programs (indicators, scripts, experts) for end users. Library provides convenient access to the most of the internal MQL5 functions.
 
  1. Puisque les graphiques non utilisés sont purgés après dix minutes, je suppose que les indicateurs non utilisés le sont également.
  2. Je n'ai pas étudié MT5. Regardez le code dans la classe.
  3. Pas que je sache. J'utilise juste Firefox et le module complémentaire Update Scanner.