Estratégia de negociação quantitativa baseada na nuvem de Ichimoku e na média móvel

Autora:ChaoZhang, Data: 2024-02-20 17:12:35
Tags:

img

Resumo

Esta estratégia combina o indicador Ichimoku Cloud e o indicador de média móvel para implementar uma estratégia de negociação quantitativa simples. Gerar sinais de compra quando a linha de conversão está acima da linha de base e o preço de fechamento está acima da linha de conversão. Gerar sinais de venda quando a linha de conversão está abaixo da linha de base e o preço de fechamento está abaixo da linha de conversão. A estratégia é adequada para negociação de curto prazo de ativos de alta volatilidade como criptomoedas.

Estratégia lógica

A nuvem Ichimoku contém três linhas: a linha de conversão, a linha de base e o intervalo de atraso. A linha de conversão representa o preço médio de curto prazo e a linha de base representa o preço médio de longo prazo. O intervalo de atraso é geralmente a média da conversão e das linhas de base.

A Nuvem Ichimoku também contém duas linhas principais: Leading Span A e Leading Span B. Eles representam a faixa média de flutuações de preços em diferentes períodos.

Esta estratégia usa a linha de conversão para determinar a direção geral da tendência e as linhas principais para medir o impulso. Ela gera sinais de negociação com base na tendência, impulso e preços de fechamento.

Vantagens

As principais vantagens desta estratégia são:

  1. Utiliza uma combinação de indicadores para fornecer sinais fiáveis.
  2. Só entra em fuga sólida para evitar sinais falsos.
  3. Adequado para a negociação de activos voláteis de curto prazo com elevado potencial de lucro.
  4. Lógica simples que é fácil de entender e modificar.
  5. Facilmente extensivel para um modelo multifator com mais indicadores.

Riscos

Os principais riscos desta estratégia são:

  1. Precisa de definir stop loss para controlar a perda por transação.
  2. Risco de reversão de preço. O preço pode reverter após o sinal ser acionado. Pode afrouxar as condições de retenção para reduzir esse risco.
  3. Os resultados são sensíveis aos parâmetros, precisamos de testes combinatórios exaustivos para encontrar o ideal.
  4. Pode funcionar muito bem historicamente, mas falhar na negociação real.

Oportunidades de melhoria

Algumas formas de reforçar esta estratégia:

  1. Teste combinações de mais indicadores como KDJ, BOLL, MACD para encontrar melhores parâmetros.
  2. Incorporar mecanismos de stop loss como stop loss em movimento ou x vezes atr.
  3. Otimizar os filtros de entrada com volume, volatilidade, etc.
  4. Aplicar regras mais rígidas ao estabelecimento de participações, reduzindo o período de participação ou aumentando o objetivo de obtenção de lucros.
  5. Introduzir aprendizado de máquina para encontrar combinações ótimas de parâmetros usando redes neurais.

Conclusão

Em resumo, esta é uma estratégia quantitativa de negociação muito simples que combina Ichimoku Cloud e média móvel para determinar a tendência e o impulso para os sinais de negociação. É adequado para a negociação de ativos voláteis de curto prazo com bom potencial de lucro.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud + ema 50 Strategy", overlay=true)

len = input.int(50, minval=1, title="Length")
src = input(close, title="Source")
out = ta.ema(src, len)

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(1, minval=1, title="Lagging Span")

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

p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
     title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
     title="Leading Span B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))

plot(out, title="EMA", color=color.white)

// Condition for Buy Signal
buy_signal = close > out and leadLine1 > leadLine2

// Condition for Sell Signal
sell_signal = close < out and leadLine2 > leadLine1

// Strategy entry and exit conditions
if (buy_signal)
    strategy.entry("Buy", strategy.long)
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Exit long position if candle closes below EMA 50
if (strategy.opentrades > 0)
    if (close < out)
        strategy.close("Buy")

// Exit short position if candle closes above EMA 50
if (strategy.opentrades < 0)
    if (close > out)
        strategy.close("Sell")


Mais.