Diskussion zum Artikel "Die Ereignisverarbeitungsroutine "Neuer Balken""

 

Neuer Artikel Die Ereignisverarbeitungsroutine "Neuer Balken" :

Die Programmiersprache MQL5 kann helfen, Probleme auf einer ganz neuen Ebene zu lösen. Selbst Aufgaben, für die es bereits eine Lösung gibt, können dank der objektorientierten Programmierung auf ein höheres Niveau gebracht werden. In diesem Beitrag geht es um ein besonders einfaches Beispiel für die Überprüfung des Auftretens eines neuen Balkens in einem Diagramm, das in ein leistungsfähiges und vielseitiges Hilfsmittel verwandelt wurde. Was ist das für ein Hilfsmittel? Das verrät dieser Artikel.

Autor: Konstantin Gruzdev

 
Oh Gott... ich konnte es nicht durchstehen... Ich wünschte, die Entwickler hätten einfach die Funktion isNewBar als Standard eingeführt.... die Menge an Fehlern ist atemberaubend... und das bei einer primitiven Funktion für das Erscheinen eines neuen Balkens
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
Ich würde sagen, dass
 

Vielen Dank, ein sehr guter Artikel.

На форуме как-то проскользнула мысль о том, что было бы хорошо иметь стандартный обработчик события «новый бар». Быть может когда-то разработчики придут к этому, а может и нет.

Warum es durchgerutscht ist. Genau hier steht in großen Buchstaben https://www.mql5.com/ru/forum/2176/page21/#comment_26385, dass isNewBar() notwendig ist und programmiert werden kann.

Weiterhin kann man das Spiel "Finde zehn Unterschiede" spielen. Abgesehen von den Seltsamkeiten der Arbeit des Expert Advisors auf dem Demokonto, ist es offensichtlich, dass es Unterschiede auf dem Demokonto und im Tester gibt, und sie sind mit bloßem Auge sichtbar... Ich überlasse es den Leidenschaften im Forum oder dem nächsten Artikel, wenn es einen Bedarf dafür gibt.

Man kann die Leidenschaften nicht sehen, ich fürchte, viele Leute haben sie nicht einmal gesehen. Die Leidenschaften in der Meisterschaft werden beginnen, wenn die Ratsmitglieder anfangen zu fallen....

Jetzt können wir noch weiter gehen und einen NewBar-Event-Handler für mehrere Währungen erstellen. Aber das ist das Thema eines ganzen Artikels.

Und dazu kann ich nur ein großartiges Gedicht eines großen Dichters hinzufügen.

Oh, wie viele wunderbare Entdeckungen

Bereiten den Geist der Erleuchtung vor

Und Erfahrung, der Sohn schwieriger Fehler,

Und das Genie, der Freund der Paradoxien,

Und der Zufall, der Erfinder Gottes....

 
Prival:

Vielen Dank, ein sehr guter Artikel.

Warum es durchgerutscht ist. Genau dort steht in großen Buchstaben https://www.mql5.com/ru/forum/2176/page21/#comment_26385, dass isNewBar() benötigt wird und programmiert werden kann.

Ups, das habe ich irgendwie übersehen. Hätte noch ein paar Ideen einbringen können. Übrigens habe ich einen EA gepostet, der auf Punkt 5 basiert. Er ist allerdings roh.

Man kann die Leidenschaften nicht sehen, ich fürchte, viele Leute haben es nicht einmal gesehen.

Ja, es scheint, dass viele Leute immer noch unter dem Schock des Beginns der Meisterschaft stehen.

Und dazu kann ich nur ein großes Gedicht, einen großen Dichter hinzufügen.

Ein Gedicht zum Thema. Ich wünschte, jemand würde echte Lösungen anbieten.

 
maryan.dirtyn:
es wäre besser, wenn die Entwickler einfach die Funktion isNewBar als Standardfunktion einführen würden...
Meiner Meinung nach macht es für die Entwickler keinen Sinn, eine Standardfunktion isNewBar einzuführen, da es ein Spezialfall von OnTick ist. Und ich stimme mit Prival überein, dass dies ein programmierbares Ereignis ist.
[Gelöscht]  
Lizar:
Meiner Meinung nach macht es für die Entwickler keinen Sinn, eine Standardfunktion isNewBar einzuführen, da dies ein Spezialfall von OnTick ist. Und ich stimme mit Prival überein, dass dies ein programmierbares Ereignis ist.

