Data Point Unavailable TradingView: Replay Limits and Script Checks
TradingView documents "Data point unavailable" in Bar Replay when you switch to a lower timeframe that has no accessible data at the selected historical date. An empty indicator plot can have a different cause. First identify where the message appears before changing subscriptions, chart settings, or code.
If the message appears in Bar Replay
A daily bar can exist for a date when one-minute replay data is unavailable. TradingView says the cause can be the plan's intraday limit or the absence of data that far back in its storage. The attempted timeframe change can therefore leave the current timeframe unchanged.
In Replay, open Select date, choose Select the first available day, and use a date inside the available range for the desired interval. Record the exchange-qualified symbol, interval, selected date, and account plan when comparing results. Continuous futures and certain settlement-based futures charts have separate limitations. These instructions and exceptions come from TradingView's Bar Replay documentation.
Zooming, reloading, or increasing a script's history buffer cannot create data absent from the provider's archive. A plan change only helps when the relevant restriction is the plan entitlement.
Separate three kinds of unavailable data
| Observation | What to investigate | What it does not establish |
|---|---|---|
| Replay refuses a lower timeframe at an old date | Replay coverage for that symbol, date, and interval | That the current live feed is broken |
| Standard candles have no OHLC values for the period | Symbol identity, session, history coverage, and provider status | That an indicator is responsible |
| OHLC values exist but one indicator is blank | Its inputs, warm-up, conditional plots, requested series, or runtime error | That all data used by the indicator is available |
Use the Data Window to inspect a particular bar. Save the layout before making changes, then compare a plain candlestick chart with the same symbol and interval. Derived charts change how values and bars are constructed; a difference helps narrow the investigation but does not prove a feed is correct.
Chart history and Replay history are separate limits. TradingView's historical intraday data explanation describes the bars loaded on ordinary charts and links to current plan limits. Daily data covering a longer date range does not imply minute data exists for that range.
Check the exact feed and session
Record the exchange or provider prefix, not just the ticker. Two listings with similar names may have different coverage. Confirm regular versus extended sessions and whether the requested instrument supplies those sessions. Do not infer a missing ETF bar's cause from a futures contract: they have different markets and trading hours.
A delayed quote is also different from a missing historical bar. TradingView explains that many exchange real-time subscriptions are purchased separately; a paid platform plan does not automatically include those exchange fees. Check the chart's market status before buying a package.
Changing the chart timezone changes displayed time labels. It does not manufacture missing candles. Pine's time functions generally use the exchange timezone unless another timezone is specified, and scripts cannot read the chart timezone setting. See the Pine time documentation.
If a recent period loads differently after a refresh or on another connection, retain both observations. That is evidence for a loading or network investigation, not proof of a particular browser-cache defect. Include the exact timestamp and screenshot when contacting support.
Why Pine Script can return na
An unavailable numeric value is represented by na. It can arise from an unavailable history reference, a calculation that has not warmed up, a missing requested series, or deliberate conditional output. These causes need different fixes.
max_bars_backcontrols a script's historical buffers. It does not expand your subscription or fetch arbitrary older market data. See Pine limitations.barstate.islastidentifies the last chart bar, including a developing realtime bar. It does not mean that bar is closed.barstate.isconfirmedconcerns the chart bar. It is not a way to confirm a separate higher-timeframe request. See bar states.ignore_invalid_symbol=truemakes an invalid request returnnainstead of stopping with an error. It does not grant data access.
Replacing every missing price with zero can create artificial crossings or spikes. Carrying a prior value forward also changes the series' meaning. Choose a missing-data policy explicitly and expose missing inputs while debugging.
A higher-timeframe diagnostic example
This example requests the previous completed higher-timeframe close. It rejects equal or lower timeframes and leaves unavailable values missing. It intentionally introduces a higher-timeframe delay; it is not a live higher-timeframe close or a trading strategy.
//@version=6
indicator("Confirmed HTF data diagnostic", overlay=true)
string higherTimeframe = input.timeframe("60", "Higher timeframe")
if timeframe.in_seconds(higherTimeframe) <= timeframe.in_seconds()
runtime.error("Choose a timeframe strictly higher than the chart timeframe.")
float previousClose = request.security(syminfo.tickerid, higherTimeframe, close[1], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
plot(previousClose, "Previous completed HTF close", color=color.orange, style=plot.style_stepline)
plotchar(na(previousClose), "Requested value unavailable", "?", location.top, color=color.red)
The offset and lookahead setting must be considered together: requesting an unoffset higher-timeframe close with lookahead enabled would leak future values on historical bars. With a developing request, gaps_off can return unconfirmed realtime values; it is not a universal non-repainting switch. TradingView explains these distinctions in other timeframes and data.
To inspect this example, use a standard five-minute chart and a 60-minute input. Compare the orange value with the preceding completed hourly close. Check the first available chart bars for missing history, then deliberately select an equal timeframe to verify the error guard. Syntax validation does not replace these chart-level checks.
Anchored indicators need their own checks
For an anchored calculation, confirm that the chosen anchor maps to an available bar and that all required inputs exist. A volume-weighted calculation also requires usable volume. An anchor outside loaded history cannot be recovered by substituting zero for a missing value. Inspect the specific tool's settings; selecting the first loaded bar in code is not the same as a user-selected historical anchor.
Pineify's script builder can help construct indicator logic. It cannot supply missing TradingView history or change exchange permissions. When requesting a script revision, include the symbol, timeframe, failing date, expected value, and exact error so the data assumption can be examined alongside the code.
Frequently asked questions
Why does daily Replay work while one-minute Replay fails?
The data coverage and plan limits differ by interval. Use Replay's first available day for the desired timeframe; daily coverage alone does not establish minute coverage.
Will upgrading or buying real-time data fix the message?
Only if the relevant entitlement is the cause. Platform history limits, Replay coverage, and exchange real-time subscriptions are separate questions. None can recover records that the provider does not have.
Does a closed market mean historical data is unavailable?
No. A closed session can explain the absence of new bars, but previously available historical bars should still be inspectable. Record whether the problem concerns current updates or a historical date.
Should I replace every Pine na value with nz?
No. A zero or carried-forward replacement can distort prices and signals. Identify the missing input and decide whether the calculation should wait, show a missing marker, or use an explicitly defined fallback.

