Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 847

 

Je l'ai eu, je l'ai changé.

   uint n=0;

les erreurs ont disparu. Merci.

 
Sergey Voytsekhovsky:

Je l'ai eu, je l'ai changé.

les erreurs ont disparu. Merci.

Ce ne sont pas des erreurs, mais des avertissements.

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

Toutes les questions des débutants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes.

Artyom Trishkin, 2019.05.20 15:16

Quels sont les types de variables n et period_find ? La chose la plus importante et qui n'a pas été montrée...

Essayez-le :

for(n=0; n<(int)period_find; n++)

Et en général, pourquoi déclarer une variable de boucle au niveau du gestionnaire OnTick() ?

Vous pouvez le faire de cette façon :

for(int n=0; n<(int)period_find; n++)

Vous pouvez supprimer la déclaration n de OnTick() - nous n'en avons pas besoin ici.


 
Artyom Trishkin:

Ce ne sont pas des erreurs, ce sont des avertissements.


Super, je vais arranger ça.

Si vous ne voyez pas d'inconvénient à ce que je le dise, donnez-moi un indice sur la façon dont je peux obtenir les valeurs des prix sur lesquels les Flèches ont été créées. En supposant que j'ai déjà leurs index. ? ??

 

Maintenant, c'est maudire d'une manière différente :

n' - identificateur non déclaré Test_iCustom.mq5 82 48

Probablement parce que n est utilisé à l'extérieur de la boucle, comme un indice trouvé ? ??
 
         for(int n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)break;
            }
         Last_Arrow_Buy_volume = Buf_Arrow_Buy[n];
         Last_Arrow_Buy_index  = n;
 
Sergey Voytsekhovsky:

Super, je vais arranger ça.

Si vous me permettez de le dire, donnez-moi un indice sur la façon dont je peux obtenir les valeurs des prix sur lesquels les Flèches ont été créées. En supposant que j'ai déjà leurs index. ? ??

Soit iOpen(), soit CopyOpen(), soit CopyRates() si on obtient plusieurs prix à la fois.

A mon avis, dans l'indicateur, les flèches sont placées sur le graphique aux prix d'ouverture des barres.

Документация по MQL5: Доступ к таймсериям и индикаторам / iOpen
Документация по MQL5: Доступ к таймсериям и индикаторам / iOpen
  • www.mql5.com
Значение цены открытия бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError(). Функция всегда возвращает актуальные данные, для этого она при каждом вызове делает запрос к таймсерии по указанным символу/периоду. Это означает...
 
Artyom Trishkin:

Soit iOpen(), soit CopyOpen(), soit CopyRates() si vous obtenez plusieurs prix à la fois.

A mon avis, l'indicateur met des flèches sur le graphique aux prix d'ouverture des barres.

Oui, c'est écrit là :

SetArrow(prefix+"ChartArrowUP_"+TimeToString(time[i]),InpColorBullishArrow,time[i],open[i],(char)241,ANCHOR_TOP,InpArrowSize);

Je vais essayeriOpen().

Et à la place de n, j'ajoute une autre variable, ou cela peut être ainsi : ?

   int n=0;
   
   if (CopyBuffer(CrossAD, 1, 0, period_find, Buf_Arrow_Buy) != period_find)
      {  
         Print("НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d",GetLastError());
         return;
      }
         for(n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)break;
            }
         Last_Arrow_Buy_volume = Buf_Arrow_Buy[n];
         Last_Arrow_Buy_index  = n;
         Print("Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume,", Last_Arrow_Buy_index = ",Last_Arrow_Buy_index);
 
Sergey Voytsekhovsky:

La portée d'une variable de boucle est limitée au corps de la boucle. Attribuez les valeurs requises avant la pause :

//+------------------------------------------------------------------+
for(int i=0; i<(int)period_find; i++)
  {
   if(Buf_Arrow_Buy[i]!=EMPTY_VALUE)
     {
      Last_Arrow_Buy_volume = Buf_Arrow_Buy[i];
      Last_Arrow_Buy_index  = i;
      break;
     }
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

La portée d'une variable de boucle est limitée au corps de la boucle. Attribuez les valeurs requises avant la pause :

Je l'ai, ça marche dans les deux sens, pas d'avertissement.

S'il vous plaît, dites-moi comment le faire kasher, avec des calculs dans le corps de la boucle, avant lapause; ou il est préférable d'enlever les calculs de la boucle ?

 
Sergey Voytsekhovsky:

Je l'ai, ça marche dans les deux sens, pas d'avertissement.

S'il vous plaît, dites-moi ce qui est le plus kasher, avec les calculs dans le corps de la boucle, avant lapause; ou il est préférable de sortir les calculs de la boucle ? ??

Quels calculs ?

Raison: