MT5 und Geschwindigkeit in Aktion - Seite 8

 
Eine Menge Schecks wurden eingereicht... Dies überrascht mich.
2020.06.03 14:09:21.604 Alert: Time[NewTicks.mqh 28: ::SymbolInfoTick(_Symbol,Tick)] = 182 ms.

Zu diesem Zeitpunkt wurden keine Transaktionen vorgenommen.


ZS Das ist nicht ungewöhnlich.

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

PS Im Kampfmodus kommt es bei Transaktionen fast immer zu Verzögerungen (ich gebe nur Fälle aus, die länger als 5 Millisekunden dauern).

Ansonsten scheint sie viel besser zu sein als die 2470.

Akkumulierte Statistiken. HistorySelect verzögert sich nur bei der Durchführung von Transaktionen.


ZS Lies. Auch ohne Transaktionen kommt es zu Verzögerungen.

2020.06.03 14:35:26.999 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 24 ms.
 
fxsaber:
Setzen Sie eine Menge Schecks darauf... Dies überrascht mich.

Das kommt häufig vor. Die Handelsfunktionen wurden nicht aufgerufen.

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 ist manchmal keine schlechte Verzögerung. Die HFT kann mit solchen unerwarteten Verzögerungen sehr gut umgehen.

Bitte fragen Sie die Entwickler, um die Gründe zu finden. In der Zwischenzeit ist es offensichtlich, dass im Kampf gegen EAs ihr Profiler ein Muss ist.

 
fxsaber:

Das kommt häufig vor. Die Handelsfunktionen wurden nicht aufgerufen.

SymbolInfoTick ist manchmal keine schlechte Verzögerung. Die HFT kann mit solchen unerwarteten Verzögerungen sehr gut umgehen.

Bitte fragen Sie die Entwickler, um die Gründe zu finden. In der Zwischenzeit ist es offensichtlich, dass in der Schlacht EAs ihre Profiler ein Muss sind.

Wie kann man Millisekunden so genau messen? Eine Hardware-Uhr in Ihrem Prozessor?

 
Alexey Volchanskiy:

Wie kann man Millisekunden so genau messen? Eine Hardware-Uhr im Prozessor?

GetMicrosecondCount().

 
fxsaber:

Das kommt häufig vor. Die Handelsfunktionen wurden nicht aufgerufen.

SymbolInfoTick ist manchmal keine schlechte Verzögerung. Die HFT kann mit solchen unerwarteten Verzögerungen sehr gut umgehen.

Bitte fragen Sie die Entwickler, um die Gründe zu finden. In der Zwischenzeit ist es offensichtlich, dass EAs eigener Profiler im Kampf ein Muss ist.

Der Systemtimer hat standardmäßig einen Schritt von 20 ms. Haben Sie ihn vor der Messung auf eine niedrigere Einstellung zurückgesetzt?

können Sie mit Funktionen wie dieser versuchen:

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

Der Systemtimer hat einen Standardschritt von 20 ms. Haben Sie ihn vor der Messung auf einen kleineren Schritt zurückgesetzt?

An die Entwickler.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

MT5 und Geschwindigkeit im Kampf

Anton, 2020.05.29 12:32

Der Testcode sollte wie folgt aussehen:

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");
  }


Bitte stellen Sie keine weiteren Theorien auf. Dies ist ein Zweig der praktischen Anwendung.

 
fxsaber:

An die Entwickler.

Dies ist also die Antwort der Entwickler von vor einigen Jahren.

 
Igor Zakharov:

Dies ist also die Antwort der Entwickler von vor einigen Jahren.

Ist es in Ordnung, dass das Datum 2020.05.29 12:32 ist?

 
Alexey Viktorov:

Ist es OK, dass das Datum 2020.05.29 12:32 ist?

Ich habe mich geirrt, fxsaber hat mich darauf hingewiesen: GetTickCount() kann wie ich geschrieben habe scheitern, aber GetMicrosecondCount() nicht.

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

Ich werde von nun an schweigen :)