Эта стратегия разрабатывает количественную торговую стратегию, основанную на полосах Боллинджера и индексе относительной силы (RSI). Она сочетает в себе отслеживание тренда и суждение о перекуплении / перепродаже, чтобы войти на рынок в начале тренда и выйти на уровне перекупления / перепродажи для получения прибыли.
Стратегия использует полосы Боллинджера для определения ценовых тенденций и уровней поддержки / сопротивления. Цены, приближающиеся к нижней полосе Боллинджера, рассматриваются как сигнал о перепродаже, в то время как цены, приближающиеся к верхней полосе Боллинджера, рассматриваются как сигнал о перекупке.
Конкретные правила торговли таковы: идти длинным, когда цена ниже нижней полосы Боллинджера, а RSI ниже 30; идти коротким, когда цена выше верхней полосы Боллинджера, а RSI выше 70. Для получения прибыли установите среднюю полосу Боллинджера или противоположную полосу Боллинджера как уровень получения прибыли. Стоп-лосс устанавливается на определенном проценте от цены входа.
Стратегия сочетает в себе Bollinger Bands
По сравнению с использованием одного индикатора, такого как полосы Боллинджера или RSI в одиночку, эта стратегия использует несколько индикаторов и параметров для улучшения точности принятия решений.
Стратегия в значительной степени опирается на оптимизацию параметров. Неправильные настройки параметров могут привести к отсутствию тенденций или генерированию ложных сигналов. Например, несоответствие периода Боллинджера может вызвать такие проблемы.
Стратегия также зависит от торгового инструмента. Для высоковолатильных активов параметры полосы Боллинджера должны быть соответствующим образом скорректированы. Для инструментов с неясными тенденциями производительность также может пострадать. Также влияют затраты на транзакции, скольжение и экстремальные рыночные события.
Оптимизация параметров рекомендуется для оценки уровня получения прибыли/остановки убытков и эффективности различных активов и рыночных режимов.
Некоторые аспекты могут быть улучшены:
Оценка и оптимизация параметров для полос Боллинджера и RSI для лучшего соответствия характеристикам инструментов торговли
Включить дополнительные показатели, такие как KDJ, MACD, чтобы построить многофакторную модель
Оценить стратегии получения прибыли/остановки потерь, такие как отставание стоп-лосса или масштабированный выход
Проведение динамической настройки параметров на основе конкретных активов и рыночных условий
Добавление моделей машинного обучения для оценки качества сигнала и уровня риска
Эта стратегия объединяет полосы Боллинджера и RSI для создания комплексной системы, следующей за трендом. Существует дополнительное пространство для повышения эффективности и стабильности посредством настройки параметров и управления рисками. Рекомендуются индивидуальные корректировки и оптимизации на основе индивидуальных потребностей и предпочтений риска для лучшей производительности.
/*backtest start: 2023-11-01 00:00:00 end: 2023-11-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("BB + RSI Estrategia", overlay=true) longitud = input(20, title="Longitud BB", minval=5, maxval=50, step=1) multiplicador = input(2.0, title="Multiplicador BB", type=input.float, step=0.1) timeframe_bb = input("D", title="Marco de Tiempo BB", type=input.resolution) rsi_length = input(14, title="Longitud RSI", minval=5, maxval=50, step=1) rsi_overbought = input(70, title="Nivel de sobrecompra RSI", minval=50, maxval=80, step=1) rsi_oversold = input(30, title="Nivel de sobreventa RSI", minval=20, maxval=50, step=1) take_profit = input("Central", title="Take Profit (banda)", options=["Central", "Opuesta"]) stop_loss = input(2.00, title="Stop Loss", type=input.float, step=0.10) var SL = 0.0 [banda_central, banda_superior, banda_inferior] = security(syminfo.tickerid, timeframe_bb, bb(close, longitud, multiplicador)) rsi_value = rsi(close, rsi_length) comprado = strategy.position_size > 0 vendido = strategy.position_size < 0 if not comprado and not vendido if close < banda_inferior and rsi_value < rsi_oversold // Realizar la compra cantidad = round(strategy.equity / close) strategy.entry("Compra", strategy.long, qty=cantidad, when=cantidad > 0) SL := close * (1 - (stop_loss / 100)) if close > banda_superior and rsi_value > rsi_overbought // Realizar la Venta cantidad = round(strategy.equity / close) strategy.entry("Venta", strategy.short, qty=cantidad, when=cantidad > 0) SL := close * (1 + (stop_loss / 100)) if comprado // Verificar el take profit if take_profit == "Central" and close >= banda_central strategy.close("Compra", comment="TP") SL := 0 if take_profit == "Opuesta" and close >= banda_superior strategy.close("Compra", comment="TP") SL := 0 // Verificar el stop loss if close <= SL strategy.close("Compra", comment="SL") SL := 0 if vendido // Verificar el take profit if take_profit == "Central" and close <= banda_central strategy.close("Venta", comment="TP") SL := 0 if take_profit == "Opuesta" and close <= banda_inferior strategy.close("Venta", comment="TP") SL := 0 // Verificar el Stop loss if close >= SL strategy.close("Venta", comment="SL") SL := 0 // Salida plot(SL > 0 ? SL : na, style=plot.style_circles, color=color.red) g1 = plot(banda_superior, color=color.aqua) plot(banda_central, color=color.red) g2 = plot(banda_inferior, color=color.aqua) fill(g1, g2, color=color.aqua, transp=97) // Dibujar niveles de sobrecompra/sobreventa del RSI hline(rsi_overbought, "RSI Overbought", color=color.red) hline(rsi_oversold, "RSI Oversold", color=color.green)