一篇非常有趣的文章。为了完整起见,它是缺失的。
1.我们从哪里获得报价,能否从hst文件中获取?
2.如何使这个库与2009a或2009b MateLab中的库兼容?他们那里也有C和C++,不是吗?
一个非常大的要求。
- 报价取自终端--它们现在既详细又深入(10年及以上)。
在任何情况下,我们都不应该直接查看终端存储的二进制文件 - 这只会导致严重的数据访问冲突。即使测试显示 "工作正常,没有问题",仍然会出现终端和外部程序同时访问这些数据的时刻,有人会因此而崩溃。人们曾多次偶然发现它。 - 由于对DLL调用的stdcall/cdecl约定的透明支持,现在在MQL5中对接图书馆变得更加容易。
如果有人写了一篇关于通过DLL连接MetaTrader 4/5和Matlab的详细的好文章,它将获得200美元或更多。
MQL4.社区已经有关于Matcad - MetaTrader 4捆绑的文章。
Взаимодействие между MеtaTrader 4 и MATLAB Engine (виртуальная машина MATLAB) - Статьи по MQL4
- www.mql5.com
Взаимодействие между MеtaTrader 4 и MATLAB Engine (виртуальная машина MATLAB) - Статьи по MQL4: особенности автоматических торговых стратегий
Renat,dll调用的速度如何?
我需要连接两个终端,以便它们将报价实时地翻译成Excel。
在MT4中,可以用DDE来完成。在MT5中,似乎通过DLL是唯一的出路。
但是,如果每个传入的tick将被传递给DLL...我认为这将是一种难以想象的缓慢。当然,我还没有尝试去实施它...但说实话,我并不想尝试。这将是一场恶梦。
简而言之,让我们把DDE返回到MT5。这是一个不合时宜的做法,但有时你可能需要它。
附注:感谢你的这篇文章,它非常及时。我一直缺少这样一份材料。
我需要连接两个终端,以便它们将报价实时地翻译成Excel。
在MT4中,可以用DDE来完成。在MT5中,似乎通过DLL是唯一的出路。
但是,如果每个传入的tick将被传递给DLL...我认为这将是一种难以想象的缓慢。当然,我还没有尝试去实施它...但说实话,我并不想尝试。这将是一场恶梦。
简而言之,让我们把DDE返回到MT5。这是一个不合时宜的做法,但有时你可能需要它。
附注:感谢你的这篇文章,它非常及时。我一直缺少这样一份材料。
谢谢你!!!!。
benik:
Renat,dll的调用速度如何?
Renat,dll的调用速度如何?
检查通话速度非常容易。例如,可以这样做一个粗略的计算。
_DLLAPI int __stdcall fnCalcSpeed(int var1,int var2,int var3) { return(0); } #import "MQL5DLLSamples.dll" int fnCalcSpeed(int var1,int var2,int var3); #import int calls=0; int ticks=GetTickCount(); while(GetTickCount()-ticks<1000) { for(int i=0;i<1000;i++) fnCalcSpeed(1,2,3); calls++; } Print(calls * 1000, "вызовов в секунду");
我在Quad Q9400 @2.66Ghz上得到每秒57,000次呼叫。同样的代码在MetaTrader 4中每秒有大约20,000,000次调用,因为那里没有控制和管道。
我们一定会努力减少MetaTrader 5中DLL调用的损失。
在下一个版本中,DLL调用速度将提高到每秒20 000 000次 "空 "调用,就像MQL4中一样。
如果只能通过dll导出报价,那么原来必须在每个要导出的工具上放置一个脚本?如果有很多这样的人呢?例如,50?
我知道可以在一个脚本中传递许多工具的报价,但它不会完全替代DDE,因为在DDE中不会丢失点数。
问题是,我们的任务不是 "提供一个报价界面"。
我们的目标是为开发分析系统创造一个完整和自足的环境。这样的环境,甚至不需要使用第三方程序。
在任何情况下,Mql5都是一种乐趣。谢谢
发表文章:如何在10分钟内为MQL5编写一个DLL并交换数据?:
作者:Renat Fatkhullin