Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1282
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
Das Problem liegt beim EA. Übrigens verbieten die Regeln für Shared Hosting dlls.
Früher hat das gut funktioniert. Ich hätte es mit kostenlosem Hosting versuchen sollen. Jedenfalls gab methaquotes 15 Pfund )))
Vielen Dank für die Antwort!
Der EA eröffnet Marktaufträge und modifiziert sie dann, setzt TP und SL. Einchecken des Testers. Der erste Auftrag wird unter Verwendung der erforderlichen Parameter geändert. Die zweite Order wird in dieselbe Richtung wie die erste eröffnet, aber die erste Order wird entsprechend den Parametern der zweiten Order geändert, und die zweite Order bleibt mit SL und TP gleich Null. In diesem Fall lautet die Bedingung: Wenn SL == 0 und TP == 0, wird die andere Reihenfolge geändert, da sie Parameter ungleich Null hat. Und warum? Die Änderung der Suche von der ersten zur letzten ändert nichts.
Noch eine Sache. Im Tester zeigt die Gewinnspalte Aufträge mit zwei offenen Aufträgen an, aber umgekehrt: der Gewinn des zweiten Auftrags wird im ersten offenen Auftrag angezeigt und umgekehrt. Und warum?
Es gibt noch mehr. Wir müssen eine Trendlinie zeichnen, die zwei Extrema folgt. Die Linie ist gezogen, aber sie ist ein Stummel von Takt zu Takt. Es handelt sich nicht um eine Trendlinie, sondern nur um ein Segment, während wir gerne eine Linie sehen würden.
Der EA eröffnet Marktaufträge und modifiziert sie dann, setzt TP und SL. Einchecken des Testers. Der erste Auftrag wird unter Verwendung der erforderlichen Parameter geändert. Die zweite Order wird in dieselbe Richtung wie die erste eröffnet, aber die erste Order wird entsprechend den Parametern der zweiten Order geändert, und die zweite Order bleibt mit SL und TP gleich Null. In diesem Fall lautet die Bedingung: Wenn SL == 0 und TP == 0, wird die andere Reihenfolge geändert, da sie Parameter ungleich Null hat. Warum? Die Änderung der Suche von der ersten zur letzten ändert nichts.
Noch eine Sache. Werden im Tester zwei Orders eröffnet, wird der Ordergewinn in der Spalte Gewinn angezeigt, d.h. der Gewinn der zweiten Order wird in der ersten offenen Order angezeigt und umgekehrt. Warum?
Es gibt noch mehr. Wir müssen eine Trendlinie zeichnen, die zwei Extrema folgt. Die Linie ist gezogen, aber sie ist ein Stummel von Takt zu Takt. Es handelt sich nicht um eine Trendlinie, sondern nur um ein Segment, während wir gerne eine Linie sehen würden.
1. Nicht ORDERS, sondern POSITIONS.
2. Formulieren Sie Ihre Frage - bisher habe ich eine Erzählung gesehen, aber keine Frage oder einen Algorithmus dafür, "wie man es gerne hätte".
1. Nicht ORDERERS, sondern POSITIONS
2. Formulieren Sie Ihre Frage - bisher habe ich eine Erzählung gesehen, aber nicht die Frage und den Algorithmus, "wie Sie wollen, dass es funktioniert".
Sie wissen, dass es sich um Positionen handelt, da sie in mql5 enthalten sind. Und es gibt eine Stelle im Kodex. Die Frage ist, warum die erste Position geändert wird und nicht die letzte, obwohl sie in der Bedingung angegeben ist:
Es ist klar, dass die Positionen vorhanden sind, da sie in mql5 enthalten sind. Und im Code ist es die Position. Die Frage ist, warum die erste Position geändert wird und nicht die letzte, obwohl sie in der Bedingung angegeben ist:
Die Frage ist nur, wo. Beschreiben Sie den Algorithmus "Ich möchte, dass der Algorithmus so aussieht ...".
Die Frage ist nur, wo? Beschreiben Sie den Algorithmus: "Ich möchte, dass der Algorithmus wie folgt aussieht ...".
Wenn die Trendlinie durchbrochen wird und der Balken über/unter ihr schließt, eröffnen wir eine Position mit SL und TP Null. Unmittelbar nach der Eröffnung werden die erforderlichen TP und SL gesetzt (die Position wird geändert). Denn es ist nicht die letzte Position, die geändert wird, sondern die vorherige, während die Bedingung verletzt wird:
Ist es jetzt klar? Auch wenn wir den Zeitpunkt der Positionseröffnung in die Bedingung aufnehmen, ändert sich nichts. Es gibt keine Begrenzung der Anzahl der Stellen.
Wenn die Trendlinie durchbrochen wird und der Balken über/unter ihr schließt, wird eine Position mit SL und TP Null eröffnet. Unmittelbar nach der Eröffnung werden die erforderlichen TP und SL gesetzt (die Position wird geändert). Denn es ist nicht die letzte Position, die geändert wird, sondern die vorherige, während die Bedingung verletzt wird:
Ist es jetzt klar? Auch wenn wir den Zeitpunkt der Positionseröffnung in die Bedingung aufnehmen, ändert sich nichts. Es gibt keine Begrenzung der Anzahl der Stellen.
Sind Sie sicher, dass zum Zeitpunkt der Änderung bereits eine neue Position existiert? (Das Absenden eines Handelsauftrags ist keine Garantie dafür, dass die Position existiert).
Bei Eingabe der Bedingung (SL == 0.0 und TP == 0.0) drucken Sie das Positionsticket.
Sind Sie sicher, dass die neue Stelle zum Zeitpunkt der Änderung bereits verfügbar ist? (Das Absenden eines Handelsauftrags ist keine Garantie dafür, dass eine Position existiert).
Wenn Sie die Bedingung (SL == 0.0 und TP == 0.0) eingeben, drucken Sie das Positionsticket.
Ja, die zweite Position ist bereits vorhanden. Ich lese gerade das Protokoll. Die Methode Verkaufen war erfolgreich, Code 10009. (Ticket #3). Und dann folgt eine Änderung, nur der Position mit Ticket #2, die auch erfolgreich ausgeführt wird (Änderung, obwohl, ich betone, nach den Bedingungen nicht passieren sollte, SL ist nicht mehr 0!).
Ich habe bereits geschrieben, dass ich es sowohl mit dem Zeitpunkt der Öffnung als auch mit dem Ticket versucht habe, ohne Erfolg. Zum Beispiel:
Ja, die zweite Position ist bereits vorhanden. Ich lese gerade das Protokoll. Die Methode Verkaufen war erfolgreich, Code 10009. (Ticket #3). Und dann folgt die Änderung, nur die Position mit Ticket #2, die auch erfolgreich durchgeführt wird.
Ich habe bereits geschrieben, dass ich es sowohl mit der Öffnungszeit als auch mit dem Ticket versucht habe, aber das ändert nichts an der vorherigen Position. Zum Beispiel:
Das heißt: Sie prüfen das Ergebnis der Position nicht und wollen das Ticket auch nicht ausdrucken. Wenn dies der Fall ist, fügen Sie den vollständigen Code an (fügen Sie ihn über die Schaltfläche an).
Das heißt: Sie prüfen das Ergebnis der Position nicht und wollen das Ticket auch nicht ausdrucken. In diesem Fall fügen Sie den vollständigen Code an (fügen Sie ihn über die Schaltfläche an)
Sie wollen das Ticket nicht einmal ausdrucken - ich verstehe das nicht. Hier ist ein Auszug aus dem Protokoll.
2021.02.01 12:54:55.338 2018.01.02 17:00:00 Markt verkaufen 0,01 EURUSD (1,20384 / 1,20402)
2021.02.01 12:54:55.338 2018.01.02 17:00:00 deal #2 sell 0.01 EURUSD at 1.20384 done (based on order #2)
2021.02.01 12:54:55.338 2018.01.02 17:00:00 deal done [#2 sell 0.01 EURUSD at 1.20384]
2021.02.01 12:54:55.338 2018.01.02 17:00:00 Auftrag ausgeführt Verkauf 0,01 zu 1,20384 [#2 Verkauf 0,01 EURUSD zu 1,20384]
2021.02.01 12:54:55.344 2018.01.02 17:00:00 CTrade::OrderSend: market sell 0.01 EURUSD [done at 1.20384]
2021.02.01 12:54:55.344 2018.01.02 17:00:00 Methode Sell() erfolgreich abgeschlossen. Rückgabecode = 10009 (abgeschlossen bei 1,20384)
2021.02.01 12:54:55.344 2018.01.02 17:00:00 position modified [#2 sell 0.01 EURUSD 1.20384 sl: 1.20813 tp: 1.20013]
2021.02.01 12:54:55.346 2018.01.02 17:00:00 CTrade::OrderSend: modify position #2 EURUSD (sl: 1.20813, tp: 1.20013) [done]
2021.02.01 12:54:55.346 2018.01.02 17:00:00 PositionModify() Methode erfolgreich ausgeführt. Rückgabecode = 10009 (erledigt).
============================================================================================================== разделил, появление второй позиции
2021.02.01 12:55:48.819 2018.01.03 09:00:00 Markt verkaufen 0,01 EURUSD (1,20442 / 1,20460)
2021.02.01 12:55:48.819 2018.01.03 09:00:00 deal #3 sell 0.01 EURUSD at 1.20442 done (based on order #3)
2021.02.01 12:55:48.819 2018.01.03 09:00:00 deal done [#3 sell 0.01 EURUSD at 1.20442]
2021.02.01 12:55:48.819 2018.01.03 09:00:00 Auftrag ausgeführt Verkauf 0,01 zu 1,20442 [#3 Verkauf 0,01 EURUSD zu 1,20442]
2021.02.01 12:55:48.821 2018.01.03 09:00:00 CTrade::OrderSend: market sell 0.01 EURUSD [done at 1.20442]
2021.02.01 12:55:48.821 2018.01.03 09:00:00 Sell() Methode erfolgreich ausgeführt. Rückgabecode = 10009 (abgeschlossen bei 1,20442)
====================================================================================================================== nach erfolgreicher Positionseröffnung, Änderung, aber vorheriger Auftrag
2021.02.01 12:55:48.821 2018.01.03 09:00:00 position modified [#2 sell 0.01 EURUSD 1.20384 sl: 1.20663 tp: 1.20154]
2021.02.01 12:55:48.823 2018.01.03 09:00:00 CTrade::OrderSend: Position #2 EURUSD ändern (sl: 1.20663, tp: 1.20154) [done]
2021.02.01 12:55:48.823 2018.01.03 09:00:00 PositionModify() Methode erfolgreich ausgeführt. Rückgabecode = 10009 (erledigt)
Ich habe den vollständigen Code für die Änderung der Position auf Sell gepostet, mit Optionen.