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

 
sss20192:

L'indicateur présente des données différentes dans la fenêtre de données. J'ai attaché l'EA au graphique H1 et il copie les données des cadres temporels M5 M15 et H1.


int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );
Les tampons (vous avez des zéros) et les tableaux où nous copions sont tous les mêmes, vous commencez avec 1 élément, copiez 1 élément, peut-être que la direction du tableau a aussi de l'importance.

 
zfs:
Les tampons (vous avez des zéros) et les tableaux où vous copiez sont tous les mêmes, vous commencez avec 1 élément, copiez 1 élément, peut-être que la direction du tableau a aussi de l'importance.

Eh bien, oui, le premier indicateur tampon, sur trois tamframes différents. Et jusqu'à présent, j'utilise le même tableau pour l'enregistrement des données.

J'ai essayé de définir ArraySetAsSeries true et false. Malgré tout, des données étranges comme -4.53e-32 apparaissent parfois dans le journal.

 

Messieurs, pouvez-vous me dire comment mettre cela en œuvre ?

Il y a un tableau, une valeur y est écrite, et s'il contient une valeur similaire, il y a un bang.

 
sss20192 Parfois, des données étranges comme -4.53e-32 apparaissent quand même dans le journal.
Le bon côté des choses, c'est que nous devrions insérer des contrôles à la fois pour la réussite de la création des handles et pour la réussite de la fonction CopyBuffer(). Sinon, nous ne savons même pas encore si cette valeur poubelle est le résultat d'une exécution réussie de la fonction CopyBuffer() ou si la fonction n'a pas fonctionné correctement.
 
Top2n: Il y a un tableau, une valeur y est écrite, et s'il contient une valeur similaire, il y a un crash.
Les éléments du tableau doivent être recherchés pour trouver des correspondances avec la valeur requise. Si aucune correspondance n'est trouvée, la valeur est écrite dans le tableau.
 
Yedelkin:
Vous devez essayer de rechercher les éléments du tableau pour voir s'ils correspondent à la valeur requise. Si aucune correspondance n'est trouvée, écrire la valeur dans le tableau.
Et comment comparer deux index dans un tableau ?
 
Top2n:
Et comment comparer deux index dans un tableau ?

Vous lisez attentivement l'article ? >> Notions de base de la programmation MQL5 - Tableaux

Il contient tous les détails pour tous les cas qui traitent des tableaux. Cela devrait certainement vous suffire. ))

 
tol64:

Vous lisez attentivement l'article ? >> Notions de base de la programmation MQL5 - Tableaux

Il contient tous les détails pour tous les cas qui traitent des tableaux. Cela devrait certainement vous suffire. ))

Merci à tous pour votre aide) Je ne te dirai pas au revoir)))
 
Yedelkin:
Amicalement, nous devons insérer dans le code les vérifications de la réussite de la création des handles et de la réussite de la fonction CopyBuffer(). Sinon, nous ne savons même pas si cette valeur poubelle est le résultat d'une exécution réussie de la fonction CopyBuffer() ou si la fonction n'a pas fonctionné correctement.

Vérifié. Les poignées sont créées normalement, les index sont 10, 11, 12. Mais la fonction CopyBuffer génère une erreur ERR_INDICATOR_DATA_NOT_FOUND. Pourquoi cette erreur peut-elle se produire, les paires sélectionnées sont dans la fenêtre Market Watch, les graphiques de ces paires de devises sont ouverts.

De plus, je crée une variable, qui montre le résultat de l'exécution de CopyBuffer,

int aaa = CopyBuffer..., il affiche la valeur 1, comme si une valeur avait été copiée, comme défini dans la fonction.


Lors de la copie du tampon MA, la même erreur est affichée, mais la valeur est écrite correctement dans le tableau.

Veuillez nous montrer un exemple de copie de tampon correcte.

 
sss20192: Vérifié. Les poignées sont créées normalement et elles ont les indices 10, 11 et 12. Mais la fonction CopyBuffer génère l'erreur ERR_INDICATOR_DATA_NOT_FOUND. Pourquoi une telle erreur peut-elle se produire, les paires sélectionnées sont dans la fenêtre Market Watch, les graphiques de ces paires de devises sont ouverts.

De plus, je crée une variable qui montre le résultat de l'exécution de CopyBuffer,

int aaa = CopyBuffer..., il affiche la valeur 1, comme si une valeur avait été copiée, comme défini dans la fonction.

Lors de la copie du tampon MA, la même erreur est affichée, mais la valeur est écrite correctement dans le tableau.

S'il vous plaît, montrez-moi un exemple de la façon de copier le tampon correctement.

Oui, l'exemple de la copie d'un tampon se trouve dans la description de la fonction CopyBuffer(). Veuillez prêter attention aux lignes

//--- check if all data calculated
    if(BarsCalculated(ma_handle)<rates_total) 

//--- try to copy
    if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0) return(0);
 
Raison: