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

 
-Aleks-:

Des erreurs se produisent - quel est le problème ? Dans MQL4, cela fonctionne...


'{' - trop d'initialisateurs TZ_Sky_and_Ground_V_04.mq5 2484 6

Je devrais mettre arrFibo[18] - ils disent 18 éléments.
 
Vladimir Karputov:

Avez-vous vu l'aide d'iMA?

Première étape : déclarer une variable dans l'"en-tête" pour stocker la poignée de l'indicateur iMA :

Deuxième étape : créer le handle de l'indicateur dans OnInit().

Et le résultat (le réticule sur la capture d'écran est placé sur la barre n°1) :

Question : si je boucle sur l'indicateur, dois-je également définir le double MA[1] ; ou dois-je demander/recevoir un tableau plus grand ? Je ne comprends pas la raison de toute cette complexité - quel est l'avantage par rapport à MQL4.
 
-Aleks-:

Si j'essaie d'utiliser le double MA[1] dans la boucle, dois-je utiliser le double MA[1] ; ou est-il préférable de demander/recevoir une taille de tableau plus grande ? Je ne comprends pas pourquoi toutes ces complications sont nécessaires - quel est l'avantage par rapport à MQL4.


Mon exemple avec la fonction iMAGetest un exemple conçu pour recevoir une valeur à la fois d'un indicateur. Si vous voulez obtenir plus de valeurs de l'indicateur, vous devez utiliserCopyBuffer avec les paramètres "from" et "to" et enregistrer le résultat dans un tableau.


Ajouté : il y aura un exemple plus tard ...


Exemple promis.

Paramètres d'entrée :

  • obtenir des valeurs dans un tableau - si "true", alors nous utilisons get values into an array, si "false", alors nous obtenons une valeur à la fois
  • count -> seulement si "get values into an array"==true - le nombre de barres copiées dans le tableau.
  • position de départ -> seulement si "get values into an array"==true - numéro de l'élément initial (barre) à copier dans le tableau à partir de

Travailler avec le tableau et l'indicateur de moyenne mobile dans l'Expert Advisor :

Travailler avec le tableau et l'indicateur Moving Avegarege dans l'EA

Veuillez prêter attention au tableau arr_ma et aux valeurs des éléments avec l'index #0 et l'index #8.

ds

Dossiers :
iMAGet.mq5  12 kb
 
Vladimir Karputov:


Mon exemple avec la fonction iMAGetest un exemple conçu pour recevoir une valeur à la fois de l'indicateur. Si vous voulez obtenir plusieurs valeurs de l'indicateur, vous devez utiliserCopyBuffer avec les paramètres "from" et "to" et enregistrer le résultat dans un tableau.

Ajouté : il y aura un exemple plus tard ...

Exemple promis.

Paramètres d'entrée :

  • obtenir des valeurs dans un tableau - si "true", alors nous utilisons get values into an array, si "false", alors nous obtenons une valeur à la fois
  • count -> seulement si "get values into an array"==true - le nombre de barres copiées dans le tableau.
  • position de départ -> seulement si "get values into an array"==true - numéro de l'élément initial (barre) à copier dans le tableau à partir de

Travailler avec le tableau et l'indicateur de moyenne mobile dans l'Expert Advisor :

Veuillez prêter attention au tableau arr_ma et aux valeurs des éléments avec l'index #0 et l'index #8.

ds

Merci pour l'exemple !

Il est très important pour moi de comprendre s'il y a un avantage à demander une seule valeur d'indicateur et à copier une douzaine de valeurs d'indicateur - peut-être y a-t-il eu des recherches à ce sujet ?

Le fait que la série chronologique soit inversée - ce n'est pas bon - je suis habitué à la numérotation standard des barres 0123, mais ici c'est dans l'ordre inverse - 1230.

Si je ne sais pas de combien de barres j'ai besoin pendant la recherche (par exemple, lorsque nous recherchons la MA et le point de passage des barres), je dois alors demander le nombre maximal possible ? Cela affecte-t-il les performances de quelque manière que ce soit ?

 
-Aleks-:

Merci pour l'exemple !

Il est très important pour moi de comprendre s'il y a un avantage à demander une seule valeur d'indicateur et à copier une douzaine de valeurs d'indicateur - peut-être y a-t-il eu des recherches à ce sujet ?

...


Qui nous empêche de faire les recherches nous-mêmes :) ?

