Стратегия RSI-BB сочетает в себе индикаторы относительной силы (RSI) и полос Боллинджера (BB) для торговли. Она использует RSI для определения рыночных тенденций и уровня перекупленности / перепроданности, а BB для определения точек прорыва. Когда оба сигнала RSI и BB выравниваются, стратегия будет вносить долгие или короткие сделки соответственно.
Код сначала вычисляет показатели RSI и BB.
RSI рассчитывается как:
up = rma(max(change(close), 0), 30)
down = rma(-min(change(close), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
Там, где вверх измеряет движение цен вверх в течение 30 периодов, вниз измеряет движение цен вниз, а rsi рассчитывается на основе соотношения вверх - вниз.
BB рассчитывается как:
basis = sma(close, 50)
dev = 0.2 * stdev(close, 50)
upper = basis + dev
lower = basis - dev
Где база - это скользящая средняя за 50 периодов, dev - это 0,2 раза стандартное отклонение, верхняя и нижняя полосы.
bbi - индекс пропускной способности Bollinger, рассчитанный как:
bbr = close>upper? 1 : close<lower? -1 : 0
bbi = bbr - bbr[1]
bbr проверяет, если ближайший перерыв верхней или нижней полосы. прорыв равен 1, разрыв равен -1, в противном случае 0. bbi - это разница между текущим и предыдущим bbr. Положительный bbi указывает на прорыв вверх, отрицательный указывает на снижение.
Сигналы стратегии определяются следующим образом:
long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7
short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7
Если RSI находится между 52-65 и BBI между 0,11 и 0,7, то выбирайте короткий курс, если RSI находится между 35-48 и BBI между -0,11 и -0,7.
Сочетание RSI и BB обеспечивает более надежные сигналы.
30-периодный РСИ фильтрует рыночный шум и фокусируется на основных тенденциях.
50-периодный BB с 0,2 стандартным отклонением помогает отфильтровывать биты.
Пороги BBI фильтруют фальшивые побеги.
Длинные/короткие зоны RSI 52-65 и 35-48 обеспечивают определенный буфер, чтобы избежать пропущенных сделок.
Стратегии прорыва склонны к тому, чтобы попасть в ловушку, нужно управлять риском с остановкой потери.
Результаты обратных тестов могут быть перегружены, и производительность может варьироваться.
Экстремальные рыночные движения могут привести к большим потерям.
Необходимо оптимизировать параметры RSI и BB, включая периоды и пороги.
Цена заказа может существенно повлиять на производительность.
Испытывать различные комбинации параметров RSI и BB для поиска оптимальных настроек.
Добавьте другие индикаторы, такие как MACD, KD для фильтрации сигнала.
Оптимизируйте длинные/короткие зоны RSI, чтобы отфильтровать больше шума.
Оптимизируйте динамические пороги BBI для лучшей фильтрации подделок.
Добавьте фильтр тренда, чтобы избежать торговли против основного тренда.
Испытывать различные методы стоп-лосса для поиска оптимального контроля риска.
Проверьте различные типы заказов, чтобы свести к минимуму влияние скольжения.
Стратегия RSI-BB сочетает в себе преимущества использования индикаторов тренда и импульса. Результаты обратных тестов многообещающие, но живая производительность может варьироваться из-за реальных факторов, таких как скольжение и стоп-лосс. Параметры и фильтры должны быть оптимизированы на основе результатов обратных тестов. Стоп-лосс и размещение ордеров также должны быть оценены на эффективность в реальном мире. Стратегия имеет достоинство, но требует постоянных улучшений и тестирования надежности для получения последовательных результатов.
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Based on Larry Connors RSI-2 Strategy - Lower RSI strategy(title="Spyfrat Strat", shorttitle="SpyfratStrat", overlay=true) src = close, // BB Init source = close length = input(50, minval=1) mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50) alertLevel=input(0.1) impulseLevel=input(0.75) showRange = input(false, type=bool) //RSI CODE up = rma(max(change(src), 0), 30) down = rma(-min(change(src), 0), 30) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //BB CODE basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.1 bbi = bbr - nz(bbr[1]) //Rule long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7 short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7 //Trade Entry strategy.entry("long", strategy.long, when=long) strategy.entry("short", strategy.short, when=short) //Trade Exit TP = input(250) * 10 SL = input(20) * 10 TS = input(0) * 10 CQ = 100 TPP = (TP > 0) ? TP : na SLP = (SL > 0) ? SL : na TSP = (TS > 0) ? TS : na strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)