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

 
Youri Lazurenko:

Ich danke Ihnen. In mql5 wurden keine solchen Labyrinthe gebaut. Statt direkt zum Ziel zu kommen, muss man Umwege machen, viele Sackgassen und Hindernisse überwinden. Eine Sprache um der Sprache willen.

In MQL4 legen Sie auch eine Magie für eine Position fest.

Hier haben Sie sich für ein Handelsobjekt aus SB entschieden. Das bedeutet, dass Sie bei seiner Erstellung und Initialisierung seine Parameter festlegen müssen. Und dann verwenden Sie es nur für Handelsfunktionen. Es kann viele solcher Objekte geben, und Sie werden für jedes einzelne unterschiedliche Parameter festlegen. Und dann - wenden Sie auf das notwendige Objekt für die Verwaltung von Handelsaufträgen auf jene Symbole und magischen Zeichen an, die für jedes bestimmte Objekt festgelegt wurden und die zu verschiedenen Zeitpunkten je nach TS benötigt werden.

So einfach ist das.

 
Hallo Artyom Trishkin! 2020.09.14_01:14 GMT+3. Ich habe den Standard-EA für gleitende Durchschnitte genommen und die beiden Bedingungen für die Eröffnung eines Handels und für die Schließung eines Handels geändert. Ich habe im Strategietester gesehen, dass der Expert Advisor nur die zweite Bedingung zum Öffnen und Schließen einer Position erfüllt hat. Die erste Bedingung wird ignoriert. Der Expert Advisor ist einfach wie er ist, aber wie schreibt man komplexe EAs, die alles zum Laufen bringen? Wie können mindestens zwei Bedingungen für die Eröffnung und Schließung von Geschäften erfüllt werden? Und es kann weitere Bedingungen für die Eröffnung von Geschäften geben. Kennen Sie die Antwort auf diese Fragen? Bitte um Rat. Ich füge eine Datei mit meinem Expert Advisor bei. 01:26 GMT+3.
Dateien:
 
Artyom Trishkin:

In MQL4 können Sie auch eine Magie für eine Position festlegen.

Hier haben Sie sich für ein Handelsobjekt aus SB entschieden. Das bedeutet, dass Sie beim Erstellen und Initialisieren die Parameter festlegen müssen. Und dann verwenden Sie es nur für Handelsfunktionen. Es kann viele solcher Objekte geben, und Sie werden für jedes einzelne unterschiedliche Parameter festlegen. Und dann - wenden Sie auf das notwendige Objekt für die Verwaltung von Handelsaufträgen auf jene Symbole und magischen Zeichen an, die für jedes bestimmte Objekt festgelegt wurden und die zu verschiedenen Zeitpunkten je nach TS benötigt werden.

So einfach ist das.

Hallo. Ich danke Ihnen für Ihre Antwort. Ich werde meine Sichtweise darlegen. Wenn wir in MQL4 einen Auftrag öffnen, geben wir seine Parameter einschließlich einer Magie an. In #include <Trade\OrderInfo.mqh> wird alles außer der Magie angegeben. Zum Beispiel - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). Meiner Meinung nach ist dies keine Lösung und wir sollten es durch die Einführung eines weiteren Magierparameters beheben. Oder #include <Trade\ HistoryOrderInfo.mqh> enthält alles außer dem Gewinn (Gewinn/Verlust), der durch den Auftrag erzielt wurde. Dies ist eine wichtige Information über die Bestellung, und sie fehlt. Wir müssen den Gewinn des letzten geschlossenen Auftrags ermitteln. Diese Informationen werden in Comment() angezeigt. Und wir werden sehen. Solange es keine offene Order (Position) gibt, zeigt der Kommentar den Gewinn der letzten Order an. Sobald die Order (Position) eröffnet wird, erhalten wir 0 im Kommentar, bis die Order geschlossen wird. D.h. der Auftrag ist noch auf dem Markt, aber gleichzeitig in der Geschichte, er bleibt in zwei Hypostasen gleichzeitig. Aber das ist Unsinn. Deshalb sage ich, dass die Sprache nur um der Sprache willen da ist. Meiner Meinung nach gibt es viele unvollständige Details.

 
Youri Lazurenko:


Sie verwechseln die Begriffe (insbesondere den Begriff "Ordnung"). Es kann ein FERNAUFTRAG oder eine POSITION auf dem Markt sein. Weitere Informationen finden Sie in der Hilfe:Allgemeine Grundsätze.

