Esta estratégia utiliza múltiplos sinais da Nuvem Ichimoku para desenhar uma estratégia de tendência pura que visa capturar tendências de médio a longo prazo, filtrar consolidações e seguir direções de tendência fortes.
Esta estratégia usa principalmente o Tenkan-sen, Kijun-sen, Chikou Span e outros indicadores-chave da Nuvem Ichimoku. Para julgar tendências de longo prazo, ela se concentra na relação entre o Span líder e o atrasado; para tempos específicos de entrada e saída, olha para os cruzamentos Tenkan-sen e Kijun-sen e mudanças na relação de preços com a Nuvem.
Em resumo, a lógica central é: confirmar a tendência de médio e longo prazo -> esperar por sinais fortes de retomada da tendência -> entrar para seguir as tendências -> sair com stop loss.
Especificamente, para determinar a tendência de médio e longo prazo, ele usa a relação entre o Span líder e o retardante (acima do Span verde líder sinalizando tendência ascendente e vice-versa).
Isto elimina as consolidações de curto a médio prazo e permite captar fortes tendências para um desempenho superior constante nos mercados.
(1) Usar a Nuvem de Ichimoku para determinar a direção da tendência a médio e longo prazo é benéfico para localizar as principais margens direcionais.
(2) O cruzamento Tenkan-sen/Kijun-sen e as alterações da relação de preços com a nuvem permitem filtrar eficazmente as consolidações e captar as fortes tendências precocemente.
(3) O mecanismo de saída de stop-loss permite controlar as grandes tendências e, ao mesmo tempo, controlar as perdas isoladas de forma eficaz.
(4) A combinação de vários sinais Ichimoku cria um sistema robusto que segue as tendências sem problemas.
(1) Risco sistémico de identificação errada de uma tendência maior: se a tendência maior for diagnosticada erroneamente, todas as ações subsequentes implicariam um risco de direção errada.
(2) Risco decorrente de um calendário de entrada mal escolhido.
(3) Risco de paradas colocadas demasiado apertadas. Movimentos de preços extremos podem tirar paradas que são demasiado apertadas, resultando em perdas não planeadas.
(4) Frequência elevada das transacções que leva a custos excessivos de transacção.
(1) Teste diferentes combinações de períodos de entrada de Ichimoku para encontrar parâmetros ótimos.
(2) Otimizar os filtros de entrada para garantir entradas de alta qualidade.
(3) Ajustar a distância de parada para equilibrar o risco-recompensa.
(4) Adicionar os níveis de lucro-alvo baseados nas distâncias entre os indicadores chave de preços para criar mecanismos adaptativos de obtenção de lucro.
Esta estratégia de seguimento de tendências Ichimoku Cloud sintetiza múltiplos sinais Ichimoku para diagnosticar tendências, entradas de tempo e paradas de trilha. A prática mostra que pode efetivamente capturar tendências de médio e longo prazo, filtrar consolidações e alcançar um desempenho consistente.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ichimoku trendfollowing", overlay=true, initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.04, slippage=2) //*************************** // INPUT BACKTEST RANGE * //*************************** FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2010, title = "From Year", minval = 2000) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2000) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true //*************** //* ICHIMOKU * //*************** //inizializzazione parametri,, tenkanPeriods = input(9, minval=1, title="Tenkan-Sen") kinjunPeriods = input(26, minval=1, title="Kinjun-Sen") senkouSpanBPeriods = input(52, minval=1, title="Senkou Span B") displacement = input(26, minval=1, title="-ChinkouSpan/+SenkouSpan A") //definizione Tenkan-Sen (9 Period), Kinjun-Sen (26 Period), Chinkou Span (Lagging Line) averageHighLow(period) => avg(lowest(period), highest(period)) tenkan= averageHighLow(tenkanPeriods) kinjun = averageHighLow(kinjunPeriods) senkouSpanA = avg(tenkan, kinjun) senkouSpanB = averageHighLow(senkouSpanBPeriods) //definisco il colore della kumo in base al trend. senkouSpan1Above = senkouSpanA >= senkouSpanB ? 1 : na senkouSpan2Below = senkouSpanA <= senkouSpanB ? 1 : na span1plotU = senkouSpan1Above ? senkouSpanA : na span2plotU = senkouSpan1Above ? senkouSpanB : na span1plotD = senkouSpan2Below ? senkouSpanA : na span2plotD = senkouSpan2Below ? senkouSpanB : na col = senkouSpanA >= senkouSpanB ? lime : red //plots Ichimoku plot(tenkan, title = 'Tenkan-Sen', linewidth=1, color=blue) plot(kinjun, title = 'Kinjun-Sen', linewidth=1, color=red) plot(close, title = 'Chinkou Span', linewidth=1, offset = -displacement, color=aqua) plot( senkouSpanA, title = 'Senkou Span A', style=line, linewidth=1, offset = displacement, color=lime) plot(senkouSpanB, title = 'Senkou Span B', style=line, linewidth=1, offset = displacement, color=red) //Cloud Lines Plot p1 = plot(span1plotU ? span1plotU : na, title = 'Senkou Span A Above Senkou Span B', style=linebr, linewidth=1, offset = displacement, color=col) p2 = plot(span2plotU ? span2plotU : na, title = 'Senkou Span B (52 Period) Below Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col) p3 = plot(span1plotD ? span1plotD : na, title = 'Senkou Span A (26 Period) Below Span B Cloud', style=linebr, linewidth=1, offset = displacement, color=col) p4 = plot(span2plotD ? span2plotD : na, title = 'Senkou Span B (52 Period) Above Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col) //Fills that color cloud based on Trend. fill(p1, p2, color=lime, transp=70, title='Kumo (Cloud)') fill(p3, p4, color=red, transp=70, title='Kumo (Cloud)') //*********************************************** //* condizioni ingresso ed uscita mercato * //*********************************************** isKumoRialzista = senkouSpanA >= senkouSpanB ? true : false isSopraKumo = (close > max(senkouSpanA[displacement], senkouSpanB[displacement])) isSottoKumo = (close < min(senkouSpanA[displacement], senkouSpanB[displacement])) isChinkouSpanSopra = high[displacement]<close isChinkouSpanSotto = low[displacement]>close filtroLong=isSopraKumo and isChinkouSpanSopra filtroShort=isSottoKumo and isChinkouSpanSotto //rimbalzato su kijun quando i prezzi stavano ritracciando e il trend era già in atto(tenkan >kijun x entrare long isPullBackLijunEntryLong = kinjun<tenkan and low<kinjun and (close>kinjun) isPullBackLijunEntryShort =kinjun>tenkan and high>kinjun and (close<kinjun) //Breackout Kumo isBreackoutKumoEntryLong = crossover(close, max(senkouSpanA[displacement], senkouSpanB[displacement])) and (close>tenkan) and (close>kinjun) isBreackoutKumoEntryShort = crossunder(close, min(senkouSpanA[displacement], senkouSpanB[displacement])) and (close<tenkan) and (close<kinjun) ConditionEntryLong = (isPullBackLijunEntryLong or isBreackoutKumoEntryLong ) and filtroLong ConditionEntryShort = (isPullBackLijunEntryShort or isBreackoutKumoEntryLong ) and filtroShort isExitLong = close<kinjun isExitShort = close>kinjun //ingressi ed uscite Mercato strategy.entry ("Long",long=true, when = window() and ConditionEntryLong) strategy.entry ("Short",long=false, when = window() and ConditionEntryShort) strategy.close(id="Long", when=isExitLong) strategy.close(id="Short", when=isExitShort) strategy.close_all(when=not window())