Crea la tua estensione MetaTrader (dll) - pagina 11

 

Domanda di base alla programmazione di mql4

Ciao,

Voglio importare alcune funzioni da una dll. Pertanto devo includere alcuni file *.h.

È possibile o devo scrivere *.mqh invece di *.h?

La dll è per un linguaggio di programmazione c.

E ci sono funzioni con puntatori e strutture come datatyps. È possibile utilizzarle con mql4?

 

ricevere il prezzo delle azioni

Salve,

sto cercando di ricevere i prezzi delle azioni da meta trader con c#, ma non so bene come fare.

qualcuno può spiegarmi o inviarmi una guida specifica?

grazie mille.

 
kfirmt:
Ciao,

Sto cercando di ricevere i prezzi delle azioni da meta trader con c#, ma non so bene come fare.

Qualcuno può spiegarmi o mandarmi una guida specifica?

grazie mille.

Nell'esempio experts\examples\DLLE troverai come i prezzi possono essere passati da metatrader a C (è abbastanza vicino, quindi puoi usare direttamente quell'esempio per quello), L'infostruttura del tasso non è cambiata dall'inizio ed è ancora definita come :

struct RateInfo

{

unsigned int ctm;

double open;

double low;

double high;

double close;

double vol;

};

quindi non dovresti avere problemi a passarlo in C#

 

grazie!

dov'è l'esempio di esperti?

 
kfirmt:
Grazie! Dove si trova l'esempio experts\examples\DLLE?

Nella tua cartella metatrader (la cartella dove l'hai installato)

 
mladen:
Nella tua cartella metatrader (la cartella dove l'hai installato)

Ho scaricato 2 metatraders, e in entrambi gli esempi erano in c++. Penso che potrei capire da questo anche se sto programmando con c#, ma non sono riuscito a trovare quello di cui ho bisogno, come ottenere i prezzi delle azioni.

 
kfirmt:
Ho scaricato 2 metatraders, e in entrambi gli esempi erano in c++. Penso che potrei capire da questo anche se sto programmando con c#, ma non sono riuscito a trovare quello di cui ho bisogno, come ottenere i prezzi delle azioni.

Stai passando i prezzi da un indicatore o un EAs alla tua estensione DLL

Hai un esempio completo (parte MQL e parte C) in quella cartella come si fa. Una volta che ricevi i dati dalla parte MQL nella parte C# è solo una questione di codice che cosa hai intenzione di fare con esso

 
mladen:
Stai passando i prezzi da un indicatore o un EAs alla tua estensione DLL Hai un esempio completo (parte MQL e parte C) in quella cartella come si fa. Una volta che ricevi i dati dalla parte MQL nella parte C# è solo una questione di codice che cosa hai intenzione di fare con esso

Non ho trovato esempi in MQL o C, solo in C++. Comunque, c'erano un sacco di funzioni e non riuscivo a capire qual è la funzione che mi serve per ottenere il prezzo.

Grazie mille.

 
kfirmt:
Non ho trovato esempi in MQL o C, solo in C++. Comunque, c'erano molte funzioni e non riuscivo a capire qual è la funzione che mi serve per ottenere il prezzo. avete un esempio del genere? grazie mille.

Dal lato C (vedi il commento):

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

//| |

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

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:
Dal lato C (vedi il commento) :
//+------------------------------------------------------------------+

//| |

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

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

}

grazie!

Hai qualcosa in C#, perché non mi dice nulla.

Motivazione: