
Esta estrategia combina bandas de Brin, RSI, múltiples medias móviles y MACD para construir un sistema de negociación completo. En primer lugar, se determina la volatilidad de los precios a través de Brin y se utiliza la posición de los precios en relación con el centro de la banda de Brin para determinar la tendencia.
La estrategia se basa en varias dimensiones para construir un sistema de negociación más completo, que incluye el juicio de tendencias, el juicio de sobreventa y sobreventa, el análisis de múltiples escalas de tiempo, el control de posiciones, etc. Sin embargo, la estrategia aún debe optimizarse para responder a situaciones convulsivas y extremas, y carece de una optimización de parámetros y un control de riesgos más sistemáticos. En el futuro, se puede seguir mejorando hacia señales de arbitraje más precisas, reajuste de poderes dinámicos y respuesta a situaciones extremas.
/*backtest
start: 2023-05-21 00:00:00
end: 2024-05-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands + RSI Strategy with MA", overlay=true)
// Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Mult")
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper_band = basis + dev
lower_band = basis - dev
// RSI
rsi_length = input.int(14, title="RSI Length")
rsi_oversold = input.int(30, title="RSI Oversold", minval=0, maxval=100)
rsi_overbought = input.int(70, title="RSI Overbought", minval=0, maxval=100)
rsi = ta.rsi(close, rsi_length)
// RSI Divergence
rsi_divergence_bottom = ta.crossunder(rsi, rsi_oversold)
rsi_divergence_peak = ta.crossunder(rsi_overbought, rsi)
// Moving Averages
ma34 = ta.sma(close, 34)
ma89 = ta.sma(close, 89)
ma144 = ta.sma(close, 144)
ma233 = ta.sma(close, 233)
ma377 = ta.sma(close, 377)
ma610 = ta.sma(close, 610)
// MACD Calculation
[macd_line, signal_line, _] = ta.macd(close, 12, 26, 9)
macd_histogram = macd_line - signal_line
// MACD Divergence
macd_divergence_bottom = ta.crossunder(macd_histogram, 0)
macd_divergence_peak = ta.crossover(macd_histogram, 0)
// Conditions for Buy and Sell
basis_gt_ma34 = basis > ma34
ma34_gt_ma89 = ma34 > ma89
// Entry condition
buy_condition = basis_gt_ma34 and ma34_gt_ma89
sell_condition = basis <ma34
// Calculate position size
position_size = 1.0 // 100% capital initially
// Update position size based on conditions
if (sell_condition)
position_size := 0.5 // Sell half of the position
if (not basis_gt_ma34)
position_size := 0.0 // Sell all if basis < ma34
// Entry and exit strategy
if (buy_condition)
strategy.entry("Buy", strategy.long, qty=position_size)
if (sell_condition)
strategy.close("Buy")
// Plot Bollinger Bands and Moving Averages
bb_fill_color = basis > basis[1] ? color.new(color.blue, 90) : color.new(color.blue, 10)
plot(basis, color=color.blue, title="Basis")
plot(upper_band, color=color.red, title="Upper Band")
plot(lower_band, color=color.green, title="Lower Band")
fill(plot1=plot(upper_band), plot2=plot(lower_band), color=bb_fill_color, title="BB Fill")
plot(ma34, color=color.orange, title="MA34")
plot(ma89, color=color.purple, title="MA89")
plot(ma144, color=color.gray, title="MA144")
plot(ma233, color=color.blue, title="MA233")
plot(ma377, color=color.red, title="MA377")
plot(ma610, color=color.green, title="MA610")
// Plot RSI Divergence
plotshape(series=rsi_divergence_bottom, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small)
plotshape(series=rsi_divergence_peak, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small)
// Plot MACD Histogram Divergence
plotshape(series=macd_divergence_bottom, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(series=macd_divergence_peak, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)