Es ist wahrscheinlich sogar notwendig, eine Standardverarbeitung dieses Ereignisses einzuführen. Zumindest auf der Expertenebene.

Zumindest ist es unter dem Gesichtspunkt des Multithreading in der Arbeit sinnvoller. Schließlich kann jede Verarbeitung auf der Terminalebene in mehreren Threads organisiert werden, aber in MQL werden wir nur einen Thread bekommen.

Meiner Meinung nach ist die Standardverarbeitung besonders für die Arbeit mit mehreren Währungen von Vorteil.

PS

Generell sollten die Entwickler darüber nachdenken, die bestehenden Event-Handler, also OnTrade() und OnTick(), zu ändern.

Ich persönlich würde es vorziehen, wenn sie zumindest ein Symbol als Parameter hätten...

 

Ich würde auch OnTick() ändern, oder besser gesagt seine Logik. Jetzt wird dieses Ereignis erzeugt, wenn ein neuer Tick auf dem Währungspaar, an dem der Expert Advisor hängt, auftritt. Unter dem Gesichtspunkt der Multiwährungsanalyse wäre es besser (so denke ich), dieses Ereignis zu erzeugen, wenn es einen neuen Tick auf einem beliebigen Instrument gibt.

D.h. die Matrix hat sich geändert (Überprüfung des Marktes), das newTick()-Ereignis wird mit generiert und gibt an, was sich in der Matrix geändert hat. Es wäre bequemer, alles zu synchronisieren .

Selten, aber es gibt Situationen, in denen die Notierungen für ein Instrument für eine lange Zeit einfrieren (ich habe eine solche Situation beim Yen gesehen). Und wenn der Expert Advisor bei diesem Paar hängen bleibt, haben Sie ein Problem, wenn Sie den gesamten Code nicht in OnTime() übersetzt haben.

 
Interesting:

Wahrscheinlich ist es sogar notwendig, eine Standardverarbeitung für dieses Ereignis einzuführen. Zumindest auf der Expertenebene.

Zumindest ist es unter dem Gesichtspunkt des Multithreading bei der Arbeit sinnvoller. Schließlich kann jede Verarbeitung auf der Terminalebene in mehreren Threads organisiert werden, und von MQL werden wir nur einen Thread bekommen.

Ja, ich stimme mit der Frage des Multithreading überein. Aber dies ist ein allgemeines Problem der Verarbeitung von Ereignissen, nicht speziell NewBar.
 
Prival:

D.h. die Matrix hat sich geändert (Marktübersicht ), das newTick()-Ereignis wird mit generiert und zeigt an, was sich in der Matrix geändert hat. Es wäre bequemer, alles zu synchronisieren .


Ein solches Ereignis kann mit TimeCuurent() empfangen werden, aber was damit weiter zu tun ist, wie man es synchronisiert, ist eine Frage.
[Gelöscht]  
Prival:

Ich würde auch OnTick() ändern, oder besser gesagt seine Logik. Derzeit wird dieses Ereignis generiert, wenn ein neuer Tick für das Währungspaar, an dem der Expert Advisor hängt, auftritt. Aus der Sicht der Multi-Währungs-Analyse wäre es besser (so denke ich), dieses Ereignis zu generieren, wenn ein neuer Tick für jedes Instrument.


Nun, ich meine das Gleiche, in OnTick() und OnTrade() müssen Sie zumindest den Symbolnamen als Parameter hinzufügen (in OnTrade() ist es auch wünschenswert, den Ereignistyp hinzuzufügen).

In diesem Fall kann OnTick() beispielsweise immer dann generiert werden, wenn ein neuer Tick bei einem der Symbole (Instrumente) in der Übersicht auftritt.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5