Что такое режим тестирования с детализацией баров

Владельцы подписок Premium могут получить более реалистичное исполнение заявок при тестировании своих стратегий на исторических данных с помощью функции детализации баров. Данный режим использует более подробную информацию о движении цены внутри бара, что позволяет исполнять заявки с большей точностью. Функция позволяет эмулятору брокера использовать нижние временные интервалы для повышения точности тестирования. 

Для бара главной серии запрашивается массив детализирующих баров из нижнего временного интервала согласно таблице:

Интервал инструмента, T

Нижний интервал

1S < T < 30S

1S

30S <= T < 5

5S

5 <= T < 30

15S

30 <= T < 60

1

60 <= T < 240

5

240 <= T < D

15

D <= T < W

60

W <= T < 2W

120

T >= 2W

D

Таблица 1.  Нижние интервалы

Рассмотрим пример стратегии, в которой используется стоп-заявка без использования функции детализации баров:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = false)
if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0) 

Эмулятор брокера создает стоп-заявку на баре № 10381 и заполняет заявку с ценой 157.0 на следующем баре, как только условие stop = 157.0 выполняется. Внутри самого бара цена движется от открытия до минимума, затем до максимума (открывая позицию) и до закрытия. Через несколько баров (11 дней для текущего временного интервала) срабатывает условие для выхода из позиции с ценой stop = 156.0:

Когда функция детализации баров включена (параметр use_bar_magnifier = true) цена входа и выхода из позиции не меняется, однако выход из позиции происходит внутри того же бара, в котором размещен вход в позицию:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = true)
if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0) 

Если отобразить график с нижним временным интервалом (60-минутный интервал согласно Таблице 1) для данного инструмента за время, соответствующее бару 10382, то можно увидеть, что на часовом интервале происходит изменение цены, удовлетворяющее условию stop = 156.0:

На историческом участке эмулятор стратегии получает доступ к изменениям цены в нижних интервалах — аналогично тому, как если бы это происходило в реальном времени для текущего бара при тестировании стратегии.

Функцию можно включать и отключать с помощью соответствующей галочки в окне параметров стратегии:

Обратите внимание, что у этого режима есть ограничение: стратегия может запрашивать не более 100 000 баров из нижнего интервала. Для символов с большим количеством исторических данных (где количество баров на графике * количество баров нижнего интервала на бар графика > 100000), первые сделки на графике могут быть не затронуты режимом детализации. Количество баров, начиная с конца графика, на которые может повлиять данный режим, можно примерно рассчитать как:

last_bar_index - (100000 / ( 1 / количество баров нижнего интервала на бар графика)

Полученное значение является грубым приближением, так как количество баров нижнего интервала может отличаться от одного бара к другому.