Pronóstico de tendencias dinámico de múltiples períodos combinado con una estrategia de filtrado de promedio móvil

EMA SMA ML AI PREDICTION Trend FILTER BACKTEST
Fecha de creación: 2025-02-20 14:03:44 Última modificación: 2025-02-27 17:38:36
Copiar: 1 Número de Visitas: 345
2
Seguir
319
Seguidores

Pronóstico de tendencias dinámico de múltiples períodos combinado con una estrategia de filtrado de promedio móvil Pronóstico de tendencias dinámico de múltiples períodos combinado con una estrategia de filtrado de promedio móvil

Descripción general

La estrategia es un sistema de seguimiento de tendencias que combina el análisis técnico tradicional y los métodos modernos de inteligencia artificial. Utiliza principalmente las medias móviles indexadas (EMA) y las medias móviles simples (SMA) como filtros de tendencias, al tiempo que introduce modelos de predicción para optimizar el tiempo de entrada. La estrategia está optimizada específicamente para el nivel de la línea diaria, con el objetivo de capturar tendencias de mercado a medio y largo plazo.

Principio de estrategia

La lógica central de la estrategia incluye tres componentes principales:

  1. Sistema de determinación de tendencias - utiliza EMA y SMA de 200 ciclos como filtros de tendencias principales para determinar la dirección de la tendencia actual a través de la relación de la posición del precio con la media
  2. Módulo de predicción - Utiliza componentes de predicción extensibles, actualmente en predicción analógica, que pueden ser sustituidos por modelos de aprendizaje automático
  3. Administración de posiciones - Establece un ciclo de posiciones fijo de 4 líneas K para controlar el tiempo y el riesgo de las posiciones

La generación de señales de negociación requiere que se satisfaga la dirección de la tendencia y la consistencia de la señal de predicción, es decir:

  • Señales múltiples: el precio está por encima de la EMA y SMA y se espera que sea positivo
  • Señales de cabeza hueca: precios por debajo de EMA y SMA con pronóstico negativo

Ventajas estratégicas

  1. La estructura es clara - la lógica de la estrategia es simple, intuitiva, fácil de entender y mantener
  2. Riesgo controlado - Control efectivo del riesgo mediante un ciclo de tenencia fijo y un filtro de doble línea media
  3. Escalabilidad: el diseño del módulo de predicción es flexible y permite acceder a diferentes modelos de predicción según sea necesario
  4. Adaptabilidad - los parámetros se pueden ajustar para adaptarse a diferentes entornos del mercado
  5. Frecuencia de operación moderada - La operación a nivel de línea de sol reduce los costos de transacción y el estrés psicológico

Riesgo estratégico

  1. Riesgo de reversión de la tendencia - pérdidas continuas en el punto de reversión de la tendencia
  2. Sensibilidad de los parámetros: la elección de un ciclo de línea media y un ciclo de tenencia tiene un mayor impacto en el rendimiento de la estrategia
  3. Dependencia del modelo: la precisión de los módulos de predicción tiene un impacto directo en la eficacia de la estrategia
  4. Efecto de los puntos de deslizamiento - las operaciones a nivel de línea de sol pueden tener puntos de deslizamiento más grandes
  5. Dependencia del entorno del mercado - puede tener un mal desempeño en un mercado convulso

Dirección de optimización de la estrategia

  1. Actualización de modelos de predicción - introducción de modelos de aprendizaje automático en lugar de las predicciones aleatorias existentes
  2. Ciclo de mantenimiento de posiciones dinámico - tiempo de mantenimiento de posiciones ajustado dinámicamente según la volatilidad del mercado
  3. Optimización de la detención de pérdidas - Aumentar el mecanismo de detención de pérdidas dinámicas para mejorar la capacidad de control de riesgos
  4. Gestión de posiciones - Introducción de un sistema de gestión de posiciones basado en la volatilidad
  5. Filtración multidimensional - indicadores auxiliares como el aumento de la cantidad de transacciones y la volatilidad

Resumir

La estrategia combina análisis técnico tradicional y métodos modernos de predicción para construir un sistema de seguimiento de tendencias sólido. Sus principales ventajas son la claridad de la lógica, la capacidad de controlar el riesgo y la gran escalabilidad. A través de la optimización de la estrategia, en particular las mejoras en los modelos de predicción y el control del riesgo, se espera mejorar aún más la estabilidad y la rentabilidad de la estrategia.

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

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

// Parameters (adjust as needed)
neighborsCount = 8
maxBarsBack = 2000
featureCount = 5
useDynamicExits = true
useEmaFilter = true
emaPeriod = 200
useSmaFilter = true
smaPeriod = 200

// Moving Average Calculations
ema = ta.ema(close, emaPeriod)
sma = ta.sma(close, smaPeriod)

// Trend Conditions
isEmaUptrend = close > ema
isEmaDowntrend = close < ema
isSmaUptrend = close > sma
isSmaDowntrend = close < sma

// Model Prediction (Replace with your real model)
// Here a simulation is used, replace it with real predictions
prediction = math.random() * 2 - 1 // Random value between -1 and 1

// Entry Signals
isNewBuySignal = prediction > 0 and isEmaUptrend and isSmaUptrend
isNewSellSignal = prediction < 0 and isEmaDowntrend and isSmaDowntrend

// Exit Signals
var int barsHeld = 0
var bool in_position = false
var int entry_bar = 0

if isNewBuySignal and not in_position
    in_position := true
    entry_bar := bar_index
    barsHeld := 1
else if isNewSellSignal and not in_position
    in_position := true
    entry_bar := bar_index
    barsHeld := 1
else if in_position
    barsHeld := barsHeld + 1
    if barsHeld == 4
        in_position := false

endLongTradeStrict = barsHeld == 4 and isNewBuySignal[1]
endShortTradeStrict = barsHeld == 4 and isNewSellSignal[1]

// Backtest Logic
var float totalProfit = 0
var float entryPrice = na
var int tradeDirection = 0

if isNewBuySignal and tradeDirection <= 0
    entryPrice := close
    tradeDirection := 1
    strategy.entry("Long", strategy.long)

if isNewSellSignal and tradeDirection >= 0
    entryPrice := close
    tradeDirection := -1
    strategy.entry("Short", strategy.short)

if (endLongTradeStrict and tradeDirection == 1) or (endShortTradeStrict and tradeDirection == -1)
    exitPrice = close
    profit = (exitPrice - entryPrice) / entryPrice
    if tradeDirection == -1
        profit := (entryPrice - exitPrice) / entryPrice

    totalProfit := totalProfit + profit
    tradeDirection := 0
    strategy.close_all()

plot(close, color=color.blue)
plot(ema, color=color.orange)
plot(sma, color=color.purple)