Trata-se de uma estratégia quantitativa de acompanhamento de tendências baseada no indicador Ichimoku, que consiste principalmente na construção de posições longas e curtas em condições específicas para acompanhar as tendências do mercado, combinada com certos mecanismos de stop loss para controlar os riscos.
O núcleo desta estratégia é a construção de sinais de negociação baseados no indicador Ichimoku com certas configurações de parâmetros. O indicador Ichimoku consiste em quatro linhas: a linha de conversão, a linha de base, o intervalo principal A e o intervalo atrasado B. A linha de conversão é comumente conhecida como Tenkan-sen e a linha de base é chamada de Kijun-sen. Esta estratégia define diferentes parâmetros para Tenkan-sen e Kijun-sen para gerar sinais de negociação de cruz de ouro e cruz morta. Além disso, também incorpora breakouts de nuvem como uma condição auxiliar para desencadear entradas.
Especificamente, a estratégia segue principalmente as seguintes regras de negociação:
Vai longo quando o preço quebra acima do Tenkan-sen e deixa a nuvem;
Fechar posições longas quando o preço cair abaixo do Tenkan-sen;
Vai curto quando o preço quebra abaixo do Kijun-sen e entra na nuvem;
Fechar posições curtas quando o preço subir acima do Tenkan-sen.
Através desses princípios de negociação longa e curta, a estratégia pode efetivamente capturar os movimentos de tendência no mercado.
Em comparação com outras estratégias comuns de negociação de médias móveis, esta estratégia tem as seguintes vantagens:
Um julgamento de tendência mais preciso baseado no Ichimoku. Ichimoku consiste em múltiplas médias móveis, tornando-o mais confiável para o reconhecimento de tendências e filtrando o ruído de MAs individuais.
Melhor efeito de filtragem com linhas múltiplas.
Riscos controláveis: a definição da linha de stop loss permite o controle de stop loss e risco em tempo hábil.
Menores saques: operações menos desfavoráveis em comparação com outras estratégias de tendência reduzem a perda de saques.
Ajuste flexível dos parâmetros, que podem ser ajustados para se adaptarem às diferentes condições do mercado.
Ainda existem alguns riscos a considerar para esta estratégia:
Performance fraca em mercados de gama, podendo ocorrer desacelerações que levem a perdas de flutuação.
Inadequado reconhecimento de reversões de tendência: fraco em identificar reversões de tendência de curto prazo, pode perder oportunidades ou encontrar reversões súbitas.
Confiança no ajuste de parâmetros empíricos. Parâmetros diferentes podem afetar significativamente o desempenho, o que requer uma experiência histórica abundante.
Os seguintes aspectos podem ser otimizados para enfrentar os riscos acima referidos:
Adicionar indicadores de volatilidade para detectar mercados não em tendência e pausar a estratégia.
Incorporar sinais adicionais de reversão, como cruzamento da média móvel.
Utilize o aprendizado de máquina para otimização automática de parâmetros em vez de ajuste manual.
Estabelecer linhas de stop loss dinâmicas baseadas na volatilidade do mercado.
Em geral, esta estratégia aproveita a força do Ichimoku em capturar movimentos de tendência.
/*backtest start: 2022-12-13 00:00:00 end: 2023-12-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="RENKO ICHIMOKU STRATEGY", shorttitle="RENKO ICHIMOKU STRATEGY", overlay=true) ro = open rc = close tenkanSenPeriods = input(10, minval=1, title="Tenkan-sen"), kijunSenPeriods = input(30, minval=1, title="Kijun-sen") SenkouSpanBPeriods = input(60, minval=1, title="Senkou Span B"), displacement = input(30, minval=1, title="Chikou Span (Displacement)") donchian(len) => avg(lowest(len), highest(len)) tenkanSen = donchian(tenkanSenPeriods) kijunSen = donchian(kijunSenPeriods) SenkouSpanA = avg(tenkanSen, kijunSen) SenkouSpanB = donchian(SenkouSpanBPeriods) plot(tenkanSen, color=#0496ff, linewidth=2, title="Tenkan-sen") // plot(kijunSen, color=#991515, title="Kijun-sen") // plot(close, offset = -displacement, color=#459915, title="Chikou Span") p1 = plot(SenkouSpanA, offset = displacement, color=green, title="Senkou Span A") p2 = plot(SenkouSpanB, offset = displacement, color=red, title="Senkou Span B") fill(p1, p2, color = SenkouSpanA > SenkouSpanB ? green : red) // Entry/Exit Signals tk_cross_bull = tenkanSen > kijunSen tk_cross_bear = tenkanSen < kijunSen price_below_tenkan = open < tenkanSen and close < tenkanSen price_above_tenkan = open > tenkanSen and close > tenkanSen price_below_kinjun = close < kijunSen price_above_kinjun = close > kijunSen tekan_above_kinjun = tenkanSen > kijunSen tekan_below_kinjun = tenkanSen < kijunSen ss_high = max(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1]) ss_low = min(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1]) price_inside_kumo = close > ss_high and close < ss_low price_below_kumo = rc[1] < ro[1] and rc[0] < ro[0] and rc[1] < ss_low price_above_kumo = rc[1] > ro[1] and rc[0] > ro[0] and rc[1] > ss_high cs_cross_bull = mom(close, displacement-1) > 0 cs_cross_bear = mom(close, displacement-1) < 0 bullish = cs_cross_bull and not price_inside_kumo bearish = cs_cross_bear and not price_inside_kumo strategy.entry("Long", strategy.long, when=price_above_kumo and price_above_tenkan ) strategy.close("Long", when=price_below_tenkan ) strategy.entry("Short", strategy.short, when=price_below_kumo and price_below_tenkan ) strategy.close("Short", when=price_above_tenkan ) // longCondition = crossover(sma(close, 14), sma(close, 28)) // if (longCondition) // strategy.entry("My Long Entry Id", strategy.long) // shortCondition = crossunder(sma(close, 14), sma(close, 28)) // if (shortCondition) // strategy.entry("My Short Entry Id", strategy.short)