Erstellen einer grafischen Benutzeroberfläche für MQLs im grafischen Modus.

 

Ich habe dieses Thema schon vor einigen Jahren angesprochen, als sich verschiedene Bibliotheken für die GUI-Erstellung rasant zu entwickeln begannen. Seitdem sind viele davon entstanden, aber der Erstellungsprozess ist auf dem Stand von vor 30 Jahren geblieben (wer erinnert sich noch daran, wie man mit der Schnittstelle gelitten hat, indem man sie in Win API von Hand erstellt hat?) Wenn ich mich irre und ein solches Tool aufgetaucht ist, werde ich gerne einen Tritt akzeptieren und es zurücknehmen.

-------

Hier ist das einfachste Beispiel aus VS 2017, C# Windows Forms. Auf der linken Seite befindet sich eine Symbolleiste für Steuerelemente, die per Drag & Drop auf das Formular gezogen werden können.

PanelFormular

Und hier ist ein Teil des Codes, der für dieses rudimentäre Formular generiert wird.

private void InitializeComponent()
        {
            this.btnDoSomething = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // btnDoSomething
            // 
            this.btnDoSomething.Location = new System.Drawing.Point(12, 12);
            this.btnDoSomething.Name = "btnDoSomething";
            this.btnDoSomething.Size = new System.Drawing.Size(100, 23);
            this.btnDoSomething.TabIndex = 0;
            this.btnDoSomething.Text = "Do something";
            this.btnDoSomething.UseCompatibleTextRendering = true;
            this.btnDoSomething.UseVisualStyleBackColor = true;
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(12, 53);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(100, 20);
            this.textBox1.TabIndex = 1;
            this.textBox1.Text = "Hello MQL5!";
            this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6 F, 13 F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(133, 98);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.btnDoSomething);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        protected System.Windows.Forms.Button btnDoSomething;
        private System.Windows.Forms.TextBox textBox1;

Ich frage mich also, wer ein Projekt in Angriff nehmen würde, bei dem ein solcher Code geparst und auf der Grundlage einer der auf dieser Website vorgestellten Bibliotheken für Grafiken programmiert würde?

Seit mehr als einem Jahr schreibe ich einen Artikel in der Rubrik "Essen und Verdienen in MQL5" ohne den Namen des Autors.

55Umschreiben und automatische Änderung von MQL5-Quellcodes mit Hilfe vonRegularExpressions.
Abrufen der Liste von Funktionen, globalen Variablen, Defines, Klassen, usw.

Und warum nimmt sie niemand? Denn niemand braucht dieses Parsing. Der Markt hat ein brillantes Programm Doxygen, das seit mehr als 10 Jahren poliert und verbessert wird. Und niemand ist daran interessiert, eine erbärmliche Kopie davon zu erstellen (die im Vergleich dazu sicherlich erbärmlich sein wird). Und vor kurzem erschien ein Artikel zum Thema Automatische Dokumentationserstellung...

Also,

  1. Wenn es bereits ein solches Projekt gibt.
  2. Wer wäre an einer solchen grafischen Schnittstelle interessiert?
Ich habe absichtlich einen separaten Zweig erstellt, da er schnell im Zweig "Essen und Verdienen in MQL5" untergeht und nicht viele Leute ihn lesen.

 

Eine grafische Benutzeroberfläche für METATRADER ist im Moment noch eine weit entfernte Möglichkeit. Für die Erstellung von Panels - okay. Aber mehr brauchen Sie nicht.

Obwohl ich mit Ihnen übereinstimme - ein "visueller" MetaEditor wäre eine gute Idee

 
Vladislav Andruschenko:

Eine grafische Benutzeroberfläche für METATRADER ist im Moment noch eine weit entfernte Möglichkeit. Für die Erstellung von Panels - okay. Aber mehr brauchen Sie nicht.

Obwohl ich Ihnen zustimme - der "Visual" MetaEditor wäre perfekt.

Warum sollte man es so kompliziert machen, vor allem MT-MQL? MMS ist imho bereits zu kompliziert. Sie können Ihre Panels in VS erstellen und alles, was Sie brauchen, zum Beispiel durch DLL. Es ist nicht nötig, aus MT-MQL ein Monster zu machen)).

 
Yuriy Asaulenko:

