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