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

 
Реter Konow:

Vielmehr stehe ich meiner Arbeit kritisch gegenüber. Deshalb werde ich auch immer besser.

Anatoly ist gut. Daran besteht kein Zweifel. Die Bibliothek ist gut.

Aber auch das Fenster, das ich Ihnen heute gezeigt habe, ist nur mit großen Schwierigkeiten zu erreichen. Ganz zu schweigen von vielem mehr.

Nur um des Interesses willen können Sie den Code, den Sie schreiben müssen, um mein Fenster zu wiederholen, hier zusammenstellen und zeigen, und wir werden ihn mit meiner Version vergleichen.

Frage an Sie: Können Sie beschreiben, warum dieses Fenster benötigt wird und wie es beim halbautomatischen Handel hilft?

 
Реter Konow:

Warum haben Sie die GUI-Bibliothek geschrieben?

DieArbeit mit grafischen Objekten in MT4 ist auch die zeitaufwändigste. Sie müssen nicht nur ein Objekt erstellen, sondern auch eine Reihe von Eigenschaften festlegen. Um die Arbeit mit grafischen Objekten zu vereinfachen, habe ich mehrere Funktionen entwickelt, mit denen sich schnell einige grafische Objekte erstellen lassen. Mit dem Erscheinen von MT5 hatten alle grafischen Objekte noch mehr Eigenschaften und die Anzahl der Parameter in den Funktionen stieg so stark an, dass sie albern aussahen. Daher stellte sich die Frage, wie die Arbeit mit grafischen Objekten unter den neuen Bedingungen vereinfacht werden kann. Als OOP aufkam, wurden seine Anwendungen in Betracht gezogen. Als Ergebnis wurde zunächst eine Klasse für die schnelle Arbeit mit einem grafischen Objekt geschaffen. Dann kam die Idee auf, mehrere zusammengesetzte Elemente zu schaffen. Die Idee gefiel mir, und ich schrieb den ersten Artikel - wie ich meine eigenen Kontrollen erstellen kann. Alles verlief reibungslos, und in 2-3 Wochen hatte ich zum Spaß mehrere Steuerelemente erstellt, die den Standardsteuerelementen ähneln, und eine Bibliothek erstellt, deren Beschreibung im zweiten Artikel zu finden ist. Im dritten Artikel ging es um Formulare, aber es war eher eine Formalität, die Bibliothek zu vervollständigen, und dafür waren die Formulare wünschenswert. Aber es war schade um die Formulare, ich habe nicht herausgefunden, wie man sie besser machen kann. Außerdem gab es damals noch keine Mausbewegungsereignisse, so dass die Bildlaufleisten seltsam aussehen und das Formular auf ungewöhnliche Weise gezogen wird. Was die Formulare anbelangt, so wurden sie nicht aufgefordert, sondern gebrandmarkt. Und es gibt nicht viel Arbeit, damit die Bibliothek sehr praktisch ist. Ich habe sogar Gedanken, um es zu verbessern, überarbeiten Bildlaufleisten, Drag-and-Drop-Formular, und machen das Formular selbst in einer anderen Art und Weise, die nicht kopieren würde eine leere Klasse, und erstellen Sie ein Objekt und verbinden Steuerelemente zu ihm.

 
Vitaly Muzichenko:

Frage pro Frage: Können Sie beschreiben, warum dieses Fenster benötigt wird und wie es beim halbautomatischen Handel hilft?

Der halbautomatische Handel ist der gleiche unverständliche und finanziell schädliche "Mist" wie der vollautomatische oder manuelle Handel.

Eine weitere Art des Handels, die für Händler interessant sein könnte.

 
Artyom Trishkin:

Betrachten Sie es, wie Sie es für richtig halten. Sie können die Diskussionen zu Anatolys Artikeln noch einmal lesen - dort finden Sie Ihre Versuche, mit ihm zu konkurrieren. Aber Anatoly hat alles längst getan, bescheiden, qualitativ, professionell, "ohne Lärm und Staub", und Sie loben sich immer noch.

Die Frage ist nur, wie man sie nutzt. Müssen Sie 50 Artikel lesen? Und doch heißt es "schnell und einfach", wie paradox.

 
Dmitry Fedoseev:

Die Frage ist nur, wie man sie nutzt. Müssen Sie 50 Artikel lesen?

