Mein Ansatz. Der Kern ist der Motor. - Seite 139

 
Georgiy Merts:

Überzeugt ihr alle Peter von den Vorteilen von OOP?

Artyom Trishkin:

Sie vergeuden Ihren Atem.

Ihr habt Recht, ich weiß das alles und ich verstehe es sehr gut. Aber anscheinend berührt Peter mit seinem "Ich will nicht, ich will nicht" einige mentale Fäden meiner OOP-Seele, so dass ich ständig in diese endlosen Erklärungen, Argumente und Streitereien verwickelt bin.

 
Реter Konow:

Und die Engine wird Kernel aus einer Textdatei laden. Das ist nicht schwer zu bewerkstelligen.

Oh, ich verstehe. Ja, so ist es besser. Ihr Kernel ist also eine Textdatei - im Wesentlichen eine Gruppe von Einstellungen für die Engine.

 
Реter Konow:

Nein, Vasiliy, du neigst dazu, alles zu dramatisieren.))

Im Konstruktor gibt es eine Schaltfläche, die, wenn sie angeklickt wird, alle Dateien ausgibt.

Und die Engine wird Kernel aus einer Textdatei laden. Das ist nicht schwer zu bewerkstelligen.

Entschuldigen Sie die Unterbrechung, aber ich frage mich gerade - wie soll die Überarbeitung durchgeführt werden? z.B. ändern Sie schlechte Namen oder allgemein die Zusammensetzung/Standort von Elementen

 
Vasiliy Sokolov:

Oh, ich verstehe. Ja, so ist es besser. Ihr Kernel ist also eine Textdatei - im Wesentlichen eine Gruppe von Einstellungen für die Engine.

Ja, ganz genau. Alle Informationen, die die Engine benötigt, um eine bestimmte grafische Benutzeroberfläche zu reproduzieren und mit ihr zu arbeiten. Im Moment installiere ich es direkt in den Motor, und dann werde ich es aus der Datei, die der Builder druckt, ladbar machen.

 
Maxim Kuznetsov:

Entschuldigen Sie die Unterbrechung, aber ich frage mich gerade, wie der Refactor funktionieren soll, z.B. durch das Ändern von schlechten Namen oder der Zusammensetzung/Position von Elementen im Allgemeinen.

Dies alles geschieht im Konstruktor. Der KIB-Code wird geschrieben und die Datei wird neu kompiliert.

So arbeiten Sie mit dem Konstruktorhttps://www.mql5.com/ru/blogs/post/717782

 
Vasiliy Sokolov:

Oder ein anderes Beispiel. Kürzlich wurde ich gebeten, einen prozeduralen Expert Advisor so zu modifizieren, dass er gleichzeitig auf mehreren Symbolen (auf einem Chart) handeln kann. Der verfahrenstechnische Stil hätte langwierige und komplizierte Bemühungen erfordert, um den Handel mit verschiedenen Symbolen gleichzeitig und unabhängig voneinander zu ermöglichen. Im Gegensatz dazu habe ich einfach den gesamten prozeduralen Code in einer Klasse untergebracht und drei Exemplare erstellt. Ich habe für jeden von ihnen einen eigenen Satz von Einstellungen festgelegt, einschließlich des Arbeitssymbols usw. Der Code funktionierte beim ersten Versuch einwandfrei. Der Code funktionierte auf Anhieb so, wie er sollte. Der Benutzer war zufrieden.

Ich hatte diese Woche ein ähnliches Beispiel. Ich wurde gebeten, einen Expert Advisor zu erstellen, der den Kauf bei der Eröffnung eines Balkens in einem TF und den Verkauf bei der Eröffnung eines Balkens in einem anderen TF eröffnet.)

Aber ich habe eine triviale Funktion zur Definition eines neuen Balkens in eine Klasse umgeschrieben und 2 Instanzen der Klasse erstellt, um einen neuen Balken zu definieren. Ich habe den Zeitrahmen der TF als Parameter während der Initialisierung des Konstruktors übergeben

5 Minuten Arbeit, aber es ist garantiert, dass alles funktioniert und es keine Verwirrung mit den Namen der Funktionen NewBar_TF1() , NewBar_TF2() .... geben wird. genauso wie es praktisch ist, nach Änderungen der Einstellungen durch den Benutzer zu initialisieren - löschen Sie das Objekt in DeInit(), erstellen Sie das Objekt in ONInit()

Imho ist OOP bequem und praktisch

 
Реter Konow:

Dies alles geschieht im Konstruktor. Der KIB-Code wird geschrieben und die Datei wird neu kompiliert.

So arbeiten Sie mit dem Konstruktorhttps://www.mql5.com/ru/blogs/post/717782

Aber es überschreibt alle benutzerdefinierten Bearbeitungen und Bindungen, die in den Ereignissen enthalten sind?
 
Реter Konow:

Ja, ganz genau...

Das ist der Grund, warum es bei Ihrem Motor viele Verwechslungen mit anderen gibt. Geben Sie den Elementen in Ihrem System nicht standardisierte Namen. Kein Kernel - sondern eine automatisch generierte Konfigurationsdatei.

 
Maxim Kuznetsov:
Aber es überschreibt alle Benutzereingaben, die in den Ereignissen enthalten sind?

Erklären Sie weiter.

 
Vasiliy Sokolov:

Das ist der Grund, warum es bei Ihrem Motor viel Verwirrung gibt und warum andere verwirrt sind. Geben Sie den Elementen in Ihrem System nicht standardisierte Namen. Es handelt sich nicht um einen Kernel, sondern um eine automatisch generierte Einstellungsdatei.

Die Datei ist also der gedruckte Kernel. Es gibt mehr als einen.