Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil XXXIII): Ändern von Orders und Positionen unter bestimmten Bedingungen" - Seite 2
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ja, das werden sie. Denn dort wurde der Ansatz zur Speicherung Ihrer Kontodaten geändert. Das steht am Ende des Artikels als Warnung:
-----
Zu Ihrer Information:
Da wir die Struktur des Konto-Objekts geändert haben (die Größe der uchar-Arrays zum Speichern der String-Eigenschaften des Kontos geändert und eine weitere Integer-Eigenschaft hinzugefügt), werden alle zuvor gespeicherten Dateien der Konto-Objekte nicht mehr korrekt geladen. Wenn sie sich im gemeinsamen Ordner der Terminals im Verzeichnis \Files\DoEasy\Accounts\ befinden, dann müssen sie alle vor dem Start dieses Testberaters gelöscht werden - sie werden beim Wechsel von einem Konto zu einem anderen mit einer neuen Größe der Objektstruktur neu erstellt.
-----
Ich habe alle Konto-BIN-Dateien im gemeinsamen Ordner gelöscht, um sicherzustellen, dass Ihr Code vollständig geladen wird. Er wird ohne Fehler über `CAccount::Load` geladen (aber das Hauptproblem war das falsche Ignorieren von Ereignissen und besteht immer noch)
Dann öffnete ich einige Trades manuell und schloss sie mit einem Skript so schnell wie möglich. Ich bekam wieder diesen Fehler:
CEventsCollection::CreateNewEvent, Zeile 768: Dieses Ereignis ist bereits in der Liste
Wir wissen, dass diese Ereignisse von verschiedenen Positionsschließungen in MT4 stammen, aber der "Engine"-Code kann sie nicht verstehen. Ist die Engine überhaupt in der Lage, mehrere Handelsabschlüsse/Ereignisse in kurzer Zeit zu verstehen?
Hier sind alle Log-Meldungen:
2020.08.21 21:23:50.604 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.21 21:23:50.600 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.21 19:51:47.000 -
AUDCAD Geschlossen Kauf #573142748 zu Preis 0.94405, Gewinn -0.22 USD
2020.08.21 21:23:50.368 Script CloseTradesFast4Test AUDCAD,H1: entfernt
2020.08.21 21:23:50.364 CloseTradesFast4Test AUDCAD,H1: uninit Grund 0
2020.08.21 21:23:50.364 CloseTradesFast4Test AUDCAD,H1: close #573142747 buy 0.01 AUDCAD at 0.94404 at price 0.94375
2020.08.21 21:23:50.148 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.21 21:23:50.146 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.21 19:51:47.000 -
AUDCAD Geschlossen Kauf #573142748 zu Preis 0.94405, Gewinn -0.22 USD
2020.08.21 21:23:49.942 CloseTradesFast4Test AUDCAD,H1: close #573142748 buy 0.01 AUDCAD at 0.94405 at price 0.94376
2020.08.21 21:23:49.725 mhdbzr-34 AUDCAD,H1: CEventsCollection::CreateNewEvent, Zeile 768: Dieses Ereignis ist bereits in der Liste
2020.08.21 21:23:49.520 CloseTradesFast4Test AUDCAD,H1: close #573142752 buy 0.01 AUDCAD at 0.94406 at price 0.94376
2020.08.21 21:23:49.257 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.21 21:23:49.255 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.21 19:51:52.000 -
AUDCAD Geschlossen Verkaufen #573142755 zum Preis von 0.94366, Gewinn -0.37 USD
2020.08.21 21:23:49.086 CloseTradesFast4Test AUDCAD,H1: close #573142755 sell 0.01 AUDCAD at 0.94366 at price 0.94414
2020.08.21 21:23:48.815 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.21 21:23:48.812 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.21 19:51:53.000 -
AUDCAD Geschlossen Verkaufen #573142757 zum Preis von 0.94366, Gewinn -0.37 USD
2020.08.21 21:23:48.661 CloseTradesFast4Test AUDCAD,H1: close #573142756 sell 0.01 AUDCAD at 0.94366 at price 0.94415
2020.08.21 21:23:48.352 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.21 21:23:48.350 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.21 19:51:53.000 -
AUDCAD Geschlossen Verkauf #573142757 zum Preis von 0.94366, Gewinn -0.37 USD
2020.08.21 21:23:48.237 CloseTradesFast4Test AUDCAD,H1: close #573142757 sell 0.01 AUDCAD at 0.94366 at price 0.94415
2020.08.21 21:23:47.537 CloseTradesFast4Test AUDCAD,H1: initialisiert
2020.08.21 21:23:47.520 Script CloseTradesFast4Test AUDCAD,H1: erfolgreich geladen
2020.08.21 21:23:31.762 Automatischer Handel aktiviert
Ich lösche alle Account BIN-Dateien im gemeinsamen Ordner, um sicher zu sein, dass Ihr Code vollständig geladen wird. Es lädt ohne Fehler über `CAccount::Load` (aber das Hauptproblem war falsch Ereignis ignorieren und besteht immer noch)
Dann öffnete ich einige Trades manuell und schloss sie mit einem Skript so schnell wie möglich. Ich bekam wieder diesen Fehler:
CEventsCollection::CreateNewEvent, Zeile 768: Dieses Ereignis ist bereits in der Liste
Wir wissen, dass diese Ereignisse von verschiedenen Positionsschließungen im MT4 stammen, aber der "Engine"-Code kann sie nicht verstehen. Ist die Engine überhaupt in der Lage, mehrere Handelsabschlüsse/Ereignisse in kurzer Zeit zu verstehen?
Bitte beschreiben Sie Schritt für Schritt, was Sie tun, um diesen Fehler zu erhalten.
Bitte beschreiben Sie Schritt für Schritt, was Sie tun, um diesen Fehler zu erhalten.
Ich habe Ihren EA-Code so geändert, dass er nur Ereignisse abruft. (Ich habe die geänderte Version in früheren Nachrichten beigefügt, es heißt `mhdbzr-34`)
Ich habe Ihren EA-Code so geändert, dass er nur Ereignisse abruft. (Ich habe die geänderte Version in früheren Nachrichten angehängt, es ist `mhdbzr-34` genannt)
Geben Sie Ihr Skript zum Schließen von Positionen.
Geben Sie Ihr Skript an geschlossene Positionen weiter.
hier ist der Code:
hier ist ein weiterer Test; dieses Mal hat er geschlossene Positionen nicht erkannt, er hat sie in zwei Fällen mit den vorherigen verpasst.
2020.08.27 20:30:18.880 Experte mhdbzr-34 AUDCAD,H1: entfernt
2020.08.27 20:30:18.869 mhdbzr-34 AUDCAD,H1: uninit Grund 1
2020.08.27 20:28:35.617 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.27 20:28:35.617 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.27 20:28:35.617 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.27 18:58:03.000 - AUDCAD Closed Buy #573721560 zu Preis 0.95218, Gewinn -2.29 USD
2020.08.27 20:28:35.614 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.27 18:58:04.000 - AUDCAD Geschlossen Buy #573721562 at price 0.95218, Profit -2.29 USD
2020.08.27 20:28:35.582 Script CloseTradesFast4Test AUDCAD,H1: entfernt
2020.08.27 20:28:35.577 CloseTradesFast4Test AUDCAD,H1: uninit Grund 0
2020.08.27 20:28:35.577 CloseTradesFast4Test AUDCAD,H1: close #573721560 buy 0.10 AUDCAD at 0.95218 at price 0.95188
2020.08.27 20:28:35.177 CloseTradesFast4Test AUDCAD,H1: close #573721562 buy 0.10 AUDCAD at 0.95218 at price 0.95188
2020.08.27 20:28:35.161 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.27 20:28:35.158 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.27 18:58:06.000 - AUDCAD Geschlossen Verkauf #573721573 zu Preis 0.95190, Gewinn -2.06 USD
2020.08.27 20:28:34.739 CloseTradesFast4Test AUDCAD,H1: close #573721571 buy 0.10 AUDCAD at 0.95224 at price 0.95191
2020.08.27 20:28:34.695 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.27 20:28:34.691 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.27 18:58:06.000 - AUDCAD Geschlossen Verkauf #573721573 zu Preis 0.95190, Gewinn -2.06 USD
2020.08.27 20:28:34.306 CloseTradesFast4Test AUDCAD,H1: close #573721573 sell 0.10 AUDCAD at 0.95190 at price 0.95217
2020.08.27 20:28:34.180 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.27 20:28:34.177 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.27 18:58:09.000 - AUDCAD Geschlossen Verkauf #573721582 zu Preis 0.95190, Gewinn -2.14 USD
2020.08.27 20:28:33.883 CloseTradesFast4Test AUDCAD,H1: close #573721577 sell 0.10 AUDCAD bei Preis 0.95190 at price 0.95217
2020.08.27 20:28:33.664 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geschlossen
2020.08.27 20:28:33.660 mhdbzr-34 AUDCAD,H1: - Position geschlossen: 2020.08.27 18:58:09.000 - AUDCAD Geschlossen Verkauf #573721582 zu Preis 0.95190, Gewinn -2.14 USD
2020.08.27 20:28:33.440 CloseTradesFast4Test AUDCAD,H1: close #573721582 sell 0.10 AUDCAD at 0.95190 at price 0.95218
2020.08.27 20:28:32.946 CloseTradesFast4Test AUDCAD,H1: initialisiert
2020.08.27 20:28:32.928 Script CloseTradesFast4Test AUDCAD,H1: erfolgreich geladen
2020.08.27 20:28:09.413 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position geöffnet
2020.08.27 20:28:09.411 mhdbzr-34 AUDCAD,H1: - Position eröffnet: 2020.08.27 18:58:09.000 - AUDCAD Opened 0.10 Sell #573721582 [0.10 Market-order Sell #573721582] at price 0.95190
2020.08.27 20:28:07.664 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position eröffnet
2020.08.27 20:28:07.659 mhdbzr-34 AUDCAD,H1: - Position eröffnet: 2020.08.27 18:58:07.000 - AUDCAD Eröffnet 0.10 Verkaufen #573721577 [0.10 Market-order Verkaufen #573721577] zum Preis 0.95190
2020.08.27 20:28:06.755 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position eröffnet
2020.08.27 20:28:06.752 mhdbzr-34 AUDCAD,H1: - Position eröffnet: 2020.08.27 18:58:06.000 - AUDCAD Eröffnet 0.10 Verkaufen #573721573 [0.10 Market-order Verkaufen #573721573] zum Preis 0.95190
2020.08.27 20:28:05.911 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position eröffnet
2020.08.27 20:28:05.909 mhdbzr-34 AUDCAD,H1: - Position eröffnet: 2020.08.27 18:58:05.000 - AUDCAD eröffnet 0.10 Buy #573721571 [0.10 Market-order Buy #573721571] zum Preis von 0.95224
2020.08.27 20:28:04.587 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position eröffnet
2020.08.27 20:28:04.582 mhdbzr-34 AUDCAD,H1: - Position eröffnet: 2020.08.27 18:58:04.000 - AUDCAD eröffnet 0.10 Buy #573721562 [0.10 Market-order Buy #573721562] zum Preis von 0.95218
2020.08.27 20:28:04.101 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Position eröffnet
2020.08.27 20:28:04.099 mhdbzr-34 AUDCAD,H1: - Position eröffnet: 2020.08.27 18:58:03.000 - AUDCAD eröffnet 0.10 Buy #573721560 [0.10 Market-order Buy #573721560] zum Preis von 0.95218
2020.08.27 20:27:59.245 mhdbzr-34 AUDCAD,H1: initialisiert
2020.08.27 20:27:59.244 mhdbzr-34 AUDCAD,H1: Konto 13278180: mhdbzr test (Alpari) 5537.01 USD, 1:100, Hedge, Demokonto MetaTrader 4
2020.08.27 20:27:49.794 Expert TestDoEasy\Part34\mhdbzr-34 AUDCAD,H1: erfolgreich geladen
Ich habe diese Trades manuell auf dem Live-Markt im Demokonto eröffnet, nicht in der Testumgebung. (und mit dem Skript geschlossen, wie ich es zuvor getan habe)
(hier ist der Screenshot, um sicher zu sein, dass es passiert ist)
hier ist ein weiterer Test; dieses Mal erkannte er geschlossene Positionen nicht, er verpasste sie mit den vorherigen in zwei Fällen.
Ich habe diese Geschäfte manuell auf dem Live-Markt im Demokonto eröffnet, nicht in der Testumgebung. (und schloss mit dem Skript, wie ich es vorher tat)
(hier ist der Screenshot, um sicher zu sein, dass es passiert ist)
Ich bin auf der Suche nach der Ursache des Problems. Es wird nicht schnell gehen. Vielen Dank für die Tests.
Ich bin auf der Suche nach der Ursache des Problems. Es wird nicht schnell gehen. Vielen Dank für die Tests.
(hier ist meine Meinung)
Die geschlossenen Positionen sind in der gleichen Sekunde, eine von ihnen wurde in der vorherigen Tickzeit bearbeitet, so dass sie in der neuen Tickzeit `New_history_orders=1`, aber zwei Positionen in der `Liste` hat und wahrscheinlich falsch sortiert ist, weil zwei Positionen die gleiche Abschlusszeit in der Sekunde haben.
Wenn der Auftrag bereits in der Liste ist und eine Fehlermeldung auslöst, dann wird das Positionsobjekt gelöscht und die Zählung in dieser for-Schleife fortgesetzt, aber ich denke, es sollte nicht n zählen, wenn der Auftrag innerhalb derCreateNewEvent-Funktion gelöscht wurde, um die nächste gültige Position zu erfassen.
Außerdem müssen wir die kürzlich bearbeiteten Positionen verstehen, um falsch sortierte Aufträge zu überspringen und nicht für `n` herunterzuzählen.
(hier ist meine Meinung)
diese geschlossenen Positionen sind in der gleichen Sekunde, einer von ihnen ist in der vorherigen Tick Zeit behandelt, so dass in der neuen Tick, es hat ` new_history_orders =1`, aber zwei Positionen in der ` Liste` und sortiert wahrscheinlich falsch, weil zwei Positionen haben die gleiche Zeit in der zweiten schließen.
Wenn der Auftrag bereits in der Liste ist und eine Fehlermeldung auslöst, dann wird das Positionsobjekt gelöscht und die Zählung in dieser for-Schleife fortgesetzt, aber ich denke, es sollte nicht n zählen, wenn der Auftrag innerhalb der CreateNewEvent-Funktion gelöscht wurde, um die nächste gültige Position zu erfassen.
Außerdem müssen wir die kürzlich bearbeiteten Positionen verstehen, um falsch sortierte Aufträge zu überspringen und nicht für `n` herunterzuzählen.
Danke, ich werde es herausfinden.
Hallo Artyom, ich erinnere mich, dass du diese zukünftige grafische Shell erwähnt hast, als ich diese Artikel vor einigen Wochen zum ersten Mal gelesen habe... Kannst du uns mehr Details über deine Vision für diese Shell geben und was sie uns in der Praxis ermöglichen wird?