Tendencia comercial automatizada siguiendo estrategias dinámicas de gestión de riesgos

MA MACD ATR TP/SL VOL
Fecha de creación: 2025-04-03 13:43:11 Última modificación: 2025-04-03 13:43:11
Copiar: 4 Número de Visitas: 400
2
Seguir
319
Seguidores

Tendencia comercial automatizada siguiendo estrategias dinámicas de gestión de riesgos Tendencia comercial automatizada siguiendo estrategias dinámicas de gestión de riesgos

Descripción general

Es una estrategia de trading automática que combina medias móviles, indicadores MACD y filtración de volúmenes de transacción para determinar la dirección de la tendencia y administrar el riesgo de transacción a través de múltiples indicadores técnicos. La estrategia determina la tendencia del mercado a través de medias móviles a corto y largo plazo, utiliza señales de confirmación de tendencia MACD y combina filtración de volúmenes de transacción y un mecanismo de gestión de riesgo dinámico para mejorar la precisión y estabilidad de las transacciones.

Principio de estrategia

La estrategia incluye cuatro componentes tecnológicos principales:

  1. Medias móviles para determinar la dirección de las tendencias del mercado. Utiliza medias móviles de corto plazo (de 20 ciclos) y de largo plazo (de 100 ciclos) para determinar la dirección de las tendencias del mercado.
  2. Confirmación de la señal MACD: validación de la señal de tendencia a través de la posición relativa de la línea MACD con la línea de señal.
  3. Filtración de transacciones: asegura que las transacciones se realicen en condiciones de mercado activas, comparando el volumen de transacciones actual con el promedio histórico.
  4. Gestión de riesgos dinámica: Calcula el punto de parada y el límite de pérdida máxima y de retirada máxima diaria utilizando el indicador ATR.

Ventajas estratégicas

  1. Verificación de múltiples indicadores: mejora significativamente la precisión de la señal mediante la combinación de promedios móviles, MACD y volumen de transacción.
  2. Control de riesgo dinámico: calculación flexible del tamaño de la posición y mecanismos de gestión de riesgos para controlar eficazmente el riesgo de una sola transacción y el riesgo general.
  3. Capacidad de seguimiento de tendencias: captura de tendencias a medio plazo en el mercado, reduciendo las transacciones ineficaces en mercados convulsionados.
  4. Ajustabilidad de parámetros: proporciona varios parámetros personalizables para facilitar la optimización de la estrategia para diferentes entornos de mercado.

Riesgo estratégico

  1. Riesgo de retraso: hay un cierto retraso en las medias móviles y MACD, que puede retrasar la captura de un punto de inflexión de tendencia.
  2. Sensibilidad de parámetros: el rendimiento de la estrategia depende en gran medida de los parámetros seleccionados, que requieren un ajuste constante en diferentes entornos de mercado.
  3. Desafío de los mercados convulsivos: en mercados donde no hay una tendencia clara, las estrategias pueden generar señales de negociación frecuentes e ineficaces.
  4. Condiciones extremas del mercado: los mecanismos de control de riesgo pueden no evitar completamente las pérdidas importantes en caso de fuertes fluctuaciones o eventos de cisne negro.

Dirección de optimización de la estrategia

  1. Aumento de algoritmos de aprendizaje automático: introducción de un mecanismo de ajuste de parámetros dinámicos para optimizar los parámetros de la estrategia en función de los cambios en el mercado en tiempo real.
  2. Verificación multi-ciclo: introducción de más indicadores técnicos de diferentes ciclos para mejorar la fiabilidad de la señal.
  3. Análisis de correlación: para reducir el riesgo sistemático entre diferentes activos.
  4. Evaluación de riesgos en profundidad: mejora de los modelos de riesgo, incluyendo indicadores de evaluación de riesgos más complejos y simulaciones de escenarios.

Resumir

Se trata de una estrategia de negociación automatizada que integra la aplicación de múltiples herramientas de análisis técnico, con el objetivo de proporcionar un método de negociación relativamente estable y fiable a través de una estricta gestión de riesgos y una verificación de múltiples indicadores. El núcleo de la estrategia está en equilibrar la capacidad de captura de tendencias y el control de riesgos, proporcionando un marco flexible y optimizable para el comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2024-04-02 00:00:00
end: 2025-04-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Strategia Semmoncino", shorttitle="semmoncino", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.05)

