Эта стратегия основана на индикаторе SuperB, созданном Рафаэлем Зиони. Он определяет тенденции с помощью индикаторов импульса и автоматически отслеживает тенденции вверх и вниз, относящиеся к следующей трендовой стратегии.
Стратегия использует индикатор SuperB, созданный Рафаэлем Зиони, для выявления ценовых тенденций. Индикатор SuperB основан на диапазоне колебаний цен, объеме торговли и ценовой разнице между открытыми и закрытыми ценами для расчета индикатора SpreadVol. Индикатор SpreadVol отражает характеристики импульса цен. Эта стратегия использует скользящую среднюю и стандартное отклонение индикатора SpreadVol для определения порогов. Когда SpreadVol находится выше верхней рельсы, это тенденция к росту. Когда ниже нижней рельсы, это тенденция к снижению.
Стратегия оценивает изменение тренда в режиме реального времени, отслеживая высокие и низкие цены. В восходящей тенденции продолжаются новые максимумы, что указывает на устойчивый рост. Когда цена опускается ниже максимальной цены на определенный процент, она превращается в нисходящую тенденцию.
Стратегия сочетает в себе индикаторы импульса для определения направления тренда, а затем отслеживает самые высокие и самые низкие цены в режиме реального времени, которые могут быстро идентифицировать новые направления тренда и автоматически отслеживать тенденции роста и падения, избегая рисков отсутствия точек покупки и точек перекупки.
Индикатор SuperB отражает силу и скорость изменения цен и может точно определить истинные тенденции, эффективно отфильтровывая ложные прорывы.
Он занимает длинные позиции только для сокращения затрат на торговлю и потерь от скольжения, вызванных частыми операциями.
Стратегия подвержена множественным ложным сделкам в зоне консолидации до прорыва.
Линия стоп-лосса, как правило, запускается во время трендовых шоков.
При переключении между длинными и короткими позициями необходимо своевременно переключаться.
Оптимизировать параметры индикатора SuperB для поиска лучших комбинаций параметров и улучшения стабильности индикатора.
Оптимизировать коэффициент отслеживания самых высоких и самых низких цен для снижения чувствительности к областям консолидации.
Увеличить критерии времени хранения, чтобы избежать остановки во время шоков тренда.
Эта стратегия использует разработанный Рафаэлем Зиони индикатор SuperB для определения направления ценового тренда и оценивает обратные тенденции путем отслеживания высоких и низких цен в режиме реального времени, реализуя автоматическое отслеживание восходящих и нисходящих тенденций, избегая пропущенных точек покупки и рисков перекупки.
/*backtest start: 2023-01-01 00:00:00 end: 2023-08-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle='SuperB', title='SuperB By RafaelZioni', overlay=true) long_only = input(title="Only Long?", defval=true) hilow = ((high - low)*100) openclose = ((close - open)*100) vol = (volume / hilow) spreadvol = (openclose * vol) VPT = spreadvol + cum(spreadvol) window_len = 28 v_len = 14 price_spread = stdev(high-low, window_len) vp = spreadvol + cum(spreadvol) smooth = sma(vp, v_len) v_spread = stdev(vp - smooth, window_len) shadow = (vp - smooth) / v_spread * price_spread out = shadow > 0 ? high + shadow : low + shadow // len = input(10) vpt=ema(out,len) // INPUTS // st_mult = input(1, title = ' Multiplier', minval = 0, maxval = 100, step = 0.01) st_period = input(10, title = ' Period', minval = 1) // CALCULATIONS // up= vpt - (st_mult * atr(st_period)) dn = vpt + (st_mult * atr(st_period)) c5=close // factor = input(title="Factor", defval=0.05, minval=0.01, maxval=5, step=0.01, type=input.float) hb = 0.00 ,hb := nz(hb[1]) hl = 0.000, hl := nz(hl[1]) lb = 0.00 ,lb := nz(lb[1]) l1 = 0.000,l1 := nz(l1[1]) c = 0 c := nz(c[1]) + 1 trend = 0,trend := nz(trend[1]),n = dn,x =up if barstate.isfirst c := 0 lb := n hb := x l1 := c5 hl := c5 hl if c == 1 if x >= hb[1] hb := x hl := c5 trend := 1 trend else lb := n l1 := c5 trend := -1 trend if c > 1 if trend[1] > 0 hl := max(hl[1], c5) if x >= hb[1] hb := x hb else if n < hb[1] - hb[1] * factor lb := n l1 := c5 trend := -1 trend else l1 := min(l1[1], c5 ) if n <= lb[1] lb := n lb else if x > lb[1] + lb[1] * factor hb := x hl := c5 trend := 1 trend v = trend == 1 ? hb : trend == -1 ? lb : na plot(v, color=trend == 1 ? color.blue : color.yellow, style=plot.style_circles, linewidth=1, title="trend", transp=0, join=true) // long = trend == 1 and trend[1] == -1 short = trend == -1 and trend[1] == 1 // last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) buy = crossover(last_long, last_short) sell = crossover(last_short, last_long) /////////////// Positions ////////////// if long strategy.entry("Buy", long=true) if long_only == false strategy.close("Sell") if short if long_only == false strategy.entry("Sell", long=false) strategy.close("Buy") /////////////// Plotting /////////////// plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0) //plot for buy icon plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0) /////////////// Alerts /////////////// alertcondition(buy, title='buy', message='Buy') alertcondition(sell, title='sell', message='Sell')