Merci pour cet article.
J'ai une question. Vous utilisez la première forme de l'indicateur pour optimiser les calculs de l'indicateur, il y a begin. Mais si vous ne pouvez pas l'utiliser (pour des calculs corrects il faut open[], high[], low[], close[]...) comment faire ? Il n'y a pas de begin dans la deuxième forme.
Merci pour cet article.
J'ai une question. Vous utilisez la première forme de l'indicateur pour optimiser les calculs de l'indicateur, il y a begin. Mais si vous ne pouvez pas l'utiliser (pour des calculs corrects, vous avez besoin de open[], high[], low[], close[] ...) comment faire ? Il n'y a pas de begin dans la deuxième forme.
tout n'est pas pris en compte, mais en général c'est toujours intéressant =)
et en particulier l'optimisation de l'appel des indicateurs techniques n'est pas prise en compte.
Je pense que ce sujet est tout à fait pertinent.
plus précisément, comment mieux initialiser l'indicateur technique
en général, la fonction de vérification des données est mise en œuvre
mais l'exemple de l'initialisation n'est pas exactement pris en compte
pour autant que l'on sache d'après l'aide
Нельзя обратиться к данным индикатора сразу после его создания, так как на расчет значений индикатора требуется некоторое время, и поэтому создавать хэндлы индикаторов лучше всего в OnInit(). Функция iCustom() создает соответствующий пользовательский индикатор и при успешном создании возвращает его хэндл. Пользовательские индикаторы могут содержать до 512 индикаторных буферов, содержимое которых также можно получать при помощи функции CopyBuffer(), используя полученный хэндл.
comment mieux contourner cette fonction....
Je me pose toujours la même question.
if (Handle == INVALID_HANDLE) Print("N'a pas réussi à obtenir la poignée de l'indicateur SMA");
Si cette condition fonctionne, que dois-je faire ? Disons que c'est le championnat, c'est tout... init ne courra plus.
Je me suis toujours posé la même question.
si cette condition fonctionne, que dois-je faire ? disons que c'est le championnat, c'est tout... l'init ne fonctionnera plus.
Oui ! C'est un fait non documenté, je ne le savais pas non plus ! Il faut absolument qu'on se penche sur la question ! Mais c'est plus facile pour moi, je vais mettre toutes les dindes dans l'Expert Advisor lui-même et c'est tout, de sorte que l'Expert Advisor court comme un sprinter sur des distances de marathon et ne trébuche pas n'importe où et jamais !
Je me pose toujours la même question.
Si cette condition fonctionne, que dois-je faire ? Disons que c'est un championnat, c'est tout... l'init ne s'exécutera plus.
- www.mql5.com
Tout d'abord, récupérez le code d'erreur et affichez-le dans le journal. Essayez ensuite d'y accéder à nouveau dans OnTick() ou OnCalculate(). Si vous ne parvenez pas à obtenir la poignée de l'indicateur, il est fort probable que cet indicateur n'existe pas ou qu'il manque de mémoire. Dans ce cas, le conseiller expert n'a pas le droit de négocier.
Nous pouvons le faire nous-mêmes ! Dans une telle situation, si nous pouvions faire en sorte que la fonction OnInit() renvoie moins un pour appeler à nouveau OnInit() et ainsi de suite jusqu'à ce que la poignée apparaisse ! Mais maintenant il est clair que si vous ne surchargez pas votre ordinateur, il n'y aura aucune raison de ne pas obtenir le handle. Mais j'ai vu cela une fois lors de la mise à jour d'un build, cela peut être guéri en recompilant l'indicateur !
- www.mql5.com
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Les Principes du Calcul Économique des Indicateurs a été publié :
Les appels aux utilisateurs et les indicateurs techniques occupent très peu de place dans le code de programme des systèmes de trading automatisés. Souvent, il s’agit simplement de quelques lignes de code. Mais il arrive souvent ces quelques lignes de code utilisant plus de temps, qui doivent être consacrées au test de l’Expert Advisor. Par conséquent, tout ce qui est lié aux calculs de données dans un indicateur doit être considéré de manière beaucoup plus approfondie qu’il n’y paraît à première vue. Cet article en parlera précisément
Maintenant que les coordonnées de l’appel rationnel de la fonction de copie des valeurs d’indicateur dans le code de l’Expert Advisor sont claires, vous pouvez tester les avantages de l’application de la fonction IsNewBar () dans les Expert Advisors.
Nous avons donc deux options d’Expert Advisors, disponibles pour être testées dans le testeur de stratégie, la première - AMA_Test.ex5. Il copie les données du tampon de l’indicateur à chaque coche.
Le second - IsNewBar_AMA_Test.mq5 copie les données uniquement lors d’un changement de barre.
Oui Les résultats du test sont quelque peu décevants. Il s’avère que l’appel d’une fonction IsNewBar () sur chaque coche est beaucoup plus coûteux que de copier les données dans trois cellules du tableau de l’utilisateur!
Ici, Je voudrais attirer votre attention sur une autre partie importante, mais apparemment discrète, de l’indicateur. Le fait est que si nous obtenons la poignée de l’indicateur dans la fonction OnInit (), alors, que nous copions ou non les données de cet indicateur dans la fonction OnTick (), ses calculs sur une barre encore non calculée et actuelle, seront toujours effectués sur chaque coche.
Auteur : Nikolay Kositsin