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

 
Vitaly Muzichenko #:

Copie dans un tableau

Comment obtenir la hauteur maximale dans un tableau ?

En outre, copier CopyHigh et obtenir le maximum de ce tableau. Je comprends que par ...il... mais la seule autre solution est de recommencer dans la boucle.

 
Alexey Viktorov #:

En outre, copier CopyHigh et obtenir le maximum de ce tableau. Je comprends qu'à travers ...elle... mais l'autre option n'est que la mise en boucle.

Je l'ai fait, mais c'est une copie supplémentaire. L'utilisation d'une boucle n'est pas non plus une option.

Je vais laisser ça àCopyHigh.

 
Vitaly Muzichenko #:

Oui, mais c'est une copie supplémentaire. Passer par la boucle n'est pas non plus une option.

Je vais laisser ça àCopyHigh alors.

J'y ai pensé pendant longtemps. Et je suis arrivé à la conclusion que si nous avons besoin de rechercher le minimum/maximum du tableau MqlRates, il est préférable de copier les données requises dans différents tableaux doubles.

 
Vitaly Muzichenko #:

Copie dans un tableau

Comment obtenir la hauteur maximale d'un tableau ?

CopySymb[i].high
 
Vitaly Muzichenko #:

Copie dans un tableau

Comment obtenir la hauteur maximale dans le tableau ?

Vous pouvez l'écrire directement dans le code :

MqlRates CopySymb[];
double maxHigh;
int iMaxHi, len;  

if((len = CopyRates(mSymbol,PERIOD_CURRENT,0,6,CopySymb))<0) return;

iMaxHi = 0;
maxHigh = CopySymb[0].high;

for (int i = 1; i < len; i++)
  if(CopySymb[i].high > maxHigh) {
    maxHigh = CopySymb[i].high;
    iMaxHi = i;
  }

Print(iMaxHi, ": ", maxHigh);

Et ce n'est pas grave si ArrayMaximum ne fonctionne pas avec les tableaux MqlRates.

 
Mihail Matkovskij #:

Vous pourriez l'écrire directement dans le code :

mais si vous y réfléchissez...

même dans ce court code il y a des erreurs brutales

 
Maxim Kuznetsov #:

Et si vous y réfléchissez ?

même dans ce court code il y a des erreurs brutales

Rédaction du code en ligne. Je l'ai regardé et j'ai corrigé tous les bugs, je pense. Collez le code dans le script et le compilateur affichera les erreurs s'il y en a.

 
Mihail Matkovskij #:

Rédaction du code en ligne. Je l'ai regardé et j'ai corrigé toutes les erreurs, je pense. Insérez le code dans le script et le compilateur affichera les erreurs s'il y en a.

Il n'y a pas de remède avec le compilateur, vous devez juste savoir : il peut y avoir 0 et EMPTY_VALUE dans le résultat de CopyXXX. Très rarement mais bien. EMPTY_VALUE est DBL_MAX, c'est-à-dire la valeur maximale. C'est ce que vous trouverez.

il n'y a pas de contrôle de l'exactitude des valeurs reçues de l'extérieur.

 
Maxim Kuznetsov #:

Cela ne peut pas être corrigé par le compilateur, vous devez juste savoir que les résultats de CopyXXX peuvent avoir 0 et EMPTY_VALUE également. Rarement mais souvent. EMPTY_VALUE est DBL_MAX, c'est-à-dire la valeur maximale. C'est ce que vous trouverez.

Il n'y a pas de contrôle de l'exactitude des valeurs reçues de l'extérieur.

Pensez-vous que CopyRates retournera 0,EMPTY_VALUE ouDBL_MAX dans le tableau haut ? Vous êtes sérieux ? :)

Peut-être pouvez-vous me montrer un exemple où cela se produit ?

 
Mihail Matkovskij #:

Vous pensez que CopyRates retournera 0,EMPTY_VALUE ouDBL_MAX dans un tableau haut ? Vous êtes sérieux ? :)

Peut-être pouvez-vous me montrer un exemple où cela se produit ?

Et que fera ArrayMaximum quand il atteindra0,EMPTY_VALUE ouDBL_MAX dans le tableau double rempli avec CopyHigh ?

Où est la logique dans votre déclaration ?