Ошибки, баги, вопросы - страница 3719
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Различие исполнения Stop Loss в режимах тестера MT5: “1 OHLC” vs “Every Tick”
Обнаружил различие в формировании сделки закрытия по Stop Loss в тестере MT5 в разных режимах моделирования.
Условия теста
Один и тот же EA, символ и история
Открытие позиции происходит в одно и то же время и по одной и той же цене
Установлен один и тот же уровень Stop Loss
Stop Loss срабатывает на первом тике открытия нового бара
Значения Bid/Ask на этом тике одинаковые в обоих режимах
Режимы тестирования
Every Tick
1 Minute OHLC
Наблюдаемое поведение
При срабатывании Stop Loss:
В режиме Every Tick
DEAL_PRICE = текущий Bid/Ask
В режиме 1 OHLC
DEAL_PRICE = уровень Stop Loss
Из-за этого итоговый убыток отличается, хотя на тике срабатывания Bid/Ask одинаковые.
Обнаружил различие в формировании сделки закрытия по Stop Loss в тестере MT5 в разных режимах моделирования.
Условия теста
Один и тот же EA
Один и тот же символ и история
Открытие позиции происходит в одно и то же время и по одной и той же цене
Установлен один и тот же уровень Stop Loss
Stop Loss срабатывает на первом тике открытия нового бара
Значения Bid/Ask на этом тике одинаковые в обоих режимах
Режимы тестирования
Every Tick
1 Minute OHLC
Наблюдаемое поведение
При срабатывании Stop Loss:
В режиме Every Tick
DEAL_PRICE = текущий Bid/Ask
В режиме 1 OHLC
DEAL_PRICE = уровень Stop Loss
Из-за этого итоговый убыток отличается, хотя на тике срабатывания Bid/Ask одинаковые.
На приложенном скриншоте видно:
Every Tick → закрытие по рыночной цене (~398.45)
1 OHLC → закрытие строго по SL (405.17)
Вопрос
Является ли такое различие ожидаемым поведением тестера?
Есть ли официальная документация, где описано правило формирования DEAL_PRICE при исполнении Stop Loss в разных режимах моделирования?
Почему в режиме 1 OHLC цена сделки берётся из уровня SL, а не из текущего Bid/Ask?
Буду благодарен за ссылку на документацию или описание внутренней логики работы тестера.
Every Tick → закрытие по рыночной цене (~398.45)
1 OHLC → закрытие строго по SL (405.17)
Эти 2 режима с искусственными котировками, на них нет особого смысла тестировать системы на прибыльность - только на логику работы программы.
Смотрите только "Каждый тик на основе реальных тиков", это максимально приближённый режим к рынку.
Эти 2 режима с искусственными котировками, на них нет особого смысла тестировать системы на прибыльность - только на логику работы программы.
Смотрите только "Каждый тик на основе реальных тиков", это максимально приближённый режим к рынку.
Главный вопрос не в том какие данные на каждом тике гененрирует тестер в каждом из режимов. Тут все понятно. А в том, что логика расчета убытка в них разная. Я предполагал, что режимы как раз отличаются именно составом тиков и ценами на каждом из них, а все остальное одинаковое. Но выходит так, что DEAL_PRICE для SL в режиме 1OHLC совпадает строго с ценой SL, а в режиме Every tick - DEAL_PRICE - это ask/bid текущего тика.
Поэтому хочу найти инфу именно об этих отличиях режимов.
Кстати, в "Every tick" и "Every tick on real data" ведут себя одинаково в части формирования DEAL_PRICE для SL. А отличается от них именно 1OHLC.
DEAL_PRICE для SL в режиме 1OHLC совпадает строго с ценой SL
Потому что альтернативного варианта в этом режиме быть не может даже теоретически.
Не могу понять почему в 1OHLC режиме нельзя закрывать позу также по цене Bid, как делают это режимы "Every tick" и "Every tick based on real ticks".
На тике закрытия во всех трех режимах ask/bid одинаковый, но в качестве DEAL_OUT_PRICE тестер применяет разные цены в разных режимах. Не могу понять зачем разный расчет делать в разных режимах, если можно одинаковую логику использовать.
Для уточнения еще 3 картинки (может я как-то непонятно объяснил).
(может я как-то непонятно объяснил).
Всё понятно объяснил.
fxsaber тоже всё понятно объяснил.
Попробую и я, другими словами. Немного утрированно.
При тесте по всем тикам тестер знает, что бар заполнен тиками и при гэпе выбирает для закрытия ближайший тик.
При торговле OHLC тестер знает, что бар заполнен тиками, но выбрать ближайший он не может, так как нет у него выбора (тиков нет), поэтому закрывает по указанной цене SL.
Думаю, при торговле по OHLC для гэпов в тестере было бы хорошо, чтоб разработчики сделали исключение и SL закрывать по ближайшей цене.
Предположительно ошибка появилась после обновления 5640.
Ещё вчера МетаКуотс-Демо рассчитал всё правильно - сегодня накатили 5664, 5665 - и все ошибки вернулись.
Не могу понять зачем разный расчет делать в разных режимах, если можно одинаковую логику использовать.
Потому что в M1_OHLC_Spread мало данных. Этот режим даже не M1_OHLC[1]_Open[0]_Spread[1]_Spread[0], когда идет анализ срабатывания SL/TP не только на баре, что закончился, но и на начале бара. И даже в таком режиме, если OHLC[1] не удовлетворяют SL, а Open[0] - удовлетворяет, нельзя Open[0] использовать для PositionSELL_SL, т.к. нет данных для Open[0]_Ask.
В общем, мало данных. Поэтому отсутствует проскальзывание у отложенных ордеров и SL/TP.
Потому что в M1_OHLC_Spread мало данных. Этот режим даже не M1_OHLC[1]_Open[0]_Spread[1]_Spread[0], когда идет анализ срабатывания SL/TP не только на баре, что закончился, но и на начале бара. И даже в таком режиме, если OHLC[1] не удовлетворяют SL, а Open[0] - удовлетворяет, нельзя Open[0] использовать для PositionSELL_SL, т.к. нет данных для Open[0]_Ask.
В общем, мало данных. Поэтому отсутствует проскальзывание у отложенных ордеров и SL/TP.
Спред у этих баров есть, а значит вы ошибаетесь про отсутствие Open[0]_Ask.
Насчёт отсутствия проскальзывания внутри свечей согласен, его быть не может, а вот проскальзывания при открытии свечи с гэпом вполне возможно сделать и в режиме тестирования OHLC.
Это значительно приблизило бы тестирование по OHLC к более точным режимам тестирования.
Спред у этих баров есть, а значит вы ошибаетесь про отсутствие Open[0]_Ask.
Это минимальный спред (такое вынужденное официальное заглядывание в будущее) за время жизни всего бара, а не спред на открытии.
Сравните Open[0].ask в разных режимах Тестера.