Discussion de l'article "20 signaux de trade en MQL5" - page 3

 

J'ai ici une question pratique.

Pourquoi est-il nécessaire de vérifier le handle de l'indicateur pour l'invalidité à chaque appel de CopyBuffer() ? Dans mon EA j'ai fait cette procédure une fois (avec l'arrivée du premier tick, après avoir vérifié la synchronisation des données), et plus tard j'ai commencé à recevoir l'erreur 4807 Error indicator handle. CSymTotal=7. Les handle ont été reçus dans un tableau :

      for (int i=0;i<CSymTotal;i++)
      {
      H_Ind[i]=iSAR(CSymList[i],PSARTF,PSARStep,PSARMax);
      }
La vérification de l'impression montre que les sept H_Ind[0..6] ont des valeurs respectives de 10..15, c'est-à-dire différentes de -1. Les handles semblent être valides, mais en réponse à CopyBuffer(H_Ind[0-6]...) j'obtiens CopyBuffer=-1, LastError=4807( !!!).Parfois cela se passe normalement, et parfois il y a des erreurs.

Après avoir introduit des vérifications comme dans cet article,

   if(H_Ind[CSymListItem]==INVALID_HANDLE)//--- si la poignée n'est pas valide
     {
      //--- создадим его снова                                                      
      H_Ind[CSymListItem]=iSAR(CSymList[CSymListItem],PSARTF,PSARStep,PSARMax);
      //--- sortir de la fonction
      return(0);
     }
   else
     {
      cb=CopyBuffer(H_Ind[CSymListItem],0,0,BarsCheck,PSARBuffer);
...

jusqu'à présent, tout fonctionne correctement. Mystère...

Je ne comprends pas où est ma faute.... Et surtout, pourquoi est-il nécessaire de vérifier la validité du handle àchaque fois que j'utilise CopyBuffer() et queje le recrée ? N'est-il pas sauvegardé jusqu'à ce que l'Expert Advisor termine son travail ? Est-ce une nécessité en général, ou est-ce juste pour la commodité de l'exemple ?

Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
  • www.mql5.com
Получение рыночной информации / SymbolIsSynchronized - Документация по MQL5
 
pronych:

J'ai ici une question pratique.

Pourquoi est-il nécessaire de vérifier le handle de l'indicateur pour l'invalidité à chaque appel de CopyBuffer() ? Dans mon EA j'ai fait cette procédure une fois (avec l'arrivée du premier tick, après avoir vérifié la synchronisation des données), et plus tard j'ai commencé à recevoir l'erreur 4807 Error indicator handle. CSymTotal=7. Les handle ont été reçus dans un tableau :

La vérification de l'impression montre que les sept H_Ind[0..6] ont des valeurs respectives de 10..15, c'est-à-dire différentes de -1. Les handles semblent être valides, mais en réponse à CopyBuffer(H_Ind[0-6]...) j'obtiens CopyBuffer=-1, LastError=4807( !!!).Parfois cela se passe normalement, et parfois il y a des erreurs.

Après avoir introduit des vérifications comme dans cet article,

jusqu'à présent, tout fonctionne correctement. Mystère...

Je ne comprends pas où est ma faute.... Et surtout, pourquoi est-il nécessaire de vérifier la validité du handle àchaque fois que j'utilise CopyBuffer() et queje le crée à nouveau ? N'est-il pas sauvegardé jusqu'à ce que l'Expert Advisor termine son travail ? Est-ce une nécessité, ou est-ce juste pour la commodité de l'exemple ?

Dans mes exemples, la condition est la suivante : si le handle est valide, nous procédons à la copie des données. sinon, nous créons à nouveau l'indicateur et quittons cette fonction, car le calcul de l'indicateur prend du temps. il en va de même pour la copie, pendant la copie, l'indicateur peut être recalculé, donc CopyBuffer() renvoie -1, dès que les données sont prêtes, la fonction fait son travail, c'est pourquoi il est nécessaire de tout vérifier.
 

En général, la question devrait être formulée de manière plus large :

Quels contrôles, conditions ou délais devraient être introduits AVANT et APRES CopyBuffer(), afin d'obtenir GARANTIEMENT ces valeurs d'indicateur 400(0), dont j'ai besoin maintenant ( !), sur sept (dix) instruments dans des conditions de vitesse maximale (dans une boucle) ?

Car, return(0) = "ah, bon, ça n'a pas marché maintenant, peut-être que la prochaine fois ça marchera...".

Ici, d'ailleurs, le reste de Copy est à côté...

PS. Peut-être est-ce déjà hors sujet. La question ne s'adresse pas à l'auteur, mais à tous ceux qui peuvent apporter des éclaircissements...

 
sergey1294:
Dans mes exemples, la condition est la suivante : si le handle est valide, on procède à la copie des données. sinon, on crée à nouveau l'indicateur et on quitte cette fonction, car le calcul de l' indicateur prend du temps. il en va de même pour la copie, pendant la copie l'indicateur peut être recalculé, donc CopyBuffer() renvoie -1, dès que les données sont prêtes la fonction fera son travail, c'est pourquoi il est nécessaire de tout vérifier.

Oui, Sergey, je comprends. Je ne voulais pas jeter l'opprobre sur l'article ou l'auteur. L'article est excellent. Il ne s'agit pas d'une plainte, mais d'une tentative de réponse. C'est simplement la discussion la plus proche que j'ai trouvée sur le sujet. Vous aimeriez sans doute vous aussi connaître la réponse de manière plus précise, n'est-ce pas ? )

