
La estrategia es un sistema de trading de seguimiento de tendencias basado en el indicador Volatility Rate Stop (VStop) y la media móvil exponencial (EMA). La estrategia combina la filosofía comercial de Stan Weinstein para optimizar la gestión del dinero a través de niveles de stop-loss ajustados dinámicamente, mientras se utiliza EMA para confirmar la dirección de la tendencia. Esta combinación proporciona a los inversores y operadores de swing un marco comercial que les permite capturar tendencias y al mismo tiempo gestionar el riesgo de manera eficaz.
La lógica central de la estrategia se basa en dos indicadores técnicos principales:
Volatility Stop (VStop): un indicador de stop dinámico basado en ATR (rango verdadero promedio) que ajusta de forma adaptativa la posición de stop según la volatilidad del mercado. Cuando el precio está en una tendencia alcista, la línea de stop loss se moverá hacia arriba a medida que el precio sube; cuando la tendencia se invierte, la línea de stop loss cambiará de dirección y se recalculará.
Media móvil exponencial (EMA): actúa como una herramienta de confirmación de tendencia y ayuda a filtrar señales falsas. El precio debe estar por encima de la EMA antes de considerar abrir una posición, lo que garantiza que la dirección comercial sea consistente con la tendencia principal.
La lógica de generación de señales comerciales es la siguiente:
Esta estrategia crea un marco comercial completo de seguimiento de tendencias combinando un stop loss de volatilidad y un sistema de promedio móvil. Las principales ventajas de la estrategia radican en su adaptabilidad y capacidad de gestión de riesgos, pero también es necesario prestar atención al impacto del entorno del mercado en el desempeño de la estrategia. A través de la optimización y mejora continuas, se espera que la estrategia mantenga un rendimiento estable en diferentes entornos de mercado. Se recomienda que los operadores prueben completamente la configuración de los parámetros y ajusten las estrategias en función de su propia tolerancia al riesgo antes de utilizarlas en operaciones reales.
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("VStop + EMA Strategy", overlay=true)
// VStop Parameters
length = input.int(20, "VStop Length", minval=2)
multiplier = input.float(2.0, "VStop Multiplier", minval=0.25, step=0.25)
// EMA Parameters
emaLength = input.int(30, "EMA Length", minval=1)
// VStop Calculation
volStop(src, atrlen, atrfactor) =>
if not na(src)
var max = src
var min = src
var uptrend = true
var float stop = na
atrM = nz(ta.atr(atrlen) * atrfactor, ta.tr)
max := math.max(max, src)
min := math.min(min, src)
stop := nz(uptrend ? math.max(stop, max - atrM) : math.min(stop, min + atrM), src)
uptrend := src - stop >= 0.0
if uptrend != uptrend[1] and not barstate.isfirst
max := src
min := src
stop := uptrend ? max - atrM : min + atrM
[stop, uptrend]
// Calculate VStop
[vStop, isUptrend] = volStop(close, length, multiplier)
// Plot VStop
plot(vStop, "Volatility Stop", style=plot.style_cross, color=isUptrend ? color.teal : color.red)
// Calculate 30 EMA
emaValue = ta.ema(close, emaLength)
plot(emaValue, "EMA", color=color.blue)
// Entry and Exit Conditions
longCondition = isUptrend and close > emaValue
exitCondition = close <= emaValue
// Strategy Execution
if longCondition and not strategy.opentrades
strategy.entry("Long", strategy.long)
if exitCondition and strategy.opentrades
strategy.close("Long")
// Display Strategy Info
bgcolor(isUptrend ? color.new(color.teal, 90) : color.new(color.red, 90), title="Trend Background")