Creación de una interfaz gráfica para los MQL en modo gráfico.

 

Planteé este tema hace un par de años, cuando empezaron a desarrollarse rápidamente diferentes bibliotecas para la creación de interfaces gráficas. Desde entonces se han creado muchas, pero el proceso de creación se ha mantenido al nivel de hace 30 años (¿quién se acuerda todavía de cómo se sufría con la interfaz, creándola a mano en Win API?) Si me equivoco y aparece una herramienta así, aceptaré encantado una patada y la recuperaré.

-------

Aquí está el ejemplo más simple de VS 2017, C# Windows Forms. A la izquierda hay una barra de herramientas de control que se puede arrastrar y soltar en el formulario.

panelformulario

Y aquí está parte del código que se genera para este formulario rudimentario.

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;

Así que me pregunto quién podría emprender un proyecto que analizara este código y construyera un código para gráficos basado en cualquiera de las bibliotecas presentadas en este sitio.

Llevo más de un año escribiendo un artículo en la sección "Comer y ganar dinero en MQL5" sin el nombre del autor.

55Reescritura y modificación automática de códigos fuente MQL5 medianteRegularExpressions.
Obtener la lista de funciones, variables globales, defines, clases, etc.

¿Y por qué nadie lo toma? Porque nadie necesita este análisis. El mercado tiene un maravilloso programa Doxygen, que se está puliendo y mejorando desde hace más de 10 años. Y nadie está interesado en intentar crear una copia patética de la misma (que seguramente será patética en comparación). Y hace poco salió un artículo sobre el tema de la creación automática de documentación...

Así que,

  1. Si ya existe un proyecto de este tipo.
  2. ¿Quién podría estar interesado en la creación de una interfaz gráfica de este tipo?
Hice una rama separada a propósito, ya que rápidamente se pierde en la rama "Comer y ganar en MQL5", y no mucha gente la lee.

 

Una GUI para METATRADER es una posibilidad tan lejana, por ahora. Para la creación de paneles - de acuerdo. Pero no necesitas más.

Aunque estoy de acuerdo contigo - MetaEditor "visual" sería una buena idea

 
Vladislav Andruschenko:

Una GUI para METATRADER es una posibilidad tan lejana, por ahora. Para la creación de paneles - de acuerdo. Pero no necesitas más.

Aunque estoy de acuerdo contigo - el MetaEditor "Visual" sería perfecto.

¿Por qué hay que complicar todo, en particular la MT-MQL? El MQL, en mi opinión, ya es demasiado complicado. Puedes crear tus paneles en VS y todo lo que necesites, por ejemplo a través de DLL. No es necesario hacer un monstruo de MT-MQL)).

 
Yuriy Asaulenko:

¿Por qué complicar tanto las cosas, en particular la MT-MQL? El MQL, en mi opinión, ya es demasiado complicado. Tienes VS, y puedes crear tus paneles y todo lo que necesites allí, por ejemplo a través de esas DLL's. No hay necesidad de hacer un monstruo de MT-MQL. No es necesario convertir la MT-MQL en un monstruo)).


Sólo estoy soñando despierto :-) (VISUAL para los sistemas de gráficos y operaciones), está claro que hay muchos diseñadores que ya....

Para ser honesto, dibujé mi primer panel en Photoshop. y todavía está ahí...

ahora estoy tratando de dibujar directamente en el terminal, pero me doy cuenta de que sólo unos pocos lo utilizan.

Y los paneles personalizados son más fáciles de hacer individualmente.

Aunque he estudiado mucho los artículos sobre bibliotecas de dibujo. Pero he decidido que el uso de estas bibliotecas sólo será útil el 1% del tiempo y he renunciado...

 
Yuriy Asaulenko:

¿Por qué complicar tanto las cosas, en particular la MT-MQL? El MQL, en mi opinión, ya es demasiado complicado. Tienes VS, y puedes crear tus paneles y todo lo que necesites allí, por ejemplo a través de esas DLL's. No hay necesidad de hacer un monstruo de MT-MQL. No es necesario convertir la MT-MQL en un monstruo)).

Yo solía hacerlo así. A continuación se muestra un ejemplo de un panel de configuración simple para un EA multiestrategia (¡oh!). ¡Pero está cortando el mercado!

Y no entiendo, ¿qué tiene que ver la MT con esto? Sólo estoy sugiriendo hacer un script parser en MQL. Puedes hacerlo en C++/C#, pero entonces no lo llevarán ni a los artículos.

Oops, olvidé la foto, aquí está, una simple


 
Vladislav Andruschenko:


Sólo estoy soñando :-) (VISUAL para los sistemas de gráficos y operaciones), está claro que hay muchos diseñadores que ya....

Para ser honesto, dibujé mi primer panel en photoshop. y todavía está ahí...

ahora estoy tratando de dibujar directamente en el terminal, pero me doy cuenta de que sólo unos pocos lo utilizan.

Y los paneles personalizados son más fáciles de hacer individualmente.

Aunque he estudiado mucho los artículos sobre bibliotecas de dibujo. Pero decidido que el uso de estas librerías sólo será útil en un 1%, desistí.

¿Así que prescindes de las bibliotecas? Tengo la tarea de hacer un panel bastante complejo, y creo que será reconfigurado muchas veces.

Hasta ahora he decidido hacer una visualización en VS y luego usar mis manos para obtener las coordenadas y dimensiones de los controles, luego de nuevo, usar mis manos para traducirlos a una biblioteca. Por ahora me inclino por las bibliotecas de Anatoly Kazrsky, que ha hecho un trabajo monstruoso. Todo será más rápido que el código->arranque->correcciones con resultados registrados en papel->código correcto... etc.

 
Alexey Volchanskiy:

¿Así que lo haces sin ninguna biblioteca? Justo aquí tengo la tarea de hacer un panel bastante complejo, y, siento, que será reconfigurado muchas veces.

Hasta ahora he decidido hacer una visualización en VS, luego recuperar las coordenadas y dimensiones de los controles, y traducirlas a una librería a mano. Por ahora me inclino por las bibliotecas de Anatoly Kazrsky, que ha hecho un trabajo monstruoso. Todo será más rápido que código->inicio->correcciones con resultados registrados en papel->código correcto... etc.

Mejor usar la biblioteca de Kazarsky,

Pero sí, tengo bibliotecas para dibujar, son estándar. (no es el mismo que el de Kazarsky, por supuesto :-))

Utilizo el dibujo muy pocas veces, así que no tiene sentido perder el tiempo con él.


Antes dibujaba en photoshope, luego dibujaba en Delphi y después organizaba según las coordenadas :-)

Ahora no lo haría, pero en ese momento dibujé mi primer panel en MQL (antes estaba en Delphi).

Todavía me da miedo tocarlo :-) Lo actualizo, por supuesto, y ya he optimizado el código 10 veces. Pero estoy pensando en dibujar el mismo panel con los botones normales......

pero hay pros y contras: los botones normales no son agradables : Kanvas no funciona en el probador ...............

 
Alexey Volchanskiy:

Eso es lo que he hecho antes. A continuación se muestra un ejemplo de un panel de configuración simple para un EA multiestrategia (¡oh bang!). ¡Pero sí que corta el mercado!

¿Y no entiendo qué tiene que ver la MT con esto? Sólo estoy sugiriendo hacer un script parser en MQL. Puedes hacerlo en C++/C#, pero entonces no lo llevarán ni a los artículos.

Uy, se me olvidó la foto, aquí está, una simple.

Si quieres usarlo en Market, tendrás que lidiar con ello. Sólo MQL. ((

No lo necesitas para ti, no lo necesitarás con VS.

 
Yuriy Asaulenko:

Si es para el Mercado, sí, bada bada. Sólo MQL. ((

Y para ti, no lo necesitas, y con VS todo es sencillo.

Es muy sencillo y rápido con VS. Incluso hice ese panel con acceso a archivos compartidos, y funcionó bien y rápido.

Ni siquiera sé, tal vez debería crear rápidamente uno usando VS y traducirlo a MQL después de haber eliminado las enfermedades infantiles?

Pero como no podré crear una rama para mi panel en C# en este foro. Entonces, ¿tendré que volver a trabajar en rojo, y tendré que tirar la basura aquí? ¿Qué opinan, queridos moderadores? ¿Puedo publicar el panel en C# como parte del proyecto?

Por supuesto, puedo publicar la parte de MQL5 en una rama y el panel de C# en el blog. Pero es un poco humillante, como si me privara de ello y tuviera que esconderme en el blog.

 
Alexey Volchanskiy:

Es muy sencillo y rápido con VS, incluso hice ese panel con acceso vía archivos compartidos y funcionó bien y rápido.

Ni siquiera sé, ¿tal vez debería crear rápidamente una variante de VS y traducirla a MQL después de haber eliminado las enfermedades infantiles?

Pero como no podré crear una rama para mi panel en C# en este foro. Entonces, ¿tendré que volver a trabajar en rojo, y tendré que dedicarme a estas tonterías? ¿Qué opinan, queridos moderadores? ¿Puedo publicar el panel en C# como parte del proyecto?

Por supuesto, puedo publicar la parte de MQL5 en una rama y el panel de C# en el blog. Pero es un poco humillante, como si me privara de ello y tuviera que esconderme en el blog.

Me gusta mucho el intercambio de archivos: todo es sencillo, rápido y fácil de usar. Con RAM-Disk no necesito ninguna DLL ni artilugio, es >1,5 GBytes/segundo. Suficiente para todo, e incluso para las sobras)).

Y todo tipo de DLL se puede hacer más tarde, a su gusto, si es necesario.

 
Alexei, ¿es posible trabajar con tu panel en C# para que se muestre dentro de la ventana del gráfico?
Razón de la queja: