
Стратегия, основанная на SuperB-индикаторе Рафаэля Зиони, идентифицирует тренды с помощью динамических индикаторов и позволяет автоматически отслеживать восходящие и нисходящие тренды.
Стратегия использует индикатор SuperB Рафаэля Зиони, чтобы определить ценовую тенденцию. Индикатор SuperB основан на диапазоне колебаний цены, объеме сделок и разнице между ценой открытия и ценой закрытия. Индикатор SpreadVol отражает динамические характеристики цен.
Эта стратегия определяет трендовый поворот в реальном времени, отслеживая самые высокие цены и самые низкие цены. В восходящих тенденциях, самые высокие цены всегда инновационно высоки и определяются как продолжающиеся; когда цена падает ниже определенной пропорции максимальной цены, она переходит в нисходящую тенденцию.
Эта стратегия в сочетании с динамическими показателями определяет направление тренда, а затем в режиме реального времени отслеживает наиболее высокие и низкие цены, что позволяет быстро идентифицировать новое направление тренда, автоматически отслеживать восходящие и нисходящие тенденции и избегать риска пропущенных и перепроданных точек.
Индекс SuperB от RafaelZioni отражает силу и скорость изменения цен, позволяет точно определять истинную тенденцию, эффективно фильтруя ложные прорывы. Правила определения просты, понятны и легко проверяются.
Принимая только многоочередные позиции, можно снизить торговые издержки и потерю скольжения, связанные с частыми операциями.
Эта стратегия подвержена многократным ошибочным сделкам в предпрорывном регионе. Можно снизить чувствительность к региону путем оптимизации параметров.
Стоп-линия может быть легко задействована при колебаниях тренда. Стоп-линия может быть расширена, чтобы держать позицию дольше.
При переходе на более широкий диапазон необходимо своевременно переключать позиции. Если переключение происходит не вовремя, это может привести к большим потерям.
Оптимизация параметров показателя SuperB, поиск лучших комбинаций параметров, повышение стабильности показателя.
Оптимизация коэффициента отслеживания наивысшей цены и наименьшей цены, снижение чувствительности реакции к региону сверки.
Увеличение срока хранения позиций, чтобы избежать убытков во время колебаний тренда.
Стратегия использует индикатор SuperB от RafaelZioni для определения направления ценовой тенденции и для определения обратной тенденции в режиме реального времени путем отслеживания максимумов и минимумов, для автоматического отслеживания тенденций к росту и снижению, чтобы избежать риска перекупа, относится к динамической стратегии типа отслеживания тенденции. Эта стратегия в сочетании с динамическими показателями определяет истинную тенденцию, правила определения простые и понятные, могут быть улучшены и оптимизированы в соответствии с рекомендациями по оптимизации.
/*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')