Cree su propia extensión de MetaTrader (dll) - página 11

 

Pregunta básica a mql4-programación

Hola,

Quiero importar algunas funciones de una dll. Por lo tanto, tengo que incluir algunos archivos *.h.

¿Es esto posible, o tengo que escribir *.mqh en lugar de *.h?

La dll si es para un lenguaje de programación c.

Y hay funciones con punteros y structs como datatyps. ¿Es posible usar eso con mql4?

 

recibir el precio de las acciones

Hola,

Estoy tratando de recibir los precios de las acciones de meta trader con c#, pero no sé muy bien cómo hacerlo.

¿alguien puede explicarme o enviarme a una guía específica?

muchas gracias.

 
kfirmt:
Hola,

Estoy intentando recibir los precios de las acciones de meta trader con c#, pero no sé muy bien cómo hacerlo.

¿alguien puede explicarme o enviarme a una guía específica?

muchas gracias.

En el experts\examples\DLLExample encontraras como se pueden pasar los precios de metatrader a C (es lo suficientemente cercano , así que puedes usar ese ejemplo directamente para eso), La infoestructura de la tasa no ha cambiado desde el principio y sigue siendo definida como :

struct RateInfo

{

unsigned int ctm;

double open;

double low;

double high;

double close;

double vol;

};

así que no deberías tener ningún problema para pasarla a C#

 

¡gracias!

¿dónde está el experts\examples\DLLExample?

 
kfirmt:
gracias! ¿dónde está el experts\examples\DLLExample?

En su carpeta de metatrader (la carpeta donde lo instaló)

 
mladen:
En tu carpeta de metatrader (la carpeta donde lo instalaste)

He descargado 2 metatraders, y en los dos los ejemplos estaban en c++. Creo que he podido entender de esto aunque estoy programando con c#, pero no he podido encontrar lo que necesito, como obtener los precios de las acciones.

 
kfirmt:
He descargado 2 metatraders, y en los dos los ejemplos estaban en c++. Creo que podría entender de esto aunque estoy programando con c#, pero no he podido encontrar lo que necesito, como obtener los precios de las acciones.

Estás pasando los precios desde un indicador o un EA a tu extensión DLL

Tienes un ejemplo completo (tanto la parte MQL como la parte C) en esa carpeta de cómo se hace. Una vez que recibas los datos de la parte mql en la parte C# es solo cuestión de código lo que vas a hacer con ellos

 
mladen:
Estas pasando los precios desde un indicador o un EA a tu extensión DLL Tienes un ejemplo completo (parte MQL así como parte C) en esa carpeta de cómo se hace. Una vez que recibas los datos de la parte mql en la parte C# es sólo una cuestión de código lo que vas a hacer con él

No encontré ejemplo en MQL o C, sólo en C++. De todos modos, había un montón de funciones y no pude entender cuál es la función que necesito para obtener el precio.

muchas gracias.

 
kfirmt:
No encontré ejemplo en MQL o C, sólo en C++. De todos modos, había un montón de funciones y no podía entender cuál es la función que necesito para obtener el precio.

Desde el lado de C (ver el comentario) :

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

MT4_EXPFUNC double __stdcall GetRatesItemValue(const RateInfo* rates,const int rates_total,const int shift,const int nrate)

{

//---

if(rates==NULL)

{

printf("GetRatesItemValue: NULL array\n");

return(0.0);

}

//---

if(rates_total<0)

{

printf("GetRatesItemValue: wrong rates_total number (%d)\n", rates_total);

return(0.0);

}

//---

if(shift=rates_total)

{

printf("GetRatesItemValue: wrong shift number (%d)\n", shift);

return(0.0);

}

//---

if(nrate5)

{

printf("GetRatesItemValue: wrong rate index (%d)\n", nrate);

return(0.0);

}

//

// here you are having prices, time and volume

//

int nitem=rates_total-1-shift;

switch(nrate)

{

case 0: return double(rates[nitem].ctm);

case 1: return rates[nitem].open;

case 2: return rates[nitem].low;

case 3: return rates[nitem].high;

case 4: return rates[nitem].close;

case 5: return rates[nitem].vol;

}

//---

return(0.0);

}

 
mladen:
Desde el lado de C (ver el comentario) :
//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

MT4_EXPFUNC double __stdcall GetRatesItemValue(const RateInfo* rates,const int rates_total,const int shift,const int nrate)

{

//---

if(rates==NULL)

{

printf("GetRatesItemValue: NULL array\n");

return(0.0);

}

//---

if(rates_total<0)

{

printf("GetRatesItemValue: wrong rates_total number (%d)\n", rates_total);

return(0.0);

}

//---

if(shift=rates_total)

{

printf("GetRatesItemValue: wrong shift number (%d)\n", shift);

return(0.0);

}

//---

if(nrate5)

{

printf("GetRatesItemValue: wrong rate index (%d)\n", nrate);

return(0.0);

}

//

// here you are having prices, time and volume

//

int nitem=rates_total-1-shift;

switch(nrate)

{

case 0: return double(rates[nitem].ctm);

case 1: return rates[nitem].open;

case 2: return rates[nitem].low;

case 3: return rates[nitem].high;

case 4: return rates[nitem].close;

case 5: return rates[nitem].vol;

}

//---

return(0.0);

}

¡gracias!

¿tienes algo en C#? porque realmente no me dice nada.

Razón de la queja: