Indicador Ichimoku Cloud Customizado — Pine Script Pronto
Ichimoku Kinko Hyo (significa “gráfico de equilíbrio num relance” em japonês) é um dos indicadores mais completos do trading. Um único gráfico mostra: tendência, suporte, resistência, momentum e sinais de entrada/saída.
Neste post, te entrego uma versão customizada do Ichimoku em Pine Script v5 — com cores melhoradas, sinais de compra/venda automáticos e dashboard de status.
Os 5 componentes do Ichimoku
- Tenkan-sen (Linha de Conversão): média de 9 períodos — tendência rápida
- Kijun-sen (Linha Base): média de 26 períodos — tendência média
- Senkou Span A: média entre Tenkan e Kijun, projetada 26 períodos à frente
- Senkou Span B: média de 52 períodos, projetada 26 períodos à frente
- Chikou Span: preço de fechamento, deslocado 26 períodos para trás
A “nuvem” (Kumo) é formada pela área entre Senkou A e Senkou B. Ela age como suporte/resistência dinâmico.
Como interpretar
- ✅ Preço acima da nuvem + nuvem verde → tendência de alta forte
- ✅ Preço abaixo da nuvem + nuvem vermelha → tendência de baixa forte
- ⚠️ Preço dentro da nuvem → indefinição, evite operar
- 📈 Tenkan cruza Kijun para cima → sinal de compra
- 📉 Tenkan cruza Kijun para baixo → sinal de venda
Código Completo
//@version=5
indicator("Ichimoku Cloud Custom — IA Trader Pro", overlay=true)
// === PARÂMETROS ===
conversionPeriods = input.int(9, "Tenkan-sen (Conversion)")
basePeriods = input.int(26, "Kijun-sen (Base)")
laggingSpan2Periods = input.int(52, "Senkou Span B")
displacement = input.int(26, "Displacement")
// === CÁLCULOS ===
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
// === PLOTS ===
plot(conversionLine, "Tenkan-sen", color=#00E676, linewidth=2)
plot(baseLine, "Kijun-sen", color=#FF5252, linewidth=2)
plot(close, "Chikou Span", offset=-displacement + 1, color=#E040FB, linewidth=1)
p1 = plot(leadLine1, "Senkou Span A", offset=displacement - 1, color=#00E676, linewidth=1)
p2 = plot(leadLine2, "Senkou Span B", offset=displacement - 1, color=#FF5252, linewidth=1)
// === NUVEM ===
fill(p1, p2, color=leadLine1 > leadLine2 ? color.new(#00E676, 85) : color.new(#FF5252, 85))
// === SINAIS DE COMPRA/VENDA ===
// Compra: Tenkan cruza acima de Kijun E preço acima da nuvem
buySignal = ta.crossover(conversionLine, baseLine) and close > leadLine1 and close > leadLine2
// Venda: Tenkan cruza abaixo de Kijun E preço abaixo da nuvem
sellSignal = ta.crossunder(conversionLine, baseLine) and close < leadLine1 and close < leadLine2
plotshape(buySignal, "COMPRA", shape.labelup, location.belowbar, color.new(#00E676, 0), text="▲ BUY", textcolor=color.white, size=size.normal)
plotshape(sellSignal, "VENDA", shape.labeldown, location.abovebar, color.new(#FF5252, 0), text="▼ SELL", textcolor=color.white, size=size.normal)
// === DASHBOARD ===
var table dash = table.new(position.top_right, 2, 5, bgcolor=color.new(#06090F, 20), border_width=1, border_color=color.new(color.gray, 80))
// Determinar posição do preço relativa à nuvem
priceAbove = close > math.max(leadLine1, leadLine2)
priceBelow = close < math.min(leadLine1, leadLine2)
priceInside = not priceAbove and not priceBelow
status = priceAbove ? "ACIMA NUVEM ▲" : priceBelow ? "ABAIXO NUVEM ▼" : "DENTRO NUVEM ⚠"
statusColor = priceAbove ? #00E676 : priceBelow ? #FF5252 : #FFC107
cloudColor = leadLine1 > leadLine2 ? "VERDE (alta)" : "VERMELHA (baixa)"
if barstate.islast
table.cell(dash, 0, 0, "Ichimoku Cloud", text_color=#448AFF, text_size=size.small, bgcolor=color.new(#448AFF, 85))
table.cell(dash, 1, 0, "Status", text_color=#448AFF, text_size=size.small, bgcolor=color.new(#448AFF, 85))
table.cell(dash, 0, 1, "Preço", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 1, status, text_color=statusColor, text_size=size.small)
table.cell(dash, 0, 2, "Nuvem", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 2, cloudColor, text_color=leadLine1 > leadLine2 ? #00E676 : #FF5252, text_size=size.small)
table.cell(dash, 0, 3, "Tenkan vs Kijun", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 3, conversionLine > baseLine ? "Alta ▲" : "Baixa ▼", text_color=conversionLine > baseLine ? #00E676 : #FF5252, text_size=size.small)
table.cell(dash, 0, 4, "Sinal Forte", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 4, (priceAbove and conversionLine > baseLine) ? "COMPRA 🚀" : (priceBelow and conversionLine < baseLine) ? "VENDA 📉" : "AGUARDE ⏸", text_color=color.white, text_size=size.small)
// === ALERTAS ===
alertcondition(buySignal, "Ichimoku Compra", "Ichimoku: sinal de COMPRA — Tenkan cruzou Kijun acima da nuvem")
alertcondition(sellSignal, "Ichimoku Venda", "Ichimoku: sinal de VENDA — Tenkan cruzou Kijun abaixo da nuvem")
Como usar
- Timeframes recomendados: H1, H4 ou diário (Ichimoku não funciona bem em timeframes muito curtos)
- Ativos: Forex, índices, ações, cripto — funciona em qualquer mercado com volume
- Espere sinais onde o preço está claramente acima ou abaixo da nuvem
- Evite operar quando o preço está dentro da nuvem (indecisão)
- Use stop loss na Kijun-sen (linha base) ou abaixo da nuvem
💡 Dica profissional
O Ichimoku é mais poderoso quando você espera pelas "5 confirmações": (1) preço acima/abaixo da nuvem, (2) Tenkan cruzando Kijun, (3) Chikou livre de preços antigos, (4) nuvem futura na mesma direção, (5) volume confirmando. Quanto mais confirmações, mais forte o sinal.
🚀 Teste o Ichimoku na Deriv — conta demo grátis:
Abrir Conta Demo Deriv →📚 Relacionados
→ 10 Indicadores Pine Script
→ Indicador SuperTrend + MACD
→ Indicador Fibonacci com IA