Erreurs, bugs, questions - page 3034

 
Aleksey Vyazmikin:

Ai-je raison de comprendre que si un EA travaillant sur M1 utilise un indicateur sur M1 (ou tout autre TF ?), qui prend des données du TF supérieur, alors au premier tick d'une nouvelle barre il ne pourra pas retourner la valeur réelle dans tous les cas, parce qu'il faudra n ticks avant que le TF supérieur soit calculé ?


En fait, OnTick n'est pas synchronisé avec OnCalculate par le même symbole. Théoriquement, OnTick peut être en retard et à son début tous les indices de tous les TFs seront calculés ?

 
Slava:

Dans l'autre période, on prendra les données qui sont actuellement prêtes. C'est-à-dire que dans la sortie, toutes les données seront parfaitement synchronisées.

Pourquoi alors l'indicateur ne peut-il pas les recevoir à la première demande ?

Comment puis-je faire un indicateur normal multi-TF (et idéalement - multi-caractères) sans utiliser un timer ?

 
Andrey Khatimlianskii:

Pourquoi alors l'indicateur ne peut-il pas les récupérer à la première demande ?

Comment faire un indicateur normal multi-TF (et idéalement multi-caractères) sans utiliser de minuterie ?

+

Je crains que les retards dans la réception des signaux par l'EA soient inévitables avec l'architecture actuelle, malheureusement.

 
Bonjour

Une erreur apparaît pendant l'optimisation de l'utilisation de Mql Cloud :

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 tested with error "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1)" in 0:00:00.001 (PR 274)


Veuillez me dire quel est le problème ?

En optimisant sans Mql Cloud, tout fonctionne. Le problème a commencé le 29 mai. Avant cela, tout allait bien.

 
Marat Bayburin:
Bonjour

Une erreur apparaît pendant l'optimisation de Mql Cloud :

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 tested with error "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1)" in 0:00:00.001 (PR 274)


Veuillez me dire quel est le problème ?

En optimisant sans Mql Cloud, tout fonctionne. Le problème a commencé le 29.05. Avant cela, tout allait bien.

Je pense que le problème vient du compilateur. Je reçois les mêmes erreurs.
C'est-à-dire que nous avons compilé avec la nouvelle version et que les agents sont toujours sur l'ancienne version, ..... Comme ça.
 
Marat Baiburin:
Il suffit donc d'attendre que les agents se mettent à jour ?

Si ces erreurs sont dues à des versions différentes des agents et de votre PC de bureau, alors oui, attendez. Mes agents par exemple sont toujours à 2949, pas mis à jour à 2950.

 
Andrey Khatimlianskii:

Pourquoi alors l'indicateur ne peut-il pas les récupérer à la première demande ?

Comment faire un indicateur normal multi-TF (et idéalement multi-caractères) sans utiliser un timer ?

A la première demande, l'indicateur peut ne pas recevoir les données de son symbole, mais pour une autre période de temps pour une seule raison - la série temporelle désirée n'a pas été construite ou a déjà été détruite après un certain temps, quand il n'y avait pas de demandes.

Après une demande infructueuse, il suffit d'envoyer une commande à votre graphique pour le mettre à jour et de mettre immédiatement fin à OnCalculate. Il est garanti que OnCalculate sera appelé et que la série chronologique sera prête à ce moment-là.

Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
  • www.mql5.com
ChartSetSymbolPeriod - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava:

A la première demande, l'indicateur peut ne pas recevoir les données de son symbole mais d'une autre période pour une seule raison : la série temporelle requise n'a pas encore été construite ou a déjà été détruite après un certain temps, lorsqu'il n'y avait pas de demandes.

Après une demande infructueuse, il suffit d'envoyer une commande à votre graphique pour le mettre à jour et de mettre fin immédiatement à OnCalculate.
Il est garanti que OnCalculate sera appelé et que les séries chronologiques nécessaires seront préparées à ce moment-là.


Lors du premier appel de l'indicateur, le calcul est effectué en boucle sur toutes les données.

//Расчёт количества просчитываемых баров
int limit = rates_total-prev_calculated;
   
//Если первый запуск
if(limit > 1)
{
   //какая нибудь инициализация
   
}

//================================================================
for(int i=limit; i>=0 && !IsStopped(); i--)
{
   ...  

Si, dans cette boucle, une demande échoue, que doit-on renvoyer en retour ?
Limite+1 sur laquelle elle a échoué ?
Ou quoi ? Je ne comprends pas ce point.

 
Roman:


Dites-moi, la première fois que l'indicateur est appelé, par exemple, le calcul est exécuté en boucle sur toutes les données.

Et si une demande échoue dans cette boucle, que doit-on renvoyer en retour ?
Limite+1 sur laquelle elle a échoué ?
Ou quoi ? Je ne comprends pas ce point.

Vous ne pouvez pas le vérifier vous-même ?

 
Ivan Titov:

Une erreur est apparue sur les pages d'offres d'emploi des freelances aujourd'hui :

Navigateur Chrome. Qu'est-ce que ça a à voir avec ça ?

Merci pour votre message. Corrigé

Raison: