Questions des débutants MQL5 MT5 MetaTrader 5 - page 818

 
Vladimir Karputov:

J'espère que vous créez les poignées de l'indicateur UNE fois dans OnInit() ?

La profondeur de calcul dépend de l'indicateur. De rares indicateurs limitent la profondeur de manière forcée - en règle générale, ils calculent tous l'historique complet. Par conséquent, la variante suivante peut être utile : introduire la variable responsable de la profondeur dans l'indicateur et ensuite passer ce paramètre à travers iCustom dans l'Expert Advisor.

1. Oui, je comprends que dans un bon sens, cela devrait être fait une fois dans l'init. Mais le problème est que les paramètres d'entrée des indicateurs peuvent varier. Par exemple, dans l'analyse du spectre, les fréquences de résonance sont calculées et le résultat du calcul est la période de la MA utilisée. Et si vous demandez des données MA pour une nouvelle dimension, c'est une nouvelle poignée. Pratiquement, les fréquences ne changent pas à chaque barre, donc la même poignée MA est utilisée assez longtemps (~ minutes). Mais il arrive quand même un moment où la poignée change. Dans ce cas, je dois soit utiliser un grand nombre de poignées, soit utiliser une seule poignée, mais la recalculer périodiquement. C'est là que l'économie entre en jeu.

2. iCustom que j'ai maîtrisé. Mais comment limiter la profondeur de calcul dans l'indicateur ? Je ne peux pas le faire en technique 1. Apparemment, je vais devoir créer un grand nombre de clones personnalisés d'indicateurs techniques. Bien sûr, c'est ennuyeux mais cela doit être efficace. Merci pour le conseil. C'est une bonne idée. Merci.

 
User_mt5:

1. Oui, je comprends que cela se fait normalement une fois dans l'inite. Mais la question est que les paramètres d'entrée des indicateurs peuvent changer.

Les développeurs peuvent écrire des SB où les indicateurs peuvent être manipulés dans le style MQL4 sans aucune perte d'efficacité. C'est-à-dire que toutes les caches et les poignées sont cachées dans SB.

 
User_mt5:

1. Oui, je comprends que cela se fait normalement une fois dans l'inite. Mais le problème est que les paramètres d'entrée des indicateurs peuvent varier. Par exemple, dans l'analyse spectrale, les fréquences de résonance sont calculées et le résultat du calcul est la période de la MA utilisée. Et si vous demandez des données MA pour une nouvelle dimension, c'est une nouvelle poignée. Pratiquement, les fréquences ne changent pas sur chaque barre, donc la même poignée MA est utilisée assez longtemps (~ minutes). Mais il arrive quand même un moment où la poignée change. Dans ce cas, je dois soit utiliser un grand nombre de poignées, soit utiliser une seule poignée, mais la recalculer périodiquement. C'est là que l'économie entre en jeu.

2. iCustom que j'ai maîtrisé. Mais comment limiter la profondeur de calcul dans l'indicateur ? Je ne peux pas le faire en technique 1. Apparemment, je vais devoir créer un grand nombre de clones personnalisés d'indicateurs techniques. Bien sûr, c'est ennuyeux mais cela doit être efficace. Merci pour le conseil. C'est une bonne idée. Merci.


1. Dans ce cas, il est probablement préférable de tuer un handle inutilisé et d'en créer un nouveau (l'essentiel est de contrôler, afin de ne pas plaquer un million de handles dans OnTick() :) ).

2. Créez une copie de l'indicateur intégré, mais avec un nom différent (par exemple, ajoutez "profondeur de l'histoire" à son nom) et introduisez un nouveau paramètre : InpDepthHistory. C'est-à-dire que vous devez écrire de nouveaux indicateurs personnalisés.

 
User_mt5:

1. Oui, je comprends que cela se fait normalement une fois dans l'inite. Mais le problème est que les paramètres d'entrée des indicateurs peuvent varier. Par exemple, dans l'analyse spectrale, les fréquences de résonance sont calculées et le résultat du calcul est la période de la MA utilisée. Et si vous demandez des données MA pour une nouvelle dimension, c'est une nouvelle poignée. Pratiquement, les fréquences ne changent pas sur chaque barre, donc la même poignée MA est utilisée assez longtemps (~ minutes). Mais il arrive quand même un moment où la poignée change. Dans ce cas, je dois soit utiliser un grand nombre de poignées, soit utiliser une seule poignée, mais la recalculer périodiquement. C'est là que l'économie entre en jeu.

2. iCustom que j'ai maîtrisé. Mais comment limiter la profondeur de calcul dans l'indicateur ? Je ne peux pas le faire en technique 1. Apparemment, je vais devoir créer un grand nombre de clones personnalisés d'indicateurs techniques. Bien sûr, c'est ennuyeux mais cela doit être efficace. Merci pour le conseil. C'est une bonne idée. Merci.

Si je comprends bien, vous voulez obtenir une seule valeur en utilisant iCustom() comme dans mql4, mais vous ne tenez pas compte du fait que mql4 recalcule aussi l'indicateur pour toute la profondeur de l'historique à la première utilisation. De même, il est recalculé lors de la modification d'au moins un paramètre.

Par conséquent, nous concluons : vous ne devez pas vous inquiéter. Si l'"ancien" indicateur n'est pas nécessaire, vous pouvez simplement le supprimer et obtenir un handle de l'indicateur avec d'autres paramètres.

 
fxsaber:

Les développeurs peuvent écrire un SB, dans lequel les indicateurs peuvent être manipulés dans le style MQL4 sans perte d'efficacité. C'est-à-dire que toutes les caches et les poignées sont cachées dans le SB.

Désolé, je ne comprends pas. Les développeurs de mots ici sont-ils ceux qui ont créé MT ou suis-je une application pécheresse ? Et SB est... ?

 
Vladimir Karputov:

1. Dans ce cas, il est probablement préférable de tuer un handle inutilisé et d'en créer un nouveau (l'essentiel est de s'assurer que vous ne mettez pas un million de handles dans OnTick() :) ).

2. Créez une copie de l'indicateur intégré, mais avec un nom différent (par exemple, ajoutez "profondeur de l'histoire" à son nom) et introduisez un nouveau paramètre : InpDepthHistory. C'est-à-dire que vous devez écrire de nouveaux indicateurs personnalisés.

1. Oui. Pour l'instant, j'ai un tableau tridimensionnel composé uniquement de poignées. Mais maintenant, apparemment, je vais tout réarranger.

2. Oui, il existe presque tous les codes d'indicateurs techniques. Et vous pouvez écrire le vôtre.

Merci.

 
User_mt5:

Désolé, je ne comprends pas. Est-ce que les développeurs de mots ici sont ceux qui ont créé MT ou suis-je un applicationniste pécheur ? Et SB est... ?

MetaQuotes peut créer une telle bibliothèque standard si vous le souhaitez. La grande question est de savoir si elle est nécessaire.

 
Alexey Viktorov:

Comme je le vois, vous voulez obtenir une seule valeur en utilisant iCustom() comme dans mql4, mais vous ne considérez pas que mql4 recalcule aussi l'indicateur pour toute la profondeur de l'historique à la première utilisation. De la même manière, il est recalculé lorsqu'au moins un paramètre est modifié.

D'où la conclusion : pas besoin de s'embêter. Si un indicateur "obsolète" n'est plus nécessaire, vous pouvez simplement le supprimer et obtenir un indicateur manipulé avec des paramètres différents.

Peut-être, j'en ai envie. Mais maintenant, je ne veux pas. Vous avez raison. Si vous n'avez pas besoin d'un indicateur obsolète, vous devriez les écraser comme des cafards :)

Une bonne solution consiste à limiter la profondeur des clones techniques. Cela permettra d'économiser des ressources et du temps. Donc, c'est ce que je vais faire maintenant.

Merci.

 
fxsaber:

MetaQuotes peut créer une telle bibliothèque standard si vous le souhaitez. La grande question est de savoir si elle est nécessaire.

C'est pour les générations futures. J'ai regardé quelques exemples à la bibliothèque. Des milliers de lignes de code non-commenté. Je ne sais pas pour les autres, mais je ne peux pas faire ça. Alors merci pour l'idée, mais ce n'est tout simplement pas acceptable dans mon cas.
 
User_mt5:
C'est pour les générations futures. J'ai regardé quelques exemples à la bibliothèque. Des milliers de lignes de code non-commenté. Je ne sais pas pour les autres, mais je ne sais pas comment faire. Alors merci pour l'idée, mais ce n'est tout simplement pas acceptable dans mon cas.

Cela fonctionne maintenant dans MT5

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Caractéristiques du langage mql5, subtilités et astuces

fxsaber, 2018.01.09 10:20

Pour les adeptes de MQL4, il existe un ancien moyen de travailler avec les TF dans MQL5 dans un style familier

Peut-être que quelqu'un trouvera l'approche MQL4 utile pour travailler avec l'historique des tics.

if (Tick[0].bid > Tick[100].bid) // сравниваем текущий и исторический тики
  Print("Hello World!");

if (High[0] > Close[100]) // https://www.mql5.com/ru/forum/42122/page24#comment_2904023
  Print("Hello World!");

Techniquement, rien ne vous empêche de faire la même chose UNE fois avec des indicateurs (sans perte d'efficacité) et de mettre la solution en SB.