Estratégia de acompanhamento de tendências baseada em Ichimoku Kinko Hyo


Data de criação: 2023-12-11 15:00:29 última modificação: 2023-12-11 15:00:29
cópia: 0 Cliques: 666
1
focar em
1621
Seguidores

Estratégia de acompanhamento de tendências baseada em Ichimoku Kinko Hyo

Visão geral

Esta estratégia é baseada no design de indicadores técnicos Ichimoku, com um método de negociação de rastreamento de tendências e de ruptura de equilíbrio, com o objetivo de capturar tendências de preços de linha média e longa e obter lucros estáveis.

Princípio da estratégia

A estratégia usa as cinco linhas do gráfico de equilíbrio de primeira vista - linha de viragem, linha de referência, linha de frente, linha de liderança e linha de atraso, para determinar a tendência do preço e a resistência de suporte. As regras de avaliação específicas são as seguintes:

  1. Quando o preço de fechamento atravessa a linha de referência e a linha de referência se move de forma irregular, um sinal de compra é gerado.
  2. Quando o preço de fechamento atravessa a linha de referência abaixo dela e a linha de referência se movimenta de forma irregular, gera um sinal de venda.
  3. A liquidez é melhor quando o preço de fechamento é mais alto do que o preço da nuvem, permitindo a construção de depósitos.
  4. Quando o preço de fechamento está abaixo do nível do mercado, a liquidez é fraca e a construção de depósitos é proibida.
  5. A linha de atraso que atravessa o preço de fechamento gera um sinal de compra.
  6. O atraso abaixo da linha do preço de fechamento gerou um sinal de venda.

A decisão final sobre o momento de entrada foi tomada após o julgamento de todos os sinais de negociação acima.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A tabela de equilíbrio de primeira vista é usada para avaliar tendências, filtrar o ruído do mercado e bloquear tendências de linha média e longa.
  2. A combinação dos dados da cloud computing com a análise da liquidez permite evitar o risco de construção de depósitos.
  3. A linha de atraso serve como sinal de confirmação, para evitar falsas rupturas.
  4. As regras são simples, claras e fáceis de implementar.

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  1. A configuração incorreta dos parâmetros pode levar a oportunidades de negociação perdidas.
  2. A tendência é mutada e não se pode parar a perda a tempo.
  3. O risco de perda de uma posição em que há mais do que uma pessoa é maior.

Para os riscos acima mencionados, pode ser resolvido por meio da configuração de parâmetros de otimização, em combinação com outros indicadores para avaliar a mudança de tendência e o stop loss rigoroso.

Direção de otimização

A estratégia também pode ser melhorada em:

  1. Optimizar os parâmetros da tabela de equilíbrio inicial, procurando a melhor combinação.
  2. Aumentar os filtros dos indicadores de preços e quantidades para evitar deslocamentos de tendências.
  3. O ponto de inflexão é combinado com os indicadores de volatilidade.
  4. Adicionar um modelo de aprendizagem de máquina para avaliar o estado da tendência.

Resumir

Esta estratégia usa um balanço de balanço para determinar a tendência de preços e a situação de liquidez, e usa um modelo de rastreamento de tendências para filtrar o ruído de forma eficaz para capturar a tendência da linha média longa, com menor risco de retração e adequado para a posse da linha média longa. A estratégia pode aumentar o fator de lucro através da otimização adicional dos parâmetros de configuração, adicionando indicadores de filtragem auxiliares e sinais de reversão de tendência.

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

//@version=3
strategy("My Ichimoku Strat", overlay=true,default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, currency=currency.EUR)
// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// === SERIES SETUP ===
//**** Inputs *******
KijunSenLag = input(6,title="KijunSen Lag",minval=1)

//Kijun-sen
//Support resistance line, buy signal when price crosses it
KijunSen = sma((high+low)/2,26)
buy2 = crossover(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))
sell2= crossunder(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))


//Tenkan-Sen
TenkanSen = sma((high+low)/2,9)

//Senkou Span A 
SenkouSpanA = (KijunSen + TenkanSen)/2

//Senkou Span B 
SenkouSpanB = sma((high+low)/2,52)

//Cloud conditions : ignore buy if price is under the cloud
// Huge cloud means safe support and resistance. Little cloud means danger.
buy3 = close > SenkouSpanA and close > SenkouSpanB
sell3 = close < SenkouSpanA and close < SenkouSpanB


//Chikou Span
//Buy signal : crossover(ChikouSpan,close)
//Sell Signal : crossunder(ChikouSpan,close)
ChikouSpan = close
buy1=crossover(ChikouSpan,close[26])
sell1=crossunder(ChikouSpan,close[26])

plotshape(buy1,style=shape.diamond,color=lime,size=size.small)
plotshape(sell1,style=shape.diamond,color=orange,size=size.small)

//Alerts

buyCompteur = -1
buyCompteur := nz(buyCompteur[1],-1)
buyCompteur := buy2 or buy3 ? 1 : buyCompteur
buyCompteur := buyCompteur > 0 ? buyCompteur + 1 : buyCompteur
buyCompteur := sell2 or sell3 ? -1 : buyCompteur

sellCompteur = -1
sellCompteur := nz(sellCompteur[1],-1)
sellCompteur := sell2 or sell3 ? 1 : sellCompteur
sellCompteur := sellCompteur > 0 ? sellCompteur + 1 : sellCompteur
sellCompteur := buy2 or buy3 ? -1 : sellCompteur

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8)
buy=buy2 and buy3 or (buy1 and sellCompteur <=8)
plotchar(buy,char='B',size=size.small,color=lime)
plotchar(sell,char='S',size=size.small,color=orange)

//plots
plot(KijunSen,title="Kijun-Sen",color=blue,linewidth=4)
plot(TenkanSen,title="Tenkan-Sen",color=red,linewidth=2)
cloudA = plot(SenkouSpanA,title="cloud A", color=lime,offset=26,linewidth=2)
cloudB = plot(SenkouSpanB,title="cloud B", color=orange,offset=26,linewidth=2)
plot(ChikouSpan,title="lag span",color=fuchsia, linewidth=2,offset=-26)
//plot()
fill(cloudA,cloudB,color=SenkouSpanA>SenkouSpanB?lime:orange)
//plot(close,color=silver,linewidth=4)

// === ALERTS ===
strategy.entry("L", strategy.long, when=(buy and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(sell and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))