Cita Iniciado por LeoCV Ver mensaje
He estado pensando en ello, y es posible que se pueda hacer, pero quiero asegurarme de tener claro el proceso:

  1. Abrimos Metatrader 4, iniciamos sesión en nuestro proveedor de datos (para empezar a recibir datos del par EURUSD, por ejemplo), y "arrancamos" el asesor experto (EA), programado en MQL4. Metatrader empieza a enviar cotizaciones al EA (en el evento OnTick, si no me equivoco).
  2. El EA carga la DLL de enlace y le envía cada nuevo dato recibido.
  3. La DLL de enlace carga una DLL de trabajo (hecha en .NET) y le comunica el nuevo dato. Esta DLL sería la encargada de analizar y procesar el dato para decidir si comprar, vender, o no hacer nada.
  4. Si procede, la DLL de trabajo ejecutaría la orden de compra o venta utilizando la DLL de enlace (que a su vez pasaría esta orden al EA, y de ahí a Metatrader y el mercado).
  5. Fin del proceso. Se descargan las DLLs de trabajo y de enlace y sólo queda trabajando Metatrader y el EA.

¿Es eso exactamente lo que se pretende?
En la ayuda del editor de Metatrader se da la lista completa de funciones MQL4 disponibles. Para no mezclar lenguajes creo que es más simple "saltarme" la parte de Metatrader.

Voy a intentar crear en la DLL de enlace una función equivalente a cada una de las funciones de interés de Metatrader. De este modo el EA lo único que hará será traducir directamente las llamadas de la DLL de enlace a funciones MQL4. Así evito tener que ir adaptando el EA a los cambios que se hagan en la DLL...

Después veremos como enlazar la DLL con .NET...

Un saludo