
La estrategia ATR de gestión de riesgos dinámicos es un sistema de negociación cuantitativa basado en el cruce de la media móvil y la amplitud real promedio (ATR). La estrategia determina las señales de entrada mediante el cruce de las medias móviles simples (SMA) a corto y largo plazo, mientras que utiliza ATR para calcular dinámicamente los niveles de parada, parada y seguimiento de la parada para lograr la automatización y precisión de la gestión de riesgos. La estrategia está diseñada para cuentas con un capital inicial de \(25,000, con un objetivo de ganancias diarias de \)4,167 y para equilibrar el beneficio y el riesgo mediante el control dinámico de la posición.
El principio central de la estrategia es la combinación de señales cruzadas de indicadores técnicos con un sistema de gestión de riesgos dinámico:
Generación de señales de entrada:
Cálculo de los parámetros de riesgo dinámico:
Mecanismo de salida:
Ejecución y notificación de transacciones:
Esta estrategia se centra especialmente en la relación riesgo-beneficio, con una relación beneficio-riesgo de 3: 1.5 (TP:SL), y sigue los principios de una buena gestión de riesgos.
Adaptabilidad al riesgo dinámico:
Reglas claras de entrada y salida:
Un marco de gestión de riesgos completo:
Alta automatización:
Ayuda visual:
Las falsas señales de los mercados:
Sensibilidad de los parámetros ATR:
Riesgo de inversión de tendencia:
El desafío de administrar el dinero:
Ejecutar el riesgo de deslizamiento:
Optimización de señales de entrada:
Ajuste de los parámetros de adaptación:
Optimización de la gestión de posiciones:
Ajuste de la política de las franjas horarias:
Análisis integrado de la estructura del mercado:
La estrategia ATR de gestión de riesgos dinámicos es un sistema de negociación cuantitativa que combina el análisis técnico clásico con la gestión de riesgos moderna. Su principal ventaja consiste en ajustar los parámetros de riesgo de forma dinámica a través de ATR, lo que permite que la estrategia se adapte a diferentes entornos de mercado. La estrategia es especialmente adecuada para mercados con volatilidad relativamente estable y tendencias evidentes, generando señales de negociación a través de una simple cruzamiento de medias móviles, al tiempo que asegura que cada transacción tenga parámetros de control de riesgo predefinidos.
A pesar de la existencia de riesgos como falsas señales de mercado y sensibilidad de los parámetros, la orientación de optimización propuesta en el párrafo anterior, como la integración de indicadores de confirmación adicionales, el ajuste de parámetros de adaptación y la optimización de la gestión de posiciones, puede mejorar significativamente la estabilidad y la adaptabilidad de la estrategia. Finalmente, la estrategia ofrece un marco de negociación que equilibra la sencillez y la eficacia, que se adapta al modelo básico de negociación sistematizada y que se puede personalizar y optimizar aún más según las necesidades personales y las características del mercado.
/*backtest
start: 2024-07-17 00:00:00
end: 2025-07-15 08:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/
//@version=5
strategy("MYM Strategy for TradersPost", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
atrLength = input.int(14, "ATR Length")
slMultiplier = input.float(1.5, "Stop Loss Multiplier")
tpMultiplier = input.float(3.0, "Take Profit Multiplier")
tsMultiplier = input.float(1.0, "Trailing Stop Multiplier")
// === ATR Calculation ===
atr = ta.atr(atrLength)
stopPts = atr * slMultiplier
takePts = atr * tpMultiplier
trailPts = atr * tsMultiplier
// === Example Entry Logic (crossover example) ===
shortSMA = ta.sma(close, 14)
longSMA = ta.sma(close, 28)
longCondition = ta.crossover(shortSMA, longSMA)
shortCondition = ta.crossunder(shortSMA, longSMA)
// === Example Exit Condition (optional close signal) ===
exitCondition = ta.cross(close, ta.sma(close, 10))
// === Entry & Alerts ===
if (longCondition)
// Build JSON message
stopVal = str.tostring(close - stopPts)
tpVal = str.tostring(close + takePts)
trailVal = str.tostring(trailPts)
longMessage = '{"action":"buy","symbol":"MYM","quantity":1,"order_type":"market","stop_loss":' + stopVal + ',"take_profit":' + tpVal + ',"trailing_stop":' + trailVal + ',"comment":"MYM Long Entry"}'
alert(longMessage, alert.freq_once_per_bar_close)
strategy.entry("Long", strategy.long)
if (shortCondition)
stopVal = str.tostring(close + stopPts)
tpVal = str.tostring(close - takePts)
trailVal = str.tostring(trailPts)
shortMessage = '{"action":"sell","symbol":"MYM","quantity":1,"order_type":"market","stop_loss":' + stopVal + ',"take_profit":' + tpVal + ',"trailing_stop":' + trailVal + ',"comment":"MYM Short Entry"}'
alert(shortMessage, alert.freq_once_per_bar_close)
strategy.entry("Short", strategy.short)
// === Optional Close Alert ===
if (exitCondition)
closeMessage = '{"action":"close_position","ticker":"MYM","comment":"MYM Close Position"}'
alert(closeMessage, alert.freq_once_per_bar_close)
strategy.close_all(comment="Exit Signal")
// === Visual aids ===
plot(shortSMA, color=color.orange)
plot(longSMA, color=color.blue)