Carteras Blog        Login      Registrarse        

Síguenos en:   RSS   Facebook  Twitter   Linkedin   

Resultados 1 al 50 de 77

Ver modo hilado

Mensaje anterior Mensaje anterior   Próximo mensaje Próximo mensaje
  1. #11
    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...

  2. 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, 20: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
  •