Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1208

 
Vladpedro:

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:

  1. Wenn wir nur zwei Positionen haben, sollten wir diejenige suchen, die mehr Gewinn abwirft, und sie schließen.
  2. Wenn wir mehr als zwei Positionen haben und ihr Gesamtgewinn größer als der angegebene ist, schließen wir alle Positionen.
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Vladimir Karputov:

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:

  1. Wir haben nur zwei Positionen - also suchen wir diejenige mit mehr Gewinn und schließen sie.
  2. Haben Sie mehr als zwei Positionen - wenn ihr Gesamtgewinn mehr als die angegebene - schließen Sie alle Positionen

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.


 
Vladpedro:

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:

  1. Wir haben nur zwei Positionen - also suchen wir diejenige mit dem größeren Gewinn und schließen sie.
  2. Wenn wir mehr als zwei Positionen haben und deren Gesamtgewinn größer ist als der angegebene, schließen wir alle Positionen.


Als nächstes tun Sie bitte selbst etwas.

 
Vladimir Karputov:

Entschuldigung:

Ich habe eine Beispiellösung für zwei Fälle gezeigt:

  1. Wir haben nur zwei Positionen, also suchen wir diejenige mit dem höchsten Gewinn und schließen sie.
  2. Wir haben mehr als zwei Positionen - wenn ihr Gesamtgewinn höher ist als der angegebene, schließen wir alle Positionen.


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, nicht um Themen zu multiplizieren - meine Frage ist diese - das Skript eine ausstehende Stop-Order mit einem gut definierten nehmen und zu stoppen, ist es nicht ausgeführt, und in den Kommentaren vorgeschrieben ist [Illiquidität] - wie zu kämpfen - das Skript vor der Ausführung Schleife, eine höhere Schlupf eingestellt, oder die Anzahl der Wiederholungen oder was vorschreiben ? Oder geben Sie mir einen Hinweis, wo ich graben soll.
 
neitrino22:
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.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Alexey Viktorov:

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?

2020.04.27 15:19:08.415 Tester  XAUUSD: history data begins from 2014.02.12 00:00
2020.04.27 15:19:08.415 Tester  XAUUSD: history data begins from 2014.02.12 00:00
2020.04.27 15:19:08.415 Core 01 connecting to 127.0.0.1:3000
2020.04.27 15:19:08.415 Core 01 connected
2020.04.27 15:19:08.425 Core 01 authorized (agent build 2361)
2020.04.27 15:19:08.427 Tester  XAUUSD,M15 (Alpari-MT5-Demo): testing of Experts\ExpertTest.ex5 from 2017.07.26 00:00 to 2020.02.06 00:00
2020.04.27 15:19:08.466 Core 01 disconnected
2020.04.27 15:19:08.466 Core 01 connection closed

Ich lösche alle Objekte. Ich schließe Dateien. Hier ist das Protokoll, wenn ich den Test beende:

2020.04.27 15:15:43.188 Core 01 disconnected
2020.04.27 15:15:43.188 Core 01 connection closed
2020.04.27 15:15:43.189 Tester  stopped by user

Beim nächsten Mal springt er nicht mehr an - ich muss das Terminal schließen und erneut öffnen. Gebäude 2361.

 
Wie kann ich einen Kommentar zu einer geschlossenen Position in OnTradeTransaction erhalten?