Эта стратегия основана на дизайне индикатора по бортовой полосе, когда цена прорывает бортовую полосу и идет вниз, принимается соответствующая операция по увеличению или уменьшению. Стратегия получает прибыль, захватывая прорыв.
В частности, эта стратегия сначала рассчитывает среднюю траекторию SMA длиной в длину, а также верхнюю и нижнюю траекторию, рассчитанную с многократным стандартным разрывом. Когда цена закрытия прорывает нижнюю траекторию снизу вверх, делается дополнительный вход; когда она прорывает верхнюю траекторию сверху вниз, делается пустой вход.
Эта стратегия пытается захватить ситуацию расширения после прорыва цены вверх и вниз. При прорыве вниз смотреть на усиление силы многосторонних сторон, а при прорыве вверх смотреть на усиление силы пустых сторон, когда торговля в одном направлении благоприятна.
Оптимизация входных условий, добавление стратегии стоп-лосса и внедрение фильтрации трендов позволяют снизить эти риски.
Эта стратегия является основанной на боровской стратегии прорыва, которая выигрывает от захвата прорыва. Преимущество состоит в том, что идея проста и легко реализуема; недостатком является легкость вводящего в заблуждение по поводу кривой.
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy("Noro's Bollinger Strategy v1.0", shorttitle = "Bollinger str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, minval=1)
mult = input(1.0, minval=0.001, maxval=50)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
source = close
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
up = close < lower
dn = close > upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)
if up
strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
if dn
strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
if time > timestamp(toyear, tomonth, 31, 00, 00) or exit
strategy.close_all()