Les ressources ont été chargées... Je charge...

Stratégie de détermination de la tendance de l'EMA basée sur les moyennes mobiles de Hull

Auteur:ChaoZhang est là., Date: 2024-11-29 16h35:43
Les étiquettes:HMALe taux d'intérêtLa WMA

img

Résumé

Cette stratégie utilise les propriétés réfléchissantes des moyennes mobiles Hull (HMA) pour déterminer les tendances du marché. Le noyau de la stratégie consiste à calculer la différence entre les moyennes mobiles Hull à court et à long terme et à utiliser cette différence réfléchie pour prédire les mouvements de prix.

Principes de stratégie

La stratégie utilise deux moyennes mobiles Hull avec des périodes de 36 et 44 comme indicateurs de base. Elle calcule la différence absolue entre ces deux moyennes mobiles et applique des calculs de réflexion basés sur la direction de la tendance actuelle pour obtenir la valeur de réflexion.

Les avantages de la stratégie

  1. Utilise les moyennes mobiles Hull pour réduire le décalage généralement associé aux moyennes mobiles traditionnelles
  2. Incorpore des valeurs de réflexion pour une détection plus précise des points tournants de la tendance
  3. Caractéristiques des facteurs de correction réglables pour une meilleure adaptabilité
  4. Améliore la fiabilité du signal grâce à des calculs de différence absolue
  5. Intégrer des mécanismes de contrôle des risques, y compris des ajustements dynamiques des lignes de tendance
  6. Inclut des composants de visualisation pour une évaluation intuitive de l'état du marché

Risques stratégiques

  1. Peut générer de fréquents faux signaux sur différents marchés
  2. Des paramètres mal réglés peuvent entraîner des signaux retardés ou une sensibilité excessive
  3. Les lignes de limite de tendance peuvent ne pas s'ajuster assez rapidement sur les marchés volatils
  4. La stratégie repose sur des calculs de données historiques, limitant potentiellement la réponse aux événements soudains du marché

Directions d'optimisation de la stratégie

  1. Introduction d'indicateurs de volatilité pour l'ajustement du facteur de correction dynamique
  2. Mettre en œuvre des mécanismes de reconnaissance de l'état du marché pour l'adaptation des paramètres
  3. Développer des systèmes d'optimisation des paramètres auto-adaptés
  4. Ajout de modules d'analyse du volume pour améliorer la fiabilité du signal
  5. Améliorer les mécanismes de contrôle des risques avec des fonctionnalités de stop-loss et de gestion de l'argent

Résumé

Cette stratégie combine de manière innovante les moyennes mobiles de Hull avec des concepts de valeur de réflexion pour créer un système de suivi de tendance réactif et adaptatif.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Reflected EMA Difference (RED)", shorttitle="RED [by MarcosPna]", overlay=true) //mv30
// Análisis de Riesgo
// Risk Analysis
media_delta = ta.wma(2 * ta.wma(close, 8 / 2) - ta.wma(close, 8), math.floor(math.sqrt(8)))

// Calcular EMAs
// Calculate EMAs
ema_corta_delta = ta.hma(close, 36)
ema_larga_delta = ta.hma(close, 44)

// Calcular la diferencia entre las EMAs
// Calculate the difference between EMAs
diferencia_delta_ema = math.abs(ema_corta_delta - ema_larga_delta)

// Calcular el valor reflejado basado en la posición de la EMA corta
// Compute the reflected value based on the position of the short EMA
valor_reflejado_delta = ema_corta_delta + (ema_corta_delta > ema_larga_delta ? diferencia_delta_ema : -diferencia_delta_ema)

// Suavizar el valor reflejado
// Smooth the reflected value
periodo_suavizado_delta = input.int(2, title="Periodo extendido")
ema_suavizada_delta = ta.hma(valor_reflejado_delta, periodo_suavizado_delta)

// Ploteo de las EMAs y la línea reflejada
// Plot EMAs and the reflected line
plot(valor_reflejado_delta, title="Reflected EMA Difference (RED)", color=valor_reflejado_delta > ema_suavizada_delta ? color.rgb(253, 25, 238, 30) : color.rgb(183, 255, 30), linewidth=2, style=plot.style_line)