Ich habe es irgendwie schnell herausgefunden - ohne die Artikel. Natürlich habe ich sie gelesen - sie kamen heraus und ich habe sie von meinem Handy aus gelesen. Um zu verstehen, was dort beschrieben wird. Aber das Erstellen und Arbeiten mit Objekten ist dort einfacher als bei Peter. Erstellen Sie die erforderliche Anzahl von Objekten mit Eigenschaftsbeschreibungen in OnInit() und verwenden Sie deren Nachrichten in OnChartEvent(). Das übliche Ereignismodell.

Später passte ich seine Bibliothek für mich an - machte sie plattformübergreifend, fügte Speicherwerte für alle erstellten Objekte hinzu, um zu verhindern, dass sie bei einer Neuinitialisierung in ihren ursprünglichen Zustand zurückgesetzt werden, fügte Geräusche für viele Interaktionen mit Objekten hinzu (standardmäßig und individuell eingestellt und deaktiviert - damit es nicht ständig klingelt und bimmelt), versuchte es und gab es wieder auf - ich habe meine eigenen Ideen. Anatolys Bibliothek erlaubt es nicht, Objekte "on the fly" zu erstellen, mit Hilfe von "new" aus dem Programm, erlaubt es nicht, mehr als ein Fenster aktiv zu machen... Generell gilt: Es gibt viel zu entwickeln. Aber das ist eine Frage an ihn. Oder zu sich selbst - um das zu machen, was Sie für Ihre Bedürfnisse und mit allen erforderlichen Gegenständen und Möglichkeiten ihrer Verwendung brauchen.

 
Artyom Trishkin:

Ich habe es irgendwie schnell herausgefunden - ohne die Artikel. Natürlich habe ich sie gelesen - sie kamen heraus und ich habe sie von meinem Handy aus gelesen. Um zu verstehen, was dort beschrieben wird. Aber das Erstellen und Arbeiten mit Objekten ist dort einfacher als bei Peter. Erstellen Sie die erforderliche Anzahl von Objekten mit Eigenschaftsbeschreibungen in OnInit() und verwenden Sie deren Nachrichten in OnChartEvent(). Es ist das übliche Ereignismodell.

Ich habe dann seine Bibliothek für mich digitalisiert - plattformübergreifend gemacht, Speicherwerte aller erstellten Objekte hinzugefügt, so dass sie bei einer Neuinitialisierung nicht in ihren ursprünglichen Zustand zurückgesetzt werden, Geräusche für viele Interaktionen mit Objekten hinzugefügt (standardmäßig und individuell eingestellt und deaktiviert - damit es nicht ständig klingelt und klingelt), herumgespielt und aufgegeben - ich habe meine eigenen Ideen. Anatolys Bibliothek erlaubt es nicht, Objekte "on the fly" zu erstellen, mit Hilfe von "new" aus dem Programm, erlaubt es nicht, mehr als ein Fenster aktiv zu machen... Generell gilt: Es gibt viel zu entwickeln. Aber das ist eine Frage an ihn. Oder zu sich selbst - um das zu machen, was Sie für Ihre Bedürfnisse und mit allen erforderlichen Gegenständen und Möglichkeiten ihrer Verwendung brauchen.

Ich denke, es ist möglich, Objekte über new zu erstellen. Und die Erstellung von Formularen ist genauso dumm wie meine, und in der Standardbibliothek ist das gleiche - Sie müssen die Formularvorlage kopieren. Es ist interessant, dass ich für meine Formen so sehr kritisiert, ja geradezu verteufelt wurde, aber sie haben sich nicht von diesem Punkt entfernt.

 

das ist das Tempo... das ist die Geschwindigkeit!

Während ich mich auf 60km bewegte, wurden 15 Seiten in das Thema geworfen. Insgesamt 1 Seite für 4(!) km ;-)

Peter hat keine Zeit, den Kern und die Kernel-Engine zu verschieben.

 
Dmitry Fedoseev:

Objekte können wahrscheinlich mit new erstellt werden, das kann nicht unmöglich sein, oder ist es wirklich unmöglich? Und die Erstellung von Formularen ist genauso dumm wie meine, und in der Standardbibliothek ist es dasselbe - man muss die Formularvorlage kopieren. Es ist interessant, dass ich so sehr kritisiert wurde, ich wurde fast für meine Formen verflucht, aber sie haben sich nicht von diesem Punkt entfernt.