// Inputs
useVolumeFilter = input.bool(true, title="Usa Filtro di Volume")
volumeThreshold = input.float(1.5, title="Soglia Volume (x Media)", minval=1)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(2.0, title="ATR Multiplier", minval=0.1)
takeProfitMultiplier = input.float(6.0, title="Take Profit Multiplier", minval=1.0)  // Aumentato per ottimizzare
riskPerTrade = input.float(2.0, title="Rischio per Trade (%)", minval=0.1) / 100
maxDailyLoss = input.float(2.0, title="Perdita Massima Giornaliera (%)", minval=0.1) / 100
maxDrawdown = input.float(10.0, title="Drawdown Massimo (%)", minval=0.1) / 100
shortMAPeriod = input.int(20, title="MA Breve Termine", minval=1)
longMAPeriod = input.int(100, title="MA Lungo Termine", minval=1)

// MACD Inputs
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalLength = input.int(9, title="MACD Signal Length")

showSignals = input.bool(true, title="Mostra Segnali di Entrata")

// Prezzi di Apertura e Chiusura delle Candele Precedenti (senza repainting)
prevOpen = ta.valuewhen(1, open, 0)
prevClose = ta.valuewhen(1, close, 0)

// Calculate ATR
atr = ta.atr(atrPeriod)

// Calculate Volume Filter
volumeAvg = ta.sma(volume, 20)
volumeFilter = useVolumeFilter ? volume > (volumeAvg * volumeThreshold) : true

// Calculate Moving Averages
shortMA = ta.sma(close, shortMAPeriod)
longMA = ta.sma(close, longMAPeriod)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
macdConditionLong = macdLine > signalLine
macdConditionShort = macdLine < signalLine

// Determine Trend Direction
uptrend = shortMA > longMA
downtrend = shortMA < longMA

// Determine Order Conditions
longCondition = prevClose > prevOpen and volumeFilter and uptrend and macdConditionLong
shortCondition = prevClose < prevOpen and volumeFilter and downtrend and macdConditionShort

// Calcola la dimensione della posizione basata sul capitale iniziale
initialCapital = strategy.initial_capital
positionSize = (initialCapital * riskPerTrade) / (atr * atrMultiplier)

// Calculate Take Profit and Stop Loss Levels dynamically using ATR
takeProfitLong = close + (atr * takeProfitMultiplier)
stopLossLong = close - (atr * 1.5)  // Ridotto per ottimizzare
takeProfitShort = close - (atr * takeProfitMultiplier)
stopLossShort = close + (atr * 1.5)  // Ridotto per ottimizzare

// Limite di Perdita Giornaliera
var float dailyLossLimit = na
if na(dailyLossLimit) or (time - time) > 86400000 // Se è un nuovo giorno
    dailyLossLimit := strategy.equity * (1 - maxDailyLoss)

// Drawdown Massimo
var float drawdownLimit = na
if na(drawdownLimit)
    drawdownLimit := strategy.equity * (1 - maxDrawdown)

// Controllo delle Perdite
if strategy.equity < dailyLossLimit
    strategy.cancel_all()
    strategy.close_all()
    label.new(bar_index, high, text="Perdita Giornaliera Massima Raggiunta", color=color.red)

if strategy.equity < drawdownLimit
    strategy.cancel_all()
    strategy.close_all()
    label.new(bar_index, high, text="Drawdown Massimo Raggiunto", color=color.red)

// Strategy Entries
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", limit=takeProfitLong, stop=stopLossLong)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", limit=takeProfitShort, stop=stopLossShort)

// Plot Entry Signals
plotshape(series=longCondition and showSignals ? close : na, location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(series=shortCondition and showSignals ? close : na, location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")

// Plot Moving Averages
plot(shortMA, color=color.blue, title="MA Breve Termine", linewidth=2)
plot(longMA, color=color.orange, title="MA Lungo Termine", linewidth=2)

// Plot MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine - signalLine, title="MACD Histogram", color=color.red, style=plot.style_histogram)