Разница между ценой, которую запросил ордер, и ценой, по которой он был исполнен. Она может уйти в любую сторону, но для стратегии, живущей за счёт скорости, это издержка, которую бэктесты моделируют редко.
также: слиппедж, проскальзывание цены, отклонение
Обновлено · Проверено
Простыми словами
Вы запросили одну цену, а получили другую. Между моментом, когда ордер покидает терминал, и моментом его исполнения рынок движется — иногда в вашу пользу, чаще нет, и сильнее всего именно тогда, когда вам это меньше всего нужно.
Почему это важно
Бэктест исполняет по цене, которую сам и назначает. Реальный счёт исполняет по тому, что было у брокера в момент прихода ордера. Эта разница мала на одной сделке и накапливается с их числом — поэтому именно она решает, переживёт ли быстрая стратегия встречу с реальным счётом.
✓Она масштабируется с частотой, а не с объёмом. Десятая доля пункта — ничто на одной сделке и ощутимая величина на двух тысячах.
✓Она хуже всего именно там, где больнее всего — на выходе новостей, на открытии сессий и на принудительных закрытиях, то есть в моменты, когда стратегия скорее всего отправляет ордера.
✓Она зависит от брокера так, как бэктест уловить не может: один и тот же советник на одних и тех же данных даст разные реальные результаты у двух брокеров с разным исполнением.
✓Она измерима. Запрошенная цена против цены исполнения, усреднённая по нескольким сотням сделок, превращает спор о качестве исполнения в число.
В MetaTrader 5
Где это в MT5
Диалог Новый ордер (F9) → Отклонение — максимальное проскальзывание в пунктах, которое вы примете по рыночному ордеру
Инструменты (Toolbox) → История (History) → цена сделки против цены, которую советник запросил в журнале Эксперты
Вкладка Журнал, где отказы отображаются как реквота или недопустимая цена, а не как исполнение
Тестер стратегий — моделирует спред, но не задержку ордера, и поэтому исполнения в тестере систематически мягче реальных
Как это используют советники
Поле deviation структуры MqlTradeRequest задаёт допуск: исполнить в пределах стольких пунктов от запрошенной цены, иначе отклонить, а не исполнить хуже.
При Market Execution запрос исполняется по тому, что даёт рынок, а отклонение ограничивает, насколько далеко это может уйти, прежде чем ордер будет отвергнут.
Режим заполнения решает на границе: Fill or Kill наотрез отвергает частичное исполнение, Immediate or Cancel берёт доступное и отменяет остаток.
Хорошо написанный советник сравнивает полученную цену исполнения с запрошенной и пересчитывает стоп и цель от исполнения, а не от запроса.
Повторная отправка отклонённого ордера без перепроверки сигнала — это тот путь, на котором одно отвергнутое исполнение превращается в несколько по всё худшим ценам.
Типичные настройки
Параметр
Обычное значение
Примечание
Отклонение, среднесрочные стратегии
10–30 пунктов
Щедро. Несколько пунктов проскальзывания несущественны против цели, измеряемой сотнями.
Отклонение, скальпинг
1–5 пунктов
Достаточно узко, чтобы плохое исполнение было отклонено, а не принято — ценой большего числа отказов.
Приемлемое среднее проскальзывание
менее 0,5 пункта
Измерено более чем на 100 реальных сделках на вашем собственном счёте, а не процитировано из рекламы брокера.
Среднее проскальзывание, требующее разбора
более 1,5 пункта
Для стратегии с малыми целями это заметная доля каждого выигрыша.
Режим заполнения
как позволяет символ
Задаётся брокером по каждому символу; отправка неподдерживаемого режима приводит к отклонению ордера, а не к его подгонке.
Частые эксплуатационные проблемы
Слишком узкое отклонение для волатильного символа оборачивается потоком отклонённых ордеров, и советник торгует намного меньше, чем обещает бэктест.
Слишком широкое отклонение принимает исполнения далеко от цены сигнала, так что взятая сделка — не та сделка, которую моделировала стратегия.
Советник считает стоп от запрошенной цены, а не от цены исполнения, и реальный риск отличается от задуманного на каждом проскользнувшем входе.
Расстояние до сервера брокера добавляет задержку, а задержка добавляет проскальзывание — это практический довод в пользу размещения советника рядом с торговым сервером.
Выход новостей даёт проскальзывание далеко за пределами всего, что есть в выборке, и поэтому стратегии, торгующие сквозь такие моменты, должны быть и протестированы сквозь них.
Связанные функции MT5
MqlTradeRequest.deviation
Максимально допустимое проскальзывание в пунктах для рыночного ордера.
CTrade::SetDeviationInPoints(points)
Тот же допуск, заданный один раз для каждого ордера, отправляемого этим экземпляром.
MqlTradeResult.price
Фактическая цена исполнения — то число, которое нужно сравнить с запросом.
SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE)
Какие режимы заполнения брокер разрешает для этого символа; отправка другого отклоняется.
OrderSend(request, result)
Возвращает структуру результата с retcode и исполненной ценой.
Пример
Одно и то же среднее проскальзывание 0,4 пункта, применённое к двум стратегиям с разными целями. Издержка на сделку одинакова; доля преимущества, которую она съедает, — нет.
Среднее проскальзывание на сделку
0,4 пункта
Скальпер — средний выигрыш
6 пунктов
Проскальзывание на входе и выходе — около 13 % валовой прибыли.
Среднесрочный советник — средний выигрыш
120 пунктов
То же проскальзывание — около 0,7 % валовой прибыли.
Скальпер — сделок в год
2 000
1 600 пунктов в год теряется на одном лишь исполнении.
Между этими двумя строками у брокера не изменилось ничего. Разница в том, какая доля преимущества стратегии находится внутри окна исполнения.
Расчёт0,8 ÷ 6 = 13 % · 0,8 ÷ 120 = 0,7 %
РезультатОдно качество исполнения, два совершенно разных вердикта
Как это используется
Проскальзывание измеряют, а не предполагают. Каждый вывод ниже получен сравнением запрошенных цен с ценами исполнения на вашем собственном счёте и у вашего брокера.
Диапазон
Что означает
Среднее ниже 0,5 пункта более чем на 100 сделках
Хорошее исполнение. Результаты бэктеста переносятся с умеренной скидкой.
0,5–1,5 пункта
Приемлемо для стратегий с целями в десятки пунктов; настоящий тормоз для всего, что меньше.
Более 1,5 пункта в среднем
Разберитесь до наращивания объёма. Либо стратегия торгует не в те моменты, либо исполнение неконкурентно.
Стабильно однонаправленное
Положительное проскальзывание тоже должно случаться. Если исполнения всегда хуже запрошенного, это описывает исполнение, а не движение рынка.
Записывайте запрошенную цену рядом с ценой исполнения на каждой сделке. Без этой пары нечего измерять и не на чем сравнивать брокеров.
Сравните реальную работу с её бэктестом за тот же период — разрыв в среднем результате на сделку и есть место, где живут проскальзывание и спред.
Выводите отклонение из размера цели: узко для малых целей, чтобы плохие исполнения отклонялись, и щедро для крупных, чтобы хорошие сигналы не терялись из-за доли пункта.
Пересчитывайте стоп и цель от цены исполнения, а не от запроса. Иначе проскользнувший вход тихо меняет риск сделки.
Оценивайте исполнение в новостные часы отдельно. Средние, взятые в спокойные периоды, ничего не говорят об исполнениях в те секунды, которые решают.
Карточки mt5depot публикуют, у какого брокера и при каких условиях счёта получен каждый бэктест, поэтому предпосылки исполнения за результатом названы, а не подразумеваются.
Частые ошибки
✕Считать проскальзывание всегда отрицательным
Положительное проскальзывание — исполнение лучше запрошенного — случается в обычных условиях при настоящем рыночном исполнении. Запись, в которой на сотнях сделок видно только отрицательное проскальзывание, описывает исполнение, а не рынок.
✕Судить о бэктесте так, будто он смоделировал исполнение
Тестер стратегий моделирует спред, но не задержку между решением и исполнением. Поэтому любой результат тестера оптимистичен на величину, растущую с частотой торговли, и разрыв максимален как раз у тех стратегий, которые в тесте выглядят лучше всего.
✕Обнулять отклонение, чтобы избежать проскальзывания
Это убирает не проскальзывание, а исполнения. Советник в итоге торгует лишь часть своих сигналов, и какие именно он пропустит, решает скорость рынка, а не стратегия.
✕Сравнивать брокеров по одному лишь спреду
Узкий заявленный спред с плохим исполнением может обойтись дороже более широкого спреда, исполненного чисто. Сопоставимое число — полная стоимость оборота: спред плюс комиссия плюс измеренное проскальзывание.
Подробнее
Каждая карточка здесь поставляется с допуском исполнения, и полка не сходится в том, что
он означает. Отклонение решает, какие исполнения будут отвергнуты, а не насколько плохи
принятые, — и здесь одна и та же цифра обозначает две величины.
Допуск, который идёт с каждой карточкой
По 14 опубликованным здесь советникам
Значение
Карточки с параметром допуска исполнения
14
Записей параметра, описывающих его
40
Заявленный допуск 0,3 пункта
3
Заявленный допуск 3 пункта
11
Страниц, где сказано, что на бэктест он не влияет
8
Страниц, где сказано, что запись снята при этом значении
2
Прогонов с измеренной величиной проскальзывания
0
Строки три и четыре — это и есть ловушка. Cairn и Thunderhead печатают голую тройку и
считают её в пунктах; девять других печатают голую тройку и считают её в пипсах. Одна
цифра, разница в десять раз. Только Iridescence, Lattice Weave и Tidewell Slack печатают
рядом единицу измерения — три карточки, которые нельзя прочитать неверно.
Строки пять и шесть описывают одну настройку в двух регистрах, а строка семь говорит,
какому из них верить: ни один наш бэктест не измеряет исполнение против запроса. Это
делает её указанием для реальной торговли, а не предпосылкой бэктеста — той границей,
которую наша методология проводит вокруг каждой записи.
Кусается она сильнее всего там, где затянута туже всего: при 0,3 пункта исполнение,
ушедшее дальше, отклоняется, так что 4 725 сделок Cairn становятся не хуже, а
малочисленнее, чем показывает запись.
Часто задаваемые вопросы
Какое проскальзывание нормально для советника MT5?
На конкурентном счёте в обычных условиях среднее ниже примерно 0,5 пункта на сотне и более сделок — это хорошо, а от 0,5 до 1,5 пункта работоспособно для стратегий с целями в десятки пунктов. Устойчивые средние выше 1,5 пункта стоит разобрать, особенно если стратегия торгует часто.
Почему мой реальный результат хуже бэктеста?
Обычное объяснение — проскальзывание и спред. Тестер стратегий исполняет по цене, которую назначает сам, и не моделирует задержку между отправкой ордера и его исполнением, поэтому реальные исполнения систематически чуть хуже. Эффект масштабируется с числом сделок, и поэтому частые стратегии расходятся со своими бэктестами быстрее всех.
Снижает ли VPS проскальзывание?
Он снижает ту часть, что вызвана расстоянием и задержкой между вашим терминалом и сервером брокера, а она важнее всего для стратегий с малыми целями. Против части, вызванной движением рынка или тонкой ликвидностью в момент ордера, он бессилен.
Какое отклонение задавать советнику?
Достаточное, чтобы исполняться на сигналах, которые стоит брать, и не больше. Стратегии с крупными целями могут принять от 10 до 30 пунктов без последствий; скальпинговые обычно задают несколько пунктов, чтобы плохое исполнение было отклонено, а не принято, соглашаясь взамен на большее число отказов.