保持敬畏之心
交易是一场持久战

MQL4(45):检查EA运行所需的配置选项

#MQL4编程入门教学

想象一下,你精心聘请了一位顶级的交易员(你的EA)来管理账户。你把他带到了交易大厅,却忘记给他办理进入交易室的“门禁卡”。他空有一身本领,却什么也做不了。

在MetaTrader平台中,“允许实时交易”、“允许导入DLL”这些选项,就是我们必须授予EA的“门禁卡”。作为专业的EA开发者,我们不能假设用户总会正确地设置好一切。我们必须教会EA在开始工作前,先自己检查一下“门禁卡”是否都已配齐。

这项检查,最佳的执行地点,就是在OnInit()函数的开头。这是EA的“岗前培训”,确保一切就绪,才能上岗。

第一项检查:“我被授权交易了吗?” —— IsTradeAllowed()

这是最基础、也是最重要的权限。如果用户没有勾选“允许实时交易”,那么你所有的OrderSend(), OrderClose()等函数都将失效。

  • 视觉信号:当这项权限被禁用时,图表右上角的EA名称旁边,会出现一个标志性的“哭脸”☹️。
  • 函数检测:我们可以用IsTradeAllowed()函数来检测。如果它返回false,就意味着EA被“绑住了手脚”。

提示用户进行正确设置:

if (IsTradeAllowed() == false)
{
    Alert("EA 交易功能未启用! \n请在智能交易系统属性 -> 常规 -> 勾选 '允许实时交易 (Allow live trading)'。");
    // 也可以考虑 return(INIT_FAILED); 来阻止EA继续加载
}

学长建议:一个清晰、准确、指导性强的Alert()弹窗,能为你省去大量的售后沟通成本。它直接告诉用户“问题是什么”以及“如何解决”。

第二项检查:“我能使用我的‘黑匣子’工具吗?” —— IsLibrariesAllowed()

如果你的EA像我们之前讨论的那样,调用了一个外部编译好的.ex4库文件(我们称之为“黑匣子”工具),那么用户就必须勾选“允许导入外部EA的函数”这个选项。

函数检测:使用IsLibrariesAllowed()函数。

提示用户进行正确设置:

if (IsLibrariesAllowed() == false)
{
    Alert("EA 调用外部 MQL 库的功能未启用! \n请在智能交易系统属性 -> 常规 -> 勾选 '允许导入外部EA的函数 (Allow import of external experts)'。");
}

第三项检查:“我能呼叫‘C++外援’吗?” —— IsDllsAllowed()

如果你的EA更进一步,需要调用外部的.dll动态链接库(比如用C++写的复杂算法模块),这需要一项更高级别的授权。因为DLL可以与操作系统进行更深度的交互,所以MT4默认对此项权限的把控非常严格。

函数检测:使用IsDllsAllowed()函数。

提示用户进行正确设置:

if (IsDllsAllowed() == false)
{
    Alert("EA 调用 DLL 动态链接库的功能未启用! \n请在智能交易系统属性 -> 常规 -> 勾选 '允许导入 DLL (Allow DLL imports)'。");
}

参考下图,它展示了“EA属性”对话框中这些关键的勾选项:

通过在EA启动时加入这些自检程序,你的EA就从一个被动的“工具”,进化成了一个能与用户沟通、能自我诊断问题的“智能助手”,这正是专业EA所应具备的品质。

赞(0)
未经允许不得转载:图道交易 » MQL4(45):检查EA运行所需的配置选项
分享到

评论 抢沙发

登录

找回密码

注册