Estrategia de trading multi-temporal basada en la clasificación de Lorenz

EMA CI HTF TA
Fecha de creación: 2024-07-31 11:49:32 Última modificación: 2024-07-31 11:49:32
Copiar: 0 Número de Visitas: 673
1
Seguir
1617
Seguidores

Estrategia de trading multi-temporal basada en la clasificación de Lorenz

Descripción general

La estrategia es un sistema de trading de múltiples marcos de tiempo basado en la clasificación de Lorentz, que combina un precio objetivo y un mecanismo de stop loss dinámico. Utiliza un índice de movimiento medio (EMA) y un índice de clasificación (CI) para identificar tendencias en el mercado y realizar un análisis cruzado en el marco de tiempo alto y en el marco de tiempo actual. La estrategia maximiza los beneficios al establecer un porcentaje objetivo, mientras que utiliza un mecanismo de retroalimentación para confirmar la efectividad de las señales de negociación.

Principio de estrategia

El núcleo de la estrategia es la clasificación de Lorentz, que combina el triple promedio móvil (EMA) y el índice de clasificación (CI) para generar señales de negociación. Los pasos específicos son los siguientes:

  1. Calcula el triple EMA: EMA1, EMA2 y EMA3
  2. Calcula el índice de clasificación (CI): CI = (EMA1 - EMA2) / (0.015 * EMA ((((EMA1 - EMA2)) * 100
  3. La línea de Lorentz = EMA3 + CI。

La estrategia calcula la línea de Lorentz en el marco de tiempo actual y en el marco de tiempo superior para proporcionar una perspectiva multidimensional del mercado. La señal de compra se basa en el cruce del precio con la línea de Lorentz y se confirma a través de un mecanismo de retroceso. La señal de compra se activa cuando el precio cruza la línea de Lorentz y el precio mínimo durante el período de retroceso es inferior a la línea de Lorentz.

La estrategia también introdujo un mecanismo de precio objetivo para determinar el punto de salida en función del porcentaje objetivo establecido por el usuario. Al mismo tiempo, también implementó un stop loss dinámico para controlar el riesgo.

Ventajas estratégicas

  1. Análisis de múltiples marcos de tiempo: mediante la combinación de las líneas de Lorenz de los marcos de tiempo actuales y superiores, la estrategia puede capturar una tendencia de mercado más completa y reducir las falsas señales.

  2. Identificación de tendencias dinámicas: La clasificación de Lorenz es capaz de adaptarse rápidamente a los cambios en el mercado, proporcionando una capacidad de identificación de tendencias sensible.

  3. Mecanismo de confirmación de señales: utiliza el período de retrospectiva para confirmar las señales de transacción, lo que reduce la probabilidad de transacciones erróneas.

  4. Optimización del precio objetivo: la estrategia permite maximizar las ganancias en condiciones favorables mediante el establecimiento de porcentajes objetivos.

  5. Gestión de riesgos: Introducción de un mecanismo de stop loss dinámico para controlar eficazmente el riesgo de cada operación.

  6. Visualización y estadísticas: La estrategia ofrece gráficos intuitivos y estadísticas de transacciones que facilitan al comerciante analizar y optimizar el rendimiento de la estrategia.

  7. Flexibilidad: Varios parámetros ajustables permiten a los comerciantes optimizar sus operaciones en función de las diferentes condiciones del mercado y de las preferencias personales.

Riesgo estratégico

  1. Sensibilidad de parámetros: el rendimiento de la estrategia depende en gran medida de la elección de los parámetros de entrada, y la configuración inadecuada de los parámetros puede causar exceso de comercio o perder oportunidades importantes.

  2. Dependencia de las condiciones del mercado: en un mercado convulso, las estrategias pueden generar frecuentes falsas señales que conducen a pérdidas continuas.

  3. Riesgo de deslizamiento: en un mercado de rápida fluctuación, el precio de ejecución real puede diferir significativamente del precio de la señal.

  4. Riesgo de optimización excesiva: el ajuste excesivo de los parámetros para adaptarlos a los datos históricos puede causar un exceso de ajuste y afectar el rendimiento futuro del disco.

  5. Fallas técnicas: dependiendo de los cálculos complejos de los indicadores técnicos, fallas en el sistema o errores en los datos pueden conducir a decisiones comerciales erróneas.

Para reducir estos riesgos, se recomienda:

  • Un análisis exhaustivo de los antecedentes y de las pruebas futuras.
  • El uso de medidas adecuadas de gestión de posiciones y control de riesgos.
  • Revisar periódicamente y ajustar los parámetros de la estrategia para adaptarse a las condiciones cambiantes del mercado.
  • Implementar mecanismos sólidos para el manejo de errores y la supervisión.

Dirección de optimización de la estrategia

  1. Ajuste de parámetros dinámicos: Implementa un mecanismo de ajuste de parámetros adaptativos para ajustar automáticamente la longitud y el umbral de los EMA según la volatilidad del mercado.

  2. Aumentar los filtros: introducir indicadores técnicos o básicos adicionales como filtros para mejorar la calidad de la señal.

  3. Integración de aprendizaje automático: optimización de la selección de parámetros y el proceso de generación de señales utilizando algoritmos de aprendizaje automático.

  4. Análisis de correlación entre varias variedades: considera datos de varias variedades relevantes para proporcionar una perspectiva más completa del mercado.

  5. Integración de eventos de noticias: incorpora la función de análisis de eventos de noticias para ajustar la estrategia durante la publicación de datos económicos importantes.

  6. Ajuste de la volatilidad: el porcentaje objetivo y el nivel de parada se ajustan a la dinámica de la volatilidad del mercado.

  7. Mejorar la gestión de riesgos: Implementar estrategias más complejas de gestión de posiciones y control de riesgos, como el ajuste de posiciones basado en la volatilidad.

Estas orientaciones de optimización tienen como objetivo mejorar la adaptabilidad y la estabilidad de las estrategias para que puedan mantener un buen rendimiento en diferentes condiciones de mercado.

Resumir

La estrategia de objetivo de marco temporal múltiple de la clasificación de Lorenz es un sistema de negociación integral que combina métodos avanzados de análisis técnico y un mecanismo de gestión de riesgos inteligente. A través del análisis de marcos temporales múltiples, la identificación de tendencias dinámicas y la optimización de los precios de los objetivos, la estrategia tiene el potencial de lograr un rendimiento comercial estable en diversas condiciones de mercado. Sin embargo, también se enfrenta a desafíos como la sensibilidad de los parámetros y la dependencia del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2023-07-31 00:00:00
end: 2024-07-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Lorenzian Classification Strategy with Target and Multi-Timeframe", overlay=true)

// Input parameters
length = input.int(5, "Lorenzian Length", minval=1)
threshold = input.float(1.0, "Threshold", step=0.1)
lookback = input.int(3, "Lookback Candles", minval=1, maxval=20)
targetPercentage = input.float(1.5, "Target Percentage (%)", step=0.1) // Target percentage for exit
higherTimeframe = input.timeframe("D", "Higher Timeframe") // Higher timeframe for multi-timeframe analysis

// Lorenzian Classification calculation for current timeframe
ema1 = ta.ema(hlc3, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)

d = ema1 - ema2
ci = d / (0.015 * ta.ema(math.abs(d), length)) * 100

lorenzian = ema3 + ci

// Lorenzian Classification calculation for higher timeframe
hlc3_htf = request.security(syminfo.tickerid, higherTimeframe, (high + low + close)/3 )
ema1_htf = ta.ema(hlc3_htf, length)
ema2_htf = ta.ema(ema1_htf, length)
ema3_htf = ta.ema(ema2_htf, length)

d_htf = ema1_htf - ema2_htf
ci_htf = d_htf / (0.015 * ta.ema(math.abs(d_htf), length)) * 100

lorenzian_htf = ema3_htf + ci_htf

// Signal generation
crossUp = ta.crossover(close, lorenzian)
crossDown = ta.crossunder(close, lorenzian)

// Determine color based on price position relative to the line
lineColor = close > ema3 ? color.green : color.red
lineColorH = close > ema3_htf ? color.blue : color.red

// Plot the line with dynamic color
plot(ema3, color=lineColor, title="EMA3", linewidth=2)
plot(ema3_htf, color=lineColorH, title="EMA3 HTF", linewidth=2)

// Function to check for opposite movement
oppositeMove(isLong) =>
    if isLong
        lowest = ta.lowest(low, lookback)
        lowest < lorenzian[lookback]
    else
        highest = ta.highest(high, lookback)
        highest > lorenzian[lookback]

// Generate buy and sell signals
buySignal = crossUp and oppositeMove(true)
sellSignal = crossDown and oppositeMove(false)

// Calculate and manage target price
var float targetPrice = na
var float plotTargetPrice = na
var float entryPrice = na

// Variables to track trade outcomes
var int targetMet = 0
var int targetNotMet = 0
var int totalTrades = 0

if (buySignal)
    strategy.entry("Buy", strategy.long)
    entryPrice := close
    targetPrice := entryPrice * (1 + targetPercentage/100)
    plotTargetPrice := targetPrice
    totalTrades := totalTrades + 1

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    entryPrice := close
    targetPrice := entryPrice * (1 - targetPercentage/100)
    plotTargetPrice := targetPrice
    totalTrades := totalTrades + 1

// Check if target price is met to exit
if (not na(targetPrice))
    if (strategy.position_size > 0 and high >= targetPrice) // Long position exit condition
        strategy.close("Buy")
        targetPrice := na
        entryPrice := na
        targetMet := targetMet + 1
    else if (strategy.position_size > 0 and low < entryPrice * (1 - targetPercentage/100)) // Stop loss for long
        strategy.close("Buy")
        targetPrice := na
        entryPrice := na
        targetNotMet := targetNotMet + 1
    
    if (strategy.position_size < 0 and low <= targetPrice) // Short position exit condition
        strategy.close("Sell")
        targetPrice := na
        entryPrice := na
        targetMet := targetMet + 1
    else if (strategy.position_size < 0 and high > entryPrice * (1 + targetPercentage/100)) // Stop loss for short
        strategy.close("Sell")
        targetPrice := na
        entryPrice := na
        targetNotMet := targetNotMet + 1

// Reset plotTargetPrice when position is closed
if (strategy.position_size == 0)
    plotTargetPrice := na

// Plot signals and target price
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.purple, style=shape.triangledown, size=size.small)
plot(plotTargetPrice, color=color.yellow, title="Target Price", style=plot.style_circles, linewidth=2)

// Add alerts
alertcondition(buySignal, title="Buy Signal", message="Lorenzian Buy Signal")
alertcondition(sellSignal, title="Sell Signal", message="Lorenzian Sell Signal")

// Calculate success percentage
successPercentage = totalTrades > 0 ? (targetMet / totalTrades) * 100 : 0

// Create a table to display trade outcomes
var table tradeStats = table.new(position.top_right, 2, 3, border_width=1)
table.cell(tradeStats, 0, 0, "Targets Met", bgcolor=color.new(color.green, 30))
table.cell(tradeStats, 1, 0, "Targets Missed", bgcolor=color.new(color.red, 30))
table.cell(tradeStats, 0, 1, str.tostring(targetMet), bgcolor=color.new(color.green, 30))
table.cell(tradeStats, 1, 1, str.tostring(targetNotMet), bgcolor=color.new(color.red, 30))
table.cell(tradeStats, 0, 2, "Success Rate", bgcolor=color.new(color.blue, 30))
table.cell(tradeStats, 1, 2, str.tostring(successPercentage, "#.##") + "%", bgcolor=color.new(color.blue, 30))