Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1208
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 macht keinen Unterschied. Ich hatte den Verdacht, dass es einen Unterschied gibt, weil ich bei der Platzierung von Aufträgen und Positionen den Positionen "Kommentare" zugewiesen habe, bei Aufträgen habe ich ihnen meine eigenen Kommentare zugewiesen. Wenn also ein Auftrag auf eine Position verschoben wird, erbt er den Kommentar des Auftrags.
Als wir dann die Positionen über die Kommentare überprüften, gab es ein Durcheinander... die Kommentare waren unterschiedlich. Das habe ich korrigiert.
In Ihrem Code habe ich überhaupt nicht gefunden oder verstanden, wie die Positionen geschlossen werden, wenn die Bedingung SELL_LIMIT ausgelöst wurde . Eigenkapital.
Es scheint, dass wir geprüft haben, ob alle Positionen geschlossen werden können, und das Flag dafür gesetzt ist
sondern in der FunktionCloseAllPositions();
es fehlt etwas.
Für den Fall, dass SELL_LIMIT ausgelöst wurde, gibt es keine Prüfung für das Schließen aller Positionen.
Vielleicht ist das gleichem_account.Equity()>= m_account.Balance()+15auf eine andere Weise implementiert?
Oder vielleicht liegt es daran, dass ich nicht richtig erklärt habe, was Mittelwertbildung in meinem Zusammenhang bedeutet.
Ich habe bereits oben erwähnt, dass schwebende Aufträge nichts damit zu tun haben. Ein schwebender Auftrag kann keinen Gewinn haben. Von dem Wort "überhaupt". Solange Sie das nicht klarstellen, können Sie nicht weitermachen.
Hinzugefügt: Ich habe eine Beispiellösung für zwei Fälle gezeigt:
Ich habe bereits oben darauf hingewiesen, dass schwebende Aufträge überhaupt nichts damit zu tun haben. Ein schwebender Auftrag kann keinen Gewinn haben. Von dem Wort "überhaupt". Solange Sie dies nicht klarstellen, kommen Sie nicht weiter.
Wladimir. Nun, ein schwebender Auftrag kann natürlich keinen Gewinn haben. Wir sprechen über den Gewinn, natürlich über offene Positionen.
Der einzige Unterschied besteht in der Art und Weise, wie diese Positionen eröffnet wurden. Wir brauchen für sie eine andere Schließungsmethode.
Wenn die zweite Position durch einen intelligenten SELL_STOP-Auftrag eröffnet wird, muss eine der beiden Positionen geschlossen werden, und zwar diejenige, die den größeren Gewinn der Position aufweist.
Wenn die zweite Position durch eine SELL_LIMIT-Order eröffnet wurde, sollten beide durch Equity(m_account.Equity()>= m_account.Balance()+15) geschlossen werden, es sei denn, der SL einer der beiden Positionen wird zuerst ausgelöst.
Hinzugefügt.
Ich habe eine Beispiellösung für zwei Fälle gezeigt:
Mit der zweiten Bedingung scheint alles in Ordnung zu sein. Aber aus irgendeinem Grund habe ich die zweite Bedingung öffnet die zweite Position und schließt es sofort in der Nähe von 0 -1,2.
Vielleicht habe ich den Gesamtgewinn an einer falschen Stelle angegeben?
InpProfitTarget = 15; Wenn hier, es funktioniert nicht.
Wladimir. Natürlich kann ein schwebender Auftrag keinen Gewinn bringen. Wir sprechen über Gewinne, natürlich über offene Positionen.
Es gibt nur einen Unterschied in der Art und Weise, wie diese Positionen eröffnet wurden, und wir brauchen eine andere Schließungsmethode für sie.
Wenn die zweite Position durch einen intelligenten SELL_STOP-Auftrag eröffnet wird, muss eine der beiden Positionen geschlossen werden, und zwar diejenige, die den größeren Gewinn der Position aufweist.
Wenn die zweite Position durch eine SELL_LIMIT-Order eröffnet wurde, sollten beide durch Equity(m_account.Equity()>= m_account.Balance()+15) geschlossen werden, es sei denn, der SL einer der beiden Positionen wird zuerst ausgelöst.
Entschuldigung:
Ich habe eine Beispiellösung für zwei Fälle gezeigt:
Als nächstes tun Sie bitte selbst etwas.
Entschuldigung:
Ich habe eine Beispiellösung für zwei Fälle gezeigt:
Von hier aus können Sie selbst etwas tun.
Vielen Dank für Ihre Hilfe, Vladimir, ich versuche es.
2. wir haben mehr als zwei Positionen - wenn ihr Gesamtgewinn größer ist als der angegebene, schließen wir alle Positionen.
Aber ich brauchte es nicht, ich brauchte zwei oder mehr Positionen, wobei die zweite mitSELL_LIMIT Triggerung eröffnet wurde.
Trotzdem vielen Dank für Ihre Geduld und Ihre Bemühungen. Natürlich werde ich das Problem auf meine Weise lösen, ich werde es ertragen und lösen)))
Guten Abend Jungs, um nicht zu multiplizieren die Threads, hier ist eine Frage - das Skript eine ausstehende Stop-Order mit einem ganz bestimmten nehmen und zu stoppen, ist es nicht ausgeführt, und in den Kommentaren geschrieben wird [Illiquidität] - wie damit umzugehen - Schleife das Skript vor der Ausführung, setzen höhere Schlupf, oder geben Sie die Anzahl der Wiederholungen oder was ? Oder geben Sie mir einen Hinweis, wo ich graben soll.
Sie sollten immer in der Dokumentation nachsehen
AUFTRAG_ZEIT_GTC
Der Auftrag bleibt in der Warteschlange, bis er zurückgezogen wird.
Sie sollten immer in der Dokumentation nachsehen
AUFTRAG_ZEIT_GTC
Der Auftrag bleibt in der Warteschlange, bis er zurückgezogen wird.
Danke, das muss es sein
Guten Abend!
Es ist 1 Stelle zu besetzen.
Der Expert Advisor schließt eine Position mit der Methode PositionClose();
Das Ergebnis wird gedruckt ResultRetcode= 10009. Codebeschreibung: erledigt bei 0,00
Unterhalb des Codes befindet sich eine Prüfung if(PositionSelect(_Symbol)), die erfolgreich ist.
D.h. zwischen der Ausführung von PositionClose() und dem Verschwinden der offenen Position vergeht einige Zeit, in der es dem Programm gelingt, einen falschen Exit zu machen.
Wie kann man diese Situation richtig lösen?
Warum muss ich das Terminal nach einem Test jedes Mal neu starten, um einen neuen Test durchzuführen?
Ich lösche alle Objekte. Ich schließe Dateien. Hier ist das Protokoll, wenn ich den Test beende:
Beim nächsten Mal springt er nicht mehr an - ich muss das Terminal schließen und erneut öffnen. Gebäude 2361.