MT5 et la vitesse en action - page 8

 
De nombreux contrôles ont été effectués... Cela m'étonne.
2020.06.03 14:09:21.604 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 182 ms.

Aucune transaction n'a été effectuée à ce stade.


ZS Ce n'est pas rare.

2020.06.03 14:31:39.484 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 65 ms.
 
fxsaber:

PS En mode combat, lorsque des transactions sont effectuées, il y a presque toujours des décalages (je ne sors que les cas supérieurs à 5 millisecondes).

Sinon, il semble être bien meilleur que le 2470.

Stats accumulées. HistorySelect n'est en retard que lors des transactions.


ZS Lies. Sans les transactions, il y a aussi des décalages.

2020.06.03 14:35:26.999 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 24 ms.
 
fxsaber:
J'ai fait beaucoup de contrôles... Cela m'étonne.

Il s'avère que c'est un événement fréquent. Les fonctions commerciales n'ont pas été appelées.

2020.06.03 15:23:21.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:26:09.433 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 8 ms.
2020.06.03 15:26:24.435 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 10 ms.
2020.06.03 15:26:31.417 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 1 ms.
2020.06.03 15:26:33.429 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 8 ms.
2020.06.03 15:26:34.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:26:55.655 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.06.03 15:27:05.578 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 14 ms.
2020.06.03 15:29:27.613 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:31:29.426 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:31:46.430 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 11 ms.
2020.06.03 15:33:12.441 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 14 ms.
2020.06.03 15:33:21.437 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 12 ms.
2020.06.03 15:33:35.430 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:34:55.424 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 2 ms.
2020.06.03 15:35:09.426 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 2 ms.
2020.06.03 15:35:34.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:41:48.423 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:41:54.439 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.06.03 15:42:28.440 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 15 ms.
2020.06.03 15:42:48.845 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 14 ms.
2020.06.03 15:43:08.429 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:43:25.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 7 ms.
2020.06.03 15:43:27.428 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:43:48.436 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 9 ms.
2020.06.03 15:47:05.424 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:47:46.426 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 8 ms.
2020.06.03 15:47:58.845 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:48:47.140 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 12 ms.
2020.06.03 15:49:03.430 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:49:52.684 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 3 ms.
2020.06.03 15:53:39.429 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 4 ms.
2020.06.03 15:54:17.424 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:54:47.425 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 1 ms.
2020.06.03 15:57:28.425 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 5 ms.
2020.06.03 15:57:47.425 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 2 ms.
2020.06.03 15:58:27.425 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 1 ms.
2020.06.03 15:59:08.445 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 23 ms.
2020.06.03 16:00:20.447 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 28 ms.
2020.06.03 16:01:50.430 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 7 ms.
2020.06.03 16:02:08.431 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 6 ms.

SymbolInfoTick n'est pas un mauvais décalage parfois. Le HFT peut avoir une grande expérience de ces décalages inattendus.

Veuillez demander aux développeurs d'en trouver les raisons. En attendant, il est évident que dans les EA de combat, leur profileur est un must.

 
fxsaber:

Il s'avère que c'est un événement fréquent. Les fonctions commerciales n'ont pas été appelées.

SymbolInfoTick n'est pas un mauvais décalage parfois. Le HFT peut avoir une grande expérience de ces décalages inattendus.

Veuillez demander aux développeurs d'en trouver les raisons. En attendant, il est évident que dans les EA de combat, leur profileur est un must.

Comment mesure-t-on les millisecondes avec une telle précision ? Une horloge matérielle dans votre processeur ?

 
Alexey Volchanskiy:

Comment mesure-t-on les millisecondes avec une telle précision ? Une horloge matérielle dans le processeur ?

GetMicrosecondCount().

 
fxsaber:

Il s'avère que c'est un événement fréquent. Les fonctions commerciales n'ont pas été appelées.

SymbolInfoTick n'est pas un mauvais décalage parfois. Le HFT peut avoir une grande expérience de ces décalages inattendus.

Veuillez demander aux développeurs d'en trouver les raisons. En attendant, il est évident que dans la bataille, un profileur propre à l'EA est indispensable.

le timer du système a un pas de 20ms par défaut. l'avez-vous remis à un réglage inférieur avant la mesure ?

vous pouvez essayer avec des fonctions comme celle-ci :

#import "kernel32.dll"
   int timeBeginPeriod(uint TimerRes);
   int timeEndPeriod(uint TimerRes);
#import
 
Igor Zakharov:

le timer du système a un pas par défaut de 20ms. l'avez-vous réinitialisé à un pas plus petit avant de mesurer ?

Aux développeurs.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

MT5 et vitesse au combat

Anton, 2020.05.29 12:32

Le code de test devrait ressembler à ceci :

void OnStart()
  {
   MqlTick Tick;
   SymbolInfoTick(_Symbol, Tick);
   ulong start=GetMicrosecondCount();
   for(int i=0; i<100000; i++)
     {
      HistorySelect(Tick.time, INT_MAX);
     }
   ulong end=GetMicrosecondCount()-start;
   Print("100000 HistorySelect = ",DoubleToString(end/1000.0,2)," ms");
  }


S'il vous plaît, ne faites plus de théories. Il s'agit d'une branche d'application pratique.

 
fxsaber:

Aux développeurs.

Voici donc la réponse des développeurs d'il y a plusieurs années.

 
Igor Zakharov:

Voici donc la réponse des développeurs d'il y a quelques années.

Est-ce que c'est correct que la date soit 2020.05.29 12:32

 
Alexey Viktorov:

Est-ce que c'est correct que la date soit 2020.05.29 12:32

J'avais tort, fxsaber me l'a fait remarquer : GetTickCount() peut merder comme je l'ai écrit, mais GetMicrosecondCount() ne peut pas.

https://www.mql5.com/ru/forum/189360#comment_4838735

Je garderai le silence à partir de maintenant :)