Gleichzeitig zeigt das Protokoll auch eine Meldung an, dass alles normal ist.
Auf dieser Seite gibt es mehrere Links zu diesem Thema. Kurz gesagt, Sie können im Protokoll ein null Result.deal sehen. Sie können im Protokoll sehen (nicht null Request.position), dass ein OrderClose durchgeführt wurde, der angeblich erfolgreich abgeschlossen wurde (Result.code), aber gleichzeitig erschien eine Sekunde lang kein Eintrag (DEAL_ENTRY_OUT deal) darüber im Terminal (die Bibliothek hat gewartet). Dies deutet auf zwei Szenarien hin:
Ein MT5-Handelsauftrag wurde erfolgreich übermittelt, aber der MT5-Handel wurde nicht durchgeführt.
Der Handel wurde durchgeführt, aber er erschien nicht in der Handelshistorie.
Beide Szenarien sind nicht immer gut für MT5 (siehe den Link oben für eine detaillierte Diskussion). Die Bibliothek funktionierte eindeutig, leider. All diese Nuancen wurden einmal durchdacht analysiert, und die Bibliothek hat dementsprechend vernünftige Reaktionen darauf entwickelt.
Dies ist ein rein informativer (hat keinen Einfluss auf den Handel) Alarm, dass MT5-OrderSend mit einem Fehler arbeitet. Dieser Fehler wird hier im Detail besprochen. Die Entwickler sind jedoch der Meinung, dass es sich hierbei noch nicht um ein fehlerhaftes Verhalten von MT5 handelt...
Ich habe nicht analysiert, warum die Leistung der Bibliothek so viel besser ist als reines MQL5. Ich gehe davon aus, dass HistorySelect in Echtzeit langsamer wird. Ich habe es nicht im Tester überprüft.
// Liste ändern:// 03.09.2017:// Hinzufügen: OrderTicketOpen() hinzugefügt - MT5-Ticket der Positionseröffnungstransaktion// OrderOpenReason() - Grund für die MT5-Eröffnungstransaktion (Grund für die Eröffnung einer Position)// OrderCloseReason() - причина проведения MT5-сделки закрытия (причина закрытия позиции)
Ein etwas unerwartetes Ergebnis. Das Skript berechnet den Zeitpunkt des Öffnens/Schließens der letzten "Position".
Ich habe nicht analysiert, warum die Leistung der Bibliothek so viel besser ist als bei reinem MQL5. Ich nehme an, dass HistorySelect in Echtzeit langsamer wird. Ich habe es nicht im Tester überprüft.
Konnte mit diesem Skript Ausführungsprobleme im MT5 feststellen. Ich empfehle Ihnen, Ihre Terminal+Trading Server Verbindung zu überprüfen und bei Problemen dem Service Desk zu melden.
Aktualisiertes Skript in der Anwendung. Findet schnell z.B. solche Probleme
// 30.05.2018// Hinzufügen: Beschleunigte Arbeit mit der Handelshistorie, Auswahl einer goldenen Mitte der Realisierungen zwischen Leistung und// Speicherverbrauch - wichtig für VPS. Es wird die generische Standardbibliothek verwendet.// Wenn Sie die generische Bibliothek nicht verwenden möchten, steht Ihnen die alte Methode der Arbeit mit der Historie zur Verfügung.// Dazu müssen Sie die folgende Zeile in die MT4Orders-Bibliothek VOR die MT4Orders-Bibliothek schreiben//// #define MT4ORDERS_FASTHISTORY_OFF // Schalten Sie die Implementierung der schnellen Handelshistorie aus - verwenden Sie die generische Bibliothek nicht.
Das Arbeiten mit der langen Historie klappt jetzt wie am Schnürchen!
Überprüfung der generischen Gewinne in Zahlen
#define MT4ORDERS_FASTHISTORY_OFF // Schalten Sie die schnelle Implementierung der Handelshistorie aus - verwenden Sie keine generische Bibliothek.#include <MT4Orders.mqh>
double HistoryToDouble( void )
{
double Res = 0;
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
Res += OrderCloseTimeMsc() - OrderOpenTimeMsc() + OrderProfit() + OrderTicket() - OrderTicketOpen();
return(Res);
}
#define BENCH(A) \
{ \
constulong StartTime = GetMicrosecondCount(); \
A; \
Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \
}
#define PRINT(A) Print(#A + " = " + (string)(A))
voidOnStart()
{
if (HistorySelect(0, INT_MAX))
{
PRINT(HistoryDealsTotal());
PRINT(HistoryOrdersTotal());
}
for (int i = 0; i < 3; i++)
{
PRINT(i);
BENCH(Print(HistoryToDouble()))
}
}
Ergebnis ohne Generic
HistoryDealsTotal() = 10063HistoryOrdersTotal() = 20296
i = 01195028482.07Time[Print(HistoryToDouble())] = 829525
i = 11195028482.07Time[Print(HistoryToDouble())] = 885207
i = 21195028482.07Time[Print(HistoryToDouble())] = 918911
Ergebnis mit Generic
HistoryDealsTotal() = 10063HistoryOrdersTotal() = 20296
i = 01195028482.07Time[Print(HistoryToDouble())] = 52603
i = 11195028482.07Time[Print(HistoryToDouble())] = 39051
i = 21195028482.07Time[Print(HistoryToDouble())] = 34409
Bei einer Historie mit 10K Trades und 20K Orders ist die Generic-Variante ~30 mal schneller. Je größer die Handelshistorie, desto deutlicher ist die Beschleunigung.
Gleichzeitig zeigt das Protokoll auch eine Meldung an, dass alles normal ist.
Auf dieser Seite gibt es mehrere Links zu diesem Thema. Kurz gesagt, Sie können im Protokoll ein null Result.deal sehen. Sie können im Protokoll sehen (nicht null Request.position), dass ein OrderClose durchgeführt wurde, der angeblich erfolgreich abgeschlossen wurde (Result.code), aber gleichzeitig erschien eine Sekunde lang kein Eintrag (DEAL_ENTRY_OUT deal) darüber im Terminal (die Bibliothek hat gewartet). Dies deutet auf zwei Szenarien hin:
Beide Szenarien sind nicht immer gut für MT5 (siehe den Link oben für eine detaillierte Diskussion). Die Bibliothek funktionierte eindeutig, leider. All diese Nuancen wurden einmal durchdacht analysiert, und die Bibliothek hat dementsprechend vernünftige Reaktionen darauf entwickelt.
Wenn ich den fhtm-Demo-Broker für Tests nehme, öffnet die OrderSend-Funktion einen Handel, gibt aber einen Fehler zurück.
Ich habe es nachgestellt und festgestellt, dass es mein Fehler war. Danke für die Nachricht, interessantes Verhalten von MT5 auf diesem Handelsserver.
Ich habe es behoben. Wenn Sie es brauchen, kann ich es Ihnen per PM schicken. Und um die Moderatoren nicht zu belästigen, werde ich es in KB posten, wenn die Entwickler DEAL_SL/TP in neuen Builds lösen werden.
Wiederholte es und stellte fest, dass es mein Fehler war. Vielen Dank für Ihre Nachricht, interessantes Verhalten von MT5 auf diesem Handelsserver es stellte sich heraus.
Ich habe es behoben. Wenn Sie es brauchen, kann ich es Ihnen per PM schicken. Und um die Moderatoren nicht zu belästigen, werde ich es in KB posten, wenn die Entwickler DEAL_SL/TP in neuen Builds lösen werden.
Ja, bitte senden Sie es per PM
Ja, bitte senden Sie mir eine PM
Gesendet.
Selten, aber es können solche Alerts auftreten
Dies ist ein rein informativer (hat keinen Einfluss auf den Handel) Alarm, dass MT5-OrderSend mit einem Fehler arbeitet. Dieser Fehler wird hier im Detail besprochen. Die Entwickler sind jedoch der Meinung, dass es sich hierbei noch nicht um ein fehlerhaftes Verhalten von MT5 handelt...
ZY Eine Raffinesse von MT5 ist aufgedeckt worden. Phantom-Orders werden beim Handel über die Bibliothek nicht auftreten.
Die Arbeit mit einer langen Geschichte fliegt jetzt einfach!
Einige unerwartete Ergebnisse. Das Skript berechnet den Zeitpunkt der Eröffnung/Schließung der letzten "Position".
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
OrderCloseTime Expert Advisor MQL5
fxsaber, 2018.07.06 00:49
Ergebnis
Ich habe nicht analysiert, warum die Leistung der Bibliothek so viel besser ist als reines MQL5. Ich gehe davon aus, dass HistorySelect in Echtzeit langsamer wird. Ich habe es nicht im Tester überprüft.
ZЫ Ja, HistorySelect verlangsamt sich.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Bibliotheken: MT4Orders
fxsaber, 2017.09.03 18:52
Ausdruck aller durch SL geschlossenen Positionen
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wie kann man den Schlusskurs herausfinden, wenn die Position in den Stop Loss gelaufen ist?
fxsaber, 2018.07.10 11:46
Ein etwas unerwartetes Ergebnis. Das Skript berechnet den Zeitpunkt des Öffnens/Schließens der letzten "Position".
Ich habe nicht analysiert, warum die Leistung der Bibliothek so viel besser ist als bei reinem MQL5. Ich nehme an, dass HistorySelect in Echtzeit langsamer wird. Ich habe es nicht im Tester überprüft.
ZЫ Ja, HistorySelect verlangsamt sich.
Ist dies die neueste Version der Bibliothek?
Ist dies die neueste Version der Bibliothek?
Ja.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Bibliotheken: MT4Orders
fxsaber, 2017.02.16 15:16
Konnte mit diesem Skript Ausführungsprobleme im MT5 feststellen. Ich empfehle Ihnen, Ihre Terminal+Trading Server Verbindung zu überprüfen und bei Problemen dem Service Desk zu melden.
Aktualisiertes Skript in der Anwendung. Findet schnell z.B. solche Probleme
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Bibliotheken: MT4Orders
Andrey Khatimlianskii, 2018.06.06 01:53 pm.
Das Arbeiten mit der langen Historie klappt jetzt wie am Schnürchen!
Ergebnis ohne Generic
Ergebnis mit Generic
Bei einer Historie mit 10K Trades und 20K Orders ist die Generic-Variante ~30 mal schneller. Je größer die Handelshistorie, desto deutlicher ist die Beschleunigung.