How to Create the Ichimoku Cloud on TradingView
From conversion and base lines to the Kumo: a complete Pine Script v5 implementation guide.
The Ichimoku Cloud bundles trend, momentum, support/resistance, and forward projection into one chart system. This tutorial walks through each component, how the cloud is built, and a production-ready Pine Script v5 script you can paste into TradingView.
What Is the Ichimoku Cloud?
Direct answer: Build an Ichimoku Cloud in Pine Script by calculating Tenkan-sen, Kijun-sen, Senkou Span A, and Senkou Span B, plotting the Senkou spans forward, plotting the close backward as Chikou Span, and filling the space between the two Senkou plots. The example on this page calculates every component explicitly instead of relying on an assumed ta.ichimoku() call.
The Ichimoku Kinko Hyo (often called Ichimoku Cloud) is a Japanese charting method that plots multiple moving averages and projects a shaded region—the Kumo (cloud)—into the future to visualize equilibrium and potential support or resistance.
It includes five plots: Tenkan-sen (conversion line), Kijun-sen (base line), Senkou Span A and Senkou Span B (cloud boundaries, shifted forward), and Chikou Span (closing price shifted backward).
Traders use the cloud to judge trend bias, momentum crosses, and whether price is trading above or below the equilibrium zone.
Why Traders Use This Indicator
- Single framework for trend direction, momentum, and forward-looking structure.
- Cloud thickness highlights volatility and strength of support or resistance.
- Tenkan/Kijun crosses provide clear trigger-style signals with defined context.
- Chikou Span confirms whether current price is above or below past price action.
- Widely recognized on TradingView, making collaboration and education easier.
| Parameter | Default | Description |
|---|---|---|
| Tenkan period | 9 | Lookback for the conversion line: midpoint of highest high and lowest low over this period. |
| Kijun period | 26 | Lookback for the base line; also used as the displacement for Chikou Span. |
| Senkou B period | 52 | Lookback for Senkou Span B midpoint; longer period defines slower cloud boundary. |
| Displacement | 26 | Bars to shift Senkou spans forward and Chikou backward—classic Ichimoku uses Kijun length. |
How the Ichimoku Components Work Together
Tenkan-sen = (Highest high + Lowest low) / 2 over Tenkan period.
Kijun-sen = (Highest high + Lowest low) / 2 over Kijun period.
Senkou Span A = (Tenkan-sen + Kijun-sen) / 2, plotted Kijun bars ahead.
Senkou Span B = (Highest high + Lowest low) / 2 over Senkou B period, plotted Kijun bars ahead.
Chikou Span = Close, plotted Kijun bars in the past.
Displacement: a positive plot() offset draws the Senkou spans into future bars, while a negative offset draws Chikou into past bars. Keep the calculation and visual offset separate when comparing values on the current bar.
Cloud fill: Pine Script uses fill(), not plotfill(). Store the IDs returned by the two Senkou plot() calls, then pass those IDs to fill(). The cloud is the area between those plots; its color can depend on which span is higher. See TradingView's official fills documentation.
Signal Interpretation
Trend bias: Price above a thick bullish cloud (Span A above Span B) supports long-biased reading; below a bearish cloud, the opposite.
TK cross: Tenkan crossing above Kijun is a bullish momentum signal inside the broader cloud context; crossunder is bearish.
Kumo twist: When Senkou Span A and B cross, cloud color changes—often watched as a regime shift.
Chikou filter: Chikou above price from 26 bars ago suggests bullish confirmation; below suggests bearish confirmation.
Combining with Other Indicators
Pair Ichimoku with volume or OBV to validate breakouts through the cloud. Use ATR or percentage stops because cloud signals are not explicit stop prices.
RSI or MACD can help avoid chasing TK crosses in choppy markets when price oscillates inside the Kumo.
The Hard Way: Writing Pine Script Manually
Challenges of Manual Coding
Aligning forward and backward offsets so Chikou and Senkou spans line up with textbook charts.
Filling between two offset series for a clean cloud without repainting artifacts.
Choosing consistent highs/lows (wick vs body) when implementing midpoint calculations.
Handling insufficient history at the start of the series without lookahead bias.
Keeping inputs documented when users expect classic 9/26/52 defaults.
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pineify — Educational Ichimoku Cloud (manual calculation)
//@version=5
indicator("Ichimoku Cloud (Manual v5)", shorttitle="Ichimoku", overlay=true)
tenkanLen = input.int(9, "Tenkan period", minval=1)
kijunLen = input.int(26, "Kijun period", minval=1)
senkouBLen = input.int(52, "Senkou Span B period", minval=1)
displace = input.int(26, "Displacement (Kijun)", minval=1)
donchian(len) =>
(ta.highest(high, len) + ta.lowest(low, len)) / 2.0
tenkan = donchian(tenkanLen)
kijun = donchian(kijunLen)
senkouA = (tenkan + kijun) / 2.0
senkouB = donchian(senkouBLen)
plot(tenkan, color=color.new(color.red, 0), title="Tenkan-sen", linewidth=1)
plot(kijun, color=color.new(color.blue, 0), title="Kijun-sen", linewidth=1)
pSpanA = plot(senkouA, color=color.new(color.green, 0), title="Senkou Span A", offset=displace)
pSpanB = plot(senkouB, color=color.new(color.orange, 0), title="Senkou Span B", offset=displace)
fill(pSpanA, pSpanB, color=senkouA > senkouB ? color.new(color.green, 85) : color.new(color.red, 85), title="Kumo")
plot(close, color=color.new(color.purple, 0), title="Chikou Span", offset=-displace, linewidth=1)
tkBull = ta.crossover(tenkan, kijun)
tkBear = ta.crossunder(tenkan, kijun)
plotshape(tkBull, title="TK Bull", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=color.new(color.teal, 0))
plotshape(tkBear, title="TK Bear", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=color.new(color.maroon, 0))
cloudBull = senkouA > senkouB
var table info = table.new(position.top_right, 2, 6, border_width=1)
if barstate.islast
table.cell(info, 0, 0, "Tenkan", text_color=color.white, bgcolor=color.new(color.gray, 60))
table.cell(info, 1, 0, str.tostring(tenkan, format.mintick), text_color=color.white, bgcolor=color.new(color.gray, 60))
table.cell(info, 0, 1, "Kijun", text_color=color.white, bgcolor=color.new(color.gray, 70))
table.cell(info, 1, 1, str.tostring(kijun, format.mintick), text_color=color.white, bgcolor=color.new(color.gray, 70))
table.cell(info, 0, 2, "Span A (raw)", text_color=color.white, bgcolor=color.new(color.gray, 60))
table.cell(info, 1, 2, str.tostring(senkouA, format.mintick), text_color=color.white, bgcolor=color.new(color.gray, 60))
table.cell(info, 0, 3, "Span B (raw)", text_color=color.white, bgcolor=color.new(color.gray, 70))
table.cell(info, 1, 3, str.tostring(senkouB, format.mintick), text_color=color.white, bgcolor=color.new(color.gray, 70))
table.cell(info, 0, 4, "Kumo color", text_color=color.white, bgcolor=color.new(color.gray, 60))
table.cell(info, 1, 4, cloudBull ? "Bull (A>B)" : "Bear (A<B)", text_color=color.white, bgcolor=color.new(color.gray, 60))
table.cell(info, 0, 5, "Displacement", text_color=color.white, bgcolor=color.new(color.gray, 70))
table.cell(info, 1, 5, str.tostring(displace), text_color=color.white, bgcolor=color.new(color.gray, 70))Maintenance Note: When TradingView updates time zone or session handling, verify that daily/weekly Ichimoku variants still match your broker session. Offset-based plots require enough bars on chart; extend history if lines look truncated.
The Easy Way: Build with Pineify Visual Editor
What if you could create the same indicator without writing a single line of code? Pineify is a visual editor designed for TradingView users who want professional-grade indicators through an intuitive interface.
| Feature | Manual Pine Script | Pineify Visual Editor |
|---|---|---|
| Offset logic | Easy to mismatch Span/Chikou shifts vs textbook defaults. | Visual builder reduces offset errors with labeled parameters. |
| Cloud fill | Requires plot references and fill() wiring by hand. | Drag-and-drop style configuration for fills and colors. |
| Alerting | Must code alertcondition() for each signal type. | Structured conditions speed up alert setup without boilerplate. |
| Iteration speed | Each tweak reloads script and retests visually. | Faster experimentation with reusable modules and presets. |
| Documentation | Comments and inputs maintained manually in code. | Exports and UI labels stay aligned with generated logic. |
Less boilerplate when adding filters, alerts, and styling around Ichimoku.
Consistent naming and grouping of Tenkan/Kijun/Senkou parameters.
Easier multi-timeframe experiments without losing track of offsets.
Shareable configurations for teams teaching Ichimoku setups.
Lower risk of subtle repainting mistakes when extending the script.
Step-by-Step Tutorial
Create a new indicator project
Open Pineify and start an indicator with overlay mode so cloud and price share the pane.
Add Donchian midpoints
Implement Tenkan, Kijun, and Senkou B as midpoint of high/low over their periods.
Derive Senkou Span A
Average Tenkan and Kijun, then apply forward displacement to match Kijun length.
Plot Chikou with negative offset
Shift the close series backward on the chart for classic Chikou confirmation.
Style the Kumo
Fill between Span A and B with bullish/bearish colors based on which span is higher.
Publish alerts
Add TK cross and Kumo breakout alerts once logic matches your trading plan.
Validate on history
Compare against TradingView built-in Ichimoku to confirm periods and offsets.
Trading Strategies & Pro Tips
Kumo breakout trend follow
Trade in the direction of the breakout when price closes outside the cloud and Chikou agrees.
Pro Tip: Require cloud color (Span A vs B) to align with breakout direction.
TK cross with cloud filter
Take long TK crosses only above the cloud; short crosses only below.
Pullback to Kijun
In a trending market, enter when price retests Kijun after respecting the cloud.
Pro Tip: Combine with a volatility filter to skip narrow-range chop.
Kumo twist watch
Use twists as timing hints when slower Span B catches up to Span A.
Common Mistakes to Avoid
- Forgetting that Senkou spans are plotted into the future while Chikou is shifted back.
- Mixing session-specific highs/lows without documenting the session choice.
- Treating TK crosses as standalone signals without cloud context.
- Using too few bars so forward-shifted plots disappear off the right edge.
- Assuming a ta.ichimoku() call exists instead of checking the current Pine Script reference and making each component explicit.
Frequently Asked Questions
Build Ichimoku faster with Pineify
- Generate structured Ichimoku logic without hand-wiring every offset.
- Iterate on alerts, colors, and filters in a guided workflow.
- Keep teams aligned with shareable indicator configurations.
Disclaimer: Trading involves significant risk. The indicators, code, and strategies provided are for educational purposes only and do not constitute financial advice. Past performance is not indicative of future results.
Related Indicator Tutorials
Ichimoku Cloud Screener
Scan daily Ichimoku Cloud trend states across stocks, crypto pairs, and ETFs. Bullish, bearish, and neutral cloud conditions are easy to compare.
How to Create MACD in TradingView
Learn how to create and customize the MACD indicator in TradingView using Pine Script. Covers the formula, manual coding, and no-code creation with Pineify.
How to Create ADX in TradingView
Learn how to create the Average Directional Index in TradingView using Pine Script. Covers ADX/+DI/-DI calculation and trend strength measurement.
How to Create Supertrend in TradingView
Learn how to create and customize the Supertrend indicator in TradingView. Covers the ATR-based formula, Pine Script coding, and no-code creation with Pineify.