Стратегия «BarUpDn»: условия открытия сделок и встроенные функции ограничения потерь

Решил разобрать в учебных целях простую стратегию от TradingView.

Мне нравится разбирать примеры, так что давайте постараемся понять, что же происходит в этом коде.

Описание

Стратегия рассчитана на поиск быстрых изменений цены и пытается торговать в начале восходящего или нисходящего тренда.
Будет открыта длинная позиция, если текущий бар зеленый и открывается выше закрытия предыдущего бара. Если текущий бар красный и его открытие ниже закрытия предыдущего бара, то будет открыта короткая позиция. Если процент потерь за день превысит значение, указанное в настройках, то все позиции будут закрыты.

Код (Pine Script)

//@version=5
strategy("BarUpDn Strategy", overlay=true, 
  default_qty_type = strategy.percent_of_equity, default_qty_value = 10)1
maxIdLossPcnt = input.float(1, "Max Intraday Loss(%)")2
strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)3
if (close > open and open > close[1])
	strategy.entry("BarUp", strategy.long)
if (close < open and open < close[1])
	strategy.entry("BarDn", strategy.short)4
//plot(strategy.equity, title="equity", color=color.red, 
//  linewidth=2, style=plot.style_areabr)5

Результаты тестирования

Могу сделать вывод, что сама по себе данная стратегия не годится для применения. Получается большое количество сделок и сильные потери на комиссиях. Возможно, применив что-нибудь другое для фильтрации можно получить интересный результат. Но об этом в другой раз.
Далее: Полосы Боллинджера: Разбираем код стратегии, изучаем метки сделок и выбор направления торговли.

Сноски и пояснения

  1. В строке «strategy» описаны параметры стратегии: название, отображение поверх графика, выбор подсчетов в процентах от капитала. Эти строчки кода не обязательны. Можно задать данные параметры в окне настройки стратегии, но удобнее сразу написать в коде. ↩︎
  2. Переменной «maxIdLossPcnt» мы задаем максимальный процент потерь. Значение можно изменить в окне настроек. По умолчанию 1%. ↩︎
  3. Встроенная функция «strategy.risk.max_intraday_loss» отвечает за риск менеджмент. Мы просто задаём процент потерь, при достижении которого торговля прекращается. ↩︎
  4. Условия совершения сделок (дословно): Если значение закрытия текущего бара (close) больше значение открытия текущего бара (open) и его же значение больше цены закрытия предыдущего бара (close[1]), то выполняется вход с использованием встроенной функции strategy.entry(id, direction, qty, limit, stop, oca_name, oca_type, comment, alert_message, disable_alert).
    В скобках указаны аргументы: id — идентификатор и direction — направление являются обязательными. Значение остальных можно посмотреть в Справочнике Pine Script.
    Аналогично и с условиями для шорта. ↩︎
  5. Функция «plot» убрана в комментарии. Если убрать «//», то поверх графика будет отображаться текущее количество средств. ↩︎
Понравилась статья? Поделиться с друзьями: