Discusión sobre el artículo "Desarrollando las interfaces gráficas para los Asesores Expertos e indicadores a base de .Net Framework и C#"
En esta imagen

puedes ver claramente lo que tienes que hacer para ver el gráfico de balance/patrimonio cuando operas visualmente.
ZY ¿Qué son esos dos botones adicionales en la esquina superior derecha de cada ventana?
En esta foto.
puedes ver claramente lo que tienes que hacer para ver el gráfico de balance/equidad cuando operas visualmente.
Para aquellos que tienen dos monitores es muy conveniente en realidad. Yo tengo dos, pero tuve que hacer esta disposición para la foto.
¿Qué son esos dos botones adicionales en la esquina superior derecha de cada ventana?
Es una utilidad adicional para trabajar cómodamente con dos monitores. En este caso no debería estar en el gif, pero no se ve todo.
¡buen artículo, pero por alguna razón creo que el nivel no es para principiantes, aunque como una instrucción qué y cómo es muy detallada, gracias!
ZY: un formulario con botones y sin dll de terceros ( GuiController.dll ) el usuario puede crear un formulario con botones utilizando las herramientas de VS2017 literalmente en 2 clics: crear proyecto - Net class library y luego proyecto - añadir formulario de Windows.
en la primera ventana "Class Library" escribimos un código que inicia un formulario gráfico en pocas líneas, aproximadamente así:
using System; using System.Threading; public class MainForm { static Form1 mainform; static Thread threadmainform; public static void Init() { if (mainform == null) { threadmainform = new Thread(NewForm); threadmainform.Start(); } } public static void DeInit(int reason) { if (reason == 3 || reason == 5) return; if (mainform!=null) {mainform.Close(); Thread.Sleep(1000);} if(threadmainform!=null) threadmainform.Join(); mainform=null; threadmainform=null; } private static void NewForm() { mainform = new Form1(); mainform.ShowDialog(); } }
si compilamos estas diez líneas en VS2017, entonces en MT5 ya podremos crear un formulario gráfico (todos los elementos que se añadan al formulario serán "clicables" ) y podremos borrarlo(DeInit () ), solo queda establecer intercambio de datos entre el formulario - que "gira" en un hilo aparte y la propia MT5
con MT4 todo es mucho más triste, pero todavía se puede obtener una dll escrita en .Net para funcionar.
Gracias por el artículo. Se masca todo. No leí sólo sobre las tripas de C#. Pero realmente no hace falta conocerlo para crear un formulario.
Reflexiones sobre la aplicación
- Desde la aplicación es posible detener la ejecución de una sola pasada aunque no esté en modo visualización. Por ejemplo, en OnTester se está ejecutando un aprendizaje MO en bucle. Con el formulario es conveniente pararlo cuando se crea conveniente.
- Está bien visto que es muy fácil escribir una API de trading completa para C#. Luego escribir todos los Asesores Expertos en C# y ejecutarlos en Terminal/Tester. Y basándose en esta API se pueden crear Terminales alternativos con skins personalizados, por ejemplo. Enormes oportunidades para aplicaciones dirigidas a usuarios comunes. Puedes recoger sus deseos e implementarlos: gráficos de tick, probadores, etc.
- Es posible incrustar fácilmente el panel en su EA como complemento a la operativa manual en el Visualizador. Esto le permite emular situaciones estresantes para el algo-advisor (borrado de su orden, colocación de la suya propia, etc.). Pero lo que es aún más agradable es que todas las acciones manuales pueden ser fácilmente grabadas y reproducidas sin el formulario y, en consecuencia, sin pulsar botones. Lo que le permite depurar el EA en el modo de depuración para la estabilidad de la intervención manual.
¿Cómo funcionará la interacción si se ejecutan varios formularios-asesores de este tipo?
Gracias por el ejemplo de github. Es el mismo principio posible con MT5?
#include <Include.mqh> // Ruta de ShareProject
¿Cuando ME sincroniza automáticamente el archivo mqh de acuerdo con el comentario en la ruta?
Lo que usted describe podría ser una característica muy interesante y fresco para ME, pero por supuesto que no funciona de esa manera.
Sin embargo, MQL4 y MQL5 están soportados directamente por GitHub.
También hay utilidades, principalmente Git Bash, que permiten hacer todo lo que tiene VisualStudio y más. Funcionan perfectamente con proyectos MQL. Qué decir si se escriben libros enteros con la ayuda de github.
De hecho, el desarrollo de proyectos MQL en github está soportado desde hace mucho tiempo y a un alto nivel.
Lo que describes podría ser una función muy interesante y chula para ME, pero claro, no funciona así.
Sin embargo, MQL4 y MQL5 son soportados directamente por GitHub.
También hay utilidades, principalmente Git Bash, que permiten hacer todo lo que tiene VisualStudio y más. Funcionan perfectamente con proyectos MQL. Qué decir si se escriben libros enteros con la ayuda de github.
De hecho, el desarrollo de proyectos MQL en github está soportado desde hace mucho tiempo y a un alto nivel.
Por desgracia, todo es un bosque oscuro para los nerds como yo. Tu artículo muestra una aplicación genial de github. Probablemente es sólo el 1% de sus capacidades, pero se ve útil.
No he entendido cómo puede ayudar en MQL5 de los enlaces dados. Probablemente es un must-have para los programadores, pero hay quienes están lejos de la programación, como yo mismo.
Si hubiera un artículo sobre este tema para MQL5, sería útil.
Gracias por el artículo. Se masca todo. No leí sólo sobre las tripas de C#. Pero realmente no hace falta conocerlo para crear un formulario.
Reflexiones sobre la aplicación
- 1) Desde la aplicación es posible detener la ejecución de una sola pasada aunque no esté en modo visualización. Por ejemplo, en OnTester se está ejecutando un aprendizaje MO en bucle. Con el formulario es conveniente pararlo cuando se crea conveniente.
- 2) Está bien visto que es muy fácil escribir una API de trading completa para C#. Luego escribir todos los Expert Advisors en C# y ejecutarlos en Terminal/Tester. Y basándose en esta API se pueden crear Terminales alternativos con skins personalizados, por ejemplo. Enormes oportunidades para aplicaciones dirigidas a usuarios comunes. Puedes recoger sus deseos e implementarlos: gráficos de tick, probadores, etc.
- 3) Es posible incrustar fácilmente el panel en su EA como complemento a la operativa manual en el Visualizador. Esto le permite emular situaciones estresantes para el algo-advisor (borró su orden, colocó la suya, etc.). Pero lo que es aún más agradable es que todas las acciones manuales pueden ser fácilmente grabadas y reproducidas sin el formulario y, en consecuencia, sin pulsar botones. Lo que le permite depurar el EA en modo de depuración para la estabilidad de la intervención manual.
4) ¿Cómo funcionará la interacción si se ejecutan varios de estos formularios-asesores?
1) Sí, absolutamente. El chip de aplicación externa le permite hacer todas estas cosas.
2) En efecto, es posible escribirlo. Pero es una mala idea atiborrar todo el entorno comercial en C#. Es mejor escribir Asesores Expertos en MQL puro, pero es posible equiparlos con los "adornos" necesarios en c#.
3) Sí, se puede hacer.
4) Se puede configurar de diferentes maneras. Se hace de forma que hay que especificar el nombre del formulario y el ensamblado en el que se encuentra. Es decir, ahora puedes ejecutar uno, dos o cinco formularios. No hay restricciones.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso

Artículo publicado Desarrollando las interfaces gráficas para los Asesores Expertos e indicadores a base de .Net Framework и C#:
Presentamos una manera simple y rápida de crear las ventanas gráficas usando el editor Visual Studio, con la integración posterior en el código MQL del Asesor Experto. Este artículo está destinado para un vasto círculo de lectores y no requiere ningunos conocimientos de C# y tecnología .Net.
El Simulador de Estrategias en MetaTrader 5 tiene una serie de particularidades que deben ser consideradas por el desarrollador de interfaces gráficas en el lenguaje de programación MQL. La principal particularidad consiste en el hecho de que la función del procesamiento de los eventos gráficos OnChartEvent no se invoca en absoluto. Esta particularidad parece lógica, por que el formulario gráfico supone el trabajo con el usuario en tiempo real. Sin embargo, hay un tipo de paneles que sería muy interesante implementar precisamente en el Simulador. Se trata de llamados players comerciales a través de los cuales los usuarios podrían testear sus estrategias comerciales en modo manual. Por ejemplo, el Simulador de Estrategias genera los precios de mercado actuales en el modo de aceleración, mientras que el usuario pulsa los botones de compra o venta, simulando así sus acciones comerciales en el historial. El TradePanel creado por nosotros pertenece precisamente a este tipo de paneles. A pesar de su sencillez, puede ser un buen player comercial simple, con una funcionalidad necesaria.
Pero vamos a pensar en cómo nuestro panel va a funcionar en el Simulador de Estrategias de MetaTrader 5. La ventana gráfica del panel TradePanel existe en forma de un ensamblado .Net independiente. Por tanto, no depende de ninguna manera del entorno actual de MetaTrader 5, ni del propio terminal. Hablando estrictamente, se puede ejecutarlo desde cualquier programa, y los ensamblados ubicados en el contenedor exe pueden ser iniciados por el usuario.
De esta manera, nuestro programa no tiene que llamar a OnChartEvent. Es más, para actualizar los datos en la ventana y obtener nuevas órdenes de los usuarios se puede usar cualquier función-manipulador de eventos que se ejecuta regularmente en el Simulador. OnTick y OnTimer pertenecen a estas funciones. Nuestro panel opera a través de ellas. Así, nuestro panel también va a funcionar bien en el Simulador, pues ha sido desarrollado para el funcionamiento en tiempo real. No hay que hacer modificaciones para eso. Comprobaremos esta afirmación ejecutando nuestro panel en el Simulador, y realizaremos algunas transacciones en él:
Autor: Vasiliy Sokolov