Wünsche für MQL5 - Seite 59

 
diakin >> :

Welche Art von Veranstaltungen zum Beispiel?

Zum Beispiel, aus der Praxis, die Schließung einer Position. Ich hatte eine solche Aufgabe - zu wissen, wann eine Position geschlossen wurde, um andere Aufträge unter Berücksichtigung der freigegebenen Mittel zu ändern. Ich musste den Kontostand ständig überwachen. Ich habe versucht, die Bestellungen in der Historie zu verfolgen, aber es war unmöglich, sie zu testen, alles dauert sehr lange.

Das einzige Ereignis, das jetzt verarbeitet werden kann, ist ein Tick.

 
Gupm писал(а) >>

Zum Beispiel aus der Praxis, eine Position zu schließen. Ich hatte eine solche Aufgabe - zu wissen, wann eine Position geschlossen wurde, um andere Aufträge unter Berücksichtigung der freigegebenen Mittel zu ändern. Ich musste den Kontostand ständig überwachen. Ich habe versucht, die Bestellungen in der Historie zu verfolgen, aber es war unmöglich, sie zu testen, alles dauert sehr lange.

Das einzige Ereignis, das jetzt behandelt werden kann, ist ein Tick.

Aber wie auch immer, start() wird bei jedem Tick gestartet. Sie können dort beliebig prüfen, ob ein Ereignis eingetreten ist oder nicht.

 
diakin писал(а) >>

Wie auch immer, start() wird bei jedem Tick ausgeführt. Sie können dort jede Art von Überprüfung vornehmen, ob ein Ereignis eingetreten ist oder nicht.

Ja, das ist es, ich tue es jetzt, aber wie wunderbar wird es sein, wenn der Auftrag ein Objekt ist, das z.B. ein Schließungsereignis hat, an das Sie Ihren Handler binden und alles, dieser Teil des Codes ist absolut getrennt, debugged, etc.

 
Gupm писал(а) >>

Aber wie schön wird es sein, wenn der Auftrag ein Objekt ist, das z. B. ein Schließungsereignis hat, an das Sie Ihren Handler binden, und das war's. Dieser Teil des Codes ist dann völlig getrennt, debugged usw.

Ich denke, dass dies in MQL5 leicht zu bewerkstelligen ist.

;)

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

Der letzte Parameter ist der Name der Funktion, die beim Schließen des Auftrags aufgerufen werden soll. Der Compiler erkennt die Funktionen im Text sowieso und auch in den Parametern.

Und die Ereignisse werden intern behandelt, da die Nachricht über den Auftragsabschluss (oder Fehler) in das Protokoll gedruckt wird.

Es sind jedoch weitere Ereignisse zu erwarten, die ebenfalls in Parametern beschrieben werden müssten, zumindest mit leeren Werten, wie OnCloseEmpty, OnOpenEmpty , usw.

Im Allgemeinen wäre es gut, eine Liste von Vorlagen für häufig aufgerufene Funktionen hinzuzufügen, bei deren Auswahl die Funktionsvorlage mit allen erforderlichen Parametern in den Text eingefügt wird.

Nun müssen wir in die Hilfe gehen, die Beschreibung der Funktion kopieren und die Parameter bearbeiten.

 

Ich möchte einen Antrag für MQL5 stellen.

Entschuldigung, wenn ich es wiederhole, ich habe nicht alle früheren Artikel gelesen...

Ich wünschte, die Schleifen in new mql wären irgendwie gekennzeichnet, zum Beispiel so:

 
Duke3D писал(а) >>

...

Ich wünschte, die Schleifen in der neuen mql würden irgendwie hervorgehoben, z.B. so:

Machen Sie wenigstens eine Textformatierungstaste mit automatischer Einrückung für geschweifte Klammern.

Wenn jetzt eine Klammer übersehen wird, ist es sehr schwer, den Ort des Geschehens zu finden.

Und fügen Sie auch eine Zeilennummerierung hinzu. Das ist in C nicht üblich. Das ist bequemer, als in der Statusleiste nach der Zeilennummer zu suchen.

 
diakin >> :

Ich denke, das ist in MQL5 einfach zu machen.

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

;)

Der letzte Parameter ist der Name der Funktion, die beim Schließen des Auftrags aufgerufen werden soll. Der Compiler erkennt die Funktionen im Text sowieso, und er wird sie auch in den Parametern erkennen.

Und die Ereignisse werden intern behandelt, da sie eine Meldung über den Abschluss der Bestellung (oder einen Fehler) in das Journal drucken.

Es sind jedoch weitere Ereignisse zu erwarten, die ebenfalls in Parametern beschrieben werden müssten, zumindest mit leeren Werten, wie OnCloseEmpty, OnOpenEmpty , usw.

Im Allgemeinen wäre es gut, eine Liste von Vorlagen für häufig aufgerufene Funktionen hinzuzufügen, bei deren Auswahl die Funktionsvorlage mit allen erforderlichen Parametern in den Text eingefügt wird.

Jetzt muss ich in die Hilfe gehen, die Funktionsbeschreibung kopieren und die Parameter bearbeiten.

Warum nur onClose? Was ist mit onModify, onOpen?

Wenn es sich um ein Objekt handelt, sollte es vielleicht so aussehen:


TOrder order = new  TOrder(symbol, cmd,  volume, price, slippage, stoploss, takeprofit, comment);
order.addEventListener( "open", myOpenHandler);
order.addEventListener( "close", myCloseHandler);
order.addEventListener( "modify", myModifyHandler);
order.send();

Ы?

 
TedBeer писал(а) >>

Warum nur onClose? Was ist mit onModify, onOpen?

Wenn Ordnung ein Objekt ist, sollte es vielleicht so etwas geben:

Ы?

Das ist schwer zu sagen.

int ticket=OrderSend(parameters); // die übliche Funktion aus MQL4

order(ticket).addEvent ("open", myOpenHandler);

Oder noch kompakter

Order(ticket).OnOpen=myOpenHandler;

wobei Order(Handle) etwas Standardmäßiges ist, ein Objekt oder eine Struktur, über die Sie die Eigenschaften des angegebenen Objekt-Handles erreichen können.

double MeinVolumen=Bestellung(Ticket).Volumen;


Viele benutzerdefinierte Ereignisse können nicht aufgeschraubt werden. Oder können wir das?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

Wo ist "MyCustomEvent" in diesem Fall beschrieben? (wenn es sich NICHT um eine Kombination von Standardereignissen und Vorbedingungen handelt).

Aber soweit ich weiß, wurde MQL5 bereits geschrieben, es ist also ein Wunsch für die Zukunft ;)))

 
diakin >> :

Das ist schwer zu sagen.

int ticket=OrderSend(parameters); // übliche Funktion aus MQL4

Order(ticket).addEvent ("open", myOpenHandler);

Oder noch kompakter

Order(ticket).OnOpen=myOpenHandler;

wobei Order(handle) ein Standardobjekt oder eine Struktur ist, über die Sie die Eigenschaften des angegebenen Objekts handle erreichen können.

double MeinVolumen=Bestellung(Ticket).Volumen;


Viele benutzerdefinierte Ereignisse können nicht aufgeschraubt werden. Oder können wir das?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

Wo ist "MyCustomEvent" in diesem Fall beschrieben? (wenn es sich NICHT um eine Kombination von Standardereignissen und Vorbedingungen handelt).

Obwohl, wie ich verstehe MQL5 wurde bereits geschrieben, so ist es ein Wunsch für die Zukunft ;)))

Nun, Sie haben einen Mischmasch aus funktionalem Ansatz und OOP. Ideologisch sollte es entweder das eine oder das andere sein. Auch wenn die üblichen Funktionen aus Gründen der Abwärtskompatibilität beibehalten werden, sollte die OOP ebenfalls implementiert werden, denn was ist sonst der Sinn einer so tiefgreifenden Modernisierung namens MQL5?

Leider ähneln alle unsere Diskussionen dem Lesen von Teeblättern. Sie nützen nichts, da wir keine Bereitschaft von methaquotes sehen, nicht nur die Betaversion zur Verfügung zu stellen, sondern auch die Spezifikationen der Sprache, die sie implementiert haben, zu veröffentlichen. Dann könnten Sie vernünftigerweise darum bitten, etwas mit der Sprache zu machen, bevor Sie sie als Produkt freigeben.