Владельцы подписок 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:
На историческом участке эмулятор стратегии получает доступ к изменениям цены в нижних интервалах — аналогично тому, как если бы это происходило в реальном времени для текущего бара при тестировании стратегии.
Ниже можно увидеть пример стратегии, которая использует нижний интервал для получения более точного заполнения стоп-заявок:
//@version=5 strategy( title = "Magnifier On", overlay = true, calc_on_order_fills = true, calc_on_every_tick = true, precision = 3, default_qty_type = strategy.cash, currency = currency.USD, default_qty_value = 1000, initial_capital = 1000, use_bar_magnifier = true) trailPoints = input.int(150, "Trail Points (in ticks)") trailOffset = input.int(100, "Trail Offset (in ticks)") stopSize = input.int(300, "Stop Offset (in ticks)") longCondition = bar_index % 25 == 0 and not (strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) == bar_index) if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Exit", loss = stopSize, trail_points = trailPoints, trail_offset = trailOffset)
С включенной функцией детализации баров результаты тестирования становятся приближенными к результатам, которые могут быть получены в реальном времени. Прибыль данной тестовой стратегии на 50% ниже, когда функция включена, что демонстрирует, насколько важным может быть использование данных более низких интервалов для получения более точных данных тестирования.
Функцию можно включать и отключать с помощью соответствующей галочки в окне параметров стратегии:
После выключения функции стратегия пересчитывается со старой логикой и отображает результаты, которые показывают менее точную информацию о поведении данной стратегии:
Если вы хотите узнавать об обновлениях Pine, следите за разделом Release notes. Учётная запись PineCoders также транслирует новости об обновлениях в своем Telegram-канале Squawk Box и в публичном чате Pine Script™ Q&A на TradingView.
Мы надеемся, что эта функция будет вам полезна. Продолжайте делиться с нами своим мнением. Мы создаем TradingView для наших пользователей, и всегда рады услышать, что вы думаете о наших нововведениях.