En la carga de los recursos... Cargando...

Tendencia avanzada de la onda y estrategia de negociación de fusión de la banda de la EMA

El autor:¿ Qué pasa?, Fecha: 2025-01-06 15:21:57
Las etiquetas:WTEl EMAHLC3La SMA- ¿Qué es?

img

Resumen general

Esta estrategia es un sistema de negociación avanzado que combina el indicador del oscilador WaveTrend con las cintas EMA. Al integrar estos dos indicadores técnicos, crea una estrategia de negociación capaz de capturar con precisión los puntos de reversión de la tendencia del mercado.

Principios de estrategia

El núcleo de la estrategia radica en el uso sinérgico del indicador WaveTrend y ocho líneas EMA para identificar señales comerciales. El indicador WaveTrend mide las condiciones de sobrecompra y sobreventa del mercado mediante el cálculo de la desviación entre el precio y las medias móviles.

  1. Las señales largas se activan cuando EMA2 cruza por encima de EMA8, o cuando aparece una señal de triángulo azul (EMA2 cruza por encima de EMA3) sin un patrón de diamante de sangre
  2. Las señales cortas se activan cuando la EMA8 cruza por encima de la EMA2, o cuando aparece un patrón de diamante de sangre
  3. El punto de stop-loss se establece en el punto extremo después de la señal de contador anterior, controlando efectivamente el riesgo.
  4. Los objetivos de rentabilidad se fijan en 2-3 veces la distancia de stop-loss, lo que demuestra una buena relación riesgo-beneficio

Ventajas estratégicas

  1. El mecanismo de doble confirmación mejora la fiabilidad de las señales de negociación
  2. Los ajustes dinámicos de stop-loss se adaptarán mejor a la volatilidad del mercado
  3. Configuración clara de la relación riesgo-beneficio
  4. La cinta de la EMA ayuda a determinar las tendencias generales del mercado
  5. El indicador WaveTrend identifica eficazmente las condiciones de sobrecompra/sobreventa del mercado
  6. Una lógica estratégica clara que sea fácil de entender y ejecutar

Riesgos estratégicos

  1. Puede generar señales falsas frecuentes en mercados variados
  2. Las paradas dinámicas pueden desencadenarse fácilmente durante la volatilidad severa
  3. Los indicadores basados en datos históricos pueden fallar durante los cambios en el régimen del mercado
  4. Los indicadores técnicos múltiples pueden dar lugar a un retraso de la señal Soluciones:
  • Añadir filtros de volatilidad para reducir las señales falsas en mercados variados
  • Considere el uso de configuraciones de stop-loss más amplias
  • Añadir mecanismos de confirmación de la fuerza de la tendencia

Direcciones de optimización

  1. Introducir indicadores de volatilidad (como el ATR) para el ajuste dinámico de pérdidas de parada
  2. Añadir un mecanismo de confirmación de volumen para mejorar la confiabilidad de la señal
  3. Considere la posibilidad de añadir filtros de fuerza de tendencia al comercio solo en mercados de fuerte tendencia
  4. Optimizar los parámetros de WaveTrend para una mejor adaptación a las diferentes condiciones del mercado
  5. Estudio de la sinergia de señales en diferentes plazos

Resumen de las actividades

Este es un sistema comercial completo que combina indicadores de tendencia y oscilador en el análisis técnico. A través del uso coordinado de las cintas WaveTrend y EMA, puede capturar las tendencias principales y entrar oportunamente en los puntos de inversión de tendencia. El mecanismo dinámico de gestión de stop-loss y take-profit proporciona una buena capacidad de control de riesgos. El potencial de optimización de la estrategia radica principalmente en mejorar el filtrado de señales y la gestión de riesgos.


