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
Vielleicht brauchen wir PositionTotal()?
Und was hat das mit der Position zu tun, wenn ich OrdersTotal() frage, wie viele Aufträge derzeit erteilt werden?
Und ich fordere diese Informationen in OnTrade() an, der Moment, in dem der Auftrag existiert, darf nicht verpasst werden.
Tatsächlich stellt sich aber heraus, dass dieser Zeitpunkt ohnehin verpasst wird und die Anträge entweder bearbeitet werden, wenn der Auftrag noch nicht vorliegt oder wenn er bereits vorliegt.
Aber der Moment, in dem er existiert, wird in OnTrade() nicht erkannt, oder aber, die OrdersTotal() liegt.
Um sich nicht über die Unvollkommenheit des Codes zu beschweren, hier der MetaQuotes-Code mit meiner Verbesserung des Skripts im Expert Advisor.
Die Funktion OnTrade() wurde hinzugefügt und der Skriptcode in OnInit() eingefügt.
Kein einziger Ausdruck zeigt eine Meldung an, dass ein Auftrag vorliegt.
Ich kann dies nur mit einem Artikel Handelsereignisse in MetaTrader 5 beantworten:
Заключение
Da alle Vorgänge in der MetaTrader 5 Handels- und Analyseplattform asynchron ablaufen und alle Änderungen auf dem Handelskonto unabhängig voneinander gemeldet werden, sollten Sie nicht versuchen, ein einzelnes Ereignis nach der Regel "Eine Anfrage - ein Handelsereignis" zu verfolgen. Wenn wir genau feststellen wollen, was sich nach dem Trade-Ereignis geändert hat, müssen wir bei jedem Aufruf des Handlers OnTrade alle Geschäfte, Positionen und Orders analysieren und sie mit dem Zustand vor dem Auftreten des Ereignisses vergleichen.Ich kann dies nur mit dem Artikel Trading Events in MetaTrader 5 beantworten:
Das bedeutet, dass der Auftrag, den Sie zu erfassen versuchen, wahrscheinlich bereits mit HistoryOrdersTotal durchsucht werden sollteIch lasse mich von diesem Artikel leiten. Ich möchte eine Antwort auf die Frage finden: Wie ist es möglich, dass ein Handelsereignis den Zeitpunkt verpasst, zu dem ein Auftrag erteilt, aber noch nicht ausgeführt wurde?
Handelsereignisse werden vom Server in den folgenden Fällen erzeugt
Ich vermute, dass OrderTotal() fehlschlägt. Aber ich kann es mit dieser Funktionalität nicht beweisen.
Obwohl als eine Option, die ich nicht ablehnen, dass OrderTotal() nimmt Daten nicht, wo ich denke, es ist (d.h. nicht auf dem Server).
Ich verfolge diesen Artikel. Ich möchte eine Antwort auf die Frage finden: Wie kommt es, dass ein Handelsereignis den Zeitpunkt verpasst, zu dem ein Auftrag erteilt, aber noch nicht ausgeführt wurde?
Wenn das Handelsereignis eintrifft, ist der Auftrag bereits erteilt und ausgeführt worden. Daher wurde dieser Auftrag noch nicht zu den aktiven Aufträgen gezählt und erscheint bereits in der Historie.
Ja, ja, meine Gedanken kreisen um diese Antwort.
Ich würde wie folgt antworten: Zum Zeitpunkt der Auftragserteilung erzeugt der Server ein "Trades"-Ereignis und sendet es an das Terminal. Wenn das Terminal es empfängt, wird im Code eine Anfrage nach der Anzahl der Aufträge gestellt, aber zu dem Zeitpunkt, an dem diese Anfrage beim Server eingeht, hat der Server den Auftrag bereits ausgeführt.
Eine andere Erklärung habe ich nicht.
Handelsereignisse werden in den folgenden Fällen vom Server erzeugt:
Ich vermute, dass OrderTotal() fehlschlägt. Aber ich kann es mit dieser Funktionalität nicht beweisen.
Verstehe ich das richtig, dass die Liste der aktiven Aufträge sowohl aktive schwebende Aufträge als auch Aufträge zur Eröffnung einer Position enthält?
Was bedeutet das?
... in der Registerkarte "Experten" erscheint diese Meldung. Es handelt sich nicht um einen Fehler, sondern um eine Warnung. Eine Warnung vor was?
Nun, ich habe nicht "Fehler" gesagt. Es soll eine "Warnung" sein. Ich habe meine Version bereits anhand eines Beispiels erläutert. Schauen Sie sich noch einmal die Diskussion von hier an (über Leitungslecks - lesen Sie bis zum Ende der Seite): https://www.mql5.com/ru/forum/1111/page345#comment_54616
Möglicherweise müssen Sie sich mit Einzelheiten zu Ihrer Situation an den Verwaltungsrat wenden.
Ich habe eine "Verwechslung" gefunden.
Warum mag der Compiler die zweite b-Variablendefinition nicht?
Und ganz allgemein: Wie gehe ich mit dieser Situation um?