// Parámetros ajustables para la reversión de tendencia
// Adjustable parameters for trend reversal
factor_correccion_delta = input.float(title='Porcentaje de cambio', minval=0, maxval=100, step=0.1, defval=0.04)
tasa_correccion_delta = factor_correccion_delta * 0.01

// Variables para la reversión de tendencia
// Variables for trend reversal
var int direccion_delta_tendencia = 0
var float precio_maximo_delta = na
var float precio_minimo_delta = na
var float limite_tendencia_delta = na

// Inicializar precio máximo y mínimo con el primer valor de la EMA suavizada reflejada
// Initialize peak and trough prices with the first value of the smoothed reflected EMA
if na(precio_maximo_delta)
    precio_maximo_delta := ema_suavizada_delta
if na(precio_minimo_delta)
    precio_minimo_delta := ema_suavizada_delta

// Lógica de reversión de tendencia con la EMA suavizada reflejada
// Trend reversal logic with the smoothed reflected EMA
if direccion_delta_tendencia >= 0
    if ema_suavizada_delta > precio_maximo_delta
        precio_maximo_delta := ema_suavizada_delta
    limite_tendencia_delta := precio_maximo_delta - (precio_maximo_delta * tasa_correccion_delta)
    if ema_suavizada_delta <= limite_tendencia_delta
        direccion_delta_tendencia := -1
        precio_minimo_delta := ema_suavizada_delta
        strategy.entry("Venta", strategy.short)
else
    if ema_suavizada_delta < precio_minimo_delta
        precio_minimo_delta := ema_suavizada_delta
    limite_tendencia_delta := precio_minimo_delta + (precio_minimo_delta * tasa_correccion_delta)
    if ema_suavizada_delta >= limite_tendencia_delta
        direccion_delta_tendencia := 1
        precio_maximo_delta := ema_suavizada_delta
        strategy.entry("Compra", strategy.long)

// Ploteo y señales
// Plotting and signals
indice_delta_ascendente = plot(direccion_delta_tendencia == 1 ? limite_tendencia_delta : na, title="Aumento de valor", style=plot.style_linebr, linewidth=3, color=color.new(color.green, 0))
senal_compra_delta = direccion_delta_tendencia == 1 and direccion_delta_tendencia[1] == -1
plotshape(senal_compra_delta ? limite_tendencia_delta : na, title="Estilo señal alcista", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))

indice_delta_descendente = plot(direccion_delta_tendencia == 1 ? na : limite_tendencia_delta, title="Disminución de valor", style=plot.style_linebr, linewidth=3, color=color.new(color.red, 0))
senal_venta_delta = direccion_delta_tendencia == -1 and direccion_delta_tendencia[1] == 1
plotshape(senal_venta_delta ? limite_tendencia_delta : na, title="Estilo señal bajista", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))

// Variables para manejo de cajas
// Variables for box management
var box caja_tendencia_delta = na

// Condición: Cruce de HullMA hacia abajo
// Condition: HullMA crosses below reflected EMA value
cruce_bajista_delta = ta.crossunder(media_delta, valor_reflejado_delta)

// Condición: Cruce de HullMA hacia arriba
// Condition: HullMA crosses above reflected EMA value
cruce_alcista_delta = ta.crossover(media_delta, valor_reflejado_delta)

// Dibujar caja cuando HullMA cruza hacia abajo el valor reflejado de EMA
// Draw a box when HullMA crosses below the reflected EMA value
// if (cruce_bajista_delta) and direccion_delta_tendencia == 1
//     caja_tendencia_delta := box.new(left=bar_index, top=high, right=bar_index, bottom=low, text = "Critical Areas", text_color = color.white, border_width=2, border_color=color.rgb(254, 213, 31), bgcolor=color.new(color.red, 90))

// Cerrar caja cuando HullMA cruza hacia arriba el valor reflejado de EMA
// Close the box when HullMA crosses above the reflected EMA value
// if (cruce_alcista_delta and not na(caja_tendencia_delta))
//     box.set_right(caja_tendencia_delta, bar_index)
//     caja_tendencia_delta := na  // Remove the reference to create a new box at the next cross down



Relationnée

Plus de