В процессе загрузки ресурсов... загрузка...

Отраженная стратегия определения тенденции EMA на основе скользящих средних показателей корпуса

Автор:Чао Чжан, Дата: 2024-11-29 16:35:43
Тэги:HMAЕМАWMA

img

Обзор

Эта стратегия использует отражительные свойства Hull Moving Averages (HMA) для определения рыночных тенденций. Ядро стратегии заключается в расчете разницы между краткосрочными и долгосрочными Hull Moving Averages и использовании этой отраженной разницы для прогнозирования движения цен.

Принципы стратегии

Стратегия использует два скользящих средних Hull с периодами 36 и 44 в качестве базовых показателей. Она рассчитывает абсолютную разницу между этими двумя скользящими средними и применяет расчеты отражения на основе текущего направления тренда для получения значения отражения. Стратегия также включает в себя взвешенную скользящую среднюю (WMA) для расчета дельта-значений, используя перекрестки между дельта и значениями отражения для определения поворотных точек тренда. Во время определения тренда стратегия использует регулируемый коррекционный фактор для контроля чувствительности к изменению тренда.

Преимущества стратегии

  1. Использует скользящие средние показатели Hull для уменьшения задержки, обычно связанной с традиционными скользящими средними показателями
  2. Включает значения отражения для более точного обнаружения поворотных точек тренда
  3. Особенности регулируемых коррекционных коэффициентов для повышения адаптивности
  4. Улучшает надежность сигнала посредством расчетов абсолютной разницы
  5. Интегрирует механизмы контроля рисков, включая динамические корректировки линий тренда
  6. Включает компоненты визуализации для интуитивной оценки состояния рынка

Стратегические риски

  1. Может генерировать частые ложные сигналы на различных рынках
  2. Неправильные параметры могут привести к задержке сигналов или чрезмерной чувствительности
  3. Линии ограничения тренда могут не корректироваться достаточно быстро на волатильных рынках
  4. Стратегия основана на расчетах исторических данных, потенциально ограничивающих реакцию на внезапные рыночные события

Направления оптимизации стратегии

  1. Ввести индикаторы волатильности для корректировки динамического корекционного коэффициента
  2. Внедрение механизмов признания состояния рынка для адаптации параметров
  3. Разработка самоадаптивных систем оптимизации параметров
  4. Добавление модулей анализа объема для повышения надежности сигнала
  5. Улучшение механизмов контроля рисков с помощью функций стоп-лосса и управления деньгами

Резюме

Эта стратегия инновационно сочетает в себе движущиеся средние с концепциями ценностей отражения, чтобы создать адаптивную и адаптивную следующую систему тренда. Ее основная сила заключается в точном захвате поворотных точек тренда, сохраняя при этом адаптивность с помощью регулируемых параметров.


/*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



Связанные

Больше