Рассмотрим пару новых функций и пример работы с отсутствующими значениями.
Стратегия «Прорыв канала» формирует сигнал на вход, когда обновлены значения максимума или минимума каналов (upBound и downBound), построенных на основании предыдущих баров (значение length).
Стратегии понемногу усложняются. Попытайтесь прочитать код и понять, что там происходит. Пояснения внизу помогут. Вопрос можно задать в комментариях.
Код стратегии «Прорыв канала»
//@version=5
strategy("ChannelBreakOutStrategy", overlay=true)
length = input.int(title="Length", minval=1, maxval=1000, defval=5)
upBound = ta.highest(high, length)
downBound = ta.lowest(low, length)1
if (not na(close[length]))2
strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")3
strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)
- upBound и downBound определяются через встроенные функции ta.highest и ta.lowest, которые высчитывают максимальное и минимальное значение из нескольких баров (задано lenght). Все встроенные функции начинаются с «ta» (технический анализ). ↩︎
- Ключевое слово na означает отсутствующие значения, а not na значит, что они не берутся в расчет . Условия входа выполняются только при наличии значений для вычисления максимума из закрытых баров. ↩︎
- Условия входа в лонг со стопом за максимум плюс один минимальный тик (syminfo.mintick). Аналогично для шорта. ↩︎