TradingView Indicator Limits: 2026 Platform Breakdown

TradingView Free Plan Indicator Limit 2026: Combined Scripts Guide

TradingView Basic allows 2 indicators per chart. A combined Pine Script can include several compatible calculations in one indicator instance, but it still has resource and display limits. Compare the current plans below, then use the example to check whether a combined script suits your chart.

Official TradingView Indicator Limits by Plan Tier (2026)

Checked October 16, 2026 against the official TradingView plan comparison.

Plan TierIndicator LimitCharts per Tab
Basic (Free)2 indicators1 chart per tab
Essential5 indicators2 charts per tab
Plus10 indicators4 charts per tab
Premium25 indicators8 charts per tab
Ultimate50 indicators16 charts per tab

The indicator allowance applies to each chart, while charts per tab is a separate feature. Prices, billing terms, and alert allowances are separate decisions. Check the official TradingView plan comparison before changing your subscription.

What Combining Indicators Changes

A composite indicator puts related calculations in one script. For example, two moving averages and Bollinger Bands can share the main price scale. Adding that combined script once uses one indicator instance.

Each module still needs suitable inputs, unique variable names, and consistent timing. Copying several complete scripts together is not enough: keep one declaration and check the outputs against the originals. Use code you own or have permission to reuse; protected and invite-only scripts do not expose their implementation for merging.

If you need independently maintained indicators or several separate panes, remove a less useful indicator or compare a paid plan with a higher allowance. A combined script is useful only when its components remain readable and correct.

The Subscription Boundary Stays in Place

Combining compatible indicator logic into a single script does not alter TradingView’s tier rules or grant server features like multi-chart layouts or additional technical alerts. It simply organizes your technical calculations inside one valid Pine Script file that runs within TradingView’s standard script sandbox.

Pine Script Computational Limits You Must Respect

While TradingView allows complex internal logic inside a single indicator, scripts are executed on TradingView’s server infrastructure. When bundling multiple indicators together, the components share one resource budget. These are selected limits, not the full list:

Plot counts

64 per script

One plotting call can consume multiple counts. Alert conditions and some color series also count.

Engineering Rule: Hiding a plot does not remove its count.

Drawings and tables

Type-specific limits

Up to 500 line, box, or label IDs per type; 100 polyline IDs; nine displayed tables, one per position.

Engineering Rule: Delete unused objects instead of only hiding them.

Data requests

40 unique calls; Ultimate 64

The limit applies across request.*() functions, not just request.security(). Some functions have additional restrictions.

Engineering Rule: Reuse requests for the same data.

Loop execution

500 ms per loop per bar

This is a loop limit, not a realtime refresh guarantee. Total execution time, memory, and script size also constrain a merge.

Engineering Rule: Test the full script on the intended dataset.

See the Pine Script limitations reference for the complete resource rules. For total calculation time, the current pricing table lists Basic at 20 seconds, Essential/Plus/Premium at 40 seconds, and Ultimate at 100 seconds. The limitations guide still says 40 seconds for non-Basic accounts, so these official sources differ on Ultimate.

One Script Does Not Mean Unlimited Panes

Use overlay = false for an oscillator pane and force_overlay = true on selected plots to put them on the price chart. force_overlay = false keeps a plot in its script pane; it cannot create another pane. See TradingView's visual settings documentation.

Combining RSI with MACD in one pane can distort the scale because their units differ. Keep incompatible oscillators separate or explicitly design a shared display. After changing the script's overlay setting, add a new instance to apply that setting.

Example: Combining 3 Indicators into One Pine Script v6 File

This complete Pine Script v6 example plots two EMAs, Bollinger Bands, and ATR offsets from each bar in one indicator instance. The ATR bands are not a trailing stop: they do not retain a stop level or place orders. This is a display example, not a tested trading strategy.

CombinedIndicatorSuite.pine
//@version=6
indicator("Multi-Indicator Suite: EMA + Bollinger Bands + ATR [Pineify]", overlay = true)

// --- Group 1: Trend Filter (Dual Exponential Moving Averages) ---
show_ema = input.bool(true, "Show EMAs", group = "Trend Filter (EMAs)")
ema_fast_len = input.int(50, "Fast EMA Length", minval = 1, group = "Trend Filter (EMAs)")
ema_slow_len = input.int(200, "Slow EMA Length", minval = 1, group = "Trend Filter (EMAs)")
ema_fast = ta.ema(close, ema_fast_len)
ema_slow = ta.ema(close, ema_slow_len)
plot(show_ema ? ema_fast : na, title = "Fast EMA", color = color.blue, linewidth = 2)
plot(show_ema ? ema_slow : na, title = "Slow EMA", color = color.orange, linewidth = 2)

// --- Group 2: Volatility Channel (Bollinger Bands) ---
show_bb = input.bool(true, "Show Bollinger Bands", group = "Volatility (Bollinger Bands)")
bb_len = input.int(20, "BB Length", minval = 1, group = "Volatility (Bollinger Bands)")
bb_mult = input.float(2.0, "BB StdDev Multiplier", minval = 0.1, step = 0.1, group = "Volatility (Bollinger Bands)")
[bb_mid, bb_upper, bb_lower] = ta.bb(close, bb_len, bb_mult)
p_bb_mid = plot(show_bb ? bb_mid : na, title = "BB Basis", color = color.gray, linewidth = 1)
p_bb_upper = plot(show_bb ? bb_upper : na, title = "BB Upper", color = color.teal, linewidth = 1)
p_bb_lower = plot(show_bb ? bb_lower : na, title = "BB Lower", color = color.teal, linewidth = 1)
fill(p_bb_upper, p_bb_lower, color = show_bb ? color.new(color.teal, 92) : na, title = "BB Background")

// --- Group 3: ATR offsets from the current bar ---
show_atr = input.bool(true, "Show ATR Bands", group = "ATR Bands")
atr_len = input.int(14, "ATR Length", minval = 1, group = "ATR Bands")
atr_mult = input.float(1.5, "ATR Multiplier", minval = 0.1, step = 0.1, group = "ATR Bands")
atr_val = ta.atr(atr_len)
atr_upper = high + (atr_val * atr_mult)
atr_lower = low - (atr_val * atr_mult)
plot(show_atr ? atr_upper : na, title = "ATR Upper Band", color = color.new(color.red, 30), style = plot.style_circles)
plot(show_atr ? atr_lower : na, title = "ATR Lower Band", color = color.new(color.green, 30), style = plot.style_circles)

Paste the full source into a new indicator in Pine Editor, save it, and add it to a chart with a free slot. See the Pine Script import guide for the workflow, or read our guide on confluence in trading to combine uncorrelated indicators rather than stacking redundant oscillators. The example passed a syntax check; its chart appearance and realtime behavior have not been tested here.

1. Modular Inputs

Uses Pine Script group arguments so inputs appear in organized, sections in the indicator settings dialog.

2. Clean Plot Allocation

Seven plot() calls draw the price series. The input switches hide visuals; the calculations still run on each bar.

3. Check on Your Chart

Add it to a chart with an available slot. Compare each module with the equivalent standalone indicator using identical inputs.

Manual Code Merging vs Pineify Visual Editor

While writing combined indicators directly in Pine Editor is entirely feasible, merging scripts requires checking names, calculations, and scales. Choose the workflow that matches the source material you have:

CriteriaSeparate IndicatorsManual Code MergingPineify Visual Builder
Chart slotsOne instance for each added indicatorOne instance for the combined indicatorOne instance for each exported indicator added to the chart
Source materialUse indicators available to your accountRequires accessible code you may reuseChoose supported visual editor components
DisplayIndependent panes and scalesChoose compatible scales and explicit pane routingReview the generated plots and chart placement
VerificationCheck each indicator and its settingsCompile and compare against the original outputsExport, compile, and verify behavior in TradingView

Recommended TradingView Workflows

Set up inputs and display placement before adding further calculations:

Build a Combined Indicator from Supported Components

Choose compatible components in the Visual Pine Editor and export Pine Script. For custom source you are permitted to reuse, the AI Coding Agent can help adapt the code. Verify the result in TradingView; Pineify does not change your plan limits.

Frequently Asked Questions

Direct answers to common questions regarding TradingView free plan limits, paid tiers, and multi-indicator script architecture.

TradingView Basic allows 2 indicators per chart, according to the official plan comparison checked on October 16, 2026. This is a per-chart allowance, not the number of calculations inside each script.