Wenn Sie diesen EA auf einem Konto ohne aktuelle Positionen oder Aufträge ausführen.
und dann die vom EA eröffnete Position manuell schließen, dann gibt es drei offene Positionen in der Absicherung (auf der Netting-Dreifach-Volumen-Position).
Ist dies das richtige Verhalten? Wahrscheinlich habe ich das Terminal nicht richtig verstanden. Dann klären Sie bitte auf.
Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction(). В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.
Einfach ausgedrückt, kann der OnTrade()-Handler für jeden einzelnen Handel aufgerufen werden. Die Schließung einer Position kann zur Folge haben, dass mehrere separate Transaktionen anfallen.
Dies lässt sich leicht überprüfen - fügen Sie einfach Print() zu OnTrade() Ihres Beispiels hinzu.
Außerdem möchte ich Ihre Aufmerksamkeit auf Ihren vorherigen Test lenken, in dem Sie vergeblich erwarten, das Auftragsticket durch OrderSendAsync() zu kennen.
Außerdem möchte ich Sie darauf aufmerksam machen, dass Sie laut Ihrem vorherigen Test vergeblich erwarten, das Auftragsticket über OrderSendAsync() herauszufinden.
Es scheint, dass sie nirgendwo zu finden ist. Nur HistorySelect verzögert sich in OnTrade.
Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction(). В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.
Einfach ausgedrückt, kann der OnTrade()-Handler für jede einzelne Handelstransaktion aufgerufen werden. Die Schließung einer Position kann zur Folge haben, dass mehrere separate Transaktionen anfallen.
Es ist leicht zu überprüfen - fügen Sie einfach Print() zu OnTrade() Ihres Beispiels hinzu.
Natürlich habe ich den Abdruck gemacht. Die Frage bezog sich nicht auf die Anzahl der OnTrade-Aufrufe, sondern auf die Anzahl der offenen Positionen.
Nach dem ersten OnTrade wird ein Marktauftrag erteilt. Beim nächsten OnTrade darf diese Marktorder keine weiteren Orders durch die Bedingung öffnen lassen. Aber im nächsten OnTrade ist die Summe von OrdersTotal() + PositionsTotal() ebenfalls Null. Ist das richtig?
Ich habe natürlich den Ausdruck gemacht. Die Frage bezog sich nicht auf die Anzahl der OnTrade-Aufrufe, sondern auf die Anzahl der offenen Positionen.
Nach dem ersten OnTrade wird ein Marktauftrag erteilt. Beim nächsten OnTrade darf diese Marktorder keine weiteren Orders durch die Bedingung öffnen lassen. Aber im nächsten OnTrade ist die Summe von OrdersTotal() + PositionsTotal() ebenfalls Null. Ist das richtig?
Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки. Торговый сервер при обработке полученного запроса отправляет клиентскому терминалу ответное сообщение об изменении текущего состояния позиций, ордеров и сделок, которое приводит к генерации события Trade.
OrdersTotal() kann also zweifellos null sein. Dies gilt auch für PositionsTotal(). Das hängt von den Transaktionen, ihrer Art und ihrem Inhalt ab.
"и режим вывода сообщений в журнал "Эксперты". По умолчанию выводятся все детали.\r\n" //| Expert initialization function | //| Expert deinitialization function | //| TradeTransaction function |...
Jeder Auftrag hat einen Status, der seinen Zustand beschreibt. Um Informationen zu erhalten, verwenden Sie die FunktionenOrderGetInteger() oderHistoryOrderGetInteger() mit dem Modifikator ORDER_STATE. Gültige Werte werden in der Aufzählung ENUM_ORDER_STATE gespeichert.
ENUM_ORDER_STATE
Kennung
Beschreibung
AUFTRAG_ZUSTAND_GESTARTET
Auftrag auf Korrektheit geprüft, aber noch nicht vom Makler angenommen
Tritt der Started-Status nicht nach einem erfolgreichen OrderSendAsync auf?
Wenn Sie diesen EA auf einem Konto ohne aktuelle Positionen oder Aufträge ausführen.
und dann die vom EA eröffnete Position manuell schließen, dann gibt es drei offene Positionen in der Absicherung (auf der Netting-Dreifach-Volumen-Position).
Ist dies das richtige Verhalten? Wahrscheinlich habe ich das Terminal nicht richtig verstanden. Dann klären Sie bitte auf.
Als erstes sollten Sie die Hilfe lesen.
https://www.mql5.com/ru/docs/event_handlers/ontrade
Bitte beachten:
Einfach ausgedrückt, kann der OnTrade()-Handler für jeden einzelnen Handel aufgerufen werden. Die Schließung einer Position kann zur Folge haben, dass mehrere separate Transaktionen anfallen.
Dies lässt sich leicht überprüfen - fügen Sie einfach Print() zu OnTrade() Ihres Beispiels hinzu.
Außerdem möchte ich Ihre Aufmerksamkeit auf Ihren vorherigen Test lenken, in dem Sie vergeblich erwarten, das Auftragsticket durch OrderSendAsync() zu kennen.
Außerdem möchte ich Sie darauf aufmerksam machen, dass Sie laut Ihrem vorherigen Test vergeblich erwarten, das Auftragsticket über OrderSendAsync() herauszufinden.
Es scheint, dass sie nirgendwo zu finden ist. Nur HistorySelect verzögert sich in OnTrade.
Sie scheint nirgendwo aufzutauchen. Es werden nur die HistorySelect-Verzögerungen in OnTrade angezeigt.
Als Erstes sollten Sie das Merkblatt lesen.
https://www.mql5.com/ru/docs/event_handlers/ontrade
Bitte beachten Sie:
Einfach ausgedrückt, kann der OnTrade()-Handler für jede einzelne Handelstransaktion aufgerufen werden. Die Schließung einer Position kann zur Folge haben, dass mehrere separate Transaktionen anfallen.
Es ist leicht zu überprüfen - fügen Sie einfach Print() zu OnTrade() Ihres Beispiels hinzu.
Natürlich habe ich den Abdruck gemacht. Die Frage bezog sich nicht auf die Anzahl der OnTrade-Aufrufe, sondern auf die Anzahl der offenen Positionen.
Nach dem ersten OnTrade wird ein Marktauftrag erteilt. Beim nächsten OnTrade darf diese Marktorder keine weiteren Orders durch die Bedingung öffnen lassen. Aber im nächsten OnTrade ist die Summe von OrdersTotal() + PositionsTotal() ebenfalls Null. Ist das richtig?
Danke, ich habe den Teil mit dem Kopieren und Einfügen nicht gesehen.
Sie scheint nirgendwo aufzutauchen. Es werden nur HistorySelect-Verzögerungen in OnTrade angezeigt.
Die Zwischenspeicherung von Bestellungsauswahlen wurde heute noch verbessert, in ein paar Stunden wird es eine Beta-Version geben.
Die Zwischenspeicherung von Bestellungsauswahlen wurde heute noch verbessert, in ein paar Stunden wird es eine Beta-Version geben.
Meinen Sie HistorySelect? Nur der Autolink führt nicht zu OrderSelect.
Irgendeine Idee, warum mt5 nicht über die Registerkarte "Provisionen"? Sie erscheinen nur, wenn ein Geschäft abgeschlossen ist.
Irgendeine Idee, warum mt5 nicht über "Kommissionen" Registerkarte? Sie erscheinen nur, wenn ein Geschäft abgeschlossen ist.
Ich habe natürlich den Ausdruck gemacht. Die Frage bezog sich nicht auf die Anzahl der OnTrade-Aufrufe, sondern auf die Anzahl der offenen Positionen.
Nach dem ersten OnTrade wird ein Marktauftrag erteilt. Beim nächsten OnTrade darf diese Marktorder keine weiteren Orders durch die Bedingung öffnen lassen. Aber im nächsten OnTrade ist die Summe von OrdersTotal() + PositionsTotal() ebenfalls Null. Ist das richtig?
Es ist alles in der Hilfe: https://www.mql5.com/ru/docs/trading/ordersendasync
Alles steht in der Hilfe: https://www.mql5.com/ru/docs/trading/ordersendasync
https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_state
Jeder Auftrag hat einen Status, der seinen Zustand beschreibt. Um Informationen zu erhalten, verwenden Sie die FunktionenOrderGetInteger() oderHistoryOrderGetInteger() mit dem Modifikator ORDER_STATE. Gültige Werte werden in der Aufzählung ENUM_ORDER_STATE gespeichert.
ENUM_ORDER_STATE
Kennung
Beschreibung
AUFTRAG_ZUSTAND_GESTARTET
Auftrag auf Korrektheit geprüft, aber noch nicht vom Makler angenommen
Tritt der Started-Status nicht nach einem erfolgreichen OrderSendAsync auf?