
La estrategia es un sistema de estrategias mixtas que combina la regresión de la media y el seguimiento de la tendencia, principalmente a través de la combinación de RSI, bandas de Brin y múltiples indicadores EMA para capturar oportunidades de sobreventa y sobreventa en el mercado. La estrategia se basa en indicadores tradicionales de análisis técnico, aumenta el juicio de la confirmación de tendencias y el rango de oscilaciones, lo que mejora la precisión de la estrategia.
La estrategia utiliza un mecanismo de triple verificación para confirmar las señales de negociación. En primer lugar, se utiliza el indicador RSI para identificar las zonas de sobrecompra y sobreventa, y se activa la señal inicial cuando el RSI es inferior a 30 o superior a 70. Luego, se utiliza la banda de Brin ((BB) como referencia para el rango de fluctuación de los precios, y se confirma la señal adicional cuando los precios cruzan la vía ascendente o descendente.
La estrategia, a través de la sinergia de múltiples indicadores técnicos, garantiza la estabilidad al tiempo que garantiza la flexibilidad de la estrategia. La lógica de la estrategia es clara, la implementación es sencilla y tiene un mejor valor práctico.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-11 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BTC Dominance Analysis Strategy (Improved)", overlay=true)
// Input Parameters
rsi_period = input(14, title="RSI Period")
bb_period = input(20, title="Bollinger Band Period")
bb_std_dev = input(2.0, title="Bollinger Std Dev")
ema_period = input(100, title="100 EMA Period")
ema_30_period = input(30, title="30 EMA Period")
ema_50_period = input(50, title="50 EMA Period")
// RSI Calculation
rsi_value = ta.rsi(close, rsi_period)
// Bollinger Bands Calculation
basis = ta.sma(close, bb_period)
dev = bb_std_dev * ta.stdev(close, bb_period)
upper_bb = basis + dev
lower_bb = basis - dev
// EMA Calculation
ema_100 = ta.ema(close, ema_period)
ema_30 = ta.ema(close, ema_30_period)
ema_50 = ta.ema(close, ema_50_period)
// Determine EMA trends
range_bound_ema = math.abs(ema_100 - ta.sma(ema_100, 10)) < ta.stdev(ema_100, 10)
uptrend_ema = ema_100 > ema_50
downtrend_ema = ema_100 < ema_50
// Long Condition: All 3 conditions must be met
// 1. RSI < 30
// 2. BTC Dominance < lower Bollinger Band
// 3. 100 EMA must be range-bound or in an uptrend (but NOT in a downtrend)
long_condition = (rsi_value < 30) and (close < lower_bb) and (range_bound_ema or uptrend_ema)
// Short Condition: All 3 conditions must be met
// 1. RSI > 70
// 2. BTC Dominance > upper Bollinger Band
// 3. 100 EMA must be range-bound or in a downtrend (but NOT in an uptrend)
short_condition = (rsi_value > 70) and (close > upper_bb) and (range_bound_ema or downtrend_ema)
// Plot Buy and Sell Signals for Debugging
plotshape(long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Execute Buy Trade
if (long_condition)
strategy.entry("Buy", strategy.long)
// Execute Sell Trade
if (short_condition)
strategy.entry("Sell", strategy.short)
// Plot Bollinger Bands and EMA
plot(upper_bb, color=color.red, title="Upper Bollinger Band")
plot(lower_bb, color=color.green, title="Lower Bollinger Band")
plot(ema_100, color=color.blue, title="100 EMA")
plot(ema_50, color=color.orange, title="50 EMA")
// plot(rsi_value, "RSI", color=color.purple)
// Display background color for Buy and Sell signals
bgcolor(long_condition ? color.new(color.green, 90) : na, title="Buy Background")
bgcolor(short_condition ? color.new(color.red, 90) : na, title="Sell Background")