Downloading...

Новый режим тестирования — Детализация баров

30 мая, 2022

Владельцы подписок 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 для наших пользователей, и всегда рады услышать, что вы думаете о наших нововведениях.

Look first Then leap

Мы создали TradingView, чтобы вы могли пользоваться самыми крутыми функциями.