Эта стратегия сочетает в себе индекс относительной силы (RSI) и полосы Боллинджера для выявления торговых возможностей, относящихся к средним стратегиям реверсии в количественной торговле.
Используйте индикатор RSI, чтобы судить, является ли рынок перепроданным. RSI ниже 30 считается сигналом перепроданности.
Используйте полосы Боллинджера, чтобы определить, начинает ли цена восстанавливаться вверх.
Объедините сигнал перепроданности RSI и сигнал прорыва полос Боллинджера, чтобы установить точки входа покупки. Купить, когда оба сигнала запускаются, и закрыть позицию, когда цена превышает средний диапазон, чтобы получить прибыль.
Стратегия объединяет средний показатель реверсии RSI и индикатор канала Bollinger Bands для более точного определения пунктов входа.
Показатель RSI может отфильтровать много ложных прорывов и уменьшить ненужные сделки.
Болинджерские полосы действуют как стоп-лосс для контроля риска каждой сделки.
Индикатор RSI может давать неверные сигналы, что приводит к упущенным возможностям покупки.
Неправильные параметры Bollinger Bands могут привести к тому, что стоп-лосс будет слишком свободным или строгим.
Выбор неправильных инструментов торговли, таких как торговля акциями с низкой капитализацией с более высоким риском ликвидности.
Проверьте различные комбинации параметров, такие как период RSI, период Боллинджера и мультипликатор, чтобы найти оптимальные параметры.
Включите другие индикаторы, такие как KD, MACD, чтобы установить более строгие условия покупки для фильтрации сигналов.
Установка стоп-лосса на основе волатильности для различных торговых инструментов, например, использование стоп-лосса волатильности.
Эта стратегия использует логику покупки на минимумах 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()