Die Klasse CTrade ist autark und weist keine Fehler auf, nur Ihr Unwillen, den Implementierungscode zu sehen. Beim Senden eines Handelsauftrags (zum Eröffnen oder Ändern einer POSITION) sendet die Handelsklasseninstanz eine magische Zahl - Sie müssen sie nur sofort beim Erstellen des Objekts initialisieren.


Es ist eine Frage der Gewohnheit.

Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
Youri Lazurenko:

Hallo. Ich danke Ihnen für Ihre Antwort. Ich werde meine Meinung äußern. Wenn wir in MQL4 einen Auftrag öffnen, geben wir seine Parameter einschließlich einer Magie an. In #include <Trade\OrderInfo.mqh> wird alles außer der Magie angegeben. Zum Beispiel - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). Meiner Meinung nach ist dies keine Lösung und wir sollten es durch die Einführung eines weiteren Magierparameters beheben. Oder #include <Trade\ HistoryOrderInfo.mqh> enthält alles außer dem Gewinn (Gewinn/Verlust), der durch den Auftrag erzielt wurde. Dies ist eine wichtige Information über die Bestellung, und sie fehlt. Wir müssen den Gewinn des letzten geschlossenen Auftrags ermitteln. Diese Informationen werden in Comment() angezeigt. Und wir werden sehen. Solange es keine offene Order (Position) gibt, zeigt der Kommentar den Gewinn der letzten Order an. Sobald die Order (Position) eröffnet wird, erhalten wir 0 im Kommentar, bis die Order geschlossen wird. D.h. der Auftrag ist noch auf dem Markt, aber gleichzeitig in der Geschichte, er bleibt in zwei Hypostasen gleichzeitig. Aber das ist Unsinn. Deshalb sage ich, dass die Sprache nur um der Sprache willen da ist. Meiner Meinung nach gibt es eine Menge unfertiger Details.

Jurij, es handelt sich nicht um einen Haufen unfertiger Details, sondern um einen Haufen von Missverständnissen.

Warum bei jeder Eröffnung eines Auftrags oder einer Position einen Zauberer schreiben, wenn es ausreicht, ihn einmal in OnInit() anzugeben.

#include <Trade\Trade.mqh>
CTrade trade;

sinput  int Magic = 1; //  Идентификатор эксперта