Peut-être devrions-nous le mettre dans un autre fil de discussion ?

 
pronych:

Peut-être le mettre dans un fil séparé ?

https://www.mql5.com/ru/forum/1880.

Ici, mettez-le dans le sujet. Sergey, je m'excuse d'avoir dépassé le cadre de l'article. J'en serai ravi...)))

ДО и ПОСЛЕ CopyBuffer(..)
ДО и ПОСЛЕ CopyBuffer(..)
  • www.mql5.com
Какие проверки, условия, или задержки надо внести ДО и ПОСЛЕ CopyBuffer(), для того, чтоб, ГАРАНТИРОВАННО получить те 400(0) значений индикатора, которые необходимы сейчас(!
 
Nous apprécions beaucoup cet article. Jusqu'à présent, nous avons créé 10 conseillers experts avec notre logiciel Visual Wizard en utilisant ces signaux. Vous pouvez les voir ici : http://www.molanis.com/products/expert-advisor-visual-wizard/expert-advisors-mt5
Expert Advisors for MT5 - Examples
  • Molanis Marketing
  • www.molanis.com
Please note that these Expert Advisors were created for educational purposes and do not constitute any financial advice. Before using the following EAs, please take into account the following: THE DOWNLOAD FILES ARE IN MOL5 FORMAT (MOLANIS 5 FORMAT - A .MOL5 FILE FOR THE EA VISUAL WIZARD). TO OBTAIN THE EA FOR MT5, DOWNLOAD THE STRATEGY...
 
J'ai essayé de télécharger quelques EA mais sans succès.
 

J'aimerais que quelqu'un me donne 20 méthodes de gestion de l'argent! !!!!!

 

Pour cet article, l'idée est très bonne. Mais vous avez oublié le concept de la POO et de la programmation en général : L'ABSTRACTNESS. A l'intérieur de vos fonctions sont codés en dur les indicateurs, le symbole actuel, la période actuelle, les paramètres de l'indicateur. L'idée est bonne, mais elle n'est pas entièrement mise en œuvre, elle est loin de la perfection. Par exemple, je veux vérifier le croisement des lignes de l'indicateur, chacune d'entre elles provenant d'une période différente et de symboles différents - c'est une première chose. Deuxièmement, qu'arrive-t-il à vos fonctions si le terminal perd temporairement la connexion avec le serveur et manque les trois barres que vous êtes en train de traiter ? Il y a un signal, mais l'entrée est manquée. La recherche d'un signal doit être effectuée avec une CHARGE. Il faut ensuite vérifier si le signal a déjà été traité. Vous pouvez avoir tellement d'intersections que vous serez vous-même surpris. Il suffit de passer des paramètres (numéro de l'indicateur, symbole, période, début de la recherche, fin de la recherche, ligne de l'indicateur...) aux fonctions. - Vous rendrez votre système plus flexible et l'Expert Advisor sera capable de voir ce qui est inaccessible aux humains - l'intersection des lignes de différents symboles et de différentes périodes. C'est beaucoup mieux que les fonctions données ici. Vous devez également travailler sur le concept de dénomination des variables - vous avez trop de variables avec des noms qui ne veulent rien dire - mais c'est un autre sujet. C'est ce qu'on appelle le style de programmation. Chacun a son propre style. Mais je vois que vous vous rapprochez lentement des concepts que j'ai essayé d'utiliser dans MT4 - c'est très encourageant.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
1CMaster:

Pour cet article, l'idée est très bonne. Mais vous avez oublié le concept de la POO et de la programmation en général : L'ABSTRACTNESS. A l'intérieur de vos fonctions sont codés en dur les indicateurs, le symbole actuel, la période actuelle, les paramètres de l'indicateur. L'idée est bonne, mais elle n'est pas entièrement mise en œuvre, elle est loin de la perfection. Par exemple, je veux vérifier le croisement des lignes de l'indicateur, chacune d'entre elles provenant d'une période différente et de symboles différents - c'est une première chose. Deuxièmement, qu'arrive-t-il à vos fonctions si le terminal perd temporairement la connexion avec le serveur et manque les trois barres que vous êtes en train de traiter ? Il y a un signal, mais l'entrée est manquée. La recherche d'un signal doit être effectuée avec une CHARGE. Il faut ensuite vérifier si le signal a déjà été traité. Vous pouvez avoir tellement d'intersections que vous serez vous-même surpris. Il suffit de passer des paramètres (numéro de l'indicateur, symbole, période, début de la recherche, fin de la recherche, ligne de l'indicateur...) aux fonctions. - Vous rendrez votre système plus flexible et l'Expert Advisor sera capable de voir ce qui est inaccessible aux humains - l'intersection des lignes de différents symboles et de différentes périodes. C'est beaucoup mieux que les fonctions données ici. Vous devez également travailler sur le concept de dénomination des variables - vous avez trop de variables avec des noms qui ne veulent rien dire - mais c'est un autre sujet. C'est ce qu'on appelle le style de programmation. Chacun a son propre style. Mais je vois qu'ils se rapprochent lentement des concepts que j'ai essayé d'utiliser dans MT4 - c'est très encourageant.

L'article a été écrit en fonction de la tâche technique, si vous voulez vérifier l'intersection, qui vous empêche de le faire.