Créez votre propre extension MetaTrader (dll) - page 11

 

Question de base pour mql4-programming

Bonjour,

Je veux importer certaines fonctions d'une dll. Par conséquent, je dois inclure quelques fichiers *.h.

Est-ce possible, ou dois-je écrire *.mqh au lieu de *.h ?

La dll est destinée à un langage de programmation en C. Il y a des fonctions avec des pointeurs et des symboles.

Et il y a des fonctions avec des pointeurs et des structs comme datatyps. Est-il possible de les utiliser avec mql4 ?

 

Réception du cours de l'action

Bonjour,

J'essaie de recevoir les prix des actions de meta trader avec c#, mais je ne sais pas vraiment comment faire.

Quelqu'un peut-il m'expliquer ou m'envoyer dans un guide spécifique ?

Merci beaucoup.

 
kfirmt:
Bonjour,

J'essaie de recevoir les prix des actions de meta trader avec c#, mais je ne sais pas vraiment comment faire.

Quelqu'un peut-il m'expliquer ou m'envoyer dans un guide spécifique ?

Merci beaucoup.

Dans les exemples d'experts, vous trouverez comment les prix peuvent être passés de Metatrader à C (c'est assez proche, donc vous pouvez utiliser cet exemple directement pour cela), L'infostructure du taux n'a pas changé depuis le début et est toujours définie comme :

struct RateInfo

{

unsigned int ctm;

double open;

double low;

double high;

double close;

double vol;

};

donc vous ne devriez pas avoir de problèmes pour le passer en C#.

 

Merci !

Où se trouve l'exemple des experts ?

 
kfirmt:
merci ! où se trouve l'exemple experts\examples\DLLExample ?

Dans votre dossier metatrader (le dossier où vous l'avez installé)

 
mladen:
Dans votre dossier metatrader (le dossier où vous l'avez installé)

J'ai téléchargé 2 metatraders, et dans les deux cas, les exemples étaient en c++. Je pense que je pourrais comprendre à partir de cela bien que je programme avec c#, mais je ne pouvais pas trouver ce dont j'ai besoin, comment obtenir les prix des actions.

 
kfirmt:
J'ai téléchargé 2 metatraders, et dans les deux cas, les exemples étaient en C++. Je pense que je pourrais comprendre à partir de cela bien que je programme avec c#, mais je ne pouvais pas trouver ce dont j'ai besoin, comment obtenir les prix des actions.

Vous passez les prix d'un indicateur ou d'un EAs à votre extension DLL.

Vous avez un exemple complet (partie MQL ainsi que la partie C) à ce dossier comment il est fait. Une fois que vous recevez les données de la partie MQL dans la partie C#, ce n'est qu'une question de code, qu'allez-vous faire avec ?

 
mladen:
Vous passez les prix d'un indicateur ou d'un EAs à votre extension DLL. Vous avez un exemple complet (partie MQL ainsi que partie C) dans ce dossier comment cela se passe. Une fois que vous avez reçu les données de la partie MQL dans la partie C#, c'est seulement une question de code que vous allez faire avec.

Je n'ai pas trouvé d'exemple en MQL ou en C, seulement en C++. De toute façon, il y avait beaucoup de fonctions et je ne pouvais pas comprendre laquelle est la fonction dont j'ai besoin pour obtenir le prix. avez-vous un tel exemple ?

Merci beaucoup.

 
kfirmt:
Je n'ai pas trouvé d'exemple en MQL ou en C, seulement en C++. De toute façon, il y avait beaucoup de fonctions et je n'arrivais pas à comprendre laquelle est la fonction dont j'ai besoin pour obtenir le prix. Avez-vous un tel exemple ?

Du côté du C (voir le commentaire) :

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

//| |

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

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:
Du côté du C (voir le commentaire) :
//+------------------------------------------------------------------+

//| |

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

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);

}

merci !

avez-vous quelque chose en C# ? car cela ne me dit pas grand chose.

Raison: