Discusión sobre el artículo "Desarrollando las interfaces gráficas para los Asesores Expertos e indicadores a base de .Net Framework и C#" - página 14
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Se ofrece un ejemplo en el anuncio https://www.metatrader5.com/ru/releasenotes/terminal/1898.
MQL5
Para trabajar con las funciones de la biblioteca .NET, basta con importar la propia DLL sin especificar funciones específicas. MetaEditor importa automáticamente todas las funciones con las que es posible trabajar:
.
.
Para llamar a funciones de la biblioteca, basta con importarla:
. El código C# de la función Inc de la clase TestClass tiene el siguiente aspecto:
. El script devolverá el valor 42.
Se está trabajando en el soporte de las librerías .NET, y se prevén futuras versiones para ampliar su uso.
Las funciones WinAPI están agrupadas en archivos separados por propósito:
.
La vinculación sólo funciona con arquitectura de 64 bits.
En Visual Studio community 2019 todo funciona como el autor, pero cuando escribe:
"Cada formulario tiene una lista pública de elementos que contiene. Recorriendo la lista de elementos, el método encuentra aquellos que el controlador es capaz de soportar y se suscribe a los eventos que necesita. Si un elemento del formulario no es soportado por el controlador, simplemente será ignorado. "
Desgraciadamente, si colocas un SplitContainer o un DataGridView en el formulario de prueba, el formulario no se inicia en absoluto, no se sabe muy bien por qué, pero un componente tan complejo como Chart SE INICIA.
Adjunto un ejemplo de prueba de los componentes que se pueden utilizar para la modificación (¡aunque el formulario se inicia!).
al intentar crear un controlador GuiController controller = new GuiController(assembly, form, m_global_events);
da Unexpected exception: The key with this name already exists (for DataGridView) and the controller is NOT created (the form is created, probably it can be shown, but without the controller how to control it?).
Una vez más todo está bien si no hay componentes SplitContainer y/o DataGridView.
quizás alguien más tropiece
este es el lugar en el artículo
"Como puedes ver, el compilador entiende las enumeraciones externas definidas en Net-libraries y sabe cómo trabajar con ellas."
No sé por qué razón, pero el compilador se niega obstinadamente a entender las enumeraciones de C#, así que arrastramos enum de C# a Mql5 y todo funciona.
Sólo que, Vasily, has colocado los botones de compra y venta en el panel de operaciones al revés ))
Pero en general, la cosa más cool ha resultado. ¡Gracias por tu duro trabajo!)
Yo tenía el mismo problema.
Lo resolví un poco diferente - en lugar de ClickOnElement escribí GuiEventType::ClickOnElement. Y después de eso se compila y funciona sin problemas. Pero si este es el caso, realmente no está claro cómo funcionó para Vasily. Quizás hice algo mal...
Pero por lo demás, la cosa es realmente necesaria y útil. Es una pena que MQL5 no tenga algo similar (incorporado).
Yo tuve el mismo problema.
Resolví este problema un poco diferente - en lugar de ClickOnElement escribí GuiEventType::ClickOnElement. Y después de eso se compila y funciona sin problemas. Pero si este es el caso, es realmente poco claro cómo funcionó para Vasily. Quizás he hecho algo mal...
Pero por lo demás, la cosa es realmente necesaria y útil. Es una pena que MQL5 no tenga algo similar (incorporado).
Tuve un error de este tipo:
@MQL_User, hice como tú: " ...en lugar de ClickOnElement escribí GuiEventType::ClickOnElement" - ¡todo funcionó!
Esto no funciona para MT4. He intentado sin ningún resultado.
¡Soy relativamente nuevo en MQL5 y he aprendido mucho de este artículo! ¡Muchas gracias!
Tengo una pregunta. He estado luchando un poco durante los últimos 2 días para averiguar esto a continuación.
He completado con éxito cada paso un par de veces, incluso en otro equipo, pero cada vez que intento compilar el código me sale un mensaje de error.
El compilador MQL estados : "Identificador no declarado" para cualquiera de las enumeraciones de abajo.
Si "comentario" estas enumeraciones de MQL5 entonces funciona en consecuencia, que es interesante ya que esto significa que el código funciona, pero no puede leer las enumeraciones que es mi conjetura?
Si alguien me puede ayudar se lo agradeceria mucho :)
Gracias,
He leido que necesitas declarar los enums tambien en el archivo MQH de la misma manera exacta que fueron declarados dentro de la DLL.
string ReceiveEvent(int event_n); // Returns JSON string.. Use JAson.mqh to Deserialize objects¿Cómo utilizo esto dentro de OnTimer()?
Estoy utilizando el mismo enfoque que se explica en el artículo
Mi pregunta es: ¿qué int tengo que pasar dentro de la función ReceiveEvent?Perdón por mi ignorancia pero no lo entiendo.
Por favor, ¿podéis decirme qué le pasa al programa GuiMtController.mq5 que informa de un error al ejecutarse?