Ja, ich muss denselben Code hundertmal für hundert Fenster wiederholen, aber mit unterschiedlichen Parametern. Für jedes Steuerelement habe ich eine universelle Methode zu seiner Erstellung erstellt - ich musste nur die erforderlichen Parameter für jedes Element eingeben. Daher war es für mich sehr einfach zu erstellen - ich brauchte ein Fenster - CreateWindow(initial, individual, parameters), etc. Und dann, wenn das Element erstellt ist, ist es möglich, ihm Schmuckstücke hinzuzufügen oder es als Standard zu belassen.

D.h., ungefähr (strukturell) so:

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Na ja, und ein Fenster mit zwei Knöpfen und einer Atombombe reicht schon aus :)

Aber ich habe die Bibliothek von Anatoly überarbeitet. Es ist komplizierter, wie es mir scheint.

Was die Erstellung bei "Neu" angeht - wenn ich mich richtig erinnere - ich habe schon lange nicht mehr in den Code hineingeschaut - hat er ein Objekt auf globaler Ebene, und das dient bereits zur Erstellung und Kontrolle aller Elemente.

Natürlich können Sie versuchen, eine Liste mit mehreren Bibliotheken, die von neuen, und dann in den Timer und Ereignisse, um diese Listen und was passiert in ihnen. Aber ich habe es einmal ausprobiert, und jedes solche Objekt reagiert auf die Aktionen der benachbarten Objekte - man bewegt ein Fenster, und der Rest fuchtelt auch herum. Also habe ich es aufgegeben, das herauszufinden - keine Zeit.

 
Artyom Trishkin:

Ja, Sie müssen denselben Code hundertmal für hundert Fenster wiederholen, aber mit Ihren eigenen Parametern. Ich bin das losgeworden - für jedes Steuerelement habe ich eine universelle Methode zu seiner Erstellung erstellt - geben Sie einfach die richtigen Parameter für jedes Element ein. Daher war es für mich sehr einfach zu erstellen - ich brauchte ein Fenster - CreateWindow(initial, individual, parameters), etc. Und dann, wenn das Element erstellt ist, ist es möglich, ihm Schmuckstücke hinzuzufügen oder es als Standard zu belassen.

D.h., ungefähr (strukturell) so:

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Na ja, und ein Fenster mit zwei Knöpfen und einer Atombombe reicht schon aus :)

Aber ich habe die Bibliothek von Anatoly überarbeitet. Es ist komplizierter, wie es mir scheint.

Was die Erstellung bei "Neu" angeht - wenn ich mich richtig erinnere - ich habe schon lange nicht mehr in den Code hineingeschaut - hat er ein Objekt auf globaler Ebene, und das dient bereits zur Erstellung und Kontrolle aller Elemente.

Natürlich können Sie versuchen, eine Liste mit mehreren Bibliotheken, die von neuen, und dann in den Timer und Ereignisse, um diese Listen und was passiert in ihnen. Aber als ich es einmal ausprobiert habe, reagierte jedes dieser Objekte auf die Aktionen der benachbarten Objekte - man bewegt ein Fenster, und der Rest fuchtelt ebenfalls herum. Ich habe keine Zeit, das herauszufinden.

Was ist Parameter 0 für CreateWindow(0) und CreateButton()? Bei CreateWindow(0) handelt es sich um einen Fensterkennzeichner, bei CreateButton() bedeutet es, dass die Schaltflächen auf dem Formular 0 sein werden, oder gar nicht? Es ist nur ein Formular möglich, auf dem sich alle Steuerelemente befinden?

 
Dmitry Fedoseev:

Was ist Parameter 0 von CreateWindow(0) und CreateButton()? Bei CreateWindow(0) ist dies der Fensterkennzeichner und bei CreateButton() bedeutet es, dass die Schaltflächen auf dem Formular 0 sein werden, oder gar nicht? Es ist nur ein Formular möglich, auf dem sich alle Steuerelemente befinden?

Jedes Element kann mit einem anderen verbunden werden. Sie haben es richtig verstanden, die "0" ist der Bezeichner des Elements. Es war eine schematische Darstellung des GUI-Designprinzips. Schaltflächen haben es, also werden sie an dieses Fenster angehängt. Wenn ich dem Fenster keine Bindung hinzufüge, würde es an das Diagramm angehängt werden. Ich glaube, so wird es dort gemacht - ich kann mich nicht mehr genau erinnern.

Grund der Beschwerde: