Estratégias de árvores de decisão multi-indicadores: IMACD, EMA e Tabela de Equilíbrio


Data de criação: 2024-01-22 11:25:56 Última modificação: 2024-01-22 11:25:56
Reprodução: 0 O número de cliques: 341
1
Preocupados
1105
Observadores

多指标决策树策略:IMACD、EMA和一目均衡表

Resumo

A estratégia utiliza vários indicadores técnicos, como o IMACD, EMA e o primeiro balanço, para construir um modelo de árvore de decisão abrangente para enviar sinais de compra e venda.

Princípios estratégicos

  1. IMACD: MACD reforçado, para melhor captar as tendências do mercado com o ImpulseMACD e o ImpulseHisto
  2. Tabela de equilíbrio de primeira vista: traçar linhas de troca, linhas de referência, linhas A, B, etc., detectar níveis de suporte e resistência
  3. EMA 40: orientação de tendências
  4. Emissão de sinais de mais e menos de acordo com a relação específica do IMACD, o componente de gráfico de nuvem e a EMA 40

Multi-sinal: Multi-sinal quando o IMACD é uma cor de condições específicas e a EMA 40 é superior ao gráfico de nuvens

Sinal de falha: falha quando o IMACD é vermelho e a EMA 40 está abaixo do trajeto do gráfico de nuvens

Análise de vantagens

  1. Combinação de múltiplos indicadores, avaliação integrada das tendências do mercado, melhoria da precisão das decisões
  2. Modelos de árvores de decisão classificados de forma clara, geração de sinais de negociação clara
  3. EMA de comprimento ajustável, maior flexibilidade de julgamento auxiliar
  4. Combinado com gráficos de nuvens e indicadores de tendência, melhor identificação de suporte e resistência

Análise de riscos

  1. Combinação de múltiplos indicadores, configuração de parâmetros mais complexa
  2. A duração da EMA não está configurada adequadamente e pode causar sinais de negociação falsos.
  3. A pesquisa também mostra que o número de pessoas que não têm acesso a um serviço de saúde é muito maior.

Resolução de riscos: optimização da configuração de parâmetros, ajuste do comprimento da EMA e simplificação do processo operacional.

Optimização

  1. Otimizar configurações de parâmetros para aumentar a estabilidade estratégica
  2. Aumentar a estratégia de stop loss para controlar perdas individuais
  3. Re-teste com base em grandes volumes de dados para melhorar a qualidade do sinal
  4. Criar árvores de decisão adaptativas combinadas com algoritmos de aprendizagem de máquina

Resumo

Esta estratégia usa uma combinação de vários indicadores para identificar tendências e construir um modelo de árvore de decisão para gerar sinais de negociação. As vantagens são a alta qualidade do sinal, alta precisão e otimização gradual. É necessário focar na otimização de parâmetros e estratégias de stop loss para controlar o risco de negociação e obter retornos estáveis a longo prazo.

Código de origem 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)

                
            
Mais informações