Осиллятор импульса Стратегия торговли Bollinger Band RSI

Автор:Чао Чжан, Дата: 2023-09-18 14:07:51
Тэги:

Обзор

Эта стратегия объединяет полосы Боллинджера и индикатор относительной силы (RSI) для прогнозирования волатильности цен и определения оптимальных точек входа. Логика проста - мы наблюдаем за закрывающимися ценами, которые касаются нижней полосы Боллинджера, после чего есть два возможных сценария: либо цена отскакивает обратно от нижней полосы Боллинджера, либо она продолжает падать. Чтобы подтвердить движение цен, мы используем второй индикатор, RSI, для дальнейшего изучения тенденции. Например, если цена достигает нижней полосы Боллинджера, но значение RSI не находится в перепроданной зоне, мы можем сделать вывод, что цена продолжит снижаться. Если значение RSI перепроданно, мы можем использовать эту область в качестве точки входа.

Стоп-лосс необходим для того, чтобы не потерять слишком много капитала, если показатель RSI слишком долго остается на перепроданной территории.

Наилучшая зона получения прибыли - это когда цена отскочит обратно выше средней полосы / верхней полосы Боллинджера или когда RSI достигнет уровня перекупа, в зависимости от того, что произойдет раньше.

Длинная запись:

RSI < 30 и цена закрытия < нижний диапазон Боллинджера

Дальний выход:

RSI > 70

Логика стратегии

Стратегия сначала рассчитывает индикатор RSI и устанавливает верхние / нижние границы для определения уровня перекупленности / перепродажи. Затем она рассчитывает средние, верхние и нижние полосы Боллинджера. Когда цена закрытия касается нижней полосы, а RSI ниже 30, перейдите на длинный курс. Когда RSI выше 70, закрывайте позицию.

При входе в длинную позицию устанавливается стоп-лосс и точки получения прибыли.

Это позволяет нам покупать на нижней полосе Боллинджера, когда RSI низкий, и продавать, когда RSI высокий, получая прибыль от переворота.

Анализ преимуществ

  • Болинджерские полосы точно определяют точки переворота
  • RSI фильтрует ложные прорывы, обеспечивая надежный вход
  • Стоп-лосс и прибыль эффективно управлять торговым риском
  • Обширные обратные тесты и оптимизация параметров обеспечивают стабильную прибыльность

Анализ рисков

  • Болинджерские полосы не предсказывают реверсии, некоторые неудачи случаются.
  • RSI также может давать ложные сигналы
  • Стоп-лосс слишком близко не может удержать позицию, слишком свободно увеличивает риск

Риски могут быть смягчены путем корректировки параметров Боллинджера, использования других индикаторов и соответствующего расширения стоп-лосса.

Руководство по оптимизации

  • Подумайте о сочетании с другими индикаторами, такими как KD, MACD, чтобы отфильтровать записи
  • Динамическая корректировка процентов стоп-лосса и прибыли
  • Оптимизировать параметры Боллинджера
  • Испытание прочности на различных продуктах

Заключение

Общий профиль риска/вознаграждения этой стратегии сбалансирован, а результаты бэкстеста хороши. Дальнейшие улучшения могут быть достигнуты за счет оптимизации параметров и улучшения показателей. Концепция обратной торговли, основанная на полосах Боллинджера, проста и надежна, что требует дальнейших исследований и уточнений.

[/trans]


/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI", format=format.price, precision=2, pyramiding=50, initial_capital=10000, calc_on_order_fills=false, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=1000, currency="USD")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)


Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)

long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

entry_long = rsi < 30 and src < lower
exit_long = rsi > 70

plotshape(entry_long, style=shape.labelup, color=color.green,  location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red,  location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")

strategy.entry("Long",true,when=entry_long)    
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)


Больше