热门结果

$ £ ¥
¥ £ $

MetaTrader 5 中的 4302 错误:无法加载自定义指标

使用 MetaTrader 5 时,您可能会遇到的一个错误是 4302 错误——“无法加载自定义指标”。本指南介绍了可能导致此错误的原因以及有可能修复它的方法。

什么是 4302 错误?

从错误消息可以看出,4302 错误发生在 MetaTrader 5 平台无法加载自定义指标时,尽管它并没有提到错误发生的原因。MQL5 网站上关于该错误的描述提到,“未在 MarketWatch 中选择交易品种。”通常,当脚本、智能交易系统或指标试图为未添加至市场观察(Market Watch)窗口的交易品种调用 iCustom() 函数时会发生此错误。

我们将通过一个示例来更好地理解这种错误是如何产生的。在本例中,我们通过 MetaEditor 在您创建新指标时放置的默认程序代码创建了一项简单的自定义指标 TestIndicator。然后,我们创建了一份简单的脚本;它将使用 iCustom() 函数调用自定义指标并将其句柄作为结果返回。

void OnStart()
{
    string symbol = "EURUSD"; // 替换为您删除的交易品种
    ENUM_TIMEFRAMES timeframe = PERIOD_M1;     // 1 分钟时间周期

    // 尝试调用自定义指标
    int handle = iCustom(symbol, timeframe, "TestIndicator");

    if (handle == INVALID_HANDLE)
    {
        int error_code = GetLastError();
        Print("错误代码: ", error_code);
    }
    else
    {
        Print("自定义指标句柄 ", symbol, " is ", handle);
    }
}

如您所见,脚本专门为 EUR/USD 交易品种调用了指标。如果市场观察中包含该交易品种,则脚本将顺利运行,并返回指标的句柄。

脚本无错运行

但如果我们从市场观察窗口移除 EUR/USD, 则 MetaTrader 5 终端的智能交易系统选项卡中会显示 4302 错误。此外,该脚本被设置为在无法返回正确句柄时显示错误代码,并确认这种情况下的错误代码为 4302。

脚本出现 4302 错误

如何修复 4302 错误?

将交易品种添加至“市场观察”窗口

解决 4302 错误最直接的方法之一是将所需交易品种添加至市场观察窗口。问题是您可能不知道具体需要添加哪个交易品种,而且通过查看代码来查找交易品种也不是一件容易的事情,尤其是当您不熟悉编程时。

更改代码中的交易品种

另一个解决方案是更改脚本、EA 或指标调用 iCustom() 函数时使用的交易品种。显然,这个解决方案比前一个更难,特别是对于缺乏编程技能的交易者而言更是如此。

不在 iCustom() 函数中指定交易品种

对于那些正在编写自己的 EA 及指标,或者愿意深入研究无效 EA 或指标代码的交易者来说,最好的解决方案是不要在 iCustom() 函数中指定交易品种。相反,应在函数要求交易品种时使用 NULLSymbol() 参数。这将为当前选择的交易品种调用该函数。

结语

当脚本、智能交易系统或指标为当前未添加至市场观察(Market Watch)窗口的交易品种调用 iCustom() 函数时会发生 4302 错误

避免这项错误的最佳方法是在编写程序代码时避免为特定交易品种调用该函数。如果您在使用现有指标或 EA 时遇到错误,您可以通过将所需交易品种添加至市场观察窗口或修改 EA 代码来修复错误。或者,您可以选择一款编写得更好的 EA。