Der große und schreckliche MT4 für immer (oder wie man einen Übergang strategisch plant) - Seite 12
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
Es wäre toll, diesen Punkt auf MT4Orders-Ebene zu umgehen.
Leider finden jetzt Auftragssicherungen statt. Höchstwahrscheinlich aus diesem Grund.
https://www.mql5.com/ru/forum/93352/page40#comment_13943845 es?
https://www.mql5.com/ru/forum/93352/page40#comment_13943845 es?
Leider kommt es auch bei dieser Krücke zu Rückschritten.
Ich weiß nicht mehr, wie ich debuggen soll.
Leider kommt es auch bei dieser Krücke zu Rückschritten.
Ich weiß nicht mehr, wie ich debuggen soll.
Hier ist der Grund dafür (nicht, dass es nicht auch andere gäbe).
S. 6 ist am unangenehmsten. Wie man diesen MT5-Bug umgeht - ich habe es nicht herausgefunden.
Hier ist der Grund dafür (nicht, dass es nicht auch andere gäbe).
P.6. ist der unangenehmste. Wie man diesen MT5-Fehler umgehen kann - ich habe es nicht herausgefunden.
Die Prüfung auf "fehlende" Aufträge würde hier funktionieren. Aber es würde nicht funktionieren.
Ich muss irgendetwas durcheinander gebracht haben.
Eine Prüfung auf fehlende Aufträge würde hier funktionieren. Das funktioniert nicht.
Ich muss selbst etwas falsch gemacht haben.
Unter Punkt 7. "Der fehlende Auftrag wird angezeigt, aber es gibt immer noch keine Position.
Unter Punkt 7. Das "missing" ist gefunden, aber die Position ist immer noch nicht gefunden.
Bedeutet das, dass die Schleife auf MT4Orders::OrdersTotal() weder die Bestellung noch die Position sieht?
Ich dachte, dieser Punkt sei gelöst: entweder ist die Reihenfolge/Position in der Liste enthalten, oder die Reihenfolge "fehlt". Wie kann eine dritte Sache passieren?
Bedeutet dies, dass die MT4Orders::OrdersTotal()-Schleife weder Auftrag noch Position sehen wird?
In allen Punkten, mit Ausnahme von Punkt 6 und Punkt 7, ist eine Position sichtbar.
Ich dachte, dieser Punkt sei soeben gelöst worden: entweder ist die Reihenfolge/Position in der Liste enthalten, oder die Reihenfolge "fehlt". Wie kann es ein drittes geben?
Stellen Sie sich vor, dass Ihr EA die Position 6 erreicht, ohne etwas von der Tatsache zu wissen, dass es einen Auftrag gab. In diesem Fall kann er nicht wissen, dass die Situation dem fehlenden Auftrag entspricht.
Stellen Sie sich vor, dass Ihr EA zu Punkt 6 gelangt, ohne etwas über die Existenz eines Auftrags zu wissen. In diesem Fall kann er nicht wissen, dass die Situation dem fehlenden Auftrag entspricht.
Ich kann mir eine solche Situation nicht vorstellen, wenn die Limits in einiger Entfernung vom Preis (nicht im Spread) verwendet werden.
Er wird immer Zeit haben, die Reihenfolge in der Liste zu sehen. In der Folge wird der Auftrag entweder "vermisst" oder er wird zu einer Position.
Ich gebe zu, dass eine solche Situation möglich ist, wenn ein anderer EA eine Order zum aktuellen Preis ausgelöst hat und diese sofort zu füllen begann (Punkt 6).
Aber das erklärt immer noch nicht, warum der erste EA seinen Auftrag (mit seinem Magier) nicht mehr in der Liste von MT4Orders::OrdersTotal() sieht.
Es war überraschend einfach, die Situation in einem Live-EA zu reproduzieren - in dem Moment, in dem einer der Aufträge ausgeführt wurde, verlor der EA auch den anderen aus den Augen.
Wenn ich jedoch versuche, ein einfaches Beispiel zur Reproduktion zu erstellen, funktioniert alles einwandfrei. Es sieht so aus, als ob ich wirklich einen Fehler irgendwo in den Weiten meines Codes gemacht habe.
Hier ein Auszug aus der Dokumentation:
"DieReihenfolge, in der diese Transaktionen im Terminal eintreffen, ist nicht garantiert, so dass Sie Ihren Handelsalgorithmus nicht darauf aufbauen können, dass einige Transaktionen erst nach anderen eintreffen. " https://www.mql5.com/ru/docs/event_handlers/ontradetransaction
Und erfahrungsgemäß können die Transaktionen TRADE_TRANSACTION_ORDER_DELETE, TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_HISTORY_ADD in beliebiger Reihenfolge eintreffen.
Daher gibt es Situationen, in denen es noch keinen Deal oder keine Ordnung in der Geschichte gibt, die Ordnung aber bereits existiert. Oder umgekehrt: Der Auftrag ist noch da, aber das Geschäft wurde bereits ausgeführt. Aber die Situation, dass der Auftrag gleichzeitig im Aktiven und in der Geschichte ist, ist kaum möglich.
Das ist der Grund, warum wir uns geweigert haben, die Klasse CTrade zu verwenden - sie hat all diese Tücken.
Dieses Problem lässt sich dadurch lösen, dass jeder EA eine Liste seiner Aufträge führt und deren Zustand überwacht. Einschließlich "Nicht-Standard"-Status - "Bestellung gesendet, aber noch nicht in Betrieb" (hier können sie sich verdoppeln) oder "Bestellung gelöscht, aber noch nicht in der Geschichte". Es ist auch hilfreich, beim Netting gleichzeitig an demselben Symbol zu arbeiten.