Skip to content

Free TradingView indicator

Ichimoku Cloud Pro

Full Ichimoku Kinko Hyo with TK crosses graded strong, neutral or weak by cloud position, plus kumo breakout signals and alerts.

Trendv1.0TradingView (Pine Script v6) Non-repainting signals Alerts

What it does

Ichimoku Cloud Pro draws the complete Ichimoku Kinko Hyo system: conversion line (Tenkan-sen), base line (Kijun-sen), the two leading spans that form the cloud (kumo), and the lagging span (Chikou). On top of that it labels two classic events.

The first is the TK cross, when the conversion line crosses the base line. Each cross is graded by where it happens relative to the cloud, because traditional Ichimoku reading treats a bullish cross above the cloud very differently from one below it. The second is the kumo breakout, when price closes through the cloud that sits under the current bar.

How it works

  • Midpoint(n) = (highest high + lowest low) ÷ 2 over n bars.
  • Conversion = Midpoint(9). Base = Midpoint(26).
  • Leading span A = (conversion + base) ÷ 2, plotted 25 bars ahead (displacement − 1, matching TradingView's convention).
  • Leading span B = Midpoint(52), plotted 25 bars ahead.
  • Lagging span = close, plotted 25 bars back.
  • The cloud under the current bar is the span values from 25 bars ago. Cloud top and bottom are their maximum and minimum.

TK grading uses the cross level, the average of the two lines at the cross. For a bullish cross: strong when that level is above the cloud, neutral inside it, weak below it. Bearish crosses mirror this. Labels read TK S, TK N or TK W.

A kumo breakout fires when the close crosses above the cloud top or below the cloud bottom. With the optional confirmation, the close must also be above the high (or below the low) of the bar the lagging span is plotted against. All signals require a closed bar.

How to use it

  • Strong crosses agree with the cloud and are the ones traditional Ichimoku users focus on. Weak crosses go against the cloud and are often treated as counter-trend noise.
  • Breakouts are more convincing when the future cloud (the part plotted ahead of price) has the same color as the breakout direction.
  • Ichimoku was designed around daily charts, and many traders still prefer H4, D1 and W1. On intraday charts the default lengths cover far less time.
  • Use the base line and the cloud edges as reference levels for a stop-loss, and check the risk-reward ratio before acting on any signal.

Settings

InputDefaultWhat it changes
Conversion line length9Speed of the Tenkan-sen.
Base line length26Speed of the Kijun-sen.
Leading span B length52Thickness and stability of the cloud.
Displacement26Forward shift of the cloud, backward shift of the lagging span.
Show graded TK crossesOnTK S / N / W labels.
Show kumo breakoutsOnTriangles on cloud breakouts.
Breakouts need lagging-span confirmationOffStricter breakout filter.

Limitations

  • Ichimoku is built entirely from past highs and lows, so every component lags. Thick clouds can make breakouts arrive very late.
  • In ranges, price repeatedly enters and leaves a thin cloud, producing breakouts that fail.
  • The default lengths come from a six-day trading week; some traders adjust them, but there is no universally correct set.
  • Grading is a description of context, not a probability. A strong cross can still fail.

Pine Script source

In TradingView open Pine Editor, paste the code, click Save and then Add to chart.

FXP_IchimokuCloudPro.pine

86 lines

// © FXPIPS ONLINE — https://fxpips.online/tradingview-indicators/ichimoku-cloud-pro/
// License: MIT. Educational tool — not financial advice. Trading involves substantial risk.
//@version=6
// Full Ichimoku Kinko Hyo with Tenkan/Kijun crosses graded by where they occur relative to the
// cloud (strong / neutral / weak) and kumo breakout signals. All signals confirm on bar close.
indicator("FXP Ichimoku Cloud Pro", shorttitle = "FXP Ichimoku", overlay = true)

// ── Inputs ─────────────────────────────────────────────────────────────
grpI      = "Ichimoku"
convLen   = input.int(9, "Conversion line (Tenkan) length", minval = 1, group = grpI)
baseLen   = input.int(26, "Base line (Kijun) length", minval = 1, group = grpI)
spanBLen  = input.int(52, "Leading span B length", minval = 1, group = grpI)
disp      = input.int(26, "Displacement", minval = 1, group = grpI)

grpS         = "Signals"
showTk       = input.bool(true, "Show graded TK crosses", group = grpS)
showBreakout = input.bool(true, "Show kumo breakouts", group = grpS)
needChikou   = input.bool(false, "Breakouts need lagging-span confirmation", group = grpS, tooltip = "Lagging span (current close) must also be above the high (bullish) or below the low (bearish) of the bar it is plotted against.")

grpV    = "Display"
colConv = input.color(#2962ff, "Conversion line", group = grpV)
colBase = input.color(#b71c1c, "Base line", group = grpV)
colLag  = input.color(#43a047, "Lagging span", group = grpV)
colBull = input.color(#26a69a, "Bullish cloud / signals", group = grpV)
colBear = input.color(#ef5350, "Bearish cloud / signals", group = grpV)

// ── Calculation ────────────────────────────────────────────────────────
donchianMid(len) =>
    math.avg(ta.lowest(len), ta.highest(len))

conv  = donchianMid(convLen)
base  = donchianMid(baseLen)
spanA = math.avg(conv, base)
spanB = donchianMid(spanBLen)

// The cloud that sits under the current bar was calculated disp - 1 bars ago.
cloudA   = spanA[disp - 1]
cloudB   = spanB[disp - 1]
cloudTop = math.max(cloudA, cloudB)
cloudBot = math.min(cloudA, cloudB)

// ── TK crosses graded by cloud position ────────────────────────────────
tkLevel = math.avg(conv, base)
tkBull  = ta.crossover(conv, base) and barstate.isconfirmed
tkBear  = ta.crossunder(conv, base) and barstate.isconfirmed

bullStrong  = tkBull and tkLevel > cloudTop
bullNeutral = tkBull and tkLevel <= cloudTop and tkLevel >= cloudBot
bullWeak    = tkBull and tkLevel < cloudBot
bearStrong  = tkBear and tkLevel < cloudBot
bearNeutral = tkBear and tkLevel <= cloudTop and tkLevel >= cloudBot
bearWeak    = tkBear and tkLevel > cloudTop

// ── Kumo breakouts ─────────────────────────────────────────────────────
chikouBull = close > high[disp - 1]
chikouBear = close < low[disp - 1]
breakUp    = ta.crossover(close, cloudTop) and (not needChikou or chikouBull) and barstate.isconfirmed
breakDown  = ta.crossunder(close, cloudBot) and (not needChikou or chikouBear) and barstate.isconfirmed

// ── Plots ──────────────────────────────────────────────────────────────
plot(conv, "Conversion line", color = colConv)
plot(base, "Base line", color = colBase, linewidth = 2)
plot(close, "Lagging span", color = colLag, offset = -disp + 1)
pA = plot(spanA, "Leading span A", color = color.new(colBull, 40), offset = disp - 1)
pB = plot(spanB, "Leading span B", color = color.new(colBear, 40), offset = disp - 1)
fill(pA, pB, color = spanA > spanB ? color.new(colBull, 85) : color.new(colBear, 85), title = "Kumo")

plotshape(showTk and bullStrong, "TK bullish (strong)", style = shape.labelup, location = location.belowbar, color = colBull, text = "TK S", textcolor = color.white, size = size.small)
plotshape(showTk and bullNeutral, "TK bullish (neutral)", style = shape.labelup, location = location.belowbar, color = color.new(colBull, 40), text = "TK N", textcolor = color.white, size = size.small)
plotshape(showTk and bullWeak, "TK bullish (weak)", style = shape.labelup, location = location.belowbar, color = color.new(colBull, 70), text = "TK W", textcolor = color.white, size = size.small)
plotshape(showTk and bearStrong, "TK bearish (strong)", style = shape.labeldown, location = location.abovebar, color = colBear, text = "TK S", textcolor = color.white, size = size.small)
plotshape(showTk and bearNeutral, "TK bearish (neutral)", style = shape.labeldown, location = location.abovebar, color = color.new(colBear, 40), text = "TK N", textcolor = color.white, size = size.small)
plotshape(showTk and bearWeak, "TK bearish (weak)", style = shape.labeldown, location = location.abovebar, color = color.new(colBear, 70), text = "TK W", textcolor = color.white, size = size.small)
plotshape(showBreakout and breakUp, "Kumo breakout up", style = shape.triangleup, location = location.belowbar, color = colBull, size = size.normal)
plotshape(showBreakout and breakDown, "Kumo breakout down", style = shape.triangledown, location = location.abovebar, color = colBear, size = size.normal)

// ── Alerts ─────────────────────────────────────────────────────────────
alertcondition(bullStrong, "TK bullish cross (strong)", "Ichimoku: strong bullish TK cross above the cloud on {{ticker}} ({{interval}})")
alertcondition(bullNeutral, "TK bullish cross (neutral)", "Ichimoku: neutral bullish TK cross inside the cloud on {{ticker}} ({{interval}})")
alertcondition(bullWeak, "TK bullish cross (weak)", "Ichimoku: weak bullish TK cross below the cloud on {{ticker}} ({{interval}})")
alertcondition(bearStrong, "TK bearish cross (strong)", "Ichimoku: strong bearish TK cross below the cloud on {{ticker}} ({{interval}})")
alertcondition(bearNeutral, "TK bearish cross (neutral)", "Ichimoku: neutral bearish TK cross inside the cloud on {{ticker}} ({{interval}})")
alertcondition(bearWeak, "TK bearish cross (weak)", "Ichimoku: weak bearish TK cross above the cloud on {{ticker}} ({{interval}})")
alertcondition(breakUp, "Kumo breakout up", "Ichimoku: close broke above the cloud on {{ticker}} ({{interval}})")
alertcondition(breakDown, "Kumo breakout down", "Ichimoku: close broke below the cloud on {{ticker}} ({{interval}})")

Key inputs

Key inputs of Ichimoku Cloud Pro
InputDefaultDescription
Conversion line (Tenkan) length9Lookback for the midpoint that forms the conversion line.
Base line (Kijun) length26Lookback for the midpoint that forms the base line.
Leading span B length52Lookback for the slower edge of the cloud.
Displacement26Bars the cloud is shifted forward and the lagging span backward.
Breakouts need lagging-span confirmationOffOnly show kumo breakouts when the lagging span also clears past price.

Educational tools, not advice. Indicators and Expert Advisors describe price; they do not predict it, and past behaviour does not guarantee future results. Test everything on a demo account first and never risk money you cannot afford to lose. See our disclaimer.

Keep exploring

Related tradingview indicators