
Esta estrategia se combina con el uso de tres indicadores, el índice Brin, el índice de fuerza relativa (RSI) y el índice de camino de los productos (CCI), para buscar sus señales de cruce y emitir señales de compra y venta. La estrategia tiene como objetivo detectar el fenómeno de sobrecompra y sobreventa en el mercado y entrar en el mercado en el punto de inflexión con la esperanza de obtener una mejor rentabilidad de la inversión.
Las bandas de Brin se componen de una media, una media superior y una media inferior. La media media suele utilizar una media móvil de 20 días. La media superior y la media inferior son dos posiciones de diferencia estándar por encima y por debajo de la media superior.
El indicador RSI refleja la velocidad a la que los precios de cierre suben y bajan durante un período de tiempo, y se utiliza para medir el contraste de fuerza entre los precios de compra y venta. El RSI es una zona de sobreventa cuando está entre 0 y 30, y una zona de sobreventa cuando está entre 70 y 100.
El índice CCI se usa para medir el grado en que el precio de una acción se desvía de su precio promedio. De este modo, +100 representa un precio mucho más alto que el promedio, lo que significa que se está sobrecomprando; y -100 representa un precio mucho más bajo que el promedio, lo que significa que se está sobrevendendo. El CCI puede reflejar situaciones extremas en las que el precio puede estar sobrecomprando.
Esta estrategia utiliza las bandas de Brin para determinar si el precio superó la sobreventa en el corto plazo, el indicador RSI para determinar el equilibrio de la fuerza de compra y venta, el indicador CCI para determinar la distancia del precio. Las bandas de Brin, el RSI y el indicador CCI emiten instrucciones de negociación cuando dan una señal de compra / venta al mismo tiempo.
Esta estrategia tiene en cuenta la situación del mercado a corto, mediano y largo plazo, a través de la banda de Brin, RSI y CCI tres indicadores de señales cruzadas, para determinar el momento de la inversión del mercado, pertenece a la estrategia de seguimiento de reversión más robusta. Puede ser optimizado con parámetros de ajuste, paradas, etc., para una variedad de entornos de mercado.
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(shorttitle="BBRSIstr", title="Bollinger Bands", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
ma(source, length, _type) =>
switch _type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//RSI
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
showDivergence = input.bool(false, title="Show Divergence", group="RSI Settings")
up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"
rsiPlot = plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
//cci
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
plot(cci, "CCI", color=#2962FF)
band1 = hline(100, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(0, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(-100, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background")
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")
smoothingLine = ma(cci, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none)
longCBB= close < lower
shortCBB = close>upper
longBRSI = rsi < 33
shortBRSI = rsi > 70
longcci = cci < -215
shortcci = cci > 250
strategy.entry("LONG", strategy.long, when = longCBB and longBRSI and longcci)
strategy.exit("Exit ", profit = 600)
strategy.entry("SHORT", strategy.short, when = shortCBB and shortBRSI and shortcci)
strategy.exit("Exit ", profit = 600)