/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("VuManChu Cipher A Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.fixed, default_qty_value=1.0)

// === 函数定义 ===
// WaveTrend函数
f_wavetrend(_src, _chlen, _avg, _malen) =>
    _esa = ta.ema(_src, _chlen)
    _de = ta.ema(math.abs(_src - _esa), _chlen)
    _ci = (_src - _esa) / (0.015 * _de)
    _tci = ta.ema(_ci, _avg)
    _wt1 = _tci
    _wt2 = ta.sma(_wt1, _malen)
    [_wt1, _wt2]

// EMA Ribbon函数
f_emaRibbon(_src, _e1, _e2, _e3, _e4, _e5, _e6, _e7, _e8) =>
    _ema1 = ta.ema(_src, _e1)
    _ema2 = ta.ema(_src, _e2)
    _ema3 = ta.ema(_src, _e3)
    _ema4 = ta.ema(_src, _e4)
    _ema5 = ta.ema(_src, _e5)
    _ema6 = ta.ema(_src, _e6)
    _ema7 = ta.ema(_src, _e7)
    _ema8 = ta.ema(_src, _e8)
    [_ema1, _ema2, _ema3, _ema4, _ema5, _ema6, _ema7, _ema8]

// === 变量声明 ===
var float stopPrice = na      // 止损价格变量
var float targetPrice = na    // 止盈价格变量
var float lastLongPrice = na
var float lastShortPrice = na
var float highestSinceLastLong = na
var float lowestSinceLastShort = na

// === WaveTrend参数 ===
wtChannelLen = input.int(9, title = 'WT Channel Length')
wtAverageLen = input.int(13, title = 'WT Average Length')
wtMASource = hlc3
wtMALen = input.int(3, title = 'WT MA Length')

// === EMA Ribbon参数 ===
ema1Len = input.int(5, "EMA 1 Length")
ema2Len = input.int(11, "EMA 2 Length")
ema3Len = input.int(15, "EMA 3 Length")
ema4Len = input.int(18, "EMA 4 Length")
ema5Len = input.int(21, "EMA 5 Length")
ema6Len = input.int(24, "EMA 6 Length")
ema7Len = input.int(28, "EMA 7 Length")
ema8Len = input.int(34, "EMA 8 Length")

// === 计算指标 ===
// WaveTrend计算
[wt1, wt2] = f_wavetrend(wtMASource, wtChannelLen, wtAverageLen, wtMALen)

// WaveTrend交叉条件
wtCross = ta.cross(wt1, wt2)
wtCrossDown = wt2 - wt1 >= 0

// EMA Ribbon计算
[ema1, ema2, ema3, ema4, ema5, ema6, ema7, ema8] = f_emaRibbon(close, ema1Len, ema2Len, ema3Len, ema4Len, ema5Len, ema6Len, ema7Len, ema8Len)

// === 交易信号 ===
longEma = ta.crossover(ema2, ema8)
shortEma = ta.crossover(ema8, ema2)
redCross = ta.crossunder(ema1, ema2)
blueTriangle = ta.crossover(ema2, ema3)
redDiamond = wtCross and wtCrossDown
bloodDiamond = redDiamond and redCross

// 更新最高最低价
if not na(lastLongPrice)
    highestSinceLastLong := math.max(high, nz(highestSinceLastLong))
if not na(lastShortPrice)
    lowestSinceLastShort := math.min(low, nz(lowestSinceLastShort))

// === 交易信号条件 ===
longCondition = longEma or (blueTriangle and not bloodDiamond)
shortCondition = shortEma or bloodDiamond

// === 执行交易 ===
if (longCondition)
    // 记录多头入场价格
    lastLongPrice := close
    // 重置最高价跟踪
    highestSinceLastLong := high
    
    stopPrice := nz(lowestSinceLastShort, close * 0.98)  // 使用前一个空头信号后的最低价作为止损
    float riskAmount = math.abs(close - stopPrice)
    targetPrice := close + (riskAmount * 2)  // 止盈为止损距离的2倍
    
    strategy.entry("做多", strategy.long)
    strategy.exit("多头止盈止损", "做多", limit=targetPrice, stop=stopPrice)

if (shortCondition)
    // 记录空头入场价格
    lastShortPrice := close
    // 重置最低价跟踪
    lowestSinceLastShort := low
    
    stopPrice := nz(highestSinceLastLong, close * 1.02)  // 使用前一个多头信号后的最高价作为止损
    float riskAmount = math.abs(stopPrice - close)
    targetPrice := close - (riskAmount * 3)  // 止盈为止损距离的2倍
    
    strategy.entry("做空", strategy.short)
    strategy.exit("空头止盈止损", "做空", limit=targetPrice, stop=stopPrice)

// === 绘制信号 ===
plotshape(longCondition, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.small, title="做多信号")
plotshape(shortCondition, style=shape.triangledown, color=color.red, location=location.abovebar, size=size.small, title="做空信号")

// 绘制止损线
plot(strategy.position_size > 0 ? stopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="多头止损线")
plot(strategy.position_size < 0 ? stopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="空头止损线")

// 绘制止盈线
plot(strategy.position_size > 0 ? targetPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="多头止盈线")
plot(strategy.position_size < 0 ? targetPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="空头止盈线")

Relacionados

Más.