Одна из ошибок, с которой вы можете столкнуться при использовании MetaTrader 5 - Ошибка 4302 - 'Невозможно загрузить собственный индикатор'. В этом руководстве описаны причины, которые могут вызвать такую ошибку, а также возможные способы ее устранения.
Что означает ошибка 4302?
Как видно из сообщения, Ошибка 4302 происходит, когда платформа MetaTrader 5 не может загрузить собственный индикатор пользователя, хотя это не объясняет нам, почему это произошло. В описании ошибки на сайте MQL5 говорится, что 'в окне «Обзор рынка» не выбран символ'. Обычно эта ошибка возникает, когда скрипт, советник или индикатор пытается вызвать функцию iCustom() для символа, который не был добавлен в окно Обзор рынка (MarketWatch).
Чтобы понять, как может возникнуть эта ошибка, рассмотрим пример. В нем мы создали простой собственный индикатор под названием TestIndicator, используя программный код по умолчанию, который MetaEditor устанавливает при создании нового индикатора. Затем мы создали простой скрипт, который использует функцию iCustom() для вызова пользовательского индикатора и возврата его хэндла в качестве результата.
void OnStart() { string symbol = "EURUSD"; // Replace with the symbol you removed ENUM_TIMEFRAMES timeframe = PERIOD_M1; // 1-minute timeframe // Attempt to call the custom indicator int handle = iCustom(symbol, timeframe, "TestIndicator"); if (handle == INVALID_HANDLE) { int error_code = GetLastError(); Print("Error Code: ", error_code); } else { Print("Custom indicator handle for ", symbol, " is ", handle); } }
Как видите, скрипт вызывает индикатор именно для инструмента EUR/USD. Если символ присутствует в окне Обзор рынка, скрипт запускается без проблем, возвращая хэндл индикатора.
Однако если мы удалим EUR/USD из окна Обзор рынка, Ошибка 4302 будет отображена во вкладе Советники терминала MetaTrader 5. Кроме того, если скрипт не может вернуть правильный хэндл, он показывает код ошибки, и подтверждает, что в данном случае код ошибки 4302.
Как устранить ошибку 4302?
Добавьте символ в окно «Обзор рынка»
Одно из самых простых решений по устранению Ошибки 4302 - добавить нужный символ в окно Обзор рынка. Но проблема в том, что вы можете не знать, какой символ вам нужно добавить. А читать код, чтобы узнать это, довольно сложно, особенно если вы не знакомы с программированием.
Измените символ в коде
Другое решение - изменить символ, для которого скрипт, советник или индикатор вызывает функцию iCustom(). Очевидно, что это решение еще сложнее, чем предыдущее, особенно для трейдеров, не имеющих навыков программирования.
Не указывайте символ в функции iCustom()
Для тех, кто разрабатывает собственные советники и индикаторы, или для тех, кто готов покопаться в коде неработающего советника или индикатора, лучшим решением будет не указывать символ в функции iCustom(). Вместо этого следует использовать параметр NULL
или Symbol()
в том месте, где функция запрашивает символ. Это вызовет функцию для текущего выбранного символа.
Заключение
Ошибка 4302 возникает, когда скрипт, советник или индикатор вызывает функцию iCustom() для символа, который в настоящее время не добавлен в окно Обзор рынка.
Лучший способ избежать ошибки - не допускать вызова функции для конкретного символа при написании программного кода. Если вы столкнулись с ошибкой при использовании существующего индикатора или советника, вы можете исправить ошибку, добавив нужный символ в окно Обзор рынка или путем изменения кода советника. Или вы можете просто выбрать советник, написанный лучше.