Crie sua própria extensão MetaTrader (dll) - página 11

 

Pergunta básica para a programação do mql4

Hi,

Eu quero importar algumas funções de uma dll. Portanto, eu tive que incluir alguns arquivos *.h.

Isto é possível, ou eu tenho que escrever *.mqh em vez de *.h?

A dll se para uma linguagem de programação c.

E há funções com ponteiros e estruturas como datatyps. É possível usar isso com mql4?

 

preço do estoque receptor

Olá,

Estou tentando receber os preços das ações do meta trader com c#, mas não sei realmente como fazer isso.

Alguém pode me explicar ou me enviar para um guia específico?

muito obrigado.

 
kfirmt:
Olá,

Estou tentando receber os preços das ações do meta trader com c#, mas não sei realmente como fazer isso.

Alguém pode me explicar ou me enviar para um guia específico?

muito obrigado.

Nos exemplos de especialistas\\DLLExamplo você encontrará como os preços podem ser passados de metatrader para C (está perto o suficiente, então você pode usar esse exemplo diretamente para isso), A infostrutura da taxa não mudou desde o início e ainda é definida como :

struct RateInfo

{

unsigned int ctm;

double open;

double low;

double high;

double close;

double vol;

};

portanto, você não deve ter nenhum problema para passá-la para C#

 

obrigado!

onde estão os especialistas\exemplos\DLLExample?

 
kfirmt:
obrigado!onde estão os especialistas\\\\DLLExample?

Em sua pasta metatrader (a pasta onde você a instalou)

 
mladen:
Em sua pasta metatrader (a pasta onde você a instalou)

Fiz o download de 2 metatraders, e em ambos os exemplos estavam em c++. Acho que consegui entender com isso, embora esteja programando com c#, mas não consegui encontrar o que preciso, como obter os preços das ações.

 
kfirmt:
Fiz o download de 2 metatraders, e em ambos os exemplos estavam em c++. Acho que consegui entender com isso, embora esteja programando com c#, mas não consegui encontrar o que preciso, como obter os preços das ações.

Você está passando os preços de e indicador ou um EAs para sua extensão DLL

Você tem um exemplo completo (parte MQL assim como parte C) nessa pasta de como é feito. Uma vez que você receba dados da parte mql em C# parte ity é apenas uma questão de código o que você vai fazer com ela

 
mladen:
Você está passando os preços de e indicador ou um EAs para sua extensão DLL Você tem um exemplo completo (parte MQL assim como parte C) nessa pasta de como é feito. Uma vez que você receba dados da parte mql em C# parte ity é apenas uma questão de código o que você vai fazer com ele

Não encontrei exemplo em MQL ou C, apenas em C++. De qualquer forma, havia muitas funções e eu não conseguia entender qual delas era a função que eu precisava para conseguir o preço. você tem tal exemplo?

muito obrigado.

 
kfirmt:
Não encontrei exemplo em MQL ou C, apenas em C++. De qualquer forma, havia muitas funções e eu não conseguia entender qual delas era a função que eu precisava para conseguir o preço. você tem tal exemplo? muito obrigado.

Do lado C (ver o comentário) :

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

//| |

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

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:
Do lado C (veja o comentário) :
//+------------------------------------------------------------------+

//| |

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

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

}

obrigado!

você tem algo em C#? porque realmente não me diz nada.