在MT4编程中,DLL(Dynamic Link Library) 是一种动态链接库,它是一个可被多个程序调用的二进制文件。对于MT4(MetaTrader 4)而言,DLL主要的作用是扩展MT4的功能,允许开发者在MQL4脚本或指标中调用外部的C++等语言编写的代码,从而提升MT4的性能和灵活性。
那么,我们可以用DLL来干嘛呢?这是重点。
自定义数学计算或优化算法。增强MT4的功能,实现MT4本身无法实现的量化功能,处理大量的历史数据、统计分析或者优化问题,然后通过DLL将它与MQL4脚本连接。
与外部数据源交互。比如通过DLL与数据库进行交互,或者访问一个远程服务器上的API接口,获取市场外部的数据(如股市、期货、加密货币等其他市场的数据)并将其传回MT4进行交易决策。
加密解密操作。如果你的策略需要对交易信号或数据进行加密/解密,使用C++实现这些加密算法然后通过DLL接口调用,能够提供比MQL4更强大的加密支持。
文件处理。使用DLL可以让你在MT4中处理复杂的文件操作,比如读取非标准格式的文件、写入大量数据或进行文件压缩/解压等。
我们怎么实现呢?
使用Microsoft Visual C++ 6 打开 Visual C++
首先,启动 Microsoft Visual C++ 6.0。
创建一个新的工程
在“文件”菜单中选择“新建”,然后在弹出的对话框中选择“工程”。选择“MFC AppWizard (dll)”类型,并为你的工程命名为“demo”,然后点击“OK”。
注解:你也可以选择“Win32 Dynamic-Link Library”,但是这样就不能使用CString类型。CString是一个在MFC中常用且易于应用的类型。
配置工程类型
在接下来的对话框中,选择“静态库”选项,而不是“共享库”,然后点击“完成”。
此时,会弹出一个信息窗口,点击“OK”。
创建工程完成
恭喜!你已经创建了一个名为“demo”的工程文件,可以开始编写你自己的DLL代码了。该项目支持MFC代码。
编辑 demo.cpp 文件
打开 demo.cpp 文件,你会看到一些注释。复制这些注释并将其粘贴到文件的最后,然后进行修改。代码格式如下:
// 例如:
extern "C" BOOL PASCAL EXPORT ExportedFunction()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// 在这里编写正常的函数体
}
修改代码
修改后的代码