В ордере стоял Stop Loss 1,10000, а позиция закрылась по 1,09958. В другом случае сделку Sell закрыло, хотя максимум свечи остался ниже стопа. Эти ситуации выглядят одинаково — трейдер считает, что приказ не сработал правильно. Причины у них разные.
Стоп-лосс состоит из двух событий. Сначала определённая котировка достигает установленного уровня. Затем сервер отправляет операцию на закрытие позиции по доступной рыночной цене. Уровень активации и цена сделки могут не совпасть.
В MetaTrader 5 Stop Loss длинной позиции проверяется по цене Bid, короткой — по Ask. После достижения уровня позиция закрывается рыночной операцией, поэтому цена исполнения может оказаться хуже Stop Loss. Если терминал не показывает Ask, между котировками возник гэп или расширился спред, трейдер может не увидеть цену, которая активировала приказ.
Принятый сервером Stop Loss работает при выключенном терминале. Trailing Stop ведёт себя иначе: его рассчитывает сама торговая платформа, поэтому без запущенного терминала уровень перестаёт передвигаться.
Что именно делает Stop Loss
Stop Loss — связанный с открытой позицией приказ на её автоматическое закрытие после достижения заданного ценового условия.
MetaTrader разделяет три понятия:
-
Ордер — инструкция брокеру.
-
Сделка — исполненная покупка или продажа.
-
Позиция — итоговый объём обязательств по инструменту.
Достижение Stop Loss активирует операцию закрытия. Сделкой становится уже результат её исполнения. Поэтому в истории могут находиться разные значения:
-
уровень Stop Loss;
-
цена активации;
-
цена закрывающей сделки;
-
финансовый результат.
Официальная документация MetaTrader указывает, что покупка обычно исполняется по Ask, а продажа — по Bid. Цена самой сделки зависит от режима исполнения конкретного инструмента. Источник: MetaTrader 5 — основные принципы торговли.
Что Stop Loss не гарантирует
Обычный стоп-лосс не гарантирует закрытие по указанной цифре.
Он не обеспечивает:
-
наличие котировки точно на уровне стопа;
-
неизменный спред;
-
непрерывное движение цены без гэпов;
-
достаточную ликвидность по одной цене;
-
отсутствие задержки между активацией и исполнением;
-
сохранение рассчитанного убытка во время резкого движения;
-
работу Trailing Stop при выключенном терминале.
Investor.gov объясняет тот же принцип для биржевых стоп-приказов: после достижения стоп-цены приказ превращается в рыночный, а рыночная заявка гарантирует приоритет исполнения, но не конкретную цену. Эти правила относятся к рынку ценных бумаг США, однако они наглядно показывают разницу между ценой активации и исполнения.
По какой цене срабатывает Stop Loss
Для внебиржевых инструментов MetaTrader использует разные стороны котировки.
| Позиция | Чем закрывается | Цена проверки Stop Loss | Условие активации |
|---|---|---|---|
| Buy | Продажей | Bid | Bid ≤ Stop Loss |
| Sell | Покупкой | Ask | Ask ≥ Stop Loss |
Это правило указано в официальном руководстве MetaTrader 5.
Stop Loss позиции Buy
Трейдер купил EUR/USD и поставил Stop Loss ниже текущей цены. Чтобы закрыть позицию, сервер должен продать валюту. Продажа проходит по Bid.
Условие:
Если Stop Loss установлен на 1,10000, он активируется при Bid 1,10000 или ниже.
Свечи MetaTrader для большинства внебиржевых инструментов формируются по Bid. Поэтому касание стопа длинной позиции обычно видно на графике.
Stop Loss позиции Sell
Трейдер продал EUR/USD и поставил Stop Loss выше рынка. Чтобы закрыть короткую позицию, сервер должен купить валюту. Покупка проходит по Ask.
Условие:
Свечи MetaTrader обычно показывают Bid, а Ask по умолчанию может быть скрыт. Из-за этого короткая позиция способна закрыться, хотя максимум видимой свечи не дошёл до Stop Loss.
MetaTrader рекомендует включать отдельную линию Ask для контроля таких ситуаций.
Почему стоп-лосс сработал раньше видимой цены
Причина чаще всего находится в спреде.
Связь между котировками:
Для короткой позиции условие Stop Loss можно переписать через цену на Bid-графике:
Отсюда видимый уровень срабатывания:
Пример для позиции Sell
Исходные данные:
-
позиция Sell EUR/USD;
-
Stop Loss — 1,10500;
-
Bid — 1,10472;
-
Ask — 1,10502;
-
спред — 0,00030, или 30 пятизначных пунктов.
Проверяем:
Ask превысил Stop Loss на два пункта. Позиция должна закрыться, хотя максимум Bid-свечи находится на 28 пунктов ниже уровня 1,10500.
Терминал ничего не «дорисовывал». Трейдер смотрел не на ту сторону котировки, по которой проверялся приказ.
Почему расширение спреда опасно
При обычном спреде 10 пунктов Ask находится близко к Bid. Перед новостями, после перерыва или при снижении ликвидности спред может расшириться.
Допустим:
-
Stop Loss позиции Sell — 1,10500;
-
Bid — 1,10450;
-
спред расширился до 50 пунктов.
Тогда:
Стоп активируется, хотя Bid-график находится на пять пипсов ниже его линии.
Это не доказывает корректность конкретной котировки брокера. Для проверки потребуется история Bid и Ask на торговом сервере.
Что происходит с биржевыми инструментами
Для акций, фьючерсов и других биржевых инструментов условия могут отличаться. MetaTrader указывает, что стоп-приказы по таким контрактам обычно активируются по Last — цене последней сделки. После активации покупка или продажа всё равно исполняется по доступным предложениям Bid и Ask.
Следовательно, на биржевом инструменте нужно проверить три цены:
-
Last — могла активировать приказ;
-
Bid — цена доступной продажи;
-
Ask — цена доступной покупки.
Переносить правила EUR/USD на акцию или фьючерс без проверки спецификации нельзя.
Почему сделка закрылась хуже Stop Loss
После достижения стоп-уровня серверу нужна встречная заявка. Если по указанной цене объёма нет, позиция исполняется по следующей доступной цене.
Разница называется проскальзыванием:
Знак результата зависит от направления позиции, поэтому для оценки убытка удобнее использовать отдельные формулы.
Для позиции Buy:
Для позиции Sell:
Если результат положительный, сделка закрылась хуже Stop Loss. Отрицательное значение означает исполнение лучше установленного уровня.
FINRA предупреждает, что при быстром рынке цена исполнения стоп-приказа может заметно отличаться от стоп-цены. Источник относится к американским акциям, но описывает общий риск рыночного исполнения после активации: FINRA — риски стоп-приказов.
Пример проскальзывания EUR/USD
Исходные данные:
-
позиция Buy объёмом 0,5 лота;
-
Stop Loss — 1,10000;
-
последняя котировка Bid перед гэпом — 1,10018;
-
следующая Bid — 1,09962;
-
цена исполнения — 1,09958;
-
размер одного пункта — 0,00001.
Проскальзывание:
Это 4,2 пипса.
Для 0,5 лота EUR/USD стоимость одного пипса на долларовом счёте составляет около $5:
Проскальзывание увеличило убыток примерно на $21 относительно расчёта по Stop Loss. Спред, комиссия и своп учитываются отдельно.
Почему цена могла перескочить через стоп
Рынок не обязан передавать каждое промежуточное значение.
Последовательность котировок может выглядеть так:
| Событие | Bid |
|---|---|
| Последняя цена до новости | 1,10018 |
| Установленный Stop Loss | 1,10000 |
| Первая цена после новости | 1,09962 |
Котировки 1,10000 в потоке не было. Сервер увидел, что первая доступная цена уже находится ниже стопа, и отправил позицию на закрытие.
Этот сценарий возникает:
-
при открытии рынка после выходных;
-
после торгового перерыва;
-
во время публикации статистики;
-
при резком падении ликвидности;
-
после приостановки торгов;
-
при движении цены через несколько уровней стакана.
Stop Loss ограничивает убыток при наличии рынка. Он не создаёт ликвидность на указанной цене.
Может ли Stop Loss действительно не закрыть позицию
Да, но сначала нужно отделить отсутствие исполнения от исполнения по другой цене.
MetaTrader указывает: если после активации Stop Loss соответствующую рыночную операцию нельзя выполнить, например биржа её отклонила, приказ не удаляется. Сервер попробует активировать его снова на следующем подходящем тике.
Позиция может временно остаться открытой по следующим причинам:
| Причина | Что происходит |
|---|---|
| Торги закрыты | Новых котировок и доступных заявок нет |
| Инструмент приостановлен | Биржа или брокер не исполняет операции |
| Рыночная операция отклонена | Stop Loss остаётся активным и ждёт следующего тика |
| Нет доступной ликвидности | Исполнение переносится либо разбивается на сделки |
| Stop Loss не был принят | На сервере отсутствует активный уровень |
| Stop Loss удалили или заменили | Позиция остаётся без прежней защиты |
| Истёк срок действия уровней | Возможно для отдельных серверных режимов и инструментов |
| Сработало другое правило | Позицию мог изменить советник, сигнал, встречный ордер или Stop Out |
Фразу «рынок коснулся линии» недостаточно использовать как доказательство. Нужно проверить сторону котировки, точное серверное время и статус самого уровня.
Почему Stop Loss мог не установиться
MetaTrader проверяет корректность Stop Loss до отправки или принятия изменения.
У инструмента могут быть заданы:
-
SYMBOL_TRADE_STOPS_LEVEL— минимальное расстояние для размещения стоп-приказа; -
SYMBOL_TRADE_FREEZE_LEVEL— расстояние, внутри которого торговые операции с приказом ограничены; -
допустимые типы приказов;
-
торговый режим инструмента;
-
расписание сессий.
Если уровень находится слишком близко к цене, терминал может вернуть ошибку Invalid stops. В этом случае Stop Loss не существует на сервере, даже если трейдер ввёл цифру в окно заявки.
Минимальное расстояние и Freeze Level задаются брокером для конкретного инструмента. Они могут различаться между типами счетов.
После установки нужно проверить, появился ли уровень S/L непосредственно у открытой позиции. Нажатие кнопки без подтверждения сервера не защищает сделку.
Работает ли Stop Loss при выключенном MetaTrader
Принятый Stop Loss обрабатывается на торговом сервере. Выключение компьютера, закрытие приложения или потеря домашнего интернета сами по себе не удаляют уровень.
Официальное руководство MetaTrader относит закрытие по Stop Loss к серверным операциям.
Условие одно: Stop Loss должен быть принят сервером до отключения.
Если трейдер ввёл уровень при нестабильном соединении, но запрос не дошёл до сервера, позиция останется без защиты. Проверять нужно поле S/L, историю приказов и журнал терминала.
Stop Loss и Trailing Stop работают по-разному
Trailing Stop не является отдельным серверным приказом. Терминал следит за ценой и отправляет команды на перенос обычного Stop Loss.
| Параметр | Stop Loss | Trailing Stop |
|---|---|---|
| Где обрабатывается | На торговом сервере | В клиентском терминале |
| Работает при закрытом терминале | Да, если принят сервером | Нет |
| Что происходит после отключения | Уровень остаётся | Перестаёт передвигаться |
| Нужен постоянный поток котировок в терминале | Нет | Да |
| Может менять Stop Loss | Нет | Да |
Если терминал выключился, последний установленный Stop Loss продолжает действовать. Trailing Stop уже не подтянет его вслед за ценой.
MetaTrader также ограничивает частоту обработки Trailing Stop и выбирает определённый порядок при нескольких позициях по одному инструменту.
Как Stop Loss может измениться в неттинговом счёте
В неттинговом режиме по одному инструменту существует одна общая позиция. Новая сделка меняет её объём, направление и связанные уровни.
MetaTrader указывает: при увеличении или развороте позиции новые Stop Loss и Take Profit могут заменить прежние значения. Если в новом приказе переданы нулевые уровни, существующая защита может быть удалена.
На хеджинговом счёте несколько позиций по одному инструменту учитываются отдельно. У каждой может быть собственный Stop Loss.
Поэтому после доливки, частичного закрытия, разворота или работы советника нужно повторно проверить поле S/L.
Для внебиржевых Forex-позиций перенос на следующие торговые сутки обычно сохраняет Stop Loss. Для некоторых биржевых инструментов уровни могут сбрасываться при переносе, поставке или изменении контракта. Эти правила описаны в документации MetaTrader.
Как проверить исполнение Stop Loss в MetaTrader 5
Проверка должна связать позицию, приказ и закрывающую сделку.
Шаг 1. Найдите идентификатор позиции
Откройте вкладку «История» и найдите первоначальную сделку. Сохраните:
-
тикет позиции;
-
тикет ордера;
-
инструмент;
-
направление;
-
объём;
-
цену открытия;
-
время открытия.
Шаг 2. Найдите закрывающую сделку
Проверьте:
-
время исполнения;
-
цену сделки;
-
объём;
-
комментарий;
-
причину закрытия;
-
комиссию;
-
своп;
-
прибыль или убыток.
В MQL5 предусмотрено значение DEAL_REASON_SL. Оно означает, что сделка выполнена из-за активации Stop Loss.
История также хранит:
-
DEAL_PRICE— цену исполнения; -
DEAL_SL— Stop Loss позиции в момент закрытия; -
DEAL_TIME_MSC— время сделки с точностью до миллисекунд; -
DEAL_POSITION_ID— идентификатор связанной позиции.
Шаг 3. Определите цену активации
Для Buy запросите Bid на момент события. Для Sell нужен Ask.
Обычная свеча M1 не заменяет тиковую историю. За одну минуту спред способен несколько раз расшириться и вернуться к прежнему значению.
Шаг 4. Сравните Stop Loss и цену сделки
Рассчитайте проскальзывание в пунктах и деньгах.
Если позиция закрыта по Stop Loss, но цена отличается, это вопрос исполнения. Если причины DEAL_REASON_SL нет, сделку мог закрыть другой приказ, робот, Stop Out или ручная операция.
Шаг 5. Проверьте журнал
Ищите сообщения:
-
Invalid stops; -
Market closed; -
Trade disabled; -
No prices; -
Requote; -
Rejected; -
успешное изменение позиции;
-
удаление или замену Stop Loss.
Журнал показывает, был ли запрос принят сервером. Скриншот линии на графике этого не подтверждает.
Как читать результат проверки
| Что найдено | Возможный вывод |
|---|---|
DEAL_REASON_SL, цена хуже уровня |
Stop Loss сработал с проскальзыванием |
| Sell закрыт, Ask достиг уровня, Bid не достиг | Стоп активирован корректно по Ask |
В истории есть Invalid stops |
Уровень не был установлен |
Поле S/L стало нулевым после новой сделки |
Stop Loss удалён или заменён |
| Есть гэп между соседними тиками | Исполнение по Stop Loss было невозможно |
| Рыночная операция отклонена | Сервер должен повторить активацию на следующем подходящем тике |
Сработал DEAL_REASON_SO |
Позицию закрыл Stop Out, а не Stop Loss |
| Советник изменял позицию | Нужно проверять журнал программы и Magic Number |
| Trailing Stop не двигался после отключения | Клиентский алгоритм перестал работать |
Как рассчитать стоимость проскальзывания
Если известна стоимость одного пункта:
Где:
-
AdverseSlippage— отклонение цены против позиции; -
PointValue— стоимость одного минимального пункта для всего открытого объёма.
Если известна стоимость пипса:
Пример
Позиция EUR/USD объёмом 0,2 лота:
-
Stop Loss — 1,08000;
-
цена закрытия — 1,07950;
-
отклонение — пять пипсов;
-
стоимость пипса — около $2.
Фактический убыток оказался примерно на $10 больше расчёта по стоп-цене.
Для иеновых пар, металлов, индексов и криптовалютных CFD стоимость пункта рассчитывается иначе. Значение нужно брать из спецификации инструмента или торгового калькулятора брокера.
Stop Loss и Stop Out нельзя путать
Stop Loss устанавливает трейдер для конкретной позиции. Stop Out запускает брокерский сервер, когда средств на счёте становится недостаточно для поддержания маржи.
| Событие | Кто задаёт порог | Что контролирует |
|---|---|---|
| Stop Loss | Трейдер | Убыток отдельной позиции |
| Trailing Stop | Трейдер | Автоматический перенос Stop Loss |
| Stop Out | Брокер | Уровень маржи всего счёта |
Если счёт достиг Stop Out раньше установленного Stop Loss, сервер может принудительно закрыть позицию. В истории причиной сделки будет указан Stop Out.
Проверить критический размер Equity и запас счёта можно в инструкции FinTerminal: как рассчитать Stop Out