Nouveau terminal client MetaTrader 4 build 402

 

MetaTrader 4 Client Terminal build 402

  1. Terminal : Correction de la correction du fuseau horaire lors du téléchargement de l'historique vers le Centre d'historique (touche F2).
  2. Terminal : Affichage fixe des graphiques sur l'échelle 1-1 pour les caractères à 5 chiffres.
  3. Correction des messages sur le forum et les kreshlogs.
Lamise à jour en direct sera disponible via le système LiveUpdate.
 

Deuxième problème.

voici la fonction :

void MonitorTick()
{   
   string s;
   
   datetime dt=TimeCurrent();
   int y1=TimeYear(dt);
   int m1=TimeMonth(dt);
   int d1=TimeDay(dt);
   string fn=y1+"_"+m1+"_"+d1+"_Monitor_Tick_"+Symbol()+".mon";
         
   {
      handleM=FileOpen(fn,FILE_BIN|FILE_WRITE|FILE_READ);
      if (handleM<0) 
      {
         handleM=FileOpen(fn,FILE_BIN|FILE_WRITE);
      }
      else
      {
         s="Time;;Shift "+Symbol()+"\n";
         FileWriteString(handleM,s,StringLen(s));
      }
   }

   s=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+";;";
   
   s=s+DoubleToStr((Bid-iOpen(NULL,PERIOD_D1,0))/Point,0)+"\n";
   
   {      
      FileSeek(handleM,0,SEEK_END);
      FileWriteString(handleM,s,StringLen(s));
   
      FileClose(handleM);
   }
      
}

En d'autres termes, à chaque tick, il écrit la différence entre le prix actuel et le prix d'ouverture du jour dans un fichier.

À un moment donné, il commence à écrire des déchets dans le fichier. Contenu ci-dessous :

2011.05.12 15:40:50;;2
2011.05.12 15:40:50;;1
2011.05.12 15:40:51;;0
2011.05.12 15:40:51;;1
2011.05.12 15:40:52;;2
2011.05.12 15:40:53;;2
2011.05.12 15:40:55;;3
2011.05.12 15:53:54;;15692
2011.05.12 15:53:54;;15688
2011.05.12 15:54:05;;15692
2011.05.12 15:54:28;;15696
2011.05.12 15:54:42;;15694
2011.05.12 15:54:56;;15698
2011.05.12 15:55:40;;15697
2011.05.12 15:56:40;;15698
2011.05.12 15:56:47;;15696
2011.05.12 15:57:17;;15696
2011.05.12 15:57:34;;15699 

Comment l'expliquer ????

Expert ne fait rien d'autre avec cette fonction, le code est de trois lignes. se tient sur 10 instruments, et périodiquement 5-7 d'entre eux sortent ceci. Seule la réinitialisation du terminal est utile. Au fait, les indicateurs (ceux qui sont multidevises) commencent aussi à montrer des absurdités.

 
dimonsky:

Deuxième problème.

Comment l'expliquer ????


Quand vous utilisez une construction comme.

Bid-iOpen(NULL,PERIOD_D1,0))

est de s'assurer qu'il y a une barre sur l'historique des D1 et qu'elle correspond à ce qui est attendu.

C'est-à-dire que si vous utilisez le prix d'ouverture de la barre quotidienne actuelle, vous devez vous assurer que vous utilisez le prix d'ouverture de la barre de l'année en cours. Exactement la barre quotidienne actuelle.

P.S.

Je suppose que c'est la même chose dans vos codes multidevises.

 

Il ne suffit donc pas de voir les données sur l'écran ?

J'ai plusieurs mois d'historique à l'écran. Je vous demande également d'expliquer comment un tick d'il y a une seconde diffère du tick actuel, lorsque l'historique a "soudainement" disparu, ainsi qu'immédiatement après un reboot, lorsqu'il apparaît "soudainement" à la seconde où le terminal est allumé et que les ticks s'écrivent plus loin sans aucun accroc.

Il en va de même pour les instruments multidevises. Même à la barre zéro, lorsqu'il y a un historique pour toutes les paires - elles sont spécialement ouvertes dans d'autres fenêtres pour avoir un historique à 100%.

 
PapaYozh:


Par exemple, si vous utilisez le prix d'ouverture de la barre du jour, vous devez vous assurer que vous utilisez le prix d'ouverture. exactement la barre quotidienne actuelle.

situation étrange. le graphique est ouvert, ce qui montre naturellement le jour en cours. il y a une seconde le prix d'ouverture était là, et a disparu ? et avec le réseau déconnecté, sans accès internet , un redémarrage permet soudainement au terminal de retrouver l'historique ?

et quel jour doit-il être pour que la différence soit de 15000 pips.... ?

 
dimonsky:
situation étrange. il y a un graphique ouvert, qui montre naturellement le jour actuel. il y a une seconde, il y avait un prix d'ouverture, puis il a disparu ?


Je ne suis pas un développeur de terminaux et je ne peux que deviner le lien entre les barres des fenêtres ouvertes et l'historique disponible.

Je vous ai écrit comment programmer correctement pour éviter les ambiguïtés.

 
PapaYozh:


Je ne suis pas un développeur de terminaux et je ne peux que deviner le lien entre les barres des fenêtres ouvertes et l'historique disponible par programme.

Je vous ai écrit comment programmer correctement pour éviter les ambiguïtés.


Quelle ambiguïté peut-il y avoir lors de l'accès au cours d'ouverture de la journée en cours ? Quels autres contrôles dois-je effectuer ?

Pour la paire GBPCAD, 15000 pips signifie que tout l'historique a disparu depuis des jours, y compris aujourd'hui.

 
pour GBPCAD 15000 pips signifie que le prix Bid = 0 parce que vous n'avez pas rafraîchi les cotations avec RefreachRates(), ou n'avez pas utilisé MarketInfo(Symbol(),MODE_BID)
 
xrust:
pour GBPCAD 15000 pips signifie que le prix Bid = 0 parce que vous n'avez pas rafraîchi les cotations avec RefreachRates(), ou vous n'avez pas utilisé MarketInfo(Symbol(),MODE_BID)


Non, car dans ce cas, la valeur obtenue serait négative (voir la formule).

le problème est exactement que le Bid était là, mais il n'y avait pas d'historique. et je suis en train de trouver la raison pour laquelle il n'est pas disponible pour le code du programme, même s'il y avait une seconde avant que l'historique soit là.

 

- Et à ce jour, (13-05-2011), je n'ai pas eu de mise à jour. Est-ce mon DC qui ignore la nouvelle construction ?

En tout cas, il n'y a pas eu d'avertissement de mise à jour ni de redémarrage régulier.

 
brici:

- Et à ce jour, (13-05-2011), je n'ai pas eu de mise à jour. Est-ce que mon DC ignore la nouvelle construction ?

En tout cas, il n'y a pas eu d'avertissement de mise à jour ni de redémarrage régulier.

La mise à jour devrait être effectuée demain. Il s'agit d'une annonce préliminaire.
Raison: