Бэктестинг на Форекс: как проверить стратегию без заглядывания в будущее
Бэктестинг на Форекс применяет четкие торговые правила к прошлым ценам и показывает, какие сделки получились бы при заданных условиях исполнения. Полезный тест раскрывает последовательность событий, данные и расходы. Он не устанавливает, как именно исполнил бы заявки брокер и сколько стратегия заработает в будущем.
Автор · Редактор
- Автор
- Николай Заваров
- Редактор
- Андрей Бондаренко
Проверено

Главное
Сигнал может использовать завершенную свечу только после ее закрытия. Исполнение должно происходить при следующем событии, которое допускает модель теста.
Спред, проскальзывание и комиссию нужно учитывать согласованно. Расходы, уже включенные в цены исполнения, нельзя вычитать повторно.
Отложенная историческая выборка перестает быть независимой, когда ее результаты влияют на дальнейшие решения. Вымышленный пример ниже обучает механике, а не подтверждает стратегию.
Что такое бэктестинг на Форекс?
Бэктестинг — это последовательное воспроизведение: берут фиксированное правило, проходят доступные наблюдения по времени и записывают решения, предполагаемое исполнение и результат. Для стратегии Форекс нужно определить валютную пару, ценовые данные, размер позиции, входы, выходы и торговые расходы. Вопрос в том, что получилось при этих правилах и допущениях, а не в том, можно ли задним числом найти красивые сделки.
Ручной тест можно провести с пошаговым просмотром графика и журналом. Автоматический поручает ту же последовательность программе. Автоматизация облегчает повторение, но не исправляет правило, которое незаметно использует будущие цены, или допущение об исполнении, для которого в данных недостаточно информации.
Представьте проверку, которая смотрит только на то, достигла ли цена цели когда-нибудь после входа. Она не отвечает, сработал ли раньше стоп, по какой стороне котировки можно было заключить сделку и существовал ли сигнал в момент входа. Содержательный тест определяет эти вещи до оценки итогового числа.
Разделяйте три вопроса: что правило успело увидеть, какое исполнение допустила модель и какие записи в результате появились в журнале.
Определите правила до просмотра результата
Составьте короткое описание, которому другой человек сможет следовать без вопросов о том, какие сделки вам понравились. Формулировки «покупать при усилении импульса» недостаточно. Укажите цены, по которым оценивается импульс, момент их доступности и действия при противоречивых условиях. Сохраняйте версию и дату, чтобы измененное правило незаметно не подменило первоначально проверенное.
- Инструмент и наблюдения: символ, таймфрейм, торговые часы, часовой пояс и допустимый способ обработки пропусков.
- Вход и выход: точные условия, время формирования сигнала, допустимое событие исполнения и состояние позиции.
- Объем: фиксированное количество единиц или полностью описанное правило расчета, включая возможность увеличивать открытую позицию.
- Исполнение и расходы: сторона котировки, спред, комиссия, проскальзывание и финансирование переноса через ночь.
- Границы: подготовка индикатора, учет открытой позиции и сигналов на последнем наблюдении.
В интерактиве используется намеренно простое правило только для длинных позиций. После закрытия каждой пятиминутной свечи ее цену закрытия сравнивают со средним трех последних закрытий, включая только что завершившуюся свечу. Если позиции нет и close выше SMA3, покупка ставится в очередь на открытие следующей свечи. Если длинная позиция есть и close ниже SMA3, в очередь ставится выход. При равенстве ничего не меняется. Повторное закрытие выше средней не добавляет объем к уже открытой позиции.
Это условие «выше/ниже», а не обязательное пересечение средней и не рекомендация стратегии. Размер позиции всегда составляет 10 000 EUR. В собственном исследовании можно задать другие правила, но изменение нескольких условий после просмотра результата создает новый эксперимент. Шаблон торгового плана помогает отделить действующую спецификацию от предложенных изменений.
Выберите данные, достаточные для модели исполнения
Начните с вопроса, на который данные способны ответить. Свеча OHLC содержит открытие, максимум, минимум и закрытие; четыре значения не показывают все промежуточные цены и последовательность достижения максимума и минимума. Если внутри одной свечи расположены и стоп, и цель, по этой свече обычно нельзя установить, что сработало раньше. Здесь midpoint — цена (Bid + Ask) / 2 в конкретный момент. SMA3 — среднее значение цен midpoint на закрытии трёх последовательных баров.
Данные или настройка | Что выяснить до теста |
|---|---|
Bid, Ask, средняя цена или Last | Определите основу котировки. Средняя цена между Bid и Ask сама по себе не является ценой покупки или продажи. |
Свечи или тики | Согласуйте детализацию с логикой заявок. Не придумывайте точный путь цены внутри свечи по четырем значениям. |
Время и сессии | Запишите часовой пояс, границы свечей, разрывы выходных и отсутствующие интервалы. |
Спецификация символа | Проверьте шаг цены, размер контракта, валюту результата и единицы указанного спреда. |
Прокрутите вбок, чтобы сравнить все столбцы ↔
Документация MetaTrader 5 о тиках объясняет, почему нужно различать цены графика и исполнения: покупки и продажи используют разные стороны котировки, а доступный график не обязательно показывает обе. Для чувствительного к цене правила это может изменить и возможность сделки, и ее результат.
Режим «реальные тики» тоже требует проверки данных. Документация MQL5 по тестированию описывает ситуации, когда тестер генерирует тики при отсутствии или несогласованности записей реальных тиков. Записывайте выбранный режим и выясняйте причины предупреждений о покрытии: название настройки само по себе не описывает каждое использованное наблюдение.
Наш интерактив содержит 36 вымышленных свечей EURUSD по средней цене, с интервалом пять минут, внутри одной условной дневной сессии. Это не загруженная рыночная история. В примере нет стоповых и лимитных заявок или целей, порядок исполнения которых пришлось бы восстанавливать внутри свечи. Он объясняет последовательность событий и учет расходов, но не показывает, работает ли правило SMA на EURUSD.
Проследите путь сигнала до следующего события исполнения
Разберите бэктест по шагам
Проследите за фиксированным правилом на 36 вымышленных пятиминутных барах EUR/USD. Их цены mid находятся посередине между Bid и Ask. Измените предполагаемые издержки и проверьте сигнал, следующее открытие и учёт результата.
Только учебные данные. Эти бары придуманы: это не рыночная история и не доказательство работоспособности правила.
Правило остаётся неизменным
После закрытия бара сравните цену mid на его закрытии со средним значением цен mid на закрытии этого и двух предыдущих баров. Выше SMA3 — открыть лонг, если позиции нет. Ниже SMA3 — закрыть лонг. При равенстве ничего не менять. Размер позиции — 10 000 EUR, результат — в USD.
Решение может исполниться только на следующем открытии внутри выбранного окна. Повторные сигналы на покупку не увеличивают позицию. Здесь нет шортов, стопов, лимитных ордеров, платы за перенос и подбора параметров.
Бар 36 выбранного окна (1–36) · 11:55
Сверьте результат
- Закрытые сделки · чистый P/L
- -3,70 USD
- Открытая позиция · оценка P/L с учётом комиссии за вход
- 16,25 USD
- Общий P/L модели
- 12,55 USD
Чистый результат закрытых -3,70 USD + оценка открытой 16,25 USD = общий результат 12,55 USD.
Закрыто позиций: 4. Исполнений к этому шагу: 9.
Открытый лонг оценивается по последней цене mid на закрытии за вычетом половины спреда. Уплаченная комиссия за вход вычитается один раз. Будущие комиссия и проскальзывание при выходе в эту оценку не включаются.
Сигнал на продажу на баре 36 ещё ожидает исполнения. Позиция остаётся открытой, комиссия за выход не начислена. Следующего открытия внутри окна нет, поэтому последний сигнал здесь не исполнится.
Где учтены издержки
- P/L закрытых позиций по ценам исполнения
- -0,90 USD
- Комиссии закрытых позиций
- 2,80 USD
- Оценка открытого P/L до комиссии за вход
- 16,60 USD
- Уплаченная комиссия за вход в открытую позицию
- 0,35 USD
- Все уплаченные комиссии
- 3,15 USD
- Влияние спреда, уже включённое в исполнения
- 5,40 USD
- Проскальзывание, уже включённое в исполнения
- 1,80 USD
- Дополнительная половина спреда в оценке открытой позиции
- 0,60 USD
Спред и проскальзывание уже заложены в цены исполнения: не вычитайте показанные суммы повторно. Комиссия — отдельное списание. Оценка открытой позиции не означает исполненный выход.
Раннее и позднее окна — отдельные учебные отрезки. Это не проверка на данных вне выборки и не форвард-тест на будущих котировках. Позиция из раннего окна не закрывается скрытно и не переносится в позднее. Их P/L нельзя складывать как непрерывную историю счёта.
Показаны только пройденные бары. Сплошная линия соединяет цены mid на закрытии, пунктир — SMA3. Треугольники вверх и вниз отмечают условные покупки и продажи на открытии соответствующего бара. Вертикальная ось — USD за EUR.
USD за EUR
Пятиминутный бар
- Цена mid на закрытии
- SMA3
- Покупка на открытии
- Продажа на открытии
Сигнал → следующее открытие → позиция
Читайте строку по времени: сначала исполнение предыдущего решения на открытии, затем оценка текущего закрытия. Линия между барами не добавляет промежуточных цен или исполнений.
| Бар · время примера | На этом открытии | Цена mid закрытия / SMA3 | На этом закрытии | После закрытия бара | Общий P/L модели |
|---|---|---|---|---|---|
| 109:00 | Исполнения нет | 1,10000— | Меньше трёх закрытий: решения нет | Без позиции | 0,00 USD |
| 209:05 | Исполнения нет | 1,10020— | Меньше трёх закрытий: решения нет | Без позиции | 0,00 USD |
| 309:10 | Исполнения нет | 1,100401,10020 | Выше SMA3: купить на следующем открытии | Без позиции | 0,00 USD |
| 409:15 | Покупка по 1,10058; сигнал бара 3 | 1,100801,1004667 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 1,25 USD |
| 509:20 | Исполнения нет | 1,101201,10080 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 5,25 USD |
| 609:25 | Исполнения нет | 1,101601,10120 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 9,25 USD |
| 709:30 | Исполнения нет | 1,101801,1015333 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 11,25 USD |
| 809:35 | Исполнения нет | 1,101601,1016667 | Ниже SMA3: продать на следующем открытии | Лонг 10 000 EUR | 9,25 USD |
| 909:40 | Продажа по 1,10142; сигнал бара 8 | 1,101301,1015667 | Ниже SMA3: остаться без позиции | Без позиции | 7,70 USD |
| 1009:45 | Исполнения нет | 1,101001,10130 | Ниже SMA3: остаться без позиции | Без позиции | 7,70 USD |
| 1109:50 | Исполнения нет | 1,100801,1010333 | Ниже SMA3: остаться без позиции | Без позиции | 7,70 USD |
| 1209:55 | Исполнения нет | 1,101001,1009333 | Выше SMA3: купить на следующем открытии | Без позиции | 7,70 USD |
| 1310:00 | Покупка по 1,10118; сигнал бара 12 | 1,101201,10100 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 6,95 USD |
| 1410:05 | Исполнения нет | 1,101001,1010667 | Ниже SMA3: продать на следующем открытии | Лонг 10 000 EUR | 4,95 USD |
| 1510:10 | Продажа по 1,10072; сигнал бара 14 | 1,100701,1009667 | Ниже SMA3: остаться без позиции | Без позиции | 2,40 USD |
| 1610:15 | Исполнения нет | 1,100901,1008667 | Выше SMA3: купить на следующем открытии | Без позиции | 2,40 USD |
| 1710:20 | Покупка по 1,10108; сигнал бара 16 | 1,101301,1009667 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 3,65 USD |
| 1810:25 | Исполнения нет | 1,101601,1012667 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 6,65 USD |
| 1910:30 | Исполнения нет | 1,101801,1015667 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 8,65 USD |
| 2010:35 | Исполнения нет | 1,101401,10160 | Ниже SMA3: продать на следующем открытии | Лонг 10 000 EUR | 4,65 USD |
| 2110:40 | Продажа по 1,10122; сигнал бара 20 | 1,101001,10140 | Ниже SMA3: остаться без позиции | Без позиции | 3,10 USD |
| 2210:45 | Исполнения нет | 1,101201,10120 | Равно SMA3: остаться без позиции | Без позиции | 3,10 USD |
| 2310:50 | Исполнения нет | 1,100801,10100 | Ниже SMA3: остаться без позиции | Без позиции | 3,10 USD |
| 2410:55 | Исполнения нет | 1,100401,10080 | Ниже SMA3: остаться без позиции | Без позиции | 3,10 USD |
| 2511:00 | Исполнения нет | 1,100601,10060 | Равно SMA3: остаться без позиции | Без позиции | 3,10 USD |
| 2611:05 | Исполнения нет | 1,100901,1006333 | Выше SMA3: купить на следующем открытии | Без позиции | 3,10 USD |
| 2711:10 | Покупка по 1,10103; сигнал бара 26 | 1,100601,10070 | Ниже SMA3: продать на следующем открытии | Лонг 10 000 EUR | -2,15 USD |
| 2811:15 | Продажа по 1,10042; сигнал бара 27 | 1,100301,10060 | Ниже SMA3: остаться без позиции | Без позиции | -3,70 USD |
| 2911:20 | Исполнения нет | 1,100601,10050 | Выше SMA3: купить на следующем открытии | Без позиции | -3,70 USD |
| 3011:25 | Покупка по 1,10078; сигнал бара 29 | 1,101101,1006667 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | -1,45 USD |
| 3111:30 | Исполнения нет | 1,101501,1010667 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 2,55 USD |
| 3211:35 | Исполнения нет | 1,101901,10150 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 6,55 USD |
| 3311:40 | Исполнения нет | 1,102301,10190 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 10,55 USD |
| 3411:45 | Исполнения нет | 1,102701,10230 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 14,55 USD |
| 3511:50 | Исполнения нет | 1,103101,10270 | Выше SMA3: сохранить лонг без новой заявки | Лонг 10 000 EUR | 18,55 USD |
| 3611:55 | Исполнения нет | 1,102501,1027667 | Ниже SMA3: продать на следующем открытии | Лонг 10 000 EUR | 12,55 USD |
Таблицы прокручиваются по горизонтали. При необходимости выберите область таблицы клавишей Tab и используйте стрелки.
Журнал позиций
Закрытая позиция включает обе уплаченные комиссии. Открытая — только комиссию за вход и оценку по Bid, без вымышленной сделки закрытия.
| Позиция | Исполнение входа | Исполнение выхода / оценка | P/L по ценам mid без издержек | P/L по исполнениям / оценке | Уплаченная комиссия | Чистый P/L закрытия / оценки |
|---|---|---|---|---|---|---|
| 1Закрыта | Бар 4 · 1,10058 | Бар 9 · 1,10142 | 10,00 USD | 8,40 USD | 0,70 USD | 7,70 USD |
| 2Закрыта | Бар 13 · 1,10118 | Бар 15 · 1,10072 | -3,00 USD | -4,60 USD | 0,70 USD | -5,30 USD |
| 3Закрыта | Бар 17 · 1,10108 | Бар 21 · 1,10122 | 3,00 USD | 1,40 USD | 0,70 USD | 0,70 USD |
| 4Закрыта | Бар 27 · 1,10103 | Бар 28 · 1,10042 | -4,50 USD | -6,10 USD | 0,70 USD | -6,80 USD |
| 5Открыта · только оценка | Бар 30 · 1,10078 | Бар 36 · 1,10244 | 18,00 USD | 16,60 USD | 0,35 USD | 16,25 USD |
CSV содержит только действующий расчёт до выбранного бара. Постоянные английские имена полей, десятичная точка и полная точность модели позволяют проверить арифметику. Округляется отображение, а не расчёт.
Таблицы прокручиваются по горизонтали. При необходимости выберите область таблицы клавишей Tab и используйте стрелки.
Посмотреть вымышленные данные OHLC
Все цены ниже — mid, середина между Bid и Ask. Максимумы и минимумы показаны для проверки данных; правило «закрытие → следующее открытие» не придумывает по ним исполнения. Строки подготовки SMA отмечены отдельно и не создают сделок.
| Бар · время примера | Открытие | Максимум | Минимум | Закрытие |
|---|---|---|---|---|
| 1 · 09:00 | 1,09980 | 1,10010 | 1,09970 | 1,10000 |
| 2 · 09:05 | 1,10000 | 1,10035 | 1,09980 | 1,10020 |
| 3 · 09:10 | 1,10020 | 1,10060 | 1,10005 | 1,10040 |
| 4 · 09:15 | 1,10050 | 1,10090 | 1,10040 | 1,10080 |
| 5 · 09:20 | 1,10080 | 1,10135 | 1,10060 | 1,10120 |
| 6 · 09:25 | 1,10120 | 1,10180 | 1,10105 | 1,10160 |
| 7 · 09:30 | 1,10160 | 1,10190 | 1,10150 | 1,10180 |
| 8 · 09:35 | 1,10180 | 1,10195 | 1,10140 | 1,10160 |
| 9 · 09:40 | 1,10150 | 1,10170 | 1,10115 | 1,10130 |
| 10 · 09:45 | 1,10130 | 1,10140 | 1,10090 | 1,10100 |
| 11 · 09:50 | 1,10100 | 1,10115 | 1,10060 | 1,10080 |
| 12 · 09:55 | 1,10080 | 1,10120 | 1,10065 | 1,10100 |
| 13 · 10:00 | 1,10110 | 1,10130 | 1,10100 | 1,10120 |
| 14 · 10:05 | 1,10120 | 1,10135 | 1,10080 | 1,10100 |
| 15 · 10:10 | 1,10080 | 1,10100 | 1,10055 | 1,10070 |
| 16 · 10:15 | 1,10070 | 1,10100 | 1,10060 | 1,10090 |
| 17 · 10:20 | 1,10100 | 1,10145 | 1,10080 | 1,10130 |
| 18 · 10:25 | 1,10130 | 1,10180 | 1,10115 | 1,10160 |
| 19 · 10:30 | 1,10165 | 1,10190 | 1,10155 | 1,10180 |
| 20 · 10:35 | 1,10175 | 1,10190 | 1,10120 | 1,10140 |
| 21 · 10:40 | 1,10130 | 1,10150 | 1,10085 | 1,10100 |
| 22 · 10:45 | 1,10100 | 1,10130 | 1,10090 | 1,10120 |
| 23 · 10:50 | 1,10120 | 1,10135 | 1,10060 | 1,10080 |
| 24 · 10:55 | 1,10080 | 1,10100 | 1,10025 | 1,10040 |
| 25 · 11:00 | 1,10040 | 1,10070 | 1,10030 | 1,10060 |
| 26 · 11:05 | 1,10060 | 1,10105 | 1,10040 | 1,10090 |
| 27 · 11:10 | 1,10095 | 1,10115 | 1,10045 | 1,10060 |
| 28 · 11:15 | 1,10050 | 1,10060 | 1,10020 | 1,10030 |
| 29 · 11:20 | 1,10030 | 1,10075 | 1,10010 | 1,10060 |
| 30 · 11:25 | 1,10070 | 1,10130 | 1,10055 | 1,10110 |
| 31 · 11:30 | 1,10110 | 1,10160 | 1,10100 | 1,10150 |
| 32 · 11:35 | 1,10150 | 1,10205 | 1,10130 | 1,10190 |
| 33 · 11:40 | 1,10190 | 1,10250 | 1,10175 | 1,10230 |
| 34 · 11:45 | 1,10230 | 1,10280 | 1,10220 | 1,10270 |
| 35 · 11:50 | 1,10270 | 1,10325 | 1,10250 | 1,10310 |
| 36 · 11:55 | 1,10310 | 1,10330 | 1,10235 | 1,10250 |
Таблицы прокручиваются по горизонтали. При необходимости выберите область таблицы клавишей Tab и используйте стрелки.
Скачайте протокол исследования
Заполните редактируемый текстовый список до просмотра результатов отдельного эксперимента. Он не подтверждает качество теста и не превращает вымышленный ряд в рыночные доказательства.
Скачать протокол · TXTГраницы модели
Фиксированный объём, полные исполнения, неизменные заданные спред, проскальзывание и комиссия; задержка — только до следующего открытия. Нет текущих котировок, частичных исполнений, плеча, ликвидации по марже, вводов, выводов и правил конкретного брокера. Это разбор последовательности и учёта, а не эмулятор брокера или оптимизатор стратегии.
Этот компонент считает в текущей вкладке: он не отправляет введённые значения и не сохраняет их в хранилище браузера. Файлы создаются только по вашему нажатию на скачивание. Это утверждение относится к лаборатории, а не ко всему сайту.
Продвигайте пример по одной свече. На открытии свечи исполняется допустимая инструкция, поставленная в очередь после предыдущего закрытия: используются текущая цена открытия и выбранные расходы. Только затем модель получает закрытие этой свечи и рассчитывает новый сигнал. Сделка не может использовать закрытие, которое еще не произошло.
Например, сигнал покупки после закрытия свечи 3 может исполниться на открытии свечи 4. Получить цену открытия свечи 3 он не может. Поэтому разрыв между свечами имеет значение. Документация стратегий TradingView также разделяет создание заявки и более поздний тик, на котором эмулятор брокера может исполнить ее при стандартной последовательности расчета.
Сравните весь период с его первой или второй половиной. Каждый выбранный отрезок начинается без позиции. Предшествующие закрытия могут подготовить среднюю, но не переносят открытую позицию, прежнюю комиссию или отложенную инструкцию. Это отдельные учебные запуски: их результаты нельзя складывать и выдавать за непрерывную историю одного счета.
Сигнал на последней свече выбранного периода не исполняется, если следующее открытие находится за его пределами. Уже открытая позиция остается видимой и оценивается отдельно; модель не придумывает выход, чтобы все сделки стали завершенными. Изменение периода поэтому может изменить и число сделок, и открытое состояние в конце.
Две половины примера не являются проверкой вне обучающей выборки. Обе относятся к одному небольшому вымышленному набору, а сброс позиции меняет эксперимент.
Учитывайте расходы один раз и на одной основе
В этой модели со средними ценами покупка исполняется по цене открытия плюс половина спреда плюс неблагоприятное проскальзывание. Продажа при выходе — по цене открытия минус половина спреда минус неблагоприятное проскальзывание. Комиссия отдельно начисляется в USD за каждое исполнение фиксированной позиции 10 000 EUR. В этом примере EURUSD один пипс равен 0,0001 USD за EUR.
Пример полного входа и выхода | Расчет |
|---|---|
Средняя цена входа / выхода | 1,10000 / 1,10200 |
Допущения | Спред 1,2 пипса; проскальзывание 0,2 пипса на исполнение; комиссия $0,35 на исполнение |
Цены исполнения входа / выхода | 1,10008 / 1,10192 |
Ценовой P/L после спреда и проскальзывания | 10 000 × (1,10192 − 1,10008) = $18,40 |
Чистый P/L закрытой сделки | $18,40 − $0,35 − $0,35 = $17,70 |
Прокрутите вбок, чтобы сравнить все столбцы ↔
Само движение средней цены дало бы $20,00. Не вычитайте спред и проскальзывание из $18,40 еще раз: они уже заложены в исполнение. Если средняя цена входа и выхода одинакова, при этих допущениях результат составит −$2,30. Увеличение спреда на один пипс уменьшает результат полного входа и выхода на $1,00, поскольку на каждой стороне учитывается половина добавленного спреда.
Если позиция остается открытой, интерактив оценивает ее по последней модельной цене Bid и учитывает уже уплаченную комиссию за вход. Будущая комиссия за выход и проскальзывание на выходе не списываются до исполнения выхода. Показанный итог — модельный P/L, а не полный расчет средств на торговом счете.
Постоянные расходы позволяют отдельно увидеть их влияние, но не обещают реальные условия котирования. Для настоящего исследования могут понадобиться переменный спред, другие комиссии и финансирование переноса через расчетное время. Наш внутридневной пример не учитывает своп. В гайде о проскальзывании объясняется разница между запрошенной ценой, доступной котировкой и фактическим исполнением.
Разделяйте разработку, отложенную историю и будущие наблюдения
До просмотра проверочного периода определите, какие исторические наблюдения могут влиять на разработку. Более поздний отрезок способен проверить правило, выбранное раньше, только пока его результаты не участвуют в выборе. Если постоянно смотреть на отложенную выборку и подстраивать стратегию, этот отрезок превращается в материал для разработки.
Этап | Назначение | Чего он не подтверждает |
|---|---|---|
Разработка | Создать правило и изучить допущения на разрешенных для разработки данных. | Что выбранная версия сохранит свойства на других данных. |
Отложенная историческая выборка | Применить зафиксированную версию к более поздним, ранее не использованным наблюдениям. | Фактическое исполнение брокера или будущую прибыльность. |
Наблюдение вперед во времени | Следить за новыми поступающими ценами после фиксации правил. | Что модельные исполнения совпадут с реальными. |
Прокрутите вбок, чтобы сравнить все столбцы ↔
Настройка Forward в MetaTrader 5 использует более позднюю часть выбранного исторического интервала. Несмотря на название, это не то же самое, что дождаться будущих рыночных данных. В записях четко различайте название функции платформы и метод исследования.
Хронология относится и к подготовке индикатора. Более ранние наблюдения могут дать необходимую историю для расчета на старте проверочного периода. Они не должны подмешивать будущее закрытие или незаметно создавать позицию, если по условиям эксперимент начинается без нее.
Если отложенная выборка выявила проблему, зафиксируйте ее. Измененная стратегия может заслуживать нового эксперимента, но прежняя выборка уже известна. Нельзя сохранить за ней статус «непросмотренного теста», просто переименовав файл или выбрав другую метрику результата.
Проверьте ошибки до интерпретации доходности
Хороший результат — повод изучить журнал, а не прекратить проверку. Выберите несколько входов и выходов, включая неудобную границу периода, и восстановите информацию, доступную в момент каждого решения. Самой полезной строкой может оказаться неисполненный сигнал или непривлекательная сделка, которую легко пропустить при субъективном просмотре.
- Заглядывание в будущее: решение использует более позднее закрытие, подтвержденный будущими свечами паттерн или значение, недоступное в указанное время.
- Переобучение: проверено множество настроек, но сохранен только победитель без истории перебора.
- Смещение отбора: оставлены удобные даты, инструменты или сделки, а неудобные наблюдения исчезли.
- Несоответствие исполнения: от свечных данных требуют подтвердить последовательность событий внутри свечи, которой в них нет.
- Ошибки учета: повторные сигналы добавляют незапланированные позиции, расходы списываются дважды или открытая сделка исчезает на границе.
Примеры заглядывания в будущее от TradingView показывают, как будущая информация может создавать неправдоподобные исторические результаты. Практический вопрос: получилось бы записать тот же сигнал, если бы наблюдения поступали по одному? Если более поздние данные меняют прежнее решение, исследуйте эту зависимость до оценки отчета.
Меняйте допущения целенаправленно, а не до получения удобного результата. Например, сравните одно фиксированное правило при нескольких заранее указанных уровнях расходов. Если небольшое увеличение затрат меняет знак результата, сообщите об этой чувствительности. Это характеристика эксперимента, а не причина скрывать более требовательный сценарий.
Сохраните воспроизводимый протокол теста
После выбора периода и расходов скачайте протокол эксперимента из интерактива. Храните его вместе с показанным сценарием и журналом. Пометка о вымышленных данных существенна: передача чисел без этого контекста превратит учебное упражнение в вводящее в заблуждение заявление о результативности.
В собственном исследовании протокол должен позволять вернуться через месяц и понять, что именно проверялось. Скриншота итоговой прибыли недостаточно, если изменились данные, момент сигнала или способ учета расходов.
- Укажите версию правила, вопрос исследования и изменения относительно предыдущего запуска.
- Опишите набор данных, основу котировки, часовой пояс, период, пропуски и подготовку.
- Запишите время сигнала, допущения об исполнении, размер позиции, расходы и обращение с конечной открытой позицией.
- Отделите даты разработки от дат проверки и отметьте, влияли ли проверочные результаты на последующие решения.
- Сохраните число сделок, журнал исполнений, открытое состояние и неудачные проверки вместе с итогом.
Шаблон торгового журнала помогает организовать отдельные наблюдения, а протокол описывает эксперимент, который их породил. Сохраняйте разочаровывающий запуск так же тщательно, как привлекательный: иначе сама история исследования станет выборкой удачных результатов.
Читайте метрики вместе с контекстом
Начните с количества: доступных наблюдений, закрытых сделок, исполнений с начисленной комиссией и оставшихся открытых позиций. Процент без своего знаменателя может сделать крошечную выборку убедительнее, чем она есть. Сигнал в очереди на границе периода — не закрытая сделка, а открытая позиция — не зафиксированный выигрыш или убыток.
Затем сверьте чистый результат закрытых сделок с оценкой открытых и уже уплаченными расходами. Посмотрите, где возникают потери и насколько итог зависит от нескольких сделок. В интерактиве нет депозита, модели маржи и выводов средств, поэтому его траекторию P/L нельзя читать как баланс брокерского счета.
Определения и ограничения отдельных показателей разобраны в гайдах о профит-факторе, кривой капитала и коэффициенте Кальмара. Привлекательный коэффициент не исправляет заглядывание в будущее или нереалистичное исполнение. Несколько часов вымышленных наблюдений также не обосновывают годовую доходность или вывод о долгосрочной просадке.
Полезный вывод описывает условия: какое правило проверили, на каких данных, при каких допущениях и что осталось неизвестным. «Эта версия дала убыток при повышении расходов» — более ясный результат исследования, чем ничем не подтвержденное обещание прибыльности следующей версии.
Частые вопросы
Можно ли проверить стратегию Форекс вручную?
Да. Открывайте наблюдения по времени, следуйте письменным правилам и записывайте каждую допустимую сделку и допущение. Не просматривайте готовый график с отбором только узнаваемых ситуаций. Ручная работа требует тех же правил расходов и границ периода, что автоматический тест.
Что выбрать для бэктеста: MetaTrader 5 или TradingView?
Выбор зависит от правила, данных и поведения исполнения, которое нужно исследовать. Изучите настройки тестера или эмулятора брокера и просмотрите отдельные исполнения. Разные стандартные настройки могут дать разные результаты; это само по себе не подтверждает прибыльность стратегии ни на одной платформе.
Всегда ли необходимы реальные тики?
Нужная детализация зависит от правила. Стратегии, чувствительной к событиям внутри свечи, нужны сведения, которых свеча может не содержать. Тики добавляют детали, но все равно требуют проверки покрытия, сторон котировки и допущений об исполнении. Больше строк не означает отсутствие ограничений модели.
Сколько сделок нужно для надежного бэктеста?
Универсального числа, подтверждающего любую стратегию, нет. Важны частота, зависимость между сделками, рыночные условия и количество испробованных вариантов. Указывайте размер выборки и ограничения. Небольшой вымышленный пример здесь намеренно не подходит для статистического заявления о результативности.
Почему реальные результаты могут отличаться от бэктеста?
Цены, время, спред, доступная ликвидность, расходы и обработка заявок могут отличаться от модели. Тест также не содержит рыночных условий, которых не было в его данных. Исторический результат остается условным свидетельством; новые наблюдения и фактическое исполнение нужно фиксировать отдельно.
Доказывает ли прибыльный бэктест наличие преимущества?
Нет. Сначала исключите утечку будущей информации и ошибки учета, затем оцените, как выбиралась и проверялась стратегия. Результат может быть внутренне согласованным и при этом зависеть от небольшого или непредставительного периода. Бэктест помогает исследованию, но не гарантирует будущий исход.
Источники и материалы
- MetaTrader 5 — Strategy TestingПроверено
- MQL5 — Testing Trading StrategiesПроверено
- TradingView — StrategiesПроверено