TradingView does not produce the prices on your screen. It redistributes data supplied by third parties. The price on the chart is almost never the price you get filled at. And when you place an order from a TradingView chart, the trade goes to a connected broker, which holds your money and decides whether your stop was hit.
Those three sentences matter more than any indicator you could add to the chart, because each one assigns responsibility to a different party. Most guides about TradingView forex skip all three.
Every limit and quote below comes from TradingView's own pricing page or its own Pine Script documentation, read on 15 September 2026. Plan structure and prices change, so treat the official pages as authoritative and this article as a snapshot. This page does not attribute any position to a regulator. Where the source article for this rewrite did exactly that, the claims have been removed rather than softened.
TradingView sells charting software and market data. It does not hold client money, it does not execute your orders, and it is not supervised as a broker in any jurisdiction I could verify.
What it offers instead is a set of connection features. Its own feature list includes trade through selected brokers, chart trading, simulated paper trading and depth of market trading. Each of those routes an instruction to a broker that you have an account with. Your balance sits with that broker. Your fill comes from that broker's server. A complaint about the fill goes to that broker and to whichever regulator licensed it.
One detail worth knowing before you connect anything. TradingView states that credentials for broker connections are stored locally in your browser rather than on its servers. That reduces one class of risk and leaves the security of your own machine as the binding constraint.
The practical sequence is dull but effective: run the whole workflow in paper trading first, confirm the order types and symbols behave as you expect, then connect real money.
There is a variant that confuses people. Plenty of brokers embed a TradingView chart inside their own platform. TradingView licenses its Advanced Charts library to third parties, and its documentation for that library states that it "does not provide any market data" and that the integrator must connect it to their own data source. When you see a TradingView interface on a broker's site, the prices in it are that broker's prices. Same software, different feed, and it is still the broker you have a contract with.
An alert on TradingView means one thing only: a condition evaluated on the provider's series became true. It does not mean a trade is available at that price, and it does not mean your broker's quote ever printed it.
The mechanics are useful once you accept that limit. Alerts run server side, so they trigger while the application is closed, and webhook support lets them drive external systems. Capacity is capped by plan: active price alerts run 3, 20, 100, 400, 600 and 1,000 from Basic through Ultimate, with technical alerts on indicators, strategies and drawings starting at 20 and rising to 1,000. Alert duration is limited to one month on Basic and two months above it, so a level you set and forget will silently stop watching.
Set alerts on the same provider your broker follows, or treat them as a prompt to go look rather than as a trigger to act.
TradingView's Pine Script documentation states the position directly: "As a rule, TradingView does not generate data; it relies on its data providers for the information displayed on charts and accessed by scripts."
That has a concrete consequence most users never notice. A symbol on the platform is written as an exchange prefix followed by the instrument, in the form Exchange:Symbol. OANDA:EURUSD and FX:EURUSD describe the same currency pair through two different streams of quotes. The docs also warn that when a symbol is given without a prefix, the exchange is selected automatically, and they recommend specifying the prefix "when possible for consistent results."
So two people comparing "the EUR/USD chart" may be looking at two different series without knowing it. Levels differ. Extremes differ. The moment a trendline counts as touched differs. The same applies to GBP/USD, to USD/JPY, and to every crypto pair where feeds from Binance, Coinbase or Kraken can be selected side by side.
Typing a bare pair name into the search box does not settle it either. The symbol search returns a list of results with the data source named beside each instrument, and the choice is left to you. Write the prefix down next to any level you record, because a level copied from OANDA and read against a chart fed by FOREX.com is not the same level.
The same documentation describes a second source of divergence inside scripts. Requesting data from another context adapts the returned series to the chart's own time axis, so requesting a 24-hour symbol from a chart of a symbol that does not trade around the clock produces gaps that are not present when you view that instrument directly. It also notes that values on realtime bars can differ from values on historical bars, with scripts retroactively adjusting after a restart.
Spread, slippage and rejection are properties of the broker and the account type, not of the charting platform. A single candle does not encode them. The spread you will actually pay is visible in the trading layer, not in the analysis layer.
Stop activation follows the same rule. Whether your stop triggers is decided by your broker's quote, not by a line drawn on a TradingView chart. If you have ever wondered why a stop was taken out when the candle never reached that level, the question is not whether TradingView was wrong. It is which series built that candle and which quote decided the activation.
Comparing two platforms tick by tick settles nothing unless you first establish that both are showing the same feed. In a decentralised market, a fraction of a pip between two providers is the normal state of affairs. It is not a malfunction and it is not evidence of anything.
Analysis in one window and execution in the broker terminal is therefore not a workaround. It is what the division of roles implies.
An indicator output is a product of choices, not a property of the market. Four of those choices do most of the damage.
The feed comes first, as above. Then the timezone and the moment the daily candle closes. Broker servers run in different zones, and a daily candle that closes at a different hour produces different highs, lows and closes, which propagate into every moving average and oscillator attached to it.
Then the side of the market. A candle built from bid sits a full spread away from one built from ask, with the midpoint halfway between under symmetric quoting. Every extreme of the candle shifts. With a tight stop that shift can be the entire difference between touched and not touched.
Finally the aggregation. Intraday Renko, Kagi, Line Break and Point and Figure charts discard time entirely, second-based and tick-based intervals reframe it, and custom range bars rebuild it. The same underlying quotes produce different patterns under each.
There is also a hard ceiling on stacking. Plan limits cap indicators applied to other indicators at 1, 1, 9, 24, 29 and 49 across the six TradingView tiers, so a design that works on Ultimate can be impossible on Basic or Essential.
None of this is a defect in Pine Script. It is what happens when a calculation inherits every choice made upstream of it, from the provider to the timezone to the side of the market.
Pine Script is genuinely capable, and it is bounded. The limits below are the ones that actually decide whether a script runs, and none of them appear in the source article this page replaces.
request.*() namespace. Cross-symbol and higher-timeframe logic runs into this quickly.max_bars_back defaults toward 5,000 bars of historical reference.Two capabilities are worth knowing alongside the limits. Alerts run server side on TradingView infrastructure, so they fire when the application is closed, and webhooks allow them to drive external systems. Paper trading lets you exercise a strategy without capital before you trust it with any.
When a backtest refuses to complete or a higher-timeframe value looks wrong, the cause is usually one of the ceilings above rather than a flaw in your logic.
| Limit | Basic | Essential | Plus | Premium | Expert | Ultimate |
|---|---|---|---|---|---|---|
| Charts per tab | 1 | 2 | 4 | 8 | 10 | 16 |
| Indicators per chart | 2 | 5 | 10 | 25 | 30 | 50 |
| Historical bars | 5K | 10K | 10K | 20K | 25K | 40K |
| Minute history | 42 days | 180 days | All | All | All | All |
| Calculation time limit | 20s | 40s | 40s | 40s | 60s | 100s |
| Active price alerts | 3 | 20 | 100 | 400 | 600 | 1,000 |
| Indicator on indicator | 1 | 1 | 9 | 24 | 29 | 49 |
| Parallel chart connections | 2 | 10 | 20 | 50 | 80 | 200 |
| Bar Replay | No | Yes | Yes | Yes | Yes | Yes |
The row that catches people out is minute history. Forty-two days of intraday data on the free tier means any backtest of an intraday system is working with a sample too short to say much, no matter how good the code is. Anyone moving from Basic to Essential for chart count alone usually finds the jump from 42 days to 180 days of minute data changes the results more than the extra chart does.
Note also that Basic and Essential both sit at a 10K historical bar ceiling once you are above Essential, while the calculation time limit stays at 40 seconds across Essential, Plus and Premium. If your script is timing out, moving from Plus to Premium buys you nothing. Expert at 60 seconds or Ultimate at 100 seconds is where that particular wall moves.
Scale, for context: TradingView advertises direct access to 3,539,722 instruments, more than 400 pre-built indicators, over 100,000 community-published indicators, 110+ drawing tools, and coverage of 150+ exchanges across 50+ countries. Breadth is not the constraint on this platform. Knowing which slice of that breadth is on your screen is.
request.*() calls. If it approaches the ceiling, the script is not finished, it is just not failing yet.The chart is a visualisation of a data provider's series. The price is quoted by your broker. The fill is produced by your broker's server. Those are three different parties and they frequently disagree by small amounts.
Knowing which of them owns which number is worth more than another indicator on the chart. Once you can name the provider behind your candles and the entity behind your fills, most of the confusion people attribute to the platform turns out to be a mismatch they can find and fix.