Esta estrategia utiliza una combinación de medias, bandas de Brin y RSI para evaluar las tendencias de los precios y los excesos de compra y venta para detectar oportunidades de negociación. La estrategia reúne las ventajas de varios indicadores para mejorar la precisión de las decisiones comerciales.
Principio de la estrategia:
Calcular la línea media y su banda de Brin para determinar el movimiento de la línea media larga.
Calcula el RSI para determinar si se ha sobrecomprado o sobrevendido.
Haga más cuando el precio rompa la banda descendente de Brin de abajo hacia arriba y el RSI aparece en una cruz múltiple.
Cuando el precio se pone en marcha de una ruptura de la banda de Brin de arriba hacia abajo y el RSI aparece en un cruce de cabeza, haga una brecha.
Establezca un límite de pérdidas para controlar las pérdidas individuales.
Las ventajas de esta estrategia:
La verificación de la combinación de varios indicadores reduce la probabilidad de transacciones erróneas.
El indicador RSI puede complementar las deficiencias del sistema de línea uniforme.
El punto de ruptura se identifica con el Brin de línea uniforme.
El riesgo de esta estrategia:
La combinación de varios indicadores requiere tiempo para optimizar los parámetros.
El RSI tiene cierto grado de repetición con las bandas de Brin.
Las transacciones de ruptura son propensas a generar un efecto de cabeza, que se invierte.
En resumen, la estrategia utiliza una combinación de medias, bandas de Brin y indicadores RSI para identificar oportunidades de inversión al mismo tiempo que se determina la tendencia. El uso de una combinación de indicadores puede mejorar la eficacia, pero se debe prestar atención a la optimización de los parámetros y controlar el riesgo.
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © LucasVivien
//@version=4
strategy("MA Bolinger Bands + RSI ", shorttitle="MABB + RSI", overlay=true)
// User input
source = input(title="Price source" , type=input.source , defval=close)
RSIlen = input(title="RSI Length" , type=input.integer , defval=6 , group="RSI")
RSIlvlOB = input(title="RSI Overbough" , type=input.integer , defval=50 , group="RSI")
RSIlvlOS = input(title="RSI Oversold" , type=input.integer , defval=50 , group="RSI")
RSIN = input(title="RSI Neutral" , type=input.integer , defval=50 , group="RSI")
MAlen = input(title="MA Length" , type=input.integer , defval=200 , group="MABB")
BBlen = input(title="BB Length" , type=input.integer , defval=200 , group="MABB")
BBmult = input(title="BB multiplier" , type=input.float , defval=2.0 , group="MABB" , tooltip="Set BB closer / appart", minval=0.001, maxval=50)
MAtype = input(title="MA type" , type=input.string , defval="SMA", group="MABB" , tooltip="MA type used in BB", options=["SMA", "EMA", "HMA"])
//SLmult = input(title="SL value" ,type=input.float , defval=0.06)
// Used indicators
RSI = rsi(source, RSIlen)
MA = sma(source, MAlen)
if MAtype == "EMA"
MA := ema(source, MAlen)
if MAtype == "HMA"
MA := hma(source, MAlen)
// Perform Calculations
BBdev = BBmult * stdev(source, BBlen)
BBupper = MA + BBdev
BBlower = MA - BBdev
longSL = close - close * 0.06
shortSL = close + close * 0.06
// Signals validation ([0] is trade displayed from strategy() on chart => long/short entry)
BBbull = (open < BBlower) and (close > BBlower)
BBbear = (open > BBupper) and (close < BBupper)
RSIbull = crossover(RSI , RSIN)
RSIbear = crossunder(RSI, RSIN)
Longsignal = (BBbull) and (RSIbull or RSIbull[1] or
RSIbull[2] or RSIbull[3] or RSIbull[4] or
RSIbull[5] or RSIbull[6] or RSIbull[7] or
RSIbull[8] or RSIbull[9] or RSIbull[10])
Shortsignal = (BBbear) and (RSIbear or RSIbear[1] or
RSIbear[2] or RSIbear[3] or RSIbear[4] or
RSIbear[5] or RSIbear[6] or RSIbear[7] or
RSIbear[8] or RSIbear[9] or RSIbear[10])
// Save SL values
var SLlongsaved = 0.0
var SLshortsaved = 0.0
if Longsignal and (strategy.position_size == -1) ///////////////////////////////
SLlongsaved := longSL
if Shortsignal and (strategy.position_size == 1) ////////////////////////////////
SLshortsaved := shortSL
// Plots
//plotshape(Longsignal , size=size.small, color=color.teal)
//plotshape(Shortsignal, size=size.small, color=color.fuchsia)
plot(Longsignal ? longSL : na, color=color.red, style=plot.style_linebr, linewidth=6)
plot(Shortsignal ? shortSL : na, color=color.red, style=plot.style_linebr, linewidth=6)
p1 = plot(BBupper,title="Bollinger Bands Upper Line", color=color.gray, transp=60)
p2 = plot(BBlower,title="Bollinger Bands Lower Line", color=color.gray, transp=60)
plot(MA, title="Bollinger Bands MA Basis Line" , color=color.white, transp=50)
fill(p1, p2, color=color.white, transp=92)
// Strategy Entry & Exit
//if Longsignal
strategy.entry(id="Long entry", long=true, when=Longsignal) //, oca_name="x", oca_type=strategy.oca.cancel)
//if Shortsignal
strategy.entry(id="Short entry", long=false, when=Shortsignal) //, oca_name="x", oca_type=strategy.oca.cancel)
strategy.close(id="Long exit", when=strategy.position_size > 0)//, from_entry="Long entry" //, when=strategy.position_size > 0 // , stop=SLlongsaved)
strategy.close(id="Short Exit", when=strategy.position_size < 0)//, from_entry="Short entry" //, when=strategy.position_size < 0 //, stop=SLshortsaved)
plot(strategy.position_size) //////////////////////////////////////////////