Marché fermé - page 8

 
fxsaber:

Le script dans le commentaire du graphique montre ce bug

Existe-t-il une application pour ce problème dans le SD ? Vous en avez plus d'une centaine qui ne sont pas encore fermées ?
 

Vasiliy Pushkaryov:
В СД есть заявка по этой проблеме?

Équipe de soutien2018.01.24 07:13

Il faut garder à l'esprit que Windows (Unix aussi) n'a jamais été un système d'exploitation en temps réel. Cela signifie que la mesure du temps dans un tel système n'est pas une priorité et est sujette à des erreurs.

Deuxièmement, le chronomètre du système est basé sur les messages et leurs files d'attente. Dans une application de type "winds", tous les messages sont traités dans le thread principal. Ils sont traités de manière séquentielle. Avec toutes ses implications.

Dans votre cas, vous devez choisir un échantillon de minuterie critique. Si vous choisissez le plus petit - 1 milliseconde, soyez prêt à gaspiller 1000 fois plus pour la génération, la récupération et le traitement des messages que si vous choisissez un échantillon de 1000 msec. Il faut donc chercher un compromis raisonnable.

N'en avez-vous pas plus d'une centaine encore ouverts ?

Oui.

 

fxsaber:

J'ai essayé de me synchroniser comme ceci

Ça ne marche pas. Et j'ai de mauvaises pensées à l'égard du retard de MT5. Voyez par vous-même comment votre script se comportera avec ces changements.

Je l'ai essayé avec votre code, mais ça ne marche toujours pas. Attendons que d'autres personnes ou des employés plus influents de l'entreprise y prêtent attention, puisque SD écrit que les décalages sont la norme.


 
Vasiliy Pushkaryov:

Je l'ai essayé avec votre code, mais il est toujours en retard. Nous attendrons que d'autres personnes ou des employés plus influents de l'entreprise y prêtent attention, puisque le SD écrit que les retards sont la norme.

Il semble logique que l'heure du dernier tick sur un symbole soit affichée dans la Market Watch et que l'heure du tick sur le symbole soit affichée dans la fenêtre des symboles. C'est pour ça qu'il y a un désaccord, les tics n'arrivent pas en même temps.

 
Vitaly Muzichenko:

Cela semble logique : dans la vue d'ensemble du marché, l'heure du dernier tick pour n'importe quel symbole, et dans la fenêtre des symboles, l'heure du tick pour le symbole. C'est pour ça qu'il y a un désaccord, les tics n'arrivent pas au même moment.

TimeCurrent - voir Aide.

 
fxsaber:

TimeCurrent - voir Aide.

Eh bien, c'est vrai : la dernière heure du serveur. Pas de tick - pas d'heure, mais il y a toujours un tick dans la vue d'ensemble du marché pour une certaine paire, donc l'heure ne correspond pas à l'heure sur le symbole, où le tick était "il y a longtemps".

 
Vitaly Muzichenko:

C'est exact : la dernière heure du serveur. Pas de tic - pas d'heure, mais il y a toujours un tic dans la revue du marché pour une certaine paire, donc l'heure ne correspond pas à l'heure sur le symbole, où le tic était "il y a longtemps".

TimeCurrent produit les mêmes valeurs pour n'importe quel MQL-prog à n'importe quel moment.

 
Vitaly Muzichenko:

C'est exact : la dernière heure du serveur. Pas de tic - pas d'heure, mais il y a toujours un tic dans la vue d'ensemble du marché pour une certaine paire, donc l'heure ne correspond pas à l'heure sur le symbole où le tic était "il y a longtemps".

Je me suis aussi souvenu de ça. Mais la référence y est ajoutée :

"Dans les autres cas (appel dans les handlers OnInit(), OnDeinit(), OnTimer() et ainsi de suite), il s'agit de l'heure d'arrivée de la dernière cotation pour tout symbole disponible dans la fenêtre Market Watch, la même heure qui est indiquée dans le titre de cette fenêtre."

Dans le code, c'est OnTimer avec un intervalle de 0,5 sec. Comme vous pouvez le voir dans la capture d'écran ci-dessus, je peux facilement attraper manuellement sur PrintScreen lorsque l'heure affichée dans le titre de la fenêtre ne correspond pas à TimeCurrent().

 
Vasiliy Pushkaryov:

Je me suis aussi souvenu de ça. Mais là, l'aide s'est ajoutée :

"Dans les autres cas (appel dans les handlers OnInit(), OnDeinit(), OnTimer() et ainsi de suite) il s'agit de l'heure d'arrivée de la dernière cotation par n'importe quel symbole disponible dans la fenêtre Market Watch, la même heure qui est indiquée dans le titre de cette fenêtre."

L'aide a menti à l'origine :

Dans le gestionnaireOnTick(), cette fonction renvoie l'heure d'arrivée du tick en cours de traitement.

Ceci, bien sûr, n'est pas vrai. Le script, pour être sûr
void OnTick()
{
  Print(TimeCurrent());
  
  Sleep(10000);

  Print(TimeCurrent());  
}
 
fxsaber:

Le certificat a d'abord menti :

Ce n'était certainement pas le cas. Un script pour s'assurer
Ce n'est pas très clair ce qui ne va pas ici.
Raison: