MT5 et la vitesse en action - page 66

 

En ce qui concerne le code source présenté

#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnStart()
{
  for (int i = 0; i < 5; i++)
    _BV(Sleep(1), 1);
}

Si vous voulez de la vitesse, vous devriez renoncer à ce monstre, car vous vous ralentissez.

Cet outil de mesure est inadapté car il introduit une énorme erreur

Dans mon script, j'ai mis

#define  ITERATIONS 5

Voici le journal pour 5 itérations.

2020.11.04 16:37:24.430 TestSleep (EURUSD,H1)   total 9673 microseconds (1.935 ms per iteration)

Moins de 2 millisecondes.

 
fxsaber:
Les développeurs, par leur silence, ont pleinement reconnu deux problèmes.

Les développeurs ont admis par leur silence qu'il n'y a aucun problème.

 
Slava:

Voici le journal pour 5 itérations

Moins de 2 millisecondes.

Votre script.

2020.11.04 16:46:40.341 Test9 (EURCHF,M1)       total 67620 microseconds (13.524 ms per iteration)


Machine.

2020.11.04 16:47:52.962 Terminal        Windows 10 build 19042, Intel Core i7-2700 K  @ 3.50 GHz, 7 / 15 Gb memory, 18 / 29 Gb disk, IE 11, Admin, GMT+2
 
Anton:

Les développeurs ont admis par leur silence qu'il n'y a pas de problèmes.

Beau gosse ! Est-il normal que les ticks arrivent avec moins de temps que dans la Revue de marché précédente ?

 
fxsaber:

Beau gosse ! Est-il normal que les ticks arrivent avec moins de temps que dans la Revue de marché précédente ?

Normal.

J'ai répondu à cette question il y a 5 jours, dans le même fil de discussion :


SymbolInfoTick envoie les données reçues du serveur du courtier. Ce que le serveur a envoyé est ce que vous recevez.

Si vous avez des questions concernant le flux de tick diffusé par votre courtier, vous devez contacter votre courtier.

 
Slava:

La file d'attente des experts est une ressource verrouillable. Lorsqu'un événement est écrit dans la file d'attente, le conseiller expert attend (sauf bien sûr s'il est en train de traiter un événement).

Les événements pour le conseiller expert proviennent de la file d'attente des événements du graphique correspondant, qui provient à son tour du cycle de traitement du symbole correspondant. Et cette boucle de traitement ne se contente pas de distribuer les événements sur ses propres graphiques, mais fait aussi beaucoup d'autres choses.

Je vous ai déjà dit que Windows n'est pas un système d'exploitation en temps réel.

La tâche est très simplement formulée : comment écrire un conseiller expert qui ne ralentira pas en attendant une file d'attente ? Vous ne pouvez pas utiliser une boucle infinie car Sleep est un frein. Le mode asynchrone ne fonctionnera donc pas du tout. Il ne s'agit pas du tout d'attraper des attentes sous forme de longues millisecondes.

 
fxsaber:

Votre script.


Et pour 10 000 itérations ?

 
Slava:

Et pour 10 000 itérations ?

2020.11.04 17:09:30.483 total 155965249 microseconds (15.597 ms per iteration)

J'invite les autres à partager le résultat de l'exécution de ce script sur leur machine.

 
Anton:

C'est bien.

J'ai répondu à cette question il y a 5 jours, dans le même fil de discussion :

SymbolInfoTick envoie les données reçues du serveur du courtier. Ce que le serveur a envoyé est ce que vous recevez.

Si vous avez des questions concernant le flux de ticks diffusé par votre courtier, vous devez contacter votre courtier.

C'est pourquoi je pose une question aux propriétaires de MQ-Demo.

 
fxsaber:

Le problème est formulé très simplement : comment écrire un EA qui ne ralentit pas lorsqu'il attend une file d'attente ? Une boucle infinie est impossible, car le sommeil est un frein. Donc, la boucle asynchrone s'égare. Il ne s'agit pas du tout d'attraper des attentes sous forme de longues millisecondes.

Ne vous trompez pas vous-même et ceux qui vous entourent.

Toutes vos déclarations ici décrivent une tâche tout à fait différente : comment écrire un conseiller expert qui ne sera pas lent sur un matériel vieux de 9 ans et lourdement chargé.

Raison: