Data Analytic Investments
Trend & MomentumIntermediateIchimoku Surfer

Ichimoku Cloud

The all-in-one trend system that shows support, resistance, momentum, and direction simultaneously.

4H, Daily, Weekly
Crypto, Forex, Equities
Pine Script v5

What is it?

Ichimoku Kinko Hyo ('equilibrium at a glance') was developed by Japanese journalist Goichi Hosoda in the 1960s and published in 1969. It plots five lines simultaneously: the Tenkan-sen (9-period midpoint), Kijun-sen (26-period midpoint), Senkou Span A (average of Tenkan and Kijun, projected 26 periods forward), Senkou Span B (52-period midpoint, projected 26 periods forward), and the Chikou Span (current close plotted 26 periods back). The area between Senkou A and B forms the 'Kumo' (cloud). Price above a bullish (green) cloud signals an uptrend; price below a bearish (red) cloud signals a downtrend. The cloud's thickness indicates volatility and the strength of support/resistance.

When to use it

  • Confirming trend direction before entering a position — only trade in the direction the price is relative to the cloud.
  • Identifying dynamic support and resistance — the cloud acts as a multi-layered S/R zone, not a single line.
  • Spotting TK crosses (Tenkan crossing Kijun) as entry triggers within an established trend.
  • Reading the Chikou Span for confluence — if it is above price from 26 periods ago, the bullish case is stronger.
  • Gauging trend strength from cloud thickness — a thin cloud means weak S/R; a thick cloud means strong.

Common pitfalls

  • Lagging in sideways markets: Ichimoku generates excessive false signals during consolidation. Always check whether price is range-bound before applying it.
  • The default periods (9/26/52) were calibrated for 6-day Japanese trading weeks. On 24/7 crypto markets many traders adjust to 10/30/60 or 20/60/120.
  • Cloud twist (Senkou A crossing B) looks like a signal but is plotted 26 periods in the future — it is a forecast, not a confirmed event.
  • Chikou Span interpretation requires discipline: it must clear both the price candles AND the cloud from 26 periods ago to be a clean signal.
  • Over-reliance on a single TK cross without cloud confirmation leads to premature entries in counter-trend moves.

Indicator Rider — Ichimoku Surfer

The Ichimoku Surfer rides the cloud boundary — leaning forward on uptrends, pulling back on downtrends, with speed lines firing on steep breakouts.

Free code template

Paste directly into TradingView Pine Editor → Add to chart.

Pine Script v5
/study("Ichimoku Cloud — DAI Template", overlay=true)

// ── Inputs ──────────────────────────────────────────────────────────────────
tenkanLen  = input.int(9,  "Tenkan-sen Period",  minval=1)
kijunLen   = input.int(26, "Kijun-sen Period",   minval=1)
senkouBLen = input.int(52, "Senkou Span B Period",minval=1)
displace   = input.int(26, "Cloud Displacement", minval=1)

// ── Calculations ────────────────────────────────────────────────────────────
mid(len) => math.avg(ta.highest(high, len), ta.lowest(low, len))

tenkan  = mid(tenkanLen)
kijun   = mid(kijunLen)
senkouA = math.avg(tenkan, kijun)
senkouB = mid(senkouBLen)
chikou  = close

// ── Plots ───────────────────────────────────────────────────────────────────
plot(tenkan,  "Tenkan-sen",  color=color.new(#60a5fa, 0),  linewidth=1)
plot(kijun,   "Kijun-sen",   color=color.new(#f59e0b, 0),  linewidth=2)
plot(chikou,  "Chikou Span", color=color.new(#a78bfa, 30), linewidth=1, offset=-displace)

A = plot(senkouA, "Senkou A", color=color.new(#22c55e, 0), offset=displace)
B = plot(senkouB, "Senkou B", color=color.new(#ef4444, 0), offset=displace)
fill(A, B, senkouA >= senkouB ? color.new(#22c55e, 85) : color.new(#ef4444, 85))

// ── TK Cross Alerts ─────────────────────────────────────────────────────────
bullTK = ta.crossover(tenkan, kijun)
bearTK = ta.crossunder(tenkan, kijun)
plotshape(bullTK, "Bull TK Cross", shape.triangleup,   location.belowbar, #22c55e, size=size.small)
plotshape(bearTK, "Bear TK Cross", shape.triangledown, location.abovebar, #ef4444, size=size.small)

alertcondition(bullTK, "Bullish TK Cross", "Tenkan crossed above Kijun")
alertcondition(bearTK, "Bearish TK Cross", "Tenkan crossed below Kijun")