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

 

Bonjour à tous !

Donnez un conseil, une solution ou un coup de pouce pour savoir où lire.

Résolution d'un problème : gestion des erreurs lorsque iCustom() est appelé...

// MQL4
void OnTick()
{
....
   ResetLastError();
   double val=iCustom(NULL,0,INDUK_NAME,..., i);
   if ((nErr=GetLastError())>0)
   {
      Print("Error in ",__FUNCTION__," code=",nErr);
      ExpertRemove();
      return;
   }
...
}

Cette construction de code ne fonctionne pas pour l'achèvement de l'EA, si "iCustom" s'est planté avec le message "array out of range" lors du débogage de l'EA dans le testeur.

 
Un dépassement de tableau est une erreur critique, après laquelle l'exécution du programme s'arrête et aucun autre code n'est exécuté. C'est pourquoi votre gestionnaire d'erreur ne fonctionne pas. Et vous n'avez pas besoin de code d'erreur dans ce cas - il est écrit noir sur blanc dans le journal ce qui a causé le crash. Et même précisé la ligne et la position où ça s'est passé.
 
Sergei Vladimirov:
Le dépassement de tableau est une erreur critique, après laquellele programme s'arrête et aucun autre code n'est exécuté. C'est pourquoi votre gestionnaire d'erreur ne fonctionne pas. Et vous n'avez pas besoin du code d'erreur dans ce cas, il est écrit noir sur blanc dans le journal ce qui a causé le crash. Et même précisé la ligne et la position où ça s'est passé.

1. Je sais que l'erreur est dans le journal de bord et qu'elle est critique.

2. Je ne comprends pas pourquoi le testeur n'arrête pas l'EA et doit forcer un arrêt ?

Existe-t-il des constructions de langage pour le traitement des exceptions afin d'organiser le conseiller expert et son interaction avec l'utilisateur de manière pratique en cas d'erreurs critiques ?

 
fromme2you:

1. Je sais que l'erreur est dans le journal de bord et qu'elle est critique.

2. Je ne comprends pas pourquoi le testeur n'arrête pas l'EA et doit forcer un arrêt ?

3) Existe-t-il des constructions de langage pour le traitement des exceptions afin d'organiser de manière pratique le conseiller expert et son interaction avec l'utilisateur en cas d'erreurs critiques ?

Le testeur s'arrête si une erreur critique (par exemple, une division par 0, ou un dépassement de tableau) s'est produite dans le code du conseiller expert.

Éviter d'arrêter le code dans le testeur ou dans le code réel, je pense, est possible seulement si nous introduisons les contrôles appropriés dans le code. Ce qui n'est pas toujours faisable. Cela est particulièrement vrai si vous utilisez le code de quelqu'un d'autre ou si vous collez le code de quelqu'un d'autre comme sous-programme dans votre produit.

Un autre moyen délicat consiste à lire les fichiers journaux de manière programmatique.

 
Yuri Evseenkov:

Le testeur s'arrête si une erreur critique (par exemple, division par 0 ou dépassement d'un tableau) se produit dans le code du conseiller lui-même.....

Un autre moyen délicat consiste à lire les journaux de manière programmatique.

Je vois, merci pour la réponse.

Une autre question : comment faire pour que le développeur MT4 et le runtime du code MQL réfléchissent et fassent des efforts pour développer un langage permettant de gérer les exceptions comme dans mon exemple, ou un exemple similaire ?

 
fromme2you:

Je vois, merci pour la réponse.

Une autre question : comment faire pour que les développeurs de l'environnement d'exécution de code MT4 et MQL mettent leur esprit et leurs mains dans le développement d'un langage pour le traitement des exceptions, comme dans mon exemple ou dans un sens similaire ?

Contactez servesdesk, créez un fil de discussion/sondage sur le forum.

Il n'y a pas si longtemps, MT4 était enterré. Aujourd'hui, si la tendance n'est pas inversée, du moins la plate-forme et la langue ont-elles été considérablement améliorées récemment.

 
Yuri Evseenkov:

Contactez servesdesk, créez un sujet de forum/sondage.

Il n'y a pas si longtemps, on enterrait MT4. Aujourd'hui, si la tendance n'est pas inversée, du moins la plate-forme et la langue ont été considérablement améliorées récemment.

il a été enterré pour la première fois en 2009

 

Bonjour. Si vous connaissez bien le sujet, veuillez m'indiquer comment résoudre ce problème. Je veux trouver les prix ouverts des barres à une certaine heure, par exemple à 01:00, en analysant par exemple 50 dernières barres. Je ne suis pas sûr de la façon de procéder pour cette tâche dans mql5.


Que ce soit en calculant la date actuelle + en y ajoutant le temps nécessaire puis en ajoutant vingt-quatre heures, cette méthode a fonctionné sur mql4.

D'après ce que j'ai compris, il existe des structures spéciales avec sortie de temps, mais je ne peux pas les utiliser pour une raison quelconque.

Merci d'avance pour vos commentaires.

Je serais très reconnaissant si quelqu'un pouvait me lancer un petit morceau de code pour comprendre le processus de réflexion.
 
Alex:

Bonjour. Si vous connaissez bien le sujet, veuillez m'indiquer comment résoudre ce problème. Je veux trouver les prix ouverts des barres à une certaine heure, par exemple à 01:00, en analysant par exemple 50 dernières barres. Je ne suis pas sûr de la façon de procéder pour cette tâche dans mql5.


Que ce soit en calculant la date actuelle + en y ajoutant le temps nécessaire puis en ajoutant vingt-quatre heures, cette méthode a fonctionné sur mql4.

D'après ce que j'ai compris, il existe des structures spéciales avec sortie de temps, mais je ne peux pas les utiliser pour une raison quelconque.

Merci d'avance pour la réponse.

Je serais très reconnaissant si quelqu'un pouvait me lancer un peu de code pour comprendre le processus de réflexion.
Dans un indicateur ou dans un Expert Advisor / script ?
 
Bonjour, Question : si j'utilise ordersendasync dans mt5 pour un ordre en attente, comment cela va-t-il fonctionner ? Par exemple, enverra-t-il un ordre d'achat sans attendre de réponse, mais lorsque l'ordre se déclenchera, attendra-t-il que le serveur réponde à l'ordre d'achat ?
Raison: