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 13

 

Hola Vasily y hola a todos. Estoy utilizando el GuiController que utiliza un Form creado con Visual Studio C #.


La idea era rellenar los campos del ComboBox con datos de una BD SQLite3.


He instalado todo el paquete System.Data.SQLite pero con el GuiController no consigo que funcione.


¿Alguien me puede explicar por qué?


Gracias

 

Me interesó mucho este artículo. Por fin una posibilidad de abrir una ventana real y todo lo que desea tener. Todo el ejemplo se ejecuta con la restricción de que sólo los archivos dados son funcionales. Además hay problemas con "enum GuiEventType", si no añades este "enum" tu mismo MetaTrader5 no compila el ejemplo en absoluto. Los eventos sólo son conocidos por el editor desde la DLL hasta que se quiere compilar.

Hubiera sido muy agradable tener finalmente opciones reales de interfaz. Pero desafortunadamente esto es solo una demo - muy envidiable para mi.

El primer uso posible para mi hubiera sido una pantalla, ya que System-Out es muy anticuado e ilegible. Pero desafortunadamente la demo solo funciona con las versiones compiladas. En cuanto compilo yo mismo la DLL con Visual, el programa se inicia con un error .NET. Independientemente de si se ha seleccionado la compilación en 3.x o 5.NET. Mi suposición es que nuestro autor tiene un MetaTrader especial donde este tipo de cosas funciona - qué lástima.

 

Hola

Me pregunto si existe algún evento para que el EA sea eliminado del gráfico cuando se cierre el formulario.

¿Tengo que cambiar la libreria?

¿Alguien me puede ayudar?

 

He creado una clase C# WinForm basada en la anterior TradingForm. He añadido algunas características y están funcionando muy bien.

Actualmente estoy intentando añadir elementos adicionales al formulario a través de Nuget, pero el formulario no aparece cuando las librerías son referenciadas y usadas en el código.

¿Es posible hacer esto o hay otra forma de trabajar con librerías referenciadas?

Gracias de antemano por algún consejo :-)

 
Mano #:
¿Podemos adjuntar esta aplicación .Net al gráfico?
¿Pudiste hacerlo? Realmente lo necesito
 

Saludos. ¿Pueden decirme, por favor? ¿Qué estoy haciendo mal? Cuando enciendo el Asesor Experto, no aparece el formulario. No hay errores en el log.



 
Andrey Sokolov #:

Saludos. ¿Pueden decirme, por favor? ¿Qué estoy haciendo mal? Cuando enciendo el Asesor Experto, no aparece el formulario. No hay errores en el log.



Hola, ¿para qué versión de .NET está construida la librería y la aplicación con el formulario? MT4 y MT5 no soportan .NET Core 3 (no he comprobado las versiones más jóvenes), .NET 5 y .NET 6, ni para la librería ni para la aplicación del formulario.
Por supuesto que puedo estar equivocado, pero tampoco he ejecutado el formulario en estas versiones. Pude ejecutarlo yo mismo al construir bajo .NET Framework 4.8.

Además, si estás intentando importar a MT4, ahí tienes que modificar un poco el código de la librería, porque hay problemas con el paso de parámetros por referencia.

 

No funciona:

GuiController descargado del repositorio. Instalado Visual Studio 2022, creado un formulario con un botón, ejecutarlo en MetaTrader 5, me sale un error:

2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) System.Reflection.TargetInvocationException: Llamada de destino creado una excepción. ---> System.BadImageFormatException: Se esperaba que el módulo contuviera un manifiesto de ensamblado. (Excepción HRESULT: 0x80131018)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en System.Reflection.Assembly.LoadFile(String path)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en MtGuiController.GuiController.GetGuiController(String assembly_path, String form_name)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en MtGuiController.GuiController.ShowForm(Cadena assembly_path, Cadena form_name)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) --- Fin del seguimiento de la pila de excepciones internas ---
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en Wrapper.Wrapper.Call(MethodInfo method, Int64 owner, Int64 parameters, Int64 result)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) Error de ejecución .Net


Resultado del comando clrver:

PS C:{Development\Visual Studio Community 2022\C Sharp\GuiMt> clrver

Herramienta Microsoft (R) .NET CLR Version 4.8.3928.0

Copyright (c) Microsoft Corporation. Todos los derechos reservados.

Versiones instaladas en la máquina:

v2.0.50727

v4.0.30319


¿Con qué puede estar relacionado el error?

 
Nextor Visual Studio 2022, creado un formulario con un botón, ejecutarlo en MetaTrader 5, me sale un error:
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) System.Reflection.TargetInvocationException: Llamada destino creó una excepción. ---> System.BadImageFormatException: Se esperaba que el módulo contuviera un manifiesto de ensamblado. (Excepción HRESULT: 0x80131018)
2022.03.16 19:22:44.629 TradeAssistant (EURUSD_i,M5) en System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)


El resultado del comando clrver:

PS C:³³Development³Visual Studio Community 2022\C Sharp\GuiMt> clrver

Microsoft (R) .NET CLR Versión Herramienta Versión 4.8.3928.0

Copyright (c) Microsoft Corporation Todos los derechos reservados.

Versiones instaladas en la máquina:

v2.0.50727

v4.0.30319

¿Con qué puede estar relacionado el error?

GuiController está obsoleto y requiere recompilación.

 

Desde octubre de 2018, MQL5 soporta de forma nativa la integración con las librerías Net Framwork

Buenas tardes. Podrían decirme dónde puedo leer información oficial sobre el soporte de C#? No lo he encontrado en la documentación, hay información sobre conectar VS, usar MT como compilador, trabajar con Python, pero no he visto información sobre Sharp. Agradecería un enlace a la documentación oficial para familiarizarme con todas las características.