Estrategia de árbol de decisiones de indicadores múltiples: IMACD, EMA e Ichimoku Kinko Hyo


Fecha de creación: 2024-01-22 11:25:56 Última modificación: 2024-01-22 11:25:56
Copiar: 0 Número de Visitas: 664
1
Seguir
1617
Seguidores

Estrategia de árbol de decisiones de indicadores múltiples: IMACD, EMA e Ichimoku Kinko Hyo

Descripción general

Esta estrategia utiliza un conjunto de indicadores técnicos, como el IMACD, el EMA y la tabla de equilibrio a primera vista, para construir un modelo de árbol de decisión integral para emitir señales de compra y venta.

Principio de estrategia

  1. IMACD: MACD mejorado para capturar mejor las tendencias del mercado a través de ImpulseMACD e ImpulseHisto
  2. Tabla de equilibrio a primera vista: trazar la línea de cambio de manos, la línea de referencia, la línea de vanguardia A, la línea de vanguardia B, etc., para detectar el soporte y la resistencia
  3. EMA 40: ayuda a determinar la dirección de la tendencia
  4. Emite señales de sobre y de vacío según las relaciones específicas de IMACD, los componentes de los mapas en la nube y la EMA 40

Hacer más señales: Hacer más cuando el IMACD es de un color determinado y el EMA 40 es superior al de la imagen de la nube

Señales de vacío: vacío cuando el IMACD está en rojo y el EMA 40 está por debajo de la órbita de la nube

Análisis de las ventajas

  1. Portfolio de indicadores múltiples para evaluar las tendencias del mercado y mejorar la precisión de las decisiones
  2. Modelos de árboles de decisión clasificados con claridad, generación de señales de transacción clara
  3. La duración de la EMA es ajustable, con una mayor flexibilidad para el juicio auxiliar
  4. Combinación de gráficos de nubes y indicadores de tendencias para identificar mejor soporte y resistencia

Análisis de riesgos

  1. Combinación de múltiples indicadores, con una configuración de parámetros más compleja
  2. EMA incorrectamente ajustado puede generar señales falsas
  3. El problema es que hay que estar atento a varios indicadores al mismo tiempo, lo que dificulta el manejo.

Solución de riesgos: optimización de la configuración de parámetros, ajuste de la longitud de la EMA, simplificación de los procesos de operación.

Dirección de optimización

  1. Optimización de la configuración de los parámetros para mejorar la estabilidad de la estrategia
  2. Aumentar las estrategias de stop loss y controlar las pérdidas individuales
  3. La calidad de la señal mejorada mediante la retroalimentación de grandes volúmenes de datos
  4. Un árbol de decisión adaptativo combinado con algoritmos de aprendizaje automático

Resumir

Esta estrategia utiliza una combinación de varios indicadores para identificar tendencias y construir un modelo de árbol de decisión para generar señales de negociación. La ventaja es que la calidad de la señal es alta, la precisión es alta y es adecuada para la optimización gradual. Se debe prestar atención a la optimización de parámetros y a las estrategias de stop loss para controlar el riesgo de negociación y obtener un rendimiento estable a largo plazo.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Decision Tree Strategy: IMACD, EMA and Ichimoku [cryptoonchain]", overlay=true)

lengthMA = input(34, title="Length MA")
lengthSignal = input(9, title="Length Signal")
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(26, minval=1, title="Lagging Span")
emaLength = input(40, title="EMA Length")  // Added user-configurable EMA length

calc_smma(src, len) =>
    smma = float(na)
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

calc_zlema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    d = ema1 - ema2
    ema1 + d

src = ohlc4
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA)

md = (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? (src > hi ? color.rgb(128, 255, 0, 26) : color.green) : (src < lo ? color.red : color.orange)

colorCondition = color.rgb(128, 255, 0, 26)

conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods))
baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods))
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods))

// Use user-configurable length for EMA
ema40 = ta.ema(close, emaLength)

ebc = input(false, title="Enable bar colors")
barcolor(ebc ? mdc : na)

conversionLinePlot = plot(conversionLine, color=#2962FF, title="Conversion Line", display=display.none)
baseLinePlot = plot(baseLine, color=#B71C1C, title="Base Line", display=display.none)
laggingSpanPlot = plot(close, offset=-displacement + 1, color=#43A047, title="Lagging Span", display=display.none)
leadLine1Plot = plot(leadLine1, offset=displacement - 1, color=#A5D6A7, title="Leading Span A", display=display.none)
leadLine2Plot = plot(leadLine2, offset=displacement - 1, color=#EF9A9A, title="Leading Span B", display=display.none)
kumoCloudUpperLinePlot = plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Upper Line", display=display.none)
kumoCloudLowerLinePlot = plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Lower Line", display=display.none)
fill(kumoCloudUpperLinePlot, kumoCloudLowerLinePlot, color=leadLine1 > leadLine2 ? color.green : color.red)

a = (leadLine1 > leadLine2 ? leadLine1 : leadLine2) 
b = (leadLine1 < leadLine2 ? leadLine1 : leadLine2)  

if mdc == colorCondition and ema40 > a[displacement - 1]
    strategy.entry("Long", strategy.long)

if mdc == color.red and ema40 < b[displacement - 1]
    strategy.entry("Short", strategy.short)