int OnInit()
 {
  trade.SetExpertMagicNumber(Magic);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

Das ist alles!!! Dann wird die Magie eines Auftrags, eines Geschäfts oder einer Position auf die gleiche Weise geprüft, um "Freund oder Feind" zu identifizieren. Das Problem liegt in Ihrem Kopf.

Ein Auftrag darf keinen Gewinn haben! Eine Position hat in der aktuellen Zeit einen Gewinn. Und eine Position hat einen Abschluss oder einen Teil einer Position, der jedoch in der Handelshistorie enthalten ist. Ein Auftrag ist lediglich ein Auftrag zur Durchführung einer Transaktion auf dem Markt.

Lassen Sie mich versuchen, in kolkhoznyy erklären. Sie kommen auf den Markt und wollen eine Gurke kaufen.

Haftbefehl: Gib mir ein Kilo davon...

Deal: Sie geben mir das Geld, Sie nehmen den Fisch...

Position: In deiner Tasche ist die Aprikose...

Vom Standpunkt des Verkäufers aus gesehen:

Position: Sie haben den Fischeintopf auf der Theke...

Auftrag: Sie erhalten den Auftrag, ein Kilo Fisch zu wiegen...

Transaktion: Übergeben Sie die Aprikosen, stecken Sie das Geld in die Tasche...

 
Youri Lazurenko:

Hallo. Ich danke Ihnen für Ihre Antwort. Ich werde meine Meinung äußern. Wenn wir in MQL4 einen Auftrag öffnen, geben wir seine Parameter einschließlich der Magie an. In #include <Trade\OrderInfo.mqh> wird alles außer der Magie angegeben. Zum Beispiel - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). Meiner Meinung nach ist dies keine Lösung und wir sollten es durch die Einführung eines weiteren Magierparameters beheben. Oder #include <Trade\ HistoryOrderInfo.mqh> enthält alles außer dem Gewinn (Gewinn/Verlust), der durch den Auftrag erzielt wurde. Dies ist eine wichtige Information über die Bestellung, und sie fehlt. Wir müssen den Gewinn des letzten geschlossenen Auftrags ermitteln. Diese Informationen werden in Comment() angezeigt. Und wir werden sehen. Solange es keine offene Order (Position) gibt, zeigt der Kommentar den Gewinn der letzten Order an. Sobald die Order (Position) eröffnet wird, erhalten wir 0 im Kommentar, bis die Order geschlossen wird. D.h. der Auftrag ist noch auf dem Markt, aber gleichzeitig in der Geschichte, er bleibt in zwei Hypostasen gleichzeitig. Aber das ist Unsinn. Deshalb sage ich, dass die Sprache nur um der Sprache willen da ist. Meiner Meinung nach gibt es eine Menge unfertiger Details.

Sie denken in Prozeduren, versuchen aber, OOP-Objekte zu verwenden. Sie werden auf eine andere Weise behandelt. Zum Beispiel:

Ein Objekt wird erstellt. Ein Magier ist darauf eingestellt.
Ein zweites Objekt wird erstellt. Ein zweiter Magier wird eingestellt.
Ein drittes Objekt wird erstellt. Ihm wird ein dritter Magier zur Seite gestellt.

Jetzt haben Sie drei Handelsobjekte für drei Strategien in einem EA.
Sie sollten das erste Handelsobjekt verwenden, um eine Position zu eröffnen oder eine Pending Order für den ersten TS zu platzieren.
Um eine Position zu eröffnen oder eine Pending Order für den zweiten TS zu setzen, müssen Sie sich auf das zweite Handelsobjekt beziehen.
Um eine Position zu eröffnen oder einen Pending-Auftrag für einen dritten TS zu platzieren, müssen Sie sich auf ein drittes Handelsobjekt beziehen.

Die Aufträge haben keinen Gewinnparameter. Aus einem einfachen Grund - ein Auftrag ist ein Auftrag (ein schwebender Auftrag ist ein Auftrag an einen Makler, eine bestimmte Aktion durchzuführen, wenn der Kurs ein bestimmtes Niveau erreicht, d.h. ein Auftrag, einen Handel nach einer gewissen Zeit auszuführen, wenn das festgelegte Kriterium erreicht ist). Ein Handel (Auftrag) kann zu einem Abschluss führen (er hat bereits den Gewinnparameter DEAL_PROFIT), der entweder zur Bildung einer Position oder zu deren Änderung oder Schließung führt (die Position hat ebenfalls den Gewinnparameter, aber nur einen aktuellen - gleitenden - POSITION_PROFIT).

Und dann gibt es noch den Marktauftrag (Market Order), der immer vor dem Handel erscheint, wenn Sie einen Handelsauftrag senden - das ist Ihr Handelsauftrag. Und sie ist in der Liste der bestehenden Aufträge sichtbar. Das heißt, jede Positionseröffnung erzeugt eine Kette: Auftrag --> Handel --> Position. Jede Aktion bei einer offenen Position führt zu einer Kette: Position --> Auftrag --> Handel --> keine Position, oder eine kleinere Position, oder eine größere Position (Netting), oder eine Positionsumkehr (Netting).

Studieren Sie die Referenz.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
Hallo! Ist es möglich, im Code des Indikators "Gleitender Durchschnitt" für den MT5 nicht standardisierte Perioden zu erstellen? Zum Beispiel nicht für 1 Kerze, sondern für 0,5? Ich verstehe, dass die Plattform noch Preisdaten hat und der Indikator wird sie teilen und runden...
 

Ich danke Ihnen allen. Insbesondere Alexey Viktorov- klar und konkret. Ich habe es bereits nachbearbeitet und überprüft. Jetzt haben wir die Information über den letzten Auftragsgewinn, und der EA verwendet sie. Das ist viel zu kompliziert, es gibt unnötige und überflüssige Verwirrung. Es gibt aktuelle Aufträge (schwebende, beauftragte /Markt/) und Aufträge, die in die Historie eingegangen sind, aber alle die gleichen Aufträge. Ich habe keinen Ohrwurm, ich habe einen Ohrwurm - der Überweisungsprozess ist kurzlebig und absolut irrelevant. Es stellt sich heraus, dass während die Bestellung des Verkäufers gewogen wird, die des Käufers irgendwie schon weg ist. D.h. es herrscht zwischenzeitlich Verwirrung und Unklarheit. Je einfacher, desto besser.

Aber trotzdem vielen Dank an alle und viel Glück.

 
Youri Lazurenko:

Ich danke Ihnen allen. Insbesondere Alexey Viktorov- klar und konkret. Ich habe es bereits nachbearbeitet und überprüft. Jetzt haben wir die Information über den letzten Auftragsgewinn, und der EA verwendet sie. Das ist viel zu kompliziert, es gibt unnötige und überflüssige Verwirrung. Es gibt aktuelle Aufträge (ausstehend, ausgelöst /Markt/) und Aufträge, die in die Historie eingegangen sind, aber alle dieselben Aufträge. Ich habe keinen Ohrwurm, ich habe einen Ohrwurm - der Überweisungsvorgang ist kurzlebig und absolut irrelevant. Es stellt sich heraus, dass zwar die Bestellung des Verkäufers gewogen wird, die des Käufers aber noch nicht. D.h. es herrscht zwischenzeitlich Verwirrung und Unklarheit. Je einfacher, desto besser.

Aber trotzdem vielen Dank, ich wünsche Ihnen allen viel Glück.

Das ist keine Eigenart der Terminalentwickler. Es war eine Eigenart, die gesamte Kette in ein einziges "Bestell"-Konzept in 4. Jetzt stimmt alles mit dem überein, was wirklich vor sich geht.

Und die Zeit, in der ein Stub aus dem Regal in die Tasche wandert, ist die Ausführungszeit eines Handelsauftrags. Da Sie also über sämtliche Daten zu den aktuellen Ereignissen verfügen, können Sie problemlos kontrollieren, wie schnell die Aufträge ausgeführt werden. Und nicht nur das. Jetzt haben Sie eine breite Palette von Möglichkeiten für die Implementierung beliebiger Statistiken auf jedem der Server, und wie gut sie Ihre Aufträge ausführen können.

 
Artyom Trishkin:

Dies ist keine Eigenart der Terminalentwickler. Es war eine Eigenart, die gesamte Kette in ein einziges "Auftrags"-Konzept in Quadruple einzupassen. Sie entspricht nun dem, was tatsächlich geschieht.

Und die Zeit, in der ein Stub aus dem Regal in die Tasche wandert, ist die Ausführungszeit eines Handelsauftrags. Wenn Sie also alle Daten über die Ereignisse haben, können Sie leicht kontrollieren, wie schnell die Aufträge ausgeführt werden. Und nicht nur das. Jetzt haben Sie viele Möglichkeiten, beliebige Statistiken auf einem der Server zu implementieren und zu sehen, wie gut sie Ihre Anforderungen erfüllen können.

Das soll keine Beleidigung sein, sondern nur der Diskussion entsprechen. Ich handele meine EAs schon seit langem (ich verkaufe sie nicht), mit verschiedenen Brokern und bin nicht anden absoluten Daten zu Ereignissen interessiert.Ich interessiere mich für das Endergebnis - die Qualität der Aufträge, die auf Anforderung eines EA ausgeführt werden. Wenn die Aufträge nur einmal eröffnet werden (bildlich gesprochen), werde ich einfach nicht mit diesem Broker arbeiten. Wenn der Auftrag des einen Brokers eine halbe Sekunde schneller als der des anderen eröffnet wird, ist das für mich nicht von Bedeutung (ebenso wenig wie der Unterschied in den Kursen).

Wie einfach ist es, einen EA in mql4 zu schreiben und wie lästig ist es mit mql5? Warum sind die Fragen über mql5? Ich habe gute Berichte über den MT5-Tester gehört und musste mich mit mql5 vertraut machen, um ihn auszuprobieren. Ich habe es ausprobiert und bin nicht zufrieden. Es ist bequem, Kurse herunterzuladen, es ist viel schneller, aber MT4 ist informativer. Ich möchte zum Beispiel nicht nur wissen, zu welchem Preis die Aufträge geschlossen wurden, sondern auch, welchen Gewinn (Verlust) sie gemacht haben. Die Vorwärtsoptimierung ist so prozessorintensiv, dass der Computer herunterfährt. Ich habe einmal versucht (das ist natürlich kein Beweis), ein und denselben Expert Advisor bei ein und demselben Broker laufen zu lassen. Die Ergebnisse sind unterschiedlich; mt5 ist besser - mehr Gewinn, deutlich weniger Drawdown, was anstrengend ist. Vielleicht bin ich senil, aber im Moment habe ich mehr Kritik als Positives. Ich werde noch nicht mit mt5 handeln, aber das Interesse am Schreiben eines guten Expert Advisors bleibt. Nur interessehalber.

Ich wünsche Ihnen viel Glück.

Grund der Beschwerde: