RSI и Bollinger Bands Количественная стратегия торговли

Автор:Чао Чжан, Дата: 2024-01-08 10:16:22
Тэги:

img

Обзор

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

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

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

  2. Используйте полосы Боллинджера, чтобы определить, начинает ли цена восстанавливаться вверх.

  3. Объедините сигнал перепроданности RSI и сигнал прорыва полос Боллинджера, чтобы установить точки входа покупки. Купить, когда оба сигнала запускаются, и закрыть позицию, когда цена превышает средний диапазон, чтобы получить прибыль.

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

  1. Стратегия объединяет средний показатель реверсии RSI и индикатор канала Bollinger Bands для более точного определения пунктов входа.

  2. Показатель RSI может отфильтровать много ложных прорывов и уменьшить ненужные сделки.

  3. Болинджерские полосы действуют как стоп-лосс для контроля риска каждой сделки.

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

  1. Индикатор RSI может давать неверные сигналы, что приводит к упущенным возможностям покупки.

  2. Неправильные параметры Bollinger Bands могут привести к тому, что стоп-лосс будет слишком свободным или строгим.

  3. Выбор неправильных инструментов торговли, таких как торговля акциями с низкой капитализацией с более высоким риском ликвидности.

Направление оптимизации

  1. Проверьте различные комбинации параметров, такие как период RSI, период Боллинджера и мультипликатор, чтобы найти оптимальные параметры.

  2. Включите другие индикаторы, такие как KD, MACD, чтобы установить более строгие условия покупки для фильтрации сигналов.

  3. Установка стоп-лосса на основе волатильности для различных торговых инструментов, например, использование стоп-лосса волатильности.

Заключение

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


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's BB + RSI Strategy v1.0", shorttitle = "BB+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
rsiuse = input(true, defval = true, title = "Use RSI")
bbuse = input(true, defval = true, title = "Use BB")
showbb = input(true, defval = true, title = "Show BB Overlay")
bbperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "BB period")
bbsource = input(ohlc4, title = "BB source")
bbmult = input(2, defval = 2, minval = 1, maxval = 100, title = "BB Mult")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 1000, title = "RSI period")
rsisource = input(close, title = "RSI source")
rsilimit = input(30, defval = 30, minval = 1, maxval = 49, title = "RSI Limit")
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")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

//RSI
rsi = rsi(rsisource, rsiperiod)

//BB
basis = sma(bbsource, bbperiod)
dev = bbmult * stdev(bbsource, bbperiod)
upper = basis + dev
lower = basis - dev

//Overlay
col = showbb ? blue : na
plot(upper, color = col)
plot(basis, color = col)
plot(lower, color = col)

//Signals
up = (rsi < rsilimit or rsiuse == false) and (low < lower or bbuse == false)
cl = close > open

//Trading
lot = 0.0 
lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, lot)
if cl
    strategy.entry("Close", strategy.short, 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Больше