Creazione di una GUI per MQL in modalità grafica.

 

Ho sollevato questo argomento un paio di anni fa, quando diverse librerie per la creazione di GUI hanno iniziato a svilupparsi rapidamente. Ne sono stati creati molti da allora, ma il processo di creazione è rimasto al livello di 30 anni fa (chi si ricorda ancora come si soffriva con l'interfaccia, creandola a mano in Win API?) Se mi sbaglio e tale strumento è apparso, accetto volentieri un calcio e lo riprendo.

-------

Ecco l'esempio più semplice da VS 2017, C# Windows Forms. Sulla sinistra c'è una barra degli strumenti di controllo che può essere trascinata e rilasciata sul modulo.

pannellomodulo

Ed ecco un po' del codice che viene generato per questo modulo rudimentale.

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;

Quindi mi chiedo, chi prenderebbe un progetto in cui tale codice verrebbe analizzato e il codice per la grafica basato su una qualsiasi delle librerie presentate su questo sito?

Ho scritto un articolo nella sezione "Mangiare e guadagnare in MQL5" senza il nome dell'autore per più di un anno.

55Riscrittura e modifica automatica dei codici sorgente MQL5 usandoRegularExpressions.
Ottenere l'elenco di funzioni, variabili globali, definizioni, classi, ecc.

E perché nessuno lo prende? Perché nessuno ha bisogno di questo parsing. Il mercato ha un brillante programma Doxygen, che viene lucidato e migliorato per più di 10 anni. E nessuno è interessato a cercare di crearne una copia patetica (che sarà certamente patetica in confronto). E recentemente è uscito un articolo sul tema della creazione automatica della documentazione...

Quindi,

  1. Se c'è già un progetto del genere.
  2. Chi sarebbe interessato alla creazione di una tale interfaccia grafica?
Ho fatto un ramo separato di proposito, dato che si perde rapidamente nel ramo "Mangiare e guadagnare in MQL5", e non molte persone lo leggono.

 

Una GUI per METATRADER è una possibilità così lontana, per ora. Per la creazione di pannelli - ok. Ma non hai bisogno di altro.

Anche se sono d'accordo con te - MetaEditor "visivo" sarebbe una buona idea

 
Vladislav Andruschenko:

Una GUI per METATRADER è una possibilità così lontana, per ora. Per la creazione di pannelli - ok. Ma non hai bisogno di altro.

Anche se sono d'accordo con te - il MetaEditor "visivo" sarebbe perfetto.

Perché dovete complicare tutto, in particolare MT-MQL? MQL, imho, è già troppo complicato. Potete creare i vostri pannelli in VS e tutto ciò di cui avete bisogno, per esempio tramite DLL. Non c'è bisogno di fare un mostro di MT-MQL)).

 
Yuriy Asaulenko:

Perché rendere le cose così complicate, in particolare MT-MQL? MQL, imho, è già troppo complicato. Avete VS, e potete creare i vostri pannelli e tutto ciò di cui avete bisogno lì, per esempio attraverso quelle DLL. Non c'è bisogno di fare un mostro di MT-MQL. Non c'è bisogno di trasformare MT-MQL in un mostro)).


Sto solo sognando ad occhi aperti :-) (VISUALE per grafici e sistemi di trading), è chiaro che ci sono molti designer già....

Ad essere onesti, ho disegnato il mio primo pannello in Photoshop. ed è ancora lì...

Ora sto cercando di disegnare direttamente nel terminale, ma mi rendo conto che solo poche persone lo usano.

E i pannelli personalizzati sono più facili da realizzare individualmente.

Anche se ho studiato molto gli articoli sulle librerie di disegno. Ma ho deciso che l'uso di queste librerie sarà utile solo per l'1% del tempo e ho rinunciato...

 
Yuriy Asaulenko:

Perché rendere le cose così complicate, in particolare MT-MQL? MQL, imho, è già troppo complicato. Avete VS, e potete creare i vostri pannelli e tutto ciò di cui avete bisogno lì, per esempio attraverso quelle DLL. Non c'è bisogno di fare un mostro di MT-MQL. Non c'è bisogno di trasformare MT-MQL in un mostro)).

Io lo facevo così. Qui sotto c'è un esempio di un semplice pannello di setup per un EA multi-strategia (oh mio!). Ma sta tagliando il mercato!

E non capisco, cosa c'entra MT? Sto solo suggerendo di fare uno script parser in MQL. Puoi farlo in C++/C#, ma poi non lo porteranno nemmeno agli articoli.

Oops, ho dimenticato l'immagine, eccola, una semplice


 
Vladislav Andruschenko:


Sto solo sognando :-) (VISUALE per grafici e sistemi di trading), è chiaro che ci sono molti designer già....

Ad essere onesti, ho disegnato il mio primo pannello in photoshop. ed è ancora lì...

Ora sto cercando di disegnare direttamente nel terminale, ma mi rendo conto che solo poche persone lo usano.

