Bibliotheken: MT4Orders - Seite 15

 
Aleksey Vyazmikin:

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.

 
fxsaber:

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).


 
Aleksey Vyazmikin:

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

const int Total = OrdersHistoryTotal();

for (int i = 0; i < Total; i++)
  if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
    // ...

Es wird schneller sein.

 
// 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)
[Gelöscht]  

// 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.

 
Maxim Dmitrievsky:

// 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

      if (!Res || MT4ORDERS::OrderSendBug)
      {
        Alert(Res ? "OrderSend - BUG!" : "MT4ORDERS - not Sync with History!");

Ich empfehle Ihnen dringend, zu aktualisieren.

[Gelöscht]  
fxsaber:

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.

Soeben aktualisiert, danke )
 
Ein Beispiel für eine gewisse Anfälligkeit der Bibliothek für MQL5-Standardfunktionen
#include <MT4Orders.mqh>

void OnStart()
{
  if (PositionsTotal() > 1)
  {
    OrderSelect(0, SELECT_BY_POS); // Ausgewählte MT4Orders.
    OrderPrint();                  // Drucken einer Position wie in MT4
    
    PositionGetTicket(1);          // Ausgewählt von MQL5
    OrderPrint();                  // Drucken einer Position wie in MT4
  }
}
 

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.