Carteras Blog        Login      Registrarse        

Síguenos en:   RSS   Facebook  Twitter   Linkedin   

Resultados 1 al 50 de 77

Vista híbrida

Mensaje anterior Mensaje anterior   Próximo mensaje Próximo mensaje
  1. #1
    Trader Senior Avatar de LeoCV
    Fecha de ingreso
    19 sep, 14
    Mensajes
    148
    Thanks
    116
    Thanked 32 Times in 25 Posts
    Poder de reputación
    5

    Re: Experiencia haciendo DLL para MT4 en C++

    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

  2. #2
    Trader Senior Avatar de LeoCV
    Fecha de ingreso
    19 sep, 14
    Mensajes
    148
    Thanks
    116
    Thanked 32 Times in 25 Posts
    Poder de reputación
    5

    Re: Experiencia haciendo DLL para MT4 en C++

    Tras simplificarlo al máximo, creo que la DLL de enlace más simple posible debe tener cuatro funciones, que se utilizarían en el evento OnTick:

    1. Primero se llama a EAOnTick, pasando a la DLL como parámetros los valores de Bid y Ask. Devuelve 1 si hay que dar orden de compra, -1 si hay que dar orden de venta, o 0 si no hay que hacer nada. La DLL debe llevar cuenta si se había comprado ya o no...
    2. EABuyData: Si hay que dar orden de compra esta función permite obtener de la DLL la cantidad a comprar y el Slippage.
    3. EASellData: Si hay que dar orden de venta esta función permite obtener la cantidad que la DLL dice que hay que vender (en principio, todo lo que se había comprado), y el Slippage.
    4. EAOrderTicket: Le indica a la DLL el ticket asignado en la operación. La utilidad real de esta función es que permite a la DLL saber si se ha hecho la compra o venta con éxito (Ticket>0) o no (Ticket<=0).

    El código MQL podría ser similar a:

    Código:
    #import "EA.dll"
    	int EAOnTick(double BidValue, double AskValue);
    	void EABuyData(double &VolumeValue, int &SlippageValue);
    	void EASellData(double &VolumeValue, int &SlippageValue);
    	void EAOrderTicket(int Ticket);
    #import
    
    void OnTick() {
    	int Op;
    	double Lotes;
    	int Slippage;
    	int Ticket =-1;
    
    	Op = EAOnTick(Bid, Ask);
    	if (Op==0) return;
    
    	if (Op==1) {
    		// Dar orden de compra
    		EABuyData(Lotes, Slippage);
    		Ticket = OrderSend(Symbol(), OP_BUY, Lotes, Ask, Slippage, 0.0, 0.0);
    	} else {
    		// Dar orden de venta
    		EASellData(Lotes, Slippage);
    		Ticket = OrderSend(Symbol(), OP_SELL, Lotes, Bid, Slippage, 0.0, 0.0);
    	}
    
    	EAOrderTicket(Ticket);
    }
    Este es el punto en que me llego... Ahora iré preparando un ejemplo completo muy simple utilizando esta DLL...

  3. The Following User Says Thank You to LeoCV For This Useful Post:

    BolsiaSicav (12/05/2015)

Información de tema

Usuarios viendo este tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas similares

  1. Oanda FOREX, experiencia
    Por mbolsia en el foro FOREX
    Respuestas: 13
    Último mensaje: 10/12/2013, 21:51

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •