创建您自己的MetaTrader扩展(dll)。 - 页 11

 

对mql4-编程的基本问题

你好。

我想从一个dll中导入一些函数。因此我必须包含一些*.h文件。

这是否可行,或者我必须写*.mqh而不是*.h?

这个dll是为一种c语言编程的。

有一些带有指针和结构的函数作为数据源。是否可以用mql4来使用?

 

接收股票价格

你好。

我想用c#从meta trader接收股票价格,但不知道如何做。

谁能给我解释一下或者给我一个具体的指南?

非常感谢。

 
kfirmt:
你好。

我想用c#从meta trader接收股票价格,但不知道怎么做。

谁能给我解释一下或者给我一个具体的指南?

非常感谢。

在experts/examples/DLLExample中,你会发现价格是如何从metatrader传递到C语言的(它足够接近,所以你可以直接使用这个例子),利率信息结构从一开始就没有改变,仍然定义为.NET。

struct RateInfo

{

unsigned int ctm;

double open;

double low;

double high;

double close;

double vol;

};

所以你把它传给C#应该不会有任何问题。

 

谢谢!

where is theexperts\examples\DLLExample ?

 
kfirmt:
谢谢!experts/examples/DLLExample 在哪里

在你的metatrader文件夹中(你安装它的文件夹)。

 
mladen:
在你的metatrader文件夹(你安装它的文件夹)中

我已经下载了2个元数据库,在这两个数据库中的例子都是用C++语言。虽然我是用c#编程的,但我想我可以从中理解,但我找不到我需要的东西,即如何获得股票价格。

 
kfirmt:
我已经下载了两个metatraders,在这两个例子中都是用C++语言。我想我能理解这一点,尽管我是用c#编程的,但我找不到我需要的东西,如何获得股票价格。

你正在将指标或EA的价格传递给你的DLL扩展。

你有一个完整的例子(MQL部分和C部分),在该文件夹中,它是如何完成的。一旦你在C#部分接收了来自MQL部分的数据,你将如何处理这些数据就只是一个代码的问题了。

 
mladen:
你正在将价格从指标或EA传递到你的DLL扩展中,你有一个完整的例子(MQL部分和C部分),在该文件夹中,它是如何完成的。一旦你在C#部分接收到来自MQL部分的数据,你将如何处理这些数据,这只是一个代码问题。

我没有找到MQL或C语言的例子,只有C++的。总之,有很多函数,我不明白哪一个是我需要的函数,以获得价格。你有这样的例子吗?

非常感谢。

 
kfirmt:
我没有找到MQL或C语言的例子,只有C++的例子。总之,有很多函数,我不明白哪一个是我需要的函数,以获得价格。你有这样的例子吗?

从C方面来看(见评论)。

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

//| |

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

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:
从C端来看(见评论)。
//+------------------------------------------------------------------+

//| |

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

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

}

谢谢!

你有C#语言的东西吗? 因为对我来说,它并没有真正说明什么。