为了确保EA能够正常执行交易或调用外部模块,MetaTrader客户端中有一些关键的配置选项需要用户正确设置。这些选项通常位于加载EA时弹出的“EA属性”对话框的“常规 ”选项卡中。在EA的初始化阶段(例如 OnInit()
)检查这些设置是一种良好编程实践。
-
检查“允许实时交易”
- 重要性: 这是 EA 进行任何真实或模拟交易操作的前提条件。如果此选项未被勾选,EA 将无法下单、平仓或修改订单。
- 视觉提示: 当此选项被禁用时,附加到图表上的 EA 名称旁边通常会显示一个“哭脸”或“皱眉的脸”图标,表明其无法进行交易。
- MQL4 函数检查: 您可以使用
IsTradeAllowed()
函数来检测此设置的状态。如果该函数返回false
,则表示“允许实时交易”未被启用。 - 提示用户:
if (IsTradeAllowed() == false) { Alert("EA 交易功能未启用! \n请在智能交易系统属性 -> 常规 -> 勾选 '允许实时交易 (Allow live trading)'。"); // 也可以考虑 return(INIT_FAILED); 来阻止EA继续加载 }
-
检查“允许导入外部EA的函数”
- 重要性: 如果您的 EA 需要调用另一个编译好的
.ex4
或库文件中的函数,则此选项必须被勾选。 - MQL4函数检查: 使用
IsLibrariesAllowed()
函数。如果返回false
,则表示不允许导入外部库。 - 提示用户:
if (IsLibrariesAllowed() == false) { Alert("EA 调用外部 MQL 库的功能未启用! \n请在智能交易系统属性 -> 常规 -> 勾选 '允许导入外部EA的函数 (Allow import of external experts)'。"); }
- 重要性: 如果您的 EA 需要调用另一个编译好的
-
检查“允许导入 DLL”
- 重要性: 如果您的EA需要调用外部的 Windows 动态链接库 (.dll) 文件中的函数(通常用于执行 MQL 本身不直接支持的复杂计算、系统交互或集成第三方库),则此选项必须被勾选。
- MQL 函数检查: 使用
IsDllsAllowed()
函数。如果返回false
,则表示不允许导入DLL。 - 提示用户:
if (IsDllsAllowed() == false) { Alert("EA 调用 DLL 动态链接库的功能未启用! \n请在智能交易系统属性 -> 常规 -> 勾选 '允许导入 DLL (Allow DLL imports)'。"); }
参考“图 8.2”。展示了“EA属性”对话框中“常规”选项卡的外观,其中包含了上述这些勾选项。
您可以在 MQL 官方参考文档的“检查函数 (Checkup Functions)”部分找到所有与终端环境和设置相关的检查函数列表及其详细说明。
通过在 EA 启动时执行这些检查,您可以及时提醒用户进行必要的配置,从而避免因设置不当导致的运行错误或功能缺失。