Warum die Dinge so kompliziert machen, vor allem MT-MQL? MMS ist imho bereits zu kompliziert. Sie haben VS, und Sie können Ihre Panels und alles, was Sie brauchen, dort erstellen, z.B. durch diese DLL's. Es gibt keinen Grund, ein Monster aus MT-MQL zu machen. Es ist nicht nötig, MT-MQL in ein Monster zu verwandeln)).


Ich habe nur geträumt :-) (VISUAL für Charting und Handelssysteme), ist es klar, dass es bereits viele Designer gibt....

Um ehrlich zu sein, habe ich mein erstes Panel in Photoshop gezeichnet. und es ist immer noch da...

Jetzt versuche ich, direkt im Terminal zu zeichnen, aber ich stelle fest, dass nur wenige Leute es benutzen.

Außerdem lassen sich kundenspezifische Paneele leichter individuell anfertigen.

Obwohl ich mich ausgiebig mit Artikeln über Zeichenbibliotheken beschäftigt habe. Aber ich habe beschlossen, dass die Verwendung dieser Bibliotheken nur für 1% der Zeit nützlich sein wird und habe aufgegeben...

 
Yuriy Asaulenko:

Warum die Dinge so kompliziert machen, vor allem MT-MQL? MMS ist imho bereits zu kompliziert. Sie haben VS, und Sie können Ihre Panels und alles, was Sie brauchen, dort erstellen, z.B. durch diese DLL's. Es gibt keine Notwendigkeit, ein Monster aus MT-MQL zu machen. Es ist nicht nötig, MT-MQL in ein Monster zu verwandeln)).

Das habe ich früher auch so gemacht. Unten sehen Sie ein Beispiel für ein einfaches Setup-Panel für einen Multi-Strategie-EA (oh je!). Aber es schränkt den Markt ein!

Und ich verstehe nicht, was MT damit zu tun hat? Ich schlage nur vor, ein Parser-Skript in MQL zu erstellen. Sie können es in C++/C# machen, aber dann werden sie es nicht einmal zu den Artikeln bringen.

Oops, ich habe das Bild vergessen, hier ist es, ein einfaches Bild


 
Vladislav Andruschenko:


Ich träume nur :-) (VISUAL für Charting und Handelssysteme), ist es klar, dass es bereits viele Designer gibt....

Um ehrlich zu sein, habe ich mein erstes Panel in Photoshop gezeichnet. und es ist immer noch da...

Jetzt versuche ich, direkt im Terminal zu zeichnen, aber ich stelle fest, dass nur wenige Leute es benutzen.

Außerdem lassen sich kundenspezifische Paneele leichter individuell anfertigen.

Obwohl ich mich ausgiebig mit Artikeln über Zeichenbibliotheken beschäftigt habe. Da die Verwendung dieser Bibliotheken aber nur in 1 % der Fälle sinnvoll ist, habe ich aufgegeben.

Sie kommen also ohne Bibliotheken aus? Ich habe gerade die Aufgabe, ein ziemlich komplexes Panel zu erstellen, und ich denke, dass es viele Male neu konfiguriert werden wird.

Bisher habe ich beschlossen, eine Visualisierung in VS zu machen und dann meine Hände verwenden, um die Koordinaten und Größen der Steuerelemente zu erhalten, dann wieder meine Hände verwenden, um sie in eine Bibliothek zu übersetzen. Im Moment tendiere ich zu den Bibliotheken von Anatoly Kazrsky, er hat dort eine großartige Arbeit geleistet. Alles wird schneller sein als der Code->Start->Korrekturen mit auf Papier festgehaltenen Ergebnissen->korrekter Code... usw.

 
Alexey Volchanskiy:

Sie machen es also ganz ohne Bibliotheken? Gerade hier habe ich die Aufgabe, ein ziemlich komplexes Panel zu machen, und ich glaube, es wird viele Male umgestaltet werden.

Bisher habe ich beschlossen, eine Visualisierung in VS zu erstellen, dann die Koordinaten und Abmessungen der Steuerelemente abzurufen und sie von Hand in eine Bibliothek zu übersetzen. Im Moment tendiere ich zu den Bibliotheken von Anatoly Kazrsky, er hat dort eine großartige Arbeit geleistet. All das ist schneller als Code->Start->Korrekturen mit auf Papier festgehaltenen Ergebnissen->korrekter Code... usw.

Besser ist es, die Bibliothek von Kazarsky zu benutzen,