...

Le fait que la série chronologique soit inversée - ce n'est pas bon - je suis habitué à la numérotation standard des barres 0123, et ici nous avons 1230 dans l'ordre inverse.

...

La seule chose que vous devez faire après avoir obtenu un tableau (après avoir appelé iMAGetArray) est d'exécuterArraySetAsSeries('notre tableau',true).
...

Si je ne sais pas de quel nombre de barres j'aurai besoin dans la recherche (par exemple, lors de la recherche d'une MA et d'un point de passage des barres), dois-je demander le nombre maximum possible ? Cela affecte-t-il les performances de quelque manière que ce soit ?


Dans ce cas, il est préférable de faire plusieurs requêtes. Par exemple, première requête - 50 éléments, si nécessaire - deuxième requête (50 éléments à nouveau) ...
 
Vladimir Karputov:

Qui nous empêche de faire nos propres recherches :) ?


Je suis gêné par mon analphabétisme en MQL5 - je peux induire tout le monde en erreur à cause d'une erreur dans le code, mais votre professionnalisme inspirerait plus de confiance dans de telles études !

Vladimir Karputov:


Il suffit d'exécuterArraySetAsSeries('notre tableau',true) après avoir obtenu le tableau (après avoir appelé iMAGetArray).

Je veux dire le faire dans une fonction à la fois ?


Vladimir Karputov:


Dans ce cas, il est préférable de faire plusieurs requêtes. Par exemple, la première demande - 50 éléments, et, si nécessaire, la deuxième demande (50 éléments à nouveau) ...
Brr... C'est-à-dire, mettre une boucle dans la boucle ? Et pourquoi 50 et pas 100 ? Des recherches sur ce thème sont tout de même nécessaires, peut-être qu'il n'y a pas de sens à recevoir l'information plus d'un bar...
 
Les commentaires non liés à ce sujet ont été déplacés vers "Questions des débutants de MQL4 MT4 MetaTrader 4".
 
-Aleks-:

...

C'est-à-dire le faire dans une fonction à la fois ?

...


C'est mieux de retourner le tableau :

Vladimir Karputov:

Après avoir reçu le tableau (après avoir appelé iMAGetArray), vous devrez exécuterArraySetAsSeries('notre tableau',true).

-Aleks:

...

Brr... C'est-à-dire, mettre une boucle dans la boucle ? Pourquoi 50 et pas 100 ? Il n'en reste pas moins que des études sur ce sujet sont nécessaires, peut-être qu'il est inutile de s'informer sur plus d'un bar...

Pas de boucles imbriquées - il n'y aura qu'une seule boucle autour de toutes les valeurs : tout le traitement est séquentiel - le résultat de la recherche dans une fonction séparée (dans celle-ci, nous demandons une certaine valeur - par exemple, 50 valeurs). Si nous ne trouvons pas le résultat, nous faisons une nouvelle demande.

 

Travailler avec des indicateurs dans MQL5 après MQL4 est terrible ! Ça me rend vraiment malade.

Je ne comprends pas pourquoi ils ne peuvent pas tout combiner dans une seule fonction, y compris la poignée, au lieu d'étaler l'appel de l'indicateur dans tout le code !

Et si les paramètres d' un indicateur sont modifiés par la fonction où se trouve l'indicateur, je ne comprends pas ce qu'il faut faire ! Dois-je initier toutes les variantes de l'indicateur ?


J'ai vu un exemple dans MQL4 - comment le faire dans MQL5 ?


int BarPeresek_iMAf(int PeriodMA)
  {
   int TFT=0;
   int shiftMAT=0;
   int typeMAT=0;
   int priceMAT=0;
   int BarPeresek=0;
   if(Bars(Symbol(),0)>PeriodMA)
     {
      for(int X=1;X<1000; X++)
        {
         double MAT=NormalizeDouble(iMA(Symbol(),TFT,PeriodMA,shiftMAT,typeMAT,priceMAT,X),Digits());
         if((Low(X)>MAT && High(X)>MAT) || 
            (Low(X)<MAT && High(X)<MAT))BarPeresek++;
         else {BarPeresek++; break;}
        }

     }
   return BarPeresek;
  }
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для...
 

Pouvez-vous me dire comment supprimer les marqueurs après la fermeture d'une position afin qu'ils ne soient pas affichés ?

Est-il possible de les supprimer de manière programmatique ?

Merci !