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 Tier | Indicator Limit | Charts per Tab |
|---|---|---|
| Basic (Free) | 2 indicators | 1 chart per tab |
| Essential | 5 indicators | 2 charts per tab |
| Plus | 10 indicators | 4 charts per tab |
| Premium | 25 indicators | 8 charts per tab |
| Ultimate | 50 indicators | 16 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 scriptOne plotting call can consume multiple counts. Alert conditions and some color series also count.
Drawings and tables
Type-specific limitsUp to 500 line, box, or label IDs per type; 100 polyline IDs; nine displayed tables, one per position.
Data requests
40 unique calls; Ultimate 64The limit applies across request.*() functions, not just request.security(). Some functions have additional restrictions.
Loop execution
500 ms per loop per barThis is a loop limit, not a realtime refresh guarantee. Total execution time, memory, and script size also constrain a merge.
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.
//@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:
| Criteria | Separate Indicators | Manual Code Merging | Pineify Visual Builder |
|---|---|---|---|
| Chart slots | One instance for each added indicator | One instance for the combined indicator | One instance for each exported indicator added to the chart |
| Source material | Use indicators available to your account | Requires accessible code you may reuse | Choose supported visual editor components |
| Display | Independent panes and scales | Choose compatible scales and explicit pane routing | Review the generated plots and chart placement |
| Verification | Check each indicator and its settings | Compile and compare against the original outputs | Export, 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.
Explore More TradingView & Pine Script Tools
Visual Pine Editor
Combine multiple indicators, build strategies, and export Pine Script v6 for verification.
Pine Script AI Agent
Convert trading ideas, merge legacy indicators, and debug compiler errors with AI.
Indicator Settings Guide
Learn how to organize inputs, style plots, and optimize indicator parameters.
TradingView Workflows
Browse end-to-end workflows for multi-timeframe analysis, alerts, and execution.