Aber ja, ich habe Bibliotheken zum Zeichnen. Sie sind Standard. (natürlich nicht dasselbe wie bei Kazarsky :-))

Ich benutze das Zeichnen nur sehr selten, also ist es sinnlos, Zeit damit zu verschwenden.


Früher habe ich in Photoshop gezeichnet, dann habe ich in Delphi gezeichnet und dann nach den Koordinaten organisiert :-)

Heute würde ich das nicht mehr tun, aber ich habe damals mein erstes Panel in MQL gezeichnet (vorher war es in Delphi).

Ich habe immer noch Angst, es zu berühren :-) Ich aktualisiere es natürlich, und ich habe den Code bereits 10 Mal optimiert. Aber ich denke darüber nach, das gleiche Panel mit den regulären Tasten zu zeichnen......

aber es gibt Vor- und Nachteile: die regulären Schaltflächen sind nicht schön: Kanvas funktioniert nicht in der Testversion ...............

 
Alexey Volchanskiy:

Das habe ich schon einmal getan. Nachfolgend finden Sie ein Beispiel für ein einfaches Setup-Panel für einen Multi-Strategie-EA (oh Schreck!). Aber es schränkt den Markt ein!

Und ich verstehe nicht, was MT damit zu tun hat? Ich schlage nur vor, ein Parser-Skript in MQL zu erstellen. Sie können es in C++/C# machen, aber dann werden sie es nicht einmal zu den Artikeln bringen.

Ups, ich habe das Bild vergessen, hier ist es, ein einfaches Bild.

Wenn Sie sie in Market verwenden wollen, müssen Sie sich damit auseinandersetzen. Nur MMS. ((

Sie brauchen es nicht für sich selbst, Sie brauchen es nicht für VS.

 
Yuriy Asaulenko:

Wenn es für den Markt ist, ja, bada bada. Nur MMS. ((

Und für dich selbst brauchst du es nicht, und mit VS ist alles einfach.

Es ist sehr einfach und schnell mit VS. Ich habe sogar dieses Panel mit gemeinsamem Dateizugriff erstellt, und es hat gut und schnell funktioniert.

Ich weiß nicht einmal, vielleicht sollte ich schnell eine mit VS erstellen und sie in MQL übersetzen, nachdem ich die Kinderkrankheiten beseitigt habe?

Aber da ich nicht in der Lage sein, eine Verzweigung für mein Panel in C# auf diesem Forum zu erstellen. Ich werde also wieder in Rot arbeiten und mich auf diesen Unsinn einlassen müssen? Was denken Sie, liebe Moderatoren? Darf ich das Panel in C# als Teil des Projekts veröffentlichen?

Natürlich kann ich den MQL5-Teil in einer Verzweigung und das C#-Panel im Blog veröffentlichen. Aber es ist irgendwie demütigend, so als ob ich mich im Blog verstecken müsste, weil es mir vorenthalten wird.

 
Alexey Volchanskiy:

Es ist sehr einfach und schnell mit VS, ich habe sogar dieses Panel mit Zugriff über freigegebene Dateien und es funktionierte gut und schnell.

Ich weiß nicht einmal, vielleicht sollte ich schnell eine VS-Variante erstellen und sie in MQL übersetzen, nachdem ich die Kinderkrankheiten beseitigt habe?

Aber da ich nicht in der Lage sein, eine Verzweigung für mein Panel in C# auf diesem Forum zu erstellen. Ich werde also wieder in Rot arbeiten und mich auf diesen Unsinn einlassen müssen? Was denken Sie, liebe Moderatoren? Darf ich das Panel in C# als Teil des Projekts veröffentlichen?

Natürlich kann ich den MQL5-Teil in einer Verzweigung und das C#-Panel im Blog veröffentlichen. Aber es ist irgendwie demütigend, so als ob ich mich im Blog verstecken müsste, weil es mir vorenthalten wird.

Mir gefällt die gemeinsame Nutzung von Dateien sehr gut - alles ist einfach, schnell und leicht zu bedienen. Mit RAM-Disk brauche ich überhaupt keine DLLs oder Gizmos, es sind >1,5 GBytes/Sekunde. Genug für alles, auch für Reste).

Und alle Arten von DLLs können später, wenn nötig, in aller Ruhe erstellt werden.

 
Alexei, ist es möglich, mit Ihrem Panel in C# zu arbeiten, so dass es innerhalb des Chart-Fensters angezeigt wird?