E i pannelli personalizzati sono più facili da realizzare individualmente.

Anche se ho studiato molto gli articoli sulle librerie di disegno. Ma deciso che l'uso di queste librerie sarà utile solo nell'1%, ho rinunciato.

Quindi fate a meno delle biblioteche? Ho appena ricevuto un compito per fare un pannello abbastanza complesso, e sento che sarà riconfigurato molte volte.

Finora ho deciso di fare una visualizzazione in VS e poi usare le mani per ottenere le coordinate e le dimensioni dei controlli, poi di nuovo, usare le mani per tradurli in una libreria. Per ora propendo per le librerie di Anatoly Kazrsky, ha fatto un lavoro mostruoso. Tutto sarà più veloce del codice->inizio->correzioni con risultati registrati su carta->codice corretto... ecc.

 
Alexey Volchanskiy:

Quindi lo fai senza alcuna libreria? Proprio qui ho il compito di fare un pannello abbastanza complesso, e, sento, sarà riconfigurato molte volte.

Finora ho deciso di fare una visualizzazione in VS, poi recuperare le coordinate e le dimensioni dei controlli, e tradurli a mano in una libreria. Per ora propendo per le librerie di Anatoly Kazrsky, ha fatto un lavoro mostruoso. Tutto sarà più veloce di codice->inizio->correzioni con risultati registrati su carta->codice corretto... ecc.

Meglio usare la biblioteca di Kazarsky,

Ma sì, ho delle librerie per il disegno, sono standard. (non lo stesso di Kazarsky, naturalmente :-))

Uso il disegno molto raramente, quindi non ha senso perderci tempo.


Disegnavo in photoshope, poi ho disegnato in Delphi e poi organizzato secondo le coordinate :-)

Non lo farei ora, ma ho disegnato il mio primo pannello in MQL a quel tempo (prima era in Delphi).

Ho ancora paura di toccarlo :-) Lo aggiorno, naturalmente, e ho ottimizzato il codice già 10 volte. Ma sto pensando di disegnare lo stesso pannello con i pulsanti regolari......

ma ci sono pro e contro: i pulsanti regolari non sono belli: Kanvas non funziona nel tester ...............

 
Alexey Volchanskiy:

Questo è quello che ho fatto prima. Qui sotto c'è un esempio di un semplice pannello di setup per un EA multi-strategia (oh bang!). Ma taglia il mercato!

E non capisco cosa c'entri MT? Sto solo suggerendo di fare uno script parser in MQL. Puoi farlo in C++/C#, ma poi non lo porteranno nemmeno agli articoli.

Ops, ho dimenticato la foto, eccola, una semplice.

Se volete usarlo in Market, dovrete occuparvene. Solo MQL. ((

Non ne hai bisogno per te stesso, non ne avrai bisogno con VS.

 
Yuriy Asaulenko:

Se è per il Mercato, sì, bada bada. Solo MQL. ((

E per te, non ne hai bisogno, e con VS tutto è semplice.

È molto semplice e veloce con VS. Ho anche fatto quel pannello con accesso condiviso ai file, e ha funzionato bene e velocemente.

Non so nemmeno, forse dovrei crearne rapidamente uno usando VS e tradurlo in MQL dopo aver eliminato le malattie infantili?

Ma poiché non sarò in grado di creare un ramo per il mio pannello in C# in questo forum. Quindi, dovrò lavorare di nuovo in rosso, e dovrò fare spazzatura qui? Cosa ne pensate, cari moderatori? Posso postare il pannello in C# come parte del progetto?

Naturalmente, posso postare la parte MQL5 in un ramo e il pannello C# nel blog. Ma è un po' umiliante, come se ne fossi privato e dovessi nascondermi nel blog.

 
Alexey Volchanskiy:

È molto semplice e veloce con VS, ho anche fatto quel pannello con accesso tramite file condivisi e ha funzionato bene e velocemente.

Non so nemmeno, forse dovrei creare rapidamente una variante VS e tradurla in MQL dopo aver eliminato le malattie infantili?

Ma poiché non sarò in grado di creare un ramo per il mio pannello in C# in questo forum. Quindi, dovrò lavorare di nuovo in rosso e dovrò impegnarmi in queste sciocchezze? Cosa ne pensate, cari moderatori? Posso postare il pannello in C# come parte del progetto?

Naturalmente, posso postare la parte MQL5 in un ramo e il pannello C# nel blog. Ma è un po' umiliante, come se ne fossi privato e dovessi nascondermi nel blog.

Mi piace molto la condivisione dei file - tutto è semplice, veloce e facile da usare. Con RAM-Disk non ho bisogno di nessuna DLL o aggeggio, è >1,5 GByte/secondo. Abbastanza per tutto, e anche per gli avanzi)).

E tutti i tipi di DLL possono essere fatti dopo, a vostro piacimento, se necessario.

 
Alexei, è possibile lavorare con il tuo pannello in C# in modo che sia visualizzato all'interno della finestra del grafico?