Impulso cuadrático Indicadores dobles Estrategia de tiempo

El autor:¿ Qué pasa?, Fecha: 2024-02-04 15:53:48
Las etiquetas:

img

Resumen general

Esta estrategia fusiona el indicador de SuperTrend con la teoría de la onda de Elliott para construir una herramienta de negociación técnica robusta. Emplea un análisis de tendencias de varios niveles para proporcionar una perspectiva de mercado más completa que pueda capturar temprano posibles inversiones de tendencia y movimientos significativos de precios.

Principio de la estrategia

La idea central reside en su enfoque de múltiples niveles:

  1. Utilice 4 indicadores SuperTrend, cada uno con diferentes longitudes y multiplicadores ATR, para juzgar la tendencia a corto y largo plazo.
  2. Identificar señales largas y cortas sólidas mediante la convergencia de indicadores
  3. Consulte el método de reconocimiento de patrones de Elliott Wave para identificar comportamientos de mercado similares para confirmar las señales comerciales

Por lo tanto, utiliza múltiples indicadores y agrega reconocimiento de patrones para hacer que la estrategia sea más robusta.

Análisis de ventajas

  1. El diseño de múltiples indicadores proporciona un juicio completo
  2. La inspiración de la teoría de ondas aumenta la estabilidad a través del reconocimiento de patrones
  3. El ajuste de dirección en tiempo real se adapta a los cambios del mercado
  4. Los parámetros configurables se adaptan a diferentes productos y plazos

Análisis de riesgos

  1. El ajuste de parámetros se basa en la experiencia, lo que requiere ajustes para determinar las combinaciones óptimas de parámetros
  2. El diseño de múltiples indicadores es complejo, aumentando la carga computacional
  3. No se puede evitar completamente la generación de señal incorrecta

Los parámetros se pueden optimizar para determinar gradualmente lo óptimo; la computación en la nube puede mejorar el rendimiento computacional; las pérdidas de parada pueden controlar el riesgo.

Direcciones de optimización

Las optimizaciones pueden realizarse en varios aspectos:

  1. Añadir módulo de ajuste de parámetros adaptativos para ajustar dinámicamente los parámetros en función de las condiciones del mercado
  2. Incorporar modelos de aprendizaje automático para ayudar a juzgar la confiabilidad de la señal
  3. Combinar indicadores de sentimiento, noticias, etc. para determinar los regímenes del mercado
  4. Apoyar plantillas de parámetros de varios productos para reducir la carga de trabajo de prueba

Esto hará que los parámetros de la estrategia sean más inteligentes, los juicios más precisos y la aplicación práctica más conveniente.

Resumen de las actividades

La estrategia considera de manera integral tanto las dimensiones de tendencia como de patrón, asegurando la solidez del juicio al tiempo que aumenta la flexibilidad. Los múltiples indicadores y la configuración de parámetros aseguran la plena aplicabilidad del mercado. Con una mayor incorporación de métodos inteligentes y automatizados, la practicidad de la estrategia puede mejorarse en gran medida. Proporciona una valiosa inspiración y referencia para el avance del comercio técnico.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Elliott's Quadratic Momentum - Strategy [presentTrading]",shorttitle = "EQM Strategy [presentTrading]", overlay=true )

// Inputs for selecting trading direction
tradingDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])


// SuperTrend Function
supertrend(src, atrLength, multiplier) =>
    atr = ta.atr(atrLength)
    up = hl2 - (multiplier * atr)
    dn = hl2 + (multiplier * atr)
    trend = 1
    trend := nz(trend[1], 1)
    up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ?   math.max(up, nz(up[1], 0)) : up
    dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? math.min(dn, nz(dn[1], 0)) : dn
    trend := src > nz(dn[1], 0) ?  1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1)
    [up, dn, trend]

// Inputs for SuperTrend settings
atrLength1 = input(7, title="ATR Length for SuperTrend 1")
multiplier1 = input(4.0, title="Multiplier for SuperTrend 1")
atrLength2 = input(14, title="ATR Length for SuperTrend 2")
multiplier2 = input(3.618, title="Multiplier for SuperTrend 2")
atrLength3 = input(21, title="ATR Length for SuperTrend 3")
multiplier3 = input(3.5, title="Multiplier for SuperTrend 3")
atrLength4 = input(28, title="ATR Length for SuperTrend 3")
multiplier4 = input(3.382, title="Multiplier for SuperTrend 3")

// Calculate SuperTrend
[up1, dn1, trend1] = supertrend(close, atrLength1, multiplier1)
[up2, dn2, trend2] = supertrend(close, atrLength2, multiplier2)
[up3, dn3, trend3] = supertrend(close, atrLength3, multiplier3)
[up4, dn4, trend4] = supertrend(close, atrLength4, multiplier4)


// Entry Conditions based on SuperTrend and Elliott Wave-like patterns
longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1
shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == - 1

// Strategy Entry logic based on selected trading direction
if tradingDirection == "Long" or tradingDirection == "Both"
    if longCondition
        strategy.entry("Long", strategy.long)
        // [Any additional logic for long entry]

if tradingDirection == "Short" or tradingDirection == "Both"
    if shortCondition
        strategy.entry("Short", strategy.short)
        // [Any additional logic for short entry]


// Exit conditions - Define your own exit strategy
// Example: Exit when any SuperTrend flips
if trend1 != trend1[1] or trend2 != trend2[1] or trend3 != trend3[1] or trend4 != trend4[1] 
    strategy.close_all()

// Function to apply gradient effect
gradientColor(baseColor, length, currentBar) =>
    var color res = color.new(baseColor, 100)
    if currentBar <= length
        res := color.new(baseColor, int(100 * currentBar / length))
    res

// Apply gradient effect
color1 = gradientColor(color.blue, atrLength1, bar_index % atrLength1)
color4 = gradientColor(color.blue, atrLength4, bar_index % atrLength3)


// Plot SuperTrend with gradient for upward trend
plot1Up = plot(trend1 == 1 ? up1 : na, color=color1, linewidth=1, title="SuperTrend 1 Up")
plot4Up = plot(trend4 == 1 ? up4 : na, color=color4, linewidth=1, title="SuperTrend 3 Up")

// Plot SuperTrend with gradient for downward trend
plot1Down = plot(trend1 == -1 ? dn1 : na, color=color1, linewidth=1, title="SuperTrend 1 Down")
plot4Down = plot(trend4 == -1 ? dn4 : na, color=color4, linewidth=1, title="SuperTrend 3 Down")

// Filling the area between the first and third SuperTrend lines for upward trend
fill(plot1Up, plot4Up, color=color.new(color.green, 80), title="SuperTrend Upward Band")

// Filling the area between the first and third SuperTrend lines for downward trend
fill(plot1Down, plot4Down, color=color.new(color.red, 80), title="SuperTrend Downward Band")



Más.