MT5 und Geschwindigkeit in Aktion - Seite 13

 
Dmi3:

Ich bin Händler, und was ich auf meinen Terminals mit bloßem Auge sehe, darüber singe ich. Ich bin Händler, und was ich auf meinen Terminals sehe, sehe ich mit bloßem Auge.

Theoretisch könnte ich natürlich auch einen EA von meinem Laptop zu Hause aus installieren und sein Verhalten beobachten.

Ich dachte nur, das Problem könnte auf der Serverseite liegen, wenn der Verlauf tief ist.

 
Aleksey Vyazmikin:

Ich dachte nur, das Problem könnte auf der Serverseite liegen, wenn die Historie ausführlich abgefragt wird.

Bei allen EAs wird der Verlauf der letzten 120 Sekunden abgefragt. Täglich gibt es mehr als 10.000 Bestellungen.

 
Dmi3:

Die Historie aller EAs wird für die letzten 120 Sekunden abgefragt. Täglich gibt es mehr als 10.000 Bestellungen.

Die Idee ist, dass alles im Speicher sein sollte.

 

Es gibt etwa hundert unabhängige Handelslogiken, die gehandelt werden können. Zugleich gibt es mehr als ein Dutzend Handelssymbole.

Aufgrund von Verzögerungen ist es unmöglich, all dies in einen asynchronen Expert Advisor zu packen. Ich muss mehrere Expert Advisors erstellen und sie parallel laufen lassen.

 
fxsaber:

Es gibt etwa hundert unabhängige Handelslogiken, die gehandelt werden können. Zugleich gibt es mehr als ein Dutzend Handelssymbole.

Aufgrund von Verzögerungen ist es unmöglich, all dies in einen asynchronen Expert Advisor zu packen. Ich muss mehrere Expert Advisors erstellen und sie parallel laufen lassen.

Später stellt sich heraus, dass es unmöglich ist, mehr als 100 EAs in ein Terminal zu packen, so dass es notwendig ist, mehrere Terminals parallel zu starten. Und dann....

 
Dmi3:

Und dann stellt sich heraus, dass man nicht mehr als 100 EAs in ein Terminal packen kann und man mehrere Terminals parallel betreiben muss. Und dann....

Sobald die Verzögerungen beseitigt sind, wird es möglich sein, sie in einen EA zu packen. Das wird die VPS sehr entlasten.

 
OnTick fragt die Tick-Historie ab dem vorherigen Tick ab.
2020.08.17 21:26:45.729 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:47.848 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:47.848 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:49.959 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:53.135 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 6 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:00.525 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:08.956 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:13.173 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:27.931 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:30.048 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:30.048 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:42.669 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:43.726 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.

Sehr stabiles Ergebnis.

 

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Bibliotheken: MT4Orders

fxsaber, 2020.08.18 08:49

Ein ähnliches Ergebnis ist bei Ausgangsverzögerungen von mehr als 30 ms zu beobachten.

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.

Ohne Handelsgeschichte anständig verzögert.

 
Ich habe noch nicht herausgefunden, wie ich sie überwachen kann.
2020.08.18 11:14:05.072 MarketWatchTick:  time = 2020.08.18 11:14:00.674
2020.08.18 11:14:05.195 MarketWatchTick:  time = 2020.08.18 11:14:05.929

Auf der linken Seite steht die Ortszeit, auf der rechten Seite die Zeit des letzten Zeichenangebots.

Sie können sehen, dass zwischen den Ausdrucken (in OnTick) der beiden Zeilen 100 ms verstrichen sind. Gleichzeitig hat sich die Symbolzeit um fünf Sekunden geändert!


Das bedeutet, dass die Zeichenpreise mit einer Verzögerung von fünf Sekunden empfangen wurden. Zur gleichen Zeit (nicht hier, aber in meinem Protokoll), in Echtzeit CopyTicksRange produziert 35 Ticks zwischen diesen beiden Ereignissen.


Ich habe es zufällig bemerkt und festgestellt, dass viele Ticks zwischen benachbarten OnTick-Aufrufen lagen.

 

Bitten Sie die Entwickler, ihre Sequenz zur Überprüfung der HFT-Tauglichkeit des Computers zu empfehlen.

Für die gleiche HFT müssen Sie eine geeignete Maschine vorbereiten. Es ist wahrscheinlich eine gute Idee, offizielle Empfehlungen (die einige Tests bestehen) zu diesem Thema zu haben.