MT5 und Geschwindigkeit in Aktion - Seite 28

 
fxsaber:
Das Hinzufügen eines Auftrags/Handels zur Handelshistorie führt dazu, dass der HistorySelect-Cache komplett neu aufgebaut wird, nicht nur teilweise. Daher kommt es zu Verzögerungen bei der Auslösung von schwebenden Aufträgen.

b2595 - korrigiert, großartig!

Ich habe die falsche Geschichte überprüft und sie noch nicht korrigiert.

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MT5 und Geschwindigkeit in Aktion

fxsaber, 2020.09.08 19:46

2020.09.08 20:23:32.103 Alert: Time[Test6.mq5 411: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:23:32.239 Alert: Time[Test6.mq5 411: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:31:59.863 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 9 ms.
2020.09.08 20:32:00.845 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:32:01.856 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 4 ms.
2020.09.08 20:32:02.846 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 7 ms.

b2596 ist anscheinend schneller geworden.

2020.09.11 05:06:17.854 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:18.853 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:19.875 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:20.871 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
 
b2605 - keine Warnungen mehr. Eine großartige Arbeit, vielen Dank!
MT5 и скорость в боевом исполнении
MT5 и скорость в боевом исполнении
  • 2020.09.07
  • www.mql5.com
MT5 - шустрая платформа. Но есть узкие горлышки, которые сводят на нет все старания быстрой торговли...
 

Können Sie mir sagen, was ich tun kann, um diese Art von Problemen beim Handel zu vermeiden?

2020.09.15 22:17:04.633 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.09.15 22:17:04.638 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.09.15 22:17:04.640 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 20 ms.
 
Ergebnis der Ausführung dieses Skripts im Live-Terminal.
2020.09.15 22:26:41.788 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 484: OrderSelect(0)] = 1 ms.
2020.09.15 22:26:48.322 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 489: PositionsTotal()] = 2 ms.
2020.09.15 22:27:07.661 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:27:47.228 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 483: OrdersTotal()] = 2 ms.
2020.09.15 22:27:53.039 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 483: OrdersTotal()] = 9 ms.
2020.09.15 22:28:13.858 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:28:21.058 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 484: OrderSelect(0)] = 8 ms.
2020.09.15 22:28:47.813 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 489: PositionsTotal()] = 4 ms.
2020.09.15 22:28:51.482 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 505: AccountInfoInteger(ACCOUNT_TRADE_EXPERT)] = 4 ms.
2020.09.15 22:29:09.053 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:29:09.353 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 506: AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)] = 1 ms.
2020.09.15 22:29:28.814 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 457: HistorySelect(Tick.time,INT_MAX)] = 2 ms.

Die letzte Zeile ist normal.


Können Verzögerungen durch parallel laufende EAs beeinflusst werden? Keine Indikatoren.


SZY Profiling auf leerem Terminal.

SymbolInfoTick ist eine teure Funktion.

 
fxsaber:

Können Verzögerungen durch parallel laufende EAs beeinflusst werden? Es gibt keine Indikatoren.

Ich habe parallel dazu ein leeres Terminal gestartet und es ausprobiert. Ich habe nicht das Gleiche gesehen.

Konfiguration.
2020.09.15 20:35:42.481 Terminal        Windows 10 build 19042, Intel Core i7-2700 K  @ 3.50 GHz, 6 / 15 Gb memory, 20 / 29 Gb disk, IE 11, Admin, GMT+3

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

MT5 und Geschwindigkeit in Aktion

fxsaber, 2020.09.01 21:59

Ich habe Win10 installiert, LatencyMon zeigt, dass alles in Ordnung ist.

 
Da fast jede reguläre Funktion zu einer Bremsung führen kann, führt der Kampfberater im Allgemeinen jeden OnTick mehrere zehn Millisekunden lang aus. Dieser Betrag wird durch die Summe der Aufrufe von Order*+SymbolInfoTick+Position* usw. aufgezehrt. Es gibt keine mathematischen Berechnungen. Sie benötigen kostenlose Schnappschüsse. Ohne sie funktioniert HDI auf MT5 nicht.
 
fxsaber:
Da jedoch fast jede reguläre Funktion zu einer Verlangsamung führen kann, führt der Battle Expert Advisor jedes OnTick für mehrere Dutzend Millisekunden aus. Die Summe der Aufrufe Order*+SymbolInfoTick+Position*, etc. frisst so viel. Es gibt keine mathematischen Berechnungen. Sie benötigen kostenlose Schnappschüsse. Ohne sie funktioniert HDI auf MT5 nicht.

Irgendetwas stimmt mit dem Ansatz nicht... Offensichtlich werden OnTrade-Funktionen benötigt, anstatt den Status bei jedem Tick von Grund auf zu überprüfen.

 
Andrey Khatimlianskii:

Irgendetwas stimmt mit dem Ansatz nicht... Offensichtlich werden OnTrade-Funktionen benötigt, anstatt den Status bei jedem Tick von Grund auf zu überprüfen.

Das OOP-Paradigma geht davon aus, dass jeder Teil-TC die Handelsumgebung scannt. Wenn Sie jedoch wirklich wollen, können Sie die Unabhängigkeit von OOP-Objekten ein wenig aufbrechen.

Machen Sie zum Beispiel einen vollwertigen Snapshot ganz zu Beginn von OnTick. Und sie muss nur nach dem Aufruf der synchronen Funktionen OrderSend und CopyTicks wiederholt werden.

Was OnTrade* betrifft, so bringen Verbindungsunterbrechungen das System durcheinander, wenn Snapshots nur in OnTrade-Funktionen erstellt werden. Andernfalls würde es natürlich eine große Ersparnis geben.

 
fxsaber:

Das OOP-Paradigma geht davon aus, dass jedes Sub-OS die Handelsumgebung scannt. Wenn man jedoch wirklich will, kann man die Unabhängigkeit von OOP-Objekten ein wenig aufbrechen.

Machen Sie zum Beispiel einen vollwertigen Snapshot ganz am Anfang von OnTick. Und sie wird erst nach dem Aufruf der synchronen Funktionen OrderSend und CopyTicks wiederholt.

Natürlich muss das Snapshot-Objekt eins sein.


fxsaber:

Was OnTrade* anbelangt, so bringen Verbindungsabbrüche das Schema durcheinander, wenn Snapshots nur in OnTrade-Funktionen durchgeführt werden. Andernfalls würde es natürlich eine große Ersparnis geben.

Eine Verbindungsunterbrechung erkennen und die Aktualisierung des Schnappschusses beim nächsten Tick erzwingen, dann in den Sparmodus zurückkehren?