Erreurs, bugs, questions - page 2240

 
Vladislav Andruschenko:

Je le dirais comme ça :

Lors de la lecture d'un fichier, cette erreur peut se produire 1 fois sur 100 lectures (en lisant un fichier, par exemple, 10 fois par seconde).

Cette erreur se produit, puis disparaît et le conseiller expert continue de fonctionner.

À cet égard, il existe une proposition simple et honnête pour les développeurs : prenez un ordinateur dans cette configuration(*), qui est spécifiée comme la configuration minimale requise pour MetaTrader, et utilisez-le pour les tests (y compris ServiceDesk)

(*) Par rapport à cette configuration ma tablette est un météore et il n'y a rien de chargé à part MetaTrader

 
A100:

À cet égard, il y a une proposition simple et honnête pour les développeurs : prenez un ordinateur dans cette configuration (*), qui est spécifié comme les exigences minimales pour MetaTrader et effectuer des tests sur elle (y compris dans ServiceDesk)

(*) ma tablette est un météore comparé à cette configuration


peut être qu'il arrive aux freins (même le mien qui n'est pas faible est déjà chargé à 90%) et ensuite cette erreur se produit ? comme vous l'avez montré dans l'explication ci-dessus ?

Merci pour la référence, je vais essayer de me renseigner.

 
A100:

Ainsi, pour la demande #1530548 , le ServiceDesk ne peut pas reproduire l'erreur https://www.mql5.com/ru/forum/1111/page1628#comment_2702870 alors que j'ai une lecture régulière même maintenant (dans la version 1881). Avec un peu de réflexion, j'ai compris pourquoi ! La réponse est : parce que j'ai un ordinateur lent (tablette).

Une situation similaire s'est produite dans l'application #1952509 sur ce problème https://www.mql5.com/ru/forum/1111/page2124#comment_6518537.

ServiceDesk a également signalé dans un premier temps qu'il ne pouvait pas reproduire l'erreur. Il m'a fallu beaucoup d'efforts pour me convaincre qu'il y avait une erreur après tout... à la fin :

Équipe de soutien 2018.02.10 22:35
Il semble avoir reproduit votre problème vendredi dernier sur une machine faible avec 39 cartes.
Nous garderons un œil dessus. Demandera des données supplémentaires si nécessaire. Merci.

Cela soulève la question suivante : est-il vraiment nécessaire de s'occuper de ces erreurs? Ou bien laissez-les vivre leur vie en paix... peut-être ne réapparaîtront-ils plus - il suffit d'avoir un ordinateur rapide, non ?

Ces questions se posent dans le contexte où une douzaine d'autres graphiques avec plusieurs EAs/indicateurs peuvent transformer un ordinateur rapide en un ordinateur lent (et un trader moyen utilise exactement beaucoup d'EAs - par exemple https://www.mql5.com/ru/forum/267154/page5#comment_8164924 - 82 EAs sont en cours d'exécution)... Ou encore, un ordinateur lent peut le devenir pendant une courte période en raison d'autres circonstances (antivirus... d'autres programmes... ou le système lui-même a temporairement pris le contrôle de presque toutes les ressources).

Et c'est alors que se produira cet échec inexpliqué d'une fois sur cent (et selon les lois de la nature, il se produit naturellement au moment le plus inopportun).

Quel est le problème de transférer la stratégie de travail en dehors de MT5 en laissant MT5 comme connecteur ? Je pense que passer du temps sur de telles danses est ok, si la stratégie est valable, et non habituelle ;))

 
Konstantin:

Quel est le problème de déplacer la stratégie de travail hors de MT5 en laissant MT5 comme connecteur ? Je pense qu'il est normal de passer du temps sur ce genre de danse si la stratégie est valable et pas comme d'habitude ;))

Le problème est l'organisation d'un véritable retour d'expérience ... et même les connecteurs doivent parfois ouvrir les fichiers eux-mêmes.
 

Quelqu'un peut-il expliquer pourquoi dans MQL5 la série temporelle time[] ne correspond pas à l'heure du serveur ?

voici l'indicateur qui calcule le décalage des prix de clôture par rapport au début de la journée :

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- indicator buffers
double         DB[];

static int lastdayclose=-1;
static double F0=1.0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,DB,INDICATOR_DATA);
   lastdayclose=-1;
   F0=1;
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,limit;
   MqlDateTime tmpdate;
   if(prev_calculated==0)
     {
      limit=rates_total-1;
      lastdayclose=-1;
      F0=1;
     }
   else limit=rates_total-prev_calculated;
   ArraySetAsSeries(time,true);
   ArraySetAsSeries(close,true);
   for(i=limit;i>=0;i--)
     {
      TimeToStruct(time[i],tmpdate);
      if(tmpdate.day!=lastdayclose)
        {
         F0=close[i];
         lastdayclose=tmpdate.day;
        }
      DB[i]=F0-close[i];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+

l'indicateur est dessiné :

https://www.mql5.com/ru/charts/8940511/eurusd-m5-alpari-international-limited

vous pouvez voir que l'heure du début de la journée est décalée vers la gauche de 2 heures.

 
Igor Makanu:

vous pouvez voir que le début de la journée est décalé vers la gauche de 2 heures.

Vous voyez où ?

 
Alexey Viktorov:

Voir où ?

voyez-vous les lignes de séparation des points ? - c'est le début de la journée, cela correspond à l'heure du serveur 0:00

la logique de l'indicateur est-elle claire ? - les éclaboussures verticales de la ligne rouge correspondent au prix de clôture de la première barre en début de journée, on le mémorise et on trace ensuite l'incrément des prix de clôture par rapport au prix de clôture de la première barre à l'ouverture de la journée - ce "pic rouge" doit se trouver sur la ligne de séparation des périodes, c'est-à-dire en début de journée

 
A100:
Le problème est d'organiser un véritable retour d'information... et même les connecteurs doivent parfois ouvrir les fichiers eux-mêmes.

Pourquoi les connecteurs doivent-ils ouvrir les fichiers eux-mêmes, si toute la logique est à l'extérieur, appelez la fonctionnalité requise de OnInit dans un programme externe pour initialiser

 
Igor Makanu:

voyez-vous les lignes de séparation des points ? - c'est le début de la journée, cela correspond à l'heure du serveur 0:00

la logique de l'indicateur est-elle claire ? - les éclaboussures verticales de la ligne rouge correspondent au prix de clôture de la première barre en début de journée, on le mémorise et on trace ensuite les incréments des prix de clôture par rapport au prix de clôture de la première barre à l'ouverture de la journée - ce "pic rouge" doit se trouver sur la ligne de séparation, c'est-à-dire en début de journée

Pensez-vous que nous pouvons dire quelque chose sur cette base ? Oui...

 
Alexey Viktorov:

Pensez-vous pouvoir dire quoi que ce soit sur cette base ? Ouais, eh bien...

Oui, si la question vous intéresse, mais que la logique de mon indicateur n'est pas claire, j'ai exposé le code, vous pouvez ajouter un unwind...

Mais le problème est évident, time[] dans les séries temporelles ne correspond pas au temps du serveur, des informations comme : "Pour obtenir l'heure du serveur sur un graphique de prix, n'oubliez pas de prendre en compte le décalage GMT..." Je ne le vois pas dans l'aide, donc je demande

si quelqu'un peut expliquer pourquoi dans MQL5 la série temporelle time[] ne correspond pas à l'heure du serveur ?