Die neueste Version ist immer auf der Bibliotheksseite verfügbar.
Denn mit der, die ich habe, wird der EA langsamer.
Mit der Bibliothek
2017.08.23 12:03:00.097 Core 3 Si Splice,M1: 992989 Ticks, 248280 Bars erzeugt. Umgebung synchronisiert um 0:00:00.078. Test bestanden in 0:01:24.069 (einschließlich Vorverarbeitung der Ticks 0:00:00.421).
Ohne Bibliothek
2017.08.23 12:06:38.022 Core 3 Si Splice,M1: 992989 Ticks, 248280 Balken erzeugt. Umgebung synchronisiert um 0:00:00.079. Test bestanden in 0:01:09.186 (einschließlich Vorverarbeitung der Ticks 0:00:00.421).
Der einzige Unterschied besteht in der Klasse, die während der Deinitialisierung arbeitet und geschlossene Aufträge durchläuft - sie wurde auf MT4 geschrieben.
Eine solche Klasse sollte in wenigen Millisekunden funktionieren.
Aktualisierte die Bibliothek, viel besseres Ergebnis
Berücksichtigen Sie diese Nuance. Viele Leute schreiben wie folgt
for (int i = 0; i < OrdersHistoryTotal(); i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
// ...
Dies führt zum Aufruf von OrdersHistoryTotal() bei jedem Schleifendurchlauf. Die Funktion ist optimiert und wird schnell ausgeführt, aber sie prüft trotzdem jedes Mal, ob es Änderungen in der Historie gibt. Das ist natürlich unnötig und kostet wertvolle Zeit. Deshalb ist es richtig, die Funktion so zu schreiben
constint Total = OrdersHistoryTotal();
for (int i = 0; i < Total; i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
// ...
// Liste ändern:// 26.08.2017:// Hinzufügen: OrderOpenTimeMsc() und OrderCloseTimeMsc() hinzugefügt - entsprechende Zeit in Millisekunden.// Fix: Zuvor hatten alle Handelstickets den Typ int, wie in MT4. Aufgrund von Fällen, in denen der int-Typ im MT5 überschritten wurde, wurde der Ticket-Typ in long geändert.// Entsprechend geben OrderTicket und OrderSend Long-Werte zurück. Der Rückgabemodus vom gleichen Typ wie in MT4 (int) wird über// Schreiben der nächsten Zeile vor #include <MT4Orders.mqh>// #define MT4_TICKET_TYPE // OrderSend und OrderTicket müssen einen Wert desselben Typs wie in MT4 zurückgeben - int.
// Liste ändern:// 03.09.2017:// Hinzufügen: OrderTicketOpen() hinzugefügt - MT5-Positionseröffnungstransaktionsticket// OrderOpenReason() - Grund für die MT5-Eröffnungstransaktion (Grund für die Eröffnung einer Position)// OrderCloseReason() - Grund für die MT5-Schließungstransaktion (Grund für die Schließung der Position)
Ein Beispiel für eine gewisse Anfälligkeit der Bibliothek für MQL5-Standardfunktionen
#include <MT4Orders.mqh>
voidOnStart()
{
if (PositionsTotal() > 1)
{
OrderSelect(0, SELECT_BY_POS); // Ausgewählte MT4Orders.OrderPrint(); // Drucken einer Position wie in MT4PositionGetTicket(1); // Ausgewählt von MQL5OrderPrint(); // Drucken einer Position wie in MT4
}
}
Wo kann ich die neueste Bibliothek erhalten?
Die neueste Version ist immer auf der Bibliotheksseite verfügbar.
Denn mit der, die ich habe, wird der EA langsamer.
Mit der Bibliothek
2017.08.23 12:03:00.097 Core 3 Si Splice,M1: 992989 Ticks, 248280 Bars erzeugt. Umgebung synchronisiert um 0:00:00.078. Test bestanden in 0:01:24.069 (einschließlich Vorverarbeitung der Ticks 0:00:00.421).
Ohne Bibliothek
2017.08.23 12:06:38.022 Core 3 Si Splice,M1: 992989 Ticks, 248280 Balken erzeugt. Umgebung synchronisiert um 0:00:00.079. Test bestanden in 0:01:09.186 (einschließlich Vorverarbeitung der Ticks 0:00:00.421).
Der einzige Unterschied besteht in der Klasse, die während der Deinitialisierung arbeitet und geschlossene Aufträge durchläuft - sie wurde auf MT4 geschrieben.
Eine solche Klasse sollte in wenigen Millisekunden funktionieren.
Die neueste Version ist immer auf der Bibliotheksseite verfügbar.
Eine solche Klasse sollte in ein paar Millisekunden funktionieren.
Habe die Bibliothek aktualisiert, viel besseres Ergebnis
2017.08.23 14:02:22.204 Core 3 Si Splice,M1: 992989 Ticks, 248280 Bars erzeugt. Umgebung synchronisiert um 0:00:00.062. Test bestanden in 0:01:10.341 (einschließlich Tick-Vorverarbeitung 0:00:00.437).
Aktualisierte die Bibliothek, viel besseres Ergebnis
Berücksichtigen Sie diese Nuance. Viele Leute schreiben wie folgt
Dies führt zum Aufruf von OrdersHistoryTotal() bei jedem Schleifendurchlauf. Die Funktion ist optimiert und wird schnell ausgeführt, aber sie prüft trotzdem jedes Mal, ob es Änderungen in der Historie gibt. Das ist natürlich unnötig und kostet wertvolle Zeit. Deshalb ist es richtig, die Funktion so zu schreiben
Es wird schneller sein.
// if (MT4ORDERS::OrderSendBug)
// // {
// Alert("BUG!!!!!!");
//
// //MT4ORDERS_BENCHMARK;
// }
Was ist das für ein Alert im Code? Es gibt einen "Bug", wenn der Verlauf eine bestimmte Zeit lang nicht synchronisiert wurde?
Ich habe es früher in den Kaments gefunden, die Frage ist verschwunden. Es ist also nichts Kritisches, es tauchte auch manchmal auf.
// if (MT4ORDERS::OrderSendBug)
// // {
// Alert("BUG!!!!!!");
//
// //MT4ORDERS_BENCHMARK;
// }
Was ist das für ein Alert im Code? Es gibt einen "Bug", wenn der Verlauf eine bestimmte Zeit lang nicht synchronisiert wurde?
Ich habe es früher in den Kaments gefunden, die Frage ist verschwunden. Es ist also nichts kritisches, es tauchte auch manchmal auf.
Ja, das ist richtig. Ein seltener Fehler der Entwickler. Nur in der Bibliothek sieht es seit mehr als einem Monat so aus
Ich empfehle Ihnen dringend, zu aktualisieren.
Ja, das ist richtig. Ein seltener Fehler bei den Entwicklern. Erst seit über einem Monat in der Bibliothek, sieht es so aus
Sehr empfehlenswert, zu aktualisieren.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Bibliotheken: TesterBenchmark
fxsaber, 2017.09.05 09:36 pm.
MT4Orders Rückstand gegenüber dem maximal optimierten reinen MQL5 beträgt weniger als ein Prozent.