
La estrategia es un sistema de negociación integrado basado en las bandas de Brin, el indicador RSI y las medias móviles. La estrategia identifica oportunidades de negociación potenciales a través de la amplitud de fluctuación de los precios en las bandas de Brin, los niveles de sobreventa de RSI y los filtros de tendencias de EMA. El sistema admite operaciones de venta y ventajas, y ofrece varios mecanismos de salida para proteger la seguridad de los fondos.
La estrategia se basa en los siguientes componentes centrales:
Se trata de una estrategia de trading cuantitativa bien diseñada para capturar oportunidades de mercado mediante la combinación de múltiples indicadores técnicos. La estrategia es altamente configurable y puede adaptarse a diferentes necesidades de trading. Si bien existen algunos riesgos inherentes, se puede mejorar aún más su estabilidad y fiabilidad mediante la optimización de parámetros y la adición de indicadores auxiliares.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands Scalp Pro", overlay=true)
// Inputs for the strategy
length = input(20, title="Bollinger Band Length")
src = input(close, title="Source")
mult = input(1.8, title="Bollinger Band Multiplier")
rsiLength = input(7, title="RSI Length")
rsiOverbought = input(75, title="RSI Overbought Level")
rsiOversold = input(25, title="RSI Oversold Level")
// Custom RSI exit points
rsiExitLong = input(75, title="RSI Exit for Long (Overbought)")
rsiExitShort = input(25, title="RSI Exit for Short (Oversold)")
// Moving Average Inputs
emaLength = input(500, title="EMA Length")
enableEMAFilter = input.bool(true, title="Enable EMA Filter")
// Exit method: Choose between 'RSI' and 'Bollinger Bands'
exitMethod = input.string("RSI", title="Exit Method", options=["RSI", "Bollinger Bands"])
// Enable/Disable Long and Short trades
enableLong = input.bool(true, title="Enable Long Trades")
enableShort = input.bool(false, title="Enable Short Trades")
// Enable/Disable Stop Loss
enableStopLoss = input.bool(false, title="Enable Stop Loss")
stopLossPercent = input.float(1.0, title="Stop Loss Percentage (%)", minval=0.1) / 100
// Bollinger Bands calculation
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upperBB = basis + dev
lowerBB = basis - dev
// RSI calculation
rsi = ta.rsi(src, rsiLength)
// 200 EMA to filter trades (calculated but only used if enabled)
ema200 = ta.ema(src, emaLength)
// Long condition: RSI below oversold, price closes below the lower Bollinger Band, and optionally price is above the 200 EMA
longCondition = enableLong and (rsi < rsiOversold) and (close < lowerBB) and (not enableEMAFilter or close > ema200)
if (longCondition)
strategy.entry("Long", strategy.long)
// Short condition: RSI above overbought, price closes above the upper Bollinger Band, and optionally price is below the 200 EMA
shortCondition = enableShort and (rsi > rsiOverbought) and (close > upperBB) and (not enableEMAFilter or close < ema200)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Stop Loss setup
if (enableStopLoss)
strategy.exit("Long Exit", "Long", stop = strategy.position_avg_price * (1 - stopLossPercent))
strategy.exit("Short Exit", "Short", stop = strategy.position_avg_price * (1 + stopLossPercent))
// Exit conditions based on the user's choice of exit method
if (exitMethod == "RSI")
// Exit based on RSI
exitLongCondition = rsi >= rsiExitLong
if (exitLongCondition)
strategy.close("Long")
exitShortCondition = rsi <= rsiExitShort
if (exitShortCondition)
strategy.close("Short")
else if (exitMethod == "Bollinger Bands")
// Exit based on Bollinger Bands
exitLongConditionBB = close >= upperBB
if (exitLongConditionBB)
strategy.close("Long")
exitShortConditionBB = close <= lowerBB
if (exitShortConditionBB)
strategy.close("Short")