
La estrategia es un sistema de seguimiento de tendencias basado en indicadores multitecnológicos, que combina bandas de Brin, indicadores de tendencia, indicadores de dinámica y indicadores de volatilidad para tomar decisiones comerciales a través de la combinación de precios. La estrategia utiliza la ruptura de la banda de Brin como la principal señal de entrada, mientras que combina la confirmación de la fuerza de la tendencia ADX y la verificación de la ruptura de la transacción, utilizando el MACD y el ATR trailing stop como mecanismo de salida.
La lógica central de la estrategia se basa en los siguientes aspectos:
Se trata de una estrategia de seguimiento de tendencias de múltiples indicadores perfectamente diseñada, que a través de la combinación orgánica de indicadores como el Brin Belt, ADX, SuperTrend y MACD, construye un sistema de negociación que combina seguimiento de tendencias y control de riesgos. La ventaja de la estrategia reside en la identificación de múltiples señales y un mecanismo de control de riesgos perfeccionado, pero también enfrenta el desafío de la optimización excesiva y la sensibilidad a los parámetros.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Nifty Options Trendy Markets with TSL", overlay=true)
// Input Parameters
lengthBB = input(20, title="Bollinger Bands Length")
multBB = input(2.0, title="Bollinger Bands Multiplier")
adxLength = input(14, title="ADX Length")
adxThreshold = input(25, title="ADX Entry Threshold")
adxExitThreshold = input(20, title="ADX Exit Threshold")
superTrendLength = input(10, title="Supertrend Length")
superTrendMultiplier = input(3.0, title="Supertrend Multiplier")
macdFast = input(12, title="MACD Fast Length")
macdSlow = input(26, title="MACD Slow Length")
macdSignal = input(9, title="MACD Signal Length")
atrLength = input(14, title="ATR Length")
atrMultiplier = input(1.5, title="Trailing Stop ATR Multiplier")
volumeSpikeMultiplier = input(1.5, title="Volume Spike Multiplier")
// Calculations
[macdLine, signalLine,_ ] = ta.macd(close, macdFast, macdSlow, macdSignal)
macdCrossover = ta.crossover(macdLine, signalLine)
macdCrossunder = ta.crossunder(macdLine, signalLine)
[middleBB,upperBB,lowerBB] = ta.bb(close, lengthBB, multBB)
[supertrend, direction] = ta.supertrend(superTrendMultiplier,superTrendLength)
len = input.int(17, minval=1, title="DI Length")
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
[diplus, diminus, adx] = ta.dmi(len, lensig)
atr = ta.atr(atrLength)
trailingStopLong = close - atr * atrMultiplier // For long trades
trailingStopShort = close + atr * atrMultiplier // For short trades
volumeSpike = volume > ta.sma(volume, 20) * volumeSpikeMultiplier
// Entry Conditions
longEntry = ta.crossover(close, upperBB) and adx > adxThreshold and volumeSpike and close > supertrend
shortEntry = ta.crossunder(close, lowerBB) and adx > adxThreshold and volumeSpike and close < supertrend
// Exit Conditions
longExit = ta.crossunder(macdLine, signalLine) or close < trailingStopLong or adx < adxExitThreshold
shortExit = ta.crossover(macdLine, signalLine) or close > trailingStopShort or adx < adxExitThreshold
// Strategy Entries and Exits
if (longEntry)
strategy.entry("Long", strategy.long)
if (shortEntry)
strategy.entry("Short", strategy.short)
if (longExit)
strategy.close("Long")
if (shortExit)
strategy.close("Short")
// Plotting
plot(supertrend, color=color.blue, style=plot.style_line, linewidth=2, title="Supertrend Line")
plot(trailingStopLong, title="Trailing Stop for Long", color=color.green, style=plot.style_line)
plot(trailingStopShort, title="Trailing Stop for Short", color=color.red, style=plot.style_line)
bgcolor(longEntry ? color.new(color.green, 90) : shortEntry ? color.new(color.red, 90) : na, title="Background for Entry")
// Alerts
alertcondition(longEntry, title="Long Entry", message="Buy Call: Long entry conditions met")
alertcondition(shortEntry, title="Short Entry", message="Buy Put: Short entry conditions met")
alertcondition(longExit, title="Long Exit", message="Exit Call: Long exit conditions met")
alertcondition(shortExit, title="Short Exit", message="Exit Put: Short exit conditions met")