Estratégia de árvore de decisão multiindicador: IMACD, EMA e Ichimoku Kinko Hyo


Data de criação: 2024-01-22 11:25:56 última modificação: 2024-01-22 11:25:56
cópia: 0 Cliques: 664
1
focar em
1617
Seguidores

Estratégia de árvore de decisão multiindicador: IMACD, EMA e Ichimoku Kinko Hyo

Visão geral

Esta estratégia utiliza um conjunto de indicadores técnicos, tais como IMACD, EMA e balanço inicial, para construir um modelo de árvore de decisão abrangente para emitir sinais de compra e venda.

Princípio da estratégia

  1. IMACD: MACD reforçado para capturar melhor as tendências do mercado através do ImpulseMACD e do ImpulseHisto
  2. Tabela de equilíbrio de primeira vista: traçar a linha de troca, a linha de referência, a linha de vanguarda A, a linha de vanguarda B, etc., para detectar o suporte e a resistência
  3. EMA 40: ajuda a determinar a direção da tendência
  4. Emissão de sinais de excesso e excesso de espaço, de acordo com a relação específica entre o IMACD, os componentes do mapa da nuvem e o EMA 40

Fazer mais sinais: Fazer mais quando o IMACD é uma cor de condições específicas e o EMA 40 está acima da trajetória da nuvem

Cancelar: Cancelar quando o IMACD estiver vermelho e o EMA 40 estiver abaixo da trajectória do mapa de nuvens

Análise de vantagens

  1. Portfólio de múltiplos indicadores para avaliar as tendências do mercado e melhorar a precisão das decisões
  2. Modelos de árvores de decisão classificados com clareza e geração de sinais de transação
  3. A duração da EMA é ajustável, com maior flexibilidade para julgamentos auxiliares
  4. Combinação de gráficos de nuvens e indicadores de tendência para melhor identificar suporte e resistência

Análise de Riscos

  1. Combinação de múltiplos indicadores, configuração de parâmetros mais complexa
  2. EMAs de comprimento mal definidos podem causar falsos sinais de negociação
  3. O problema é que, quando se trata de uma operação, é preciso estar atento a vários indicadores ao mesmo tempo.

Solução de risco: optimização de configuração de parâmetros, ajuste do comprimento do EMA, simplificação do processo de operação.

Direção de otimização

  1. Optimizar configurações de parâmetros para melhorar a estabilidade da estratégia
  2. Aumentar as estratégias de stop loss para controlar as perdas individuais
  3. A qualidade do sinal é melhorada com a retroalimentação baseada em grandes quantidades de dados
  4. Arbitragem de árvores de decisão adaptativas com algoritmos de aprendizagem de máquina

Resumir

Esta estratégia utiliza uma combinação de vários indicadores para identificar tendências e construir modelos de árvores de decisão para gerar sinais de negociação. Os benefícios são a alta qualidade do sinal, a alta precisão e a possibilidade de otimização gradual. É necessário prestar atenção à otimização de parâmetros e a estratégia de parada de perdas para controlar o risco de negociação e obter retornos estáveis a longo prazo.

Código-fonte da estratégia
/*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)