Estrategia de seguimiento de tendencia de cruce de medias móviles dinámicas

SMA MA TP SL
Fecha de creación: 2024-12-27 15:08:40 Última modificación: 2024-12-27 15:08:40
Copiar: 4 Número de Visitas: 398
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencia de cruce de medias móviles dinámicas

Descripción general

La estrategia es un sistema de seguimiento de tendencias basado en señales de cruce de medias móviles dobles, combinado con un mecanismo dinámico de stop-profit y stop-loss. La estrategia utiliza promedios móviles simples (SMA) de 5 y 12 períodos para generar señales comerciales y optimiza la relación riesgo-retorno ajustando dinámicamente los niveles de toma de ganancias y stop loss. El nivel de toma de beneficios inicial se establece en el 10% y el stop loss en el 5%. Cuando el precio se mueve en una dirección favorable, el nivel de toma de beneficios se ajusta al 20% y el stop loss se ajusta al 2,5%. para proteger las ganancias.

Principio de estrategia

La lógica central de la estrategia se basa en la relación de cruce entre la media móvil rápida (5 períodos) y la media móvil lenta (12 períodos). Cuando la línea rápida cruza la línea lenta de abajo hacia arriba, el sistema genera una señal larga y abre una posición; cuando la línea rápida cruza la línea lenta de arriba hacia abajo, el sistema cierra la posición. La singularidad de la estrategia radica en su mecanismo dinámico de gestión de riesgos: una vez establecida una posición, el sistema monitoreará las tendencias de precios en tiempo real y ajustará dinámicamente los niveles de toma de ganancias y stop loss según los cambios de precios para maximizar las ganancias mientras se controlan los riesgos. .

Ventajas estratégicas

  1. El sistema adopta la clásica estrategia de cruce de doble media móvil, con señales claras, fáciles de entender y ejecutar.
  2. El mecanismo dinámico de stop-profit y stop-loss puede proteger eficazmente las ganancias realizadas y evitar caídas.
  3. Los parámetros de la estrategia se pueden ajustar de forma flexible según las diferentes características del mercado, con una fuerte adaptabilidad.
  4. El mecanismo de gestión de riesgos es perfecto y puede controlar eficazmente el riesgo de una sola transacción.
  5. La estructura del código es clara, fácil de mantener y optimizar.

Riesgo estratégico

  1. Un mercado volátil puede generar señales falsas, lo que lleva a transacciones frecuentes.
  2. Puede ocurrir un gran retroceso en una reversión rápida
  3. La configuración incorrecta de los parámetros puede afectar el rendimiento de la estrategia
  4. La liquidez insuficiente del mercado puede afectar la ejecución del stop loss Se recomiendan las siguientes medidas para gestionar los riesgos:
  • Añadir filtro de tendencias
  • Selección de parámetros de optimización
  • Monitoreo en tiempo real de la liquidez del mercado
  • Establecer un sistema sólido de gestión de fondos

Dirección de optimización de la estrategia

  1. Introducir indicadores de fuerza de tendencia para filtrar señales de mercado impactantes
  2. Considere agregar factores de volumen para mejorar la confiabilidad de la señal
  3. Optimizar los parámetros stop-profit y stop-loss para mejorar la relación riesgo-rendimiento
  4. Añadir un mecanismo adaptativo a la volatilidad del mercado
  5. Mejorar el sistema de gestión de almacenes

Resumir

Esta estrategia logra una comprensión efectiva de las tendencias y un control dinámico de los riesgos mediante la combinación de señales clásicas de cruce de medias móviles con mecanismos innovadores de gestión dinámica de riesgos. El concepto de diseño de la estrategia es claro, el método de implementación es conciso y efectivo y tiene buena practicidad y escalabilidad. Se espera que mediante la optimización y mejora continuas, esta estrategia logre un rendimiento de ganancias estable en las transacciones reales.

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

//@version=6
strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1  ))




// MA periods
fastLength = input.int(5, title="Fast MA Length")
slowLength = input.int(12, title="Slow MA Length")




// Take Profit and Stop Loss
takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price
stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss  % from the last price
takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px
stopLossLevel_dyn =  input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px


// Вычисление скользящих средних
fastMA = ta.sma(close, fastLength)
slowMA= ta.sma(close, slowLength)


// Conditions for Sell and Buy
longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх
shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз




// Buy position condition
if (longCondition)
    strategy.entry("Buy", strategy.long)






// Dynamic TP SL leveles
takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100)
stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100)


entryPrice = strategy.position_avg_price




if (strategy.position_size > 0) // если есть открытая позиция




    // takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100)
    // stopLossPrice := entryPrice * (1-stopLossLevel / 100)


    // // Перемещение Stop Loss и Take Profit
    if (close > entryPrice)
   
        takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100)
        stopLossPrice := close * (1- stopLossLevel_dyn/ 100)






if (shortCondition)
    strategy.close("Buy")




strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice)


// Drawing MA lines
plot(fastMA, color=color.blue, title="Fast Moving Average")
plot(slowMA, color=color.orange, title="Slow Moving Average")




// Визуализация
plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line)
plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)