Estratégia de rastreamento de tendências da linha de equilíbrio de Ichimoku

Autora:ChaoZhang, Data: 2023-10-12 17:29:46
Tags:

Resumo

Esta estratégia usa a linha de conversão, a linha de base e os limites da nuvem do indicador Ichimoku Kinko Hyo para identificar a direção da tendência e implementar negociações de rastreamento de tendência.

Estratégia lógica

A estratégia utiliza principalmente as seguintes linhas de indicadores de Ichimoku:

  • Linha de conversão (Tenkan-sen): Representa a tendência a curto prazo, calculada como a média do máximo máximo e do mínimo mínimo nos últimos 9 períodos
  • Linha de base (Kijun-sen): Representa a tendência a médio prazo, calculada como a média do máximo máximo e do mínimo mínimo nos últimos 26 períodos
  • Duração máxima A (duração Senkou A): média das linhas de conversão e de base
  • Leading Span B (Senkou Span B): a média do máximo máximo e do mínimo mínimo durante os últimos 52 períodos

O preço é longo quando o preço ultrapassa a nuvem e é curto quando o preço ultrapassa a nuvem. As razões de entrada e saída são desencadeadas quando o preço ultrapassa a nuvem, respectivamente. As saídas são desencadeadas quando as taxas de lucro ou perda são atingidas.

Análise das vantagens

  • Usa Ichimoku para identificar a direção da tendência, evitando falsos sinais do ruído do mercado
  • A quebra de nuvens de cima/baixo identifica pontos de reversão da tendência de forma eficiente
  • Pontos de lucro e stop loss ajudam a bloquear os lucros e controlar o risco

Análise de riscos

  • Ichimoku tem atraso e pode perder os melhores pontos de entrada.
  • Mal ajuste de parâmetros de linhas como Linha de conversão pode causar sinais falsos
  • Previsão de prejuízo

Orientações de otimização

  • Considerar a combinação de outros indicadores para melhorar a precisão
  • Optimização dinâmica dos parâmetros para diferentes períodos e mercados
  • Usar o stop loss para ajustar as paradas com base na ação do preço e evitar a saída antecipada
  • Desenvolver uma estratégia automatizada de lucro/perda para ajustar de forma inteligente os pontos com base na volatilidade

Resumo

Esta estratégia usa a nuvem Ichimoku para identificar tendências e implementar um simples rastreamento de tendências. Apesar de algum atraso e sinais falsos, as otimizações em parâmetros, paradas e o uso de outros indicadores podem melhorá-la. Fácil de entender e implementar, é bom para iniciantes aprenderem e se referirem ao desenvolver outras estratégias.


/*backtest
start: 2023-10-04 00:00:00
end: 2023-10-08 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Estratégia com Ichimoku" , pyramiding=0, calc_on_every_tick = true, initial_capital = 20000, commission_type = strategy.commission.cash_per_order, commission_value = 10.00)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////Ichimoku Clouds////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////(VERSÃO 40.0)//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

periodoLinhaDeConversao = input(defval=9, title="Tenkan-sen (Linha de Conversão)",  minval=1)
periodoLinhaBase = input(defval=26, title="Kijun-sen (Linha Base)",  minval=1)
periodoNivelAdiantadoB = input(defval=52, title="Senkou Span B (Nível adiantado B)",  minval=1)
deslocamento = input(defval=26, title="Deslocamento",  minval=1)

linhaDeConversao = (highest(high,periodoLinhaDeConversao)+lowest(low,periodoLinhaDeConversao))/2
linhaBase = (highest(high,periodoLinhaBase)+lowest(low,periodoLinhaBase))/2
nivelAdiantadoA = (linhaDeConversao + linhaBase)/2
nivelAdiantadoB = (highest(high,periodoNivelAdiantadoB)+lowest(low,periodoNivelAdiantadoB))/2

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy.initial_capital = 50000
//Hardcoded quantity - strategy.entry(qty=)
capitalInicial = strategy.initial_capital
lotes = (strategy.initial_capital - (strategy.initial_capital % (open*100)))/open

//Percentage input goal - strategy.exit(profit=)
percentGoal = input (defval = 5.0, title = "Goal (%)", type = float, minval=0.0, step=0.1)
longGoal = (strategy.position_avg_price * (percentGoal/100)) * 100
shortGoal = (strategy.position_avg_price - (strategy.position_avg_price / (1+(percentGoal/100)))) * 100

//Percentage input stop - strategy.exit(loss=)
percentStop = input (defval = 0.5, title = "Stop (%)", type = float, minval=0.0, step=0.1)
longStop = (strategy.position_avg_price * (percentStop/100)) * 100
shortStop = (strategy.position_avg_price * (percentStop/100)) * 100

strategy.entry('entryLong', strategy.long, lotes, when = strategy.position_size == 0 and crossover(close,max(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.entry('entryShort', strategy.short, lotes, when = strategy.position_size == 0 and crossunder(close,min(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.exit('exitLong', 'entryLong', profit = longGoal, loss = longStop)
strategy.exit('exitShort', 'entryShort', profit = shortGoal, loss = shortStop)

plot(strategy.equity, title="Variação de capital", color=white)
//plot(strategy.position_size, color=red)

Mais.