Estratégia de negociação quantitativa baseada no gráfico de nuvem Ichimoku


Data de criação: 2024-01-12 14:20:43 última modificação: 2024-01-12 14:20:43
cópia: 0 Cliques: 680
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa baseada no gráfico de nuvem Ichimoku

Visão geral

A estratégia baseia-se no Índice de Gráfico da Nuvem de Ichimoku, um sistema de negociação quantitativa projetado principalmente para ativos com boa tendência. A estratégia combina funções como stop loss, stop loss e tracking stop loss, com o objetivo de obter um lucro estável.

Princípio da estratégia

O gráfico da nuvem Ichimoku é composto por uma linha de conversão, uma linha de referência, uma linha de frente 1, uma linha de frente 2 e um gráfico da nuvem. Os sinais de negociação para esta estratégia vêm da relação entre o preço e o gráfico da nuvem.

Esta estratégia também estabelece um stop loss e um stop loss baseado no indicador ATR. O indicador ATR pode efetivamente capturar a volatilidade do mercado. O stop loss é 2 vezes o ATR e o stop loss é 4 vezes o ATR. Isso pode efetivamente controlar perdas individuais e bloquear parte dos lucros.

Finalmente, a estratégia usa um mecanismo de rastreamento de stop loss. Concretamente, para fazer pedidos em excesso, será usado o dobro do ATR como retração, ajustando a linha de stop loss em tempo real para bloquear o lucro; Para fazer pedidos em branco, será usado o dobro do ATR como retração, ajustando a linha de stop loss em tempo real para bloquear o lucro.

Análise de vantagens estratégicas

  1. Os indicadores da nuvem de Ichimoku são capazes de capturar as tendências
  2. Combinação de ATR com stop loss para controlar o risco
  3. A utilização de um mecanismo de stop-loss de rastreamento permite um bom bloqueio de lucros.
  4. A lógica da estratégia é simples, clara, fácil de entender e verificar.
  5. Parametrização, ajuste de parâmetros de acordo com diferentes mercados

Análise de Riscos

  1. O mapa da nuvem de Ichimoku é sensível à configuração do Parameter, e a configuração inadequada pode perder oportunidades de negociação ou gerar sinais errados
  2. Seguimento de stop loss pode ser prematuro se a configuração for muito grande
  3. As ações fortes podem ultrapassar a linha de parada dada pelo indicador ATR ou seguir a linha de parada
  4. Os custos de transação também afetam a rentabilidade

A solução para o risco:

  1. Optimizar os parâmetros do mapa da nuvem de Ichimoku para encontrar a configuração mais adequada
  2. Avaliação de stop loss de rastreamento razoável, que não pode ser grande ou pequena
  3. Aumento da margem de perda para ações fortes
  4. Escolha um corretor com taxas baixas

Direção de otimização da estratégia

  1. Filtragem de sinais em combinação com outros indicadores técnicos para reduzir erros de negociação
  2. Optimização de parâmetros com base em dados históricos / retrospectivas
  3. As configurações de parâmetros de diferentes variedades podem ser otimizadas individualmente
  4. Pode considerar-se um ajustamento dinâmico do limiar de perda
  5. Engenharia de características em combinação com algoritmos para criar sinais de negociação mais confiáveis

Resumir

Esta estratégia é, em geral, uma estratégia de acompanhamento de tendências estável. A orientação da tendência é baseada nos indicadores do gráfico da nuvem Ichimoku; O indicador ATR define o stop loss; O lucro é bloqueado com o stop loss.

Código-fonte da estratégia
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud Strategy with SL, TP, and Trailing Stop", overlay=true)

conversionPeriods = input(9, "Conversion Line Length")
basePeriods = input(26, "Base Line Length")
laggingSpan2Periods = input(52, "Leading Span B Length")
displacement = input(26, "Lagging Span")
atrLength = input(14, title="ATR Length")

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

// Plot the Ichimoku Cloud components
plot(conversionLine, color=color.blue, title="Conversion Line")
plot(baseLine, color=color.red, title="Base Line")
plot(leadLine1, color=color.green, title="Leading Span A")
plot(leadLine2, color=color.orange, title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, color=color.green, title="Kumo Cloud Upper Line")
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, color=color.red, title="Kumo Cloud Lower Line")

// ATR for stop loss and take profit
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 2
takeProfit = atrValue * 4

// Strategy entry and exit conditions
longCondition = ta.crossover(close, leadLine1) and close > leadLine2
shortCondition = ta.crossunder(close, leadLine1) and close < leadLine2

// Plot buy and sell signals
plotshape(series=longCondition ? leadLine1 : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition ? leadLine1 : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Execute strategy orders with stop loss and take profit
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition) // Close buy position when sell condition is met
strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition) // Close sell position when buy condition is met

// Trailing stop
strategy.cancel("Trailing Stop")
var float trailingStopPrice = na
if (longCondition)
    trailingStopPrice := math.max(trailingStopPrice, close - atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Buy", trail_offset=atrValue * 2, trail_price=trailingStopPrice)
else if (shortCondition)
    trailingStopPrice := math.min(trailingStopPrice, close + atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Sell", trail_offset=atrValue * 2, trail_price=trailingStopPrice)