Caractéristiques du langage mql5, subtilités et techniques - page 93

 
Renat Fatkhullin:

C'est ce que fait WinAPI.

Je ne suis pas d'accord.
WinAPI ne réagit pas à la correction de l'heure locale, contrairement à GetMicrosecondCount.


Dossiers :
 
Nikolai Semko:

Je ne suis pas d'accord.
WinAPI ne réagit pas à la correction de l'heure locale, contrairement à GetMicrosecondCount.

En effet, le temps indiqué ici n'est pas absolu, mais plutôt un delta depuis le début du programme :

La fonction GetMicrosecondCount() renvoie le nombre de microsecondes qui se sont écoulées depuis le début du programme MQL5.

Comme la valeur du compteur est fixée au début de l'application, ce delta est affecté par les changements de date. Modifier sérieusement la date sur votre ordinateur lorsque des logiciels dépendant du temps sont en cours d'exécution relève du sabotage et de l'approche d'hommes russes avec une tronçonneuse japonaise. Pour le bien d'une anecdote, ça fera l'affaire.

La justification "le correcteur de temps de fond fonctionne" ne fonctionne pas ici - sa correction est de quelques millisecondes par jour et elle n'a aucun effet.

Leminuteur microseconde est nécessaire pour mesurer précisément de petites périodes, et non pour compter depuis le début des temps.

 
Nikolai Semko:

Je ne suis pas d'accord.
WinAPI ne réagit pas à la correction de l'heure locale, contrairement à GetMicrosecondCount.

et comment voyez-vous l'application pratique de GetMicrosecondCount au point de gâcher tout le travail du programme dans la version actuelle ? décrivez l'application pratique

par exemple, je ne vois pas de variantes ni en c++ ni ici, sauf celles décrites par Renat, à savoir mesurer le temps d'exécution du code avec précision en mcs

c'est-à-dire que je ne comprends pas votre persistance, franchement.

 
Renat Fatkhullin:

Comme la valeur du compteur au début de l'application est fixe, ce delta est affecté par le changement de date. Changer sérieusement la date sur un ordinateur lorsqu'un logiciel dépendant du temps est en cours d'exécution, c'est du sabotage et l'approche d'hommes russes avec une tronçonneuse japonaise. Cela fera l'affaire pour une anecdote.

J'ai volontairement montré la synchronisation du temps sur Internet sur le gif animé. Ce type de synchronisation est automatique par défaut et se produit assez souvent et selon le calendrier prévu sans la participation de personne.
Et il n'y a aucune garantie qu'au moment de la mesure, cette synchronisation puisse se produire.
Je ne m'inquiète pas pour moi car je connais déjà cette particularité de GetMicrosecondCount() et que cette fonction est plus lente que GetTickCount.
Mais d'autres, qui ne liront pas cette branche mais lisent l'aide pour cette fonction même très attentivement, peuvent rencontrer des problèmes s'ils utilisent GetMicrosecondCount() dans la logique d'un EA réel, parce que pendant les tests tout sera OK, mais pendant le trading réel au moment de la synchronisation du temps planifié ou du passage à l'heure d'été, il peut se produire OY, surtout si le temps diminue et un débordement comme ulong se produit.
Et d'ailleurs, cette nouvelle information non documentée pour moi, a apporté des ajustements significatifs à la logique de la classe multitimer, qui est créée maintenant et qui organise le fonctionnement de plusieurs timers simultanément. Dans le travail de cette classe, la fonction microseconde a été utilisée avec toute sa puissance. Mais je comprends maintenant que je devrai sacrifier la précision de 15625 µs, également pour augmenter sa vitesse.
Faber est un pliz. Il n'est pas mauvais, il est juste arrogant, mais il est bon.
Merde, je suis sur le point d'être banni aussi :(((

 
Renat Fatkhullin:

En effet, le temps affiché n'est pas absolu, mais plutôt un delta par rapport au début du programme :

Comme la valeur du compteur au démarrage de l'application est fixe, ce delta est affecté par les changements de date. En changeant sérieusement la date sur l'ordinateur lorsque le logiciel dépendant du temps fonctionne, il y a du sabotage et l'approche d'hommes russes avec une tronçonneuse japonaise. Pour le bien d'une anecdote, ça fera l'affaire.

La justification "le correcteur de temps de fond fonctionne" ne s'applique pas ici - sa correction est de l'ordre de quelques millisecondes par jour et elle n'a aucun effet.

Le minuteur microseconde est nécessaire pour mesurer précisément de petites périodes, et non pour compter depuis le début du temps.

En d'autres termes, est-il utile de réinitialiser périodiquement le terminal ?

 
Nikolai Semko:

J'ai spécifiquement montré la synchronisation de l'heure sur Internet dans le gif animé. Cette synchronisation est automatique par défaut pour tout le monde et elle se produit selon un calendrier sans que personne ne soit impliqué et assez souvent.

J'ai écrit explicitement et clairement - la correction quotidienne par millisecondes est automatique.

Et oui, vous serez tout aussi époustouflé par une fonction WinAPI pure (soit GetTickCount ou QueryPerformanceCounter) lorsque vous glisserez un morceau dans la tronçonneuse en changeant la date même de quelques secondes. Il n'y a aucune protection que vous êtes censés avoir. On a fait sortir de l'air le problème et la prétendue solution.

Tout est donc correct - c'est ce qu'est WinAPI et c'est la réalité.

 
Aleksey Vyazmikin:

En d'autres termes, est-il utile de redémarrer le terminal périodiquement ?

Non.
 
Renat Fatkhullin:
Non.

Mon compteur de temps de fermeture des chandeliers commence à se précipiter de 5 secondes en une semaine, je pensais que cela avait quelque chose à voir avec le logiciel.

Il permet de redémarrer et de synchroniser l'heure avec le service concerné.

J'ai changé la batterie de la mère il n'y a pas si longtemps.

 
Aleksey Vyazmikin:

Mon compteur de temps de fermeture des chandeliers commence à se précipiter de 5 secondes en une semaine, je pensais que cela avait quelque chose à voir avec le logiciel.

Il permet de redémarrer et de synchroniser l'heure avec le service concerné.

J'ai changé la batterie de ma mère il n'y a pas si longtemps.

Configurez le service interne Time de Windows pour qu'il se synchronise chaque nuit (ou plus souvent) avec pool.ntp.org et la correction quotidienne sera en millisecondes.
 
Renat Fatkhullin:
Configurez un service interne Windows Time pour qu'il se synchronise quotidiennement la nuit (ou plus souvent) avec pool.ntp.org et la correction quotidienne sera en millisecondes.

Configuré, mais cela n'aide pas - je ne comprends pas la raison. Mais mon serveur est ntp2.stratum2.ru