Estrategia de stop dinámico con cruce de medias móviles adaptable

SMA MA EMA ATR SL TP
Fecha de creación: 2024-07-29 14:27:58 Última modificación: 2024-07-29 14:27:58
Copiar: 0 Número de Visitas: 544
1
Seguir
1617
Seguidores

Estrategia de stop dinámico con cruce de medias móviles adaptable

Descripción general

La estrategia de seguimiento de la media móvil cruzada es una estrategia de comercio cuantitativa que combina varios indicadores técnicos. La estrategia se basa principalmente en señales cruzadas de promedios móviles simples rápidos y lentos (SMA) para negociar, mientras que se utiliza el seguimiento de la media móvil adaptada para administrar el riesgo. La estrategia también incorpora algunas características avanzadas, como el tamaño de las posiciones basado en la volatilidad y los niveles de seguimiento de la pérdida adaptada, para mejorar su adaptabilidad y robustez en diferentes condiciones de mercado.

Principio de estrategia

La lógica central de la estrategia incluye los siguientes componentes clave:

  1. Movimiento medio cruzado: utiliza un promedio móvil simple de dos períodos diferentes (SMA), el SMA rápido (SMA de 5 ciclos por defecto) y el SMA lento (SMA de 50 ciclos por defecto). Cuando el SMA rápido atraviesa hacia arriba el SMA lento, se activa una señal múltiple.

  2. El tamaño de la posición: La estrategia utiliza un método de tamaño de posición dinámico basado en el saldo de la cuenta y el precio actual. Al mismo tiempo, se introduce un factor de “confianza” que permite ajustar la proporción de fondos invertidos.

  3. Detención de seguimiento: Implementación de un mecanismo de seguimiento de pérdidas basado en porcentajes. El nivel de detención de pérdidas se eleva a medida que aumenta el precio para bloquear las ganancias y limitar las retiradas.

  4. Características de adaptación: si se activa la opción “fancy_tests”, la estrategia utilizará un porcentaje de stop loss dinámico basado en la diferencia estándar, lo que permite que el nivel de stop loss se adapte a la volatilidad del mercado.

  5. Logía de salida: la estrategia depende principalmente de la búsqueda de un stop loss para cerrar las posiciones, sin establecer un punto de ganancia fijo.

Ventajas estratégicas

  1. Seguimiento de tendencias: mediante el uso de medias móviles cruzadas, la estrategia puede capturar tendencias a medio y largo plazo, lo que es favorable para obtener ganancias significativas en tendencias fuertes.

  2. Gestión de riesgos: el uso de mecanismos de seguimiento de los pérdidas permite el control efectivo de los riesgos a la baja y el libre crecimiento de las ganancias.

  3. Adaptabilidad: la estrategia puede adaptarse mejor a diferentes entornos de mercado al ajustar el nivel de detención mediante la incorporación de factores de volatilidad.

  4. Gestión de fondos: El tamaño de la posición dinámica ayuda a aumentar el tamaño de las transacciones a medida que la cuenta crece, y también reduce automáticamente el riesgo cuando la cuenta se contrae.

  5. Flexibilidad: Las estrategias ofrecen varios parámetros ajustables, como promedios móviles, porcentajes de stop loss, etc., que los usuarios pueden optimizar según los diferentes mercados y las preferencias de riesgo personales.

Riesgo estratégico

  1. Falsa ruptura: en mercados de lateral o de oscilación, puede ocurrir con frecuencia una falsa ruptura de las medias móviles, lo que lleva a múltiples salidas de pérdidas.

  2. Retraso: La media móvil es un indicador retrasado en su naturaleza y puede no reaccionar con suficiente rapidez en un mercado muy volátil.

  3. Exceso de transacciones: si los parámetros no están configurados correctamente, puede ocasionar entradas y salidas frecuentes, lo que aumenta los costos de transacción.

  4. Riesgo de retiro: A pesar de la pérdida de seguimiento, es posible que se produzcan retiros más grandes en un mercado que se invierte rápidamente.

  5. Comercio unidireccional: La estrategia es hacer más y no hacer más vacío en este momento y puede perder oportunidades o sufrir pérdidas en una tendencia bajista.

Dirección de optimización de la estrategia

  1. Análisis de múltiples marcos de tiempo: Introducción de indicadores de juicio de tendencias a más largo plazo, como promedios móviles de períodos más largos, para reducir las falsas señales.

  2. Adherirse a la lógica del shorting: ampliar la estrategia para apoyar el shorting, mejorar la integralidad de la estrategia y la oportunidad de obtener ganancias.

  3. Optimización del tiempo de entrada: Considere la combinación de otros indicadores técnicos (como RSI, MACD, etc.) para filtrar las señales de negociación y mejorar la precisión de entrada.

  4. Optimización de parámetros dinámicos: Implementación de mecanismos de ajuste de parámetros adaptativos, como el ajuste del ciclo de las medias móviles basado en la dinámica de la volatilidad del mercado.

  5. Mecanismos de cierre de ganancias: Además de rastrear el stop loss, se puede considerar agregar una regla de cierre de ganancias basada en indicadores técnicos o objetivos fijos.

  6. Mejorar la gestión de posiciones: Implementar estrategias de dimensionamiento de posiciones más complejas, como las basadas en Kelly Guidelines u otros métodos de compensación de riesgo.

  7. Añadir un filtro básico: Para el comercio de acciones, se puede considerar la introducción de un indicador básico como condición adicional para el filtro de transacciones.

Resumir

La estrategia de seguimiento de pérdidas de seguimiento de la media móvil es una estrategia integral que combina varios conceptos de comercio cuantitativo. Captura la tendencia mediante el cruce de las medias móviles, utiliza el seguimiento de los riesgos de gestión de pérdidas y mejora la adaptabilidad mediante el ajuste de los parámetros dinámicos. Aunque existe algunos riesgos y limitaciones inherentes, tiene el potencial de ser un sistema de negociación robusto mediante la optimización de parámetros cuidadosos y la mejora de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © chinmay.hundekari

//@version=5
//@version=5
strategy("test", overlay = true)

// Calculate two moving averages with different lengths.
SLMA = input.int(50,"SMA",minval=10,step=1)
FSMA = input.int(5,"SMA",minval=1,step=1)
fancy_tests = input.bool(true,"Enable Fancy Changes")
longLossPerc = input.float(2, title="Trailing Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01
stdMult = input.float(2.0, title="Standard Deviation Multiplier",
     minval=0.0, step=0.01)

float fastMA = ta.sma(close, FSMA)
float slowMA = ta.sma(close, SLMA)
float closMA = ta.sma(close, 25)

confidence = 1.0
if (fancy_tests)
    longLossPerc := stdMult * ta.stdev(ohlc4, 20)/close
balance = strategy.initial_capital + strategy.netprofit
balanceInContracts = balance* confidence/close

// Enter a long position when `fastMA` crosses over `slowMA`.
if ta.crossover(fastMA, slowMA)
    strategy.entry("BUY", strategy.long, qty=balanceInContracts)
//longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
//Trailing Stop loss Code
longStopPrice = 0.0
percLoss = longLossPerc
longStopPrice := if strategy.position_size > 0
    //if (strategy.openprofit_percent/100.0 > longLossPerc)
    //    percLoss := math.min(strategy.openprofit_percent/200.0, longLossPerc)
    stopValue = close * (1 - percLoss)
    math.max(stopValue, longStopPrice[1])
else
    0
if strategy.position_size > 0
    strategy.exit("STP", stop=longStopPrice)
plot(strategy.position_size > 0 ? longStopPrice : na,
     color=color.red, style=plot.style_cross,
     linewidth=2, title="Long Stop Loss")
// Enter a short position when `fastMA` crosses under `slowMA`.
//if ta.crossunder(fastMA, closMA)
//    strategy.close_all("SEL")//strategy.entry("sell", strategy.short)

// Plot the moving averages.
plot(fastMA, "Fast MA", color.aqua)
plot(slowMA, "Slow MA", color.orange)
plot((confidence)*(close), "Confidence", color=color.green, linewidth=2)