Как устранить ошибку 130 в MT4 EA? Четырёхшаговый метод: от расстояния до стоп-лосса до динамических ограничений
Пошагово разбираем ERR_INVALID_STOPS в MT4 EA с помощью оригинальной светло-синей блок-схемы: журналы, точность котировок, MODE_STOPLEVEL и динамические ограничения — чтобы не маскировать риск ослаблением стоп-лосса.
Автор: Томас|Практика EA и MT4|20 октября 2026 г.
EA уже добавлен на график, автоматическая торговля включена, но при отправке ордера появляется «130» — обычно это заставляет думать, что программа полностью сломана. В справочной документации MQL4 ошибка 130 указана как ERR_INVALID_STOPS: стоп-лосс, тейк-профит, цена отложенного ордера или способ их нормализации в запросе не приняты торговым сервером. Это ориентир для поиска причины, а не повод слепо ослаблять стоп-лосс. В статье описан четырёхшаговый метод проверки: какие записи нужно смотреть.
Шаг первый: сначала определить, какой именно запрос завершился неудачей
Откройте соответствующий журнал терминала MT4 или журнал программы и зафиксируйте серверное время ошибки, инструмент, направление ордера, была ли операция OrderSend или OrderModify, а также код возврата. Если в журнале есть только слова «ордер не отправлен», сначала настройте EA так, чтобы он без вывода паролей и других чувствительных данных записывал цену запроса, стоп-лосс, тейк-профит и возвращаемое значение. Сначала различайте неудачное открытие позиции, неудачное изменение стоп-лосса и неудачную установку отложенного ордера; в этих трёх случаях проверяемые ценовые соотношения разные.
Не пытайтесь «испытать удачу» на реальном счёте, многократно повторяя один и тот же неудачный запрос. Повторные попытки могут создать дополнительную нагрузку, а также внезапно увенчаться успехом после изменения рынка и привести к неожиданной позиции. Сначала воспроизведите ситуацию в демо-среде и сохраните версию параметров и котировки платформы на тот момент.
Шаг второй: сверить Bid, Ask, Point и Digits
MarketInfo в MQL4 позволяет получить текущие Bid, Ask, Point и Digits инструмента. Point представляет одну из минимальных единиц отображения котировки, Digits — количество знаков после запятой; сколько долларов составляет «10 пунктов», нужно рассчитывать по фактическому Point данного инструмента, нельзя смешивать коды золота и точность у разных брокеров. Перед передачей цену также нужно нормализовать по соответствующему количеству знаков.
Пример приведён только как математическая иллюстрация: если у некоего демо-инструмента Point равен 0.01, а минимальное расстояние — 50 пунктов, рассчитанное расстояние составит 0.50 единицы котировки; для инструмента с Point 0.001 оно будет 0.05. Цифры не отражают контрактные правила какого-либо реального платформы на сегодня. При просмотре журнала сохраняйте также цены покупки и продажи, чтобы не проверять сторону, для которой следовало бы использовать цену покупки, по цене продажи, или наоборот.
Шаг третий: проверить MODE_STOPLEVEL и тип ордера
Официальная документация OrderSend поясняет, что стоп-лосс и тейк-профит не могут быть слишком близко к рыночной цене; заданная цена открытия отложенного ордера также не может быть слишком близко к текущему рынку. Можно запросить публичное минимальное расстояние через MarketInfo(Symbol(),MODE_STOPLEVEL) в пунктах. Затем в зависимости от того, является ли ордер покупкой, продажей или каким именно отложенным ордером, отдельно проверяйте направление цены, расстояние и нормализацию, а не применяйте фиксированное смещение ко всем ордерам.

На рисунке выше — оригинальная схема процесса, без реальных котировок или данных счёта. Минимальное расстояние — лишь техническая граница, при которой сервер принимает ордер, и оно не равно разумному с точки зрения стратегии расстоянию до стоп-лосса. Если ради обхода 130 отодвинуть стоп-лосс дальше, запланированный риск на сделку возрастёт; следует сначала пересчитать размер позиции, а при необходимости отказаться от сделки.
Шаг четвёртый: возврат 0 тоже не позволяет утверждать, что ограничений нет
Официальное описание MODE_STOPLEVEL в MQL4 особо предупреждает: возврат 0 может означать как отсутствие фиксированного минимального расстояния, так и то, что сервер использует динамическое ограничение, которое терминал не может напрямую выразить. Во втором случае ошибка 130 всё ещё возможна. Поэтому утверждение «если получен 0, можно прижать стоп-лосс вплотную к цене» неверно. При резких изменениях рынка обновление котировок, изменение спреда и серверные правила также могут сделать ранее рассчитанное расстояние недействительным.
Если формула в коде совпадает с журналом на тот момент, а ошибка 130 всё равно возникает, сохраните время неудачи, инструмент, параметры ордера и версию платформы, проверьте спецификацию инструмента и ограничения ордеров у брокера и уточните у технической поддержки платформы. Не делайте выводов о правилах данного счёта по Point и StopLevel другой платформы и тем более не маскируйте настоящую причину неудачи удалением стоп-лосса.
Порядок проверки после исправления
Сначала запустите в демо-счёте минимальный воспроизводимый пример: по одному и тому же инструменту запишите четыре параметра котировок и StopLevel, отправьте один тестовый запрос, проверьте ответ сервера и состояние ордера. Затем протестируйте поведение при быстром изменении цены или в разные торговые сессии. Убедитесь, что в программе есть механизм остановки или охлаждения после неудачи и что при повторных попытках не происходит повторное открытие позиции. В конце сверьте, соответствуют ли бюджет риска, спред и допустимый убыток первоначальному плану.
Ключ к разбору ошибки 130 — «почему запрос отклонён», а не «как заставить его пройти любой ценой». На результат работы EA также влияют логика стратегии, сеть и исполнение на платформе; любое исправление не гарантирует прибыль и не исключает убытков. Торговля с плечом может привести к значительным потерям.