Analyst compares a forming chart candle with a confirmed candle on two displays beside a desk clock.
Conceptual alert-timing comparison; the displayed charts are illustrative, not a tested trading strategy.

Trading technology

TradingView “once per bar” versus “once per bar close”: what changes?

A condition can become true while a candle is forming and be false by the close. The timing choice determines whether that temporary condition is eligible to trigger an alert. First identify whether you are using an indicator condition, a Pine alert() call or a strategy order-fill event.

By Atlas Liaison Group · Sources checked November 2, 2026 · Documentation research

A one-minute example

Imagine a condition that checks whether price is above a chosen level. During a forming one-minute candle, price moves above the level, then falls back below it before the candle closes. Assume the script evaluates on those live updates and has no additional gate.

TimingPossible result in this example
Once per barThe first eligible true condition during the bar can trigger. A later reversal does not unsend that notification.
Once per bar closeA condition that is false at the close does not qualify at that closing evaluation.
The condition is still true at the closeThe closing evaluation can qualify, subject to the script's other rules.

This is an illustration of timing, not a tested trading strategy or a prediction of a particular script's signals. If your condition is a crossover, a sequence or a delayed entry, inspect that exact logic rather than substituting a simple “price above level” assumption.

For alert() calls, read the script's frequency

TradingView documents alert.freq_once_per_bar as allowing the first eligible alert call on a realtime bar. With alert.freq_once_per_bar_close, the call must execute on the realtime bar's closing iteration. A condition that only occurred earlier is not a pending message guaranteed to be released at the close.

The script must execute to evaluate the condition. Changing a frequency label does not make a strategy that calculates only at the close start evaluating every price update.

Strategy alerts add another timing layer

TradingView strategies normally execute alert() calls at realtime bar close under their default calculation behavior. Their execution settings can alter when calculations occur. Order-fill alerts are a separate mechanism tied to fills in TradingView's broker emulator; they are not simply another spelling of an indicator's close-frequency setting.

Keep three timestamps separate: when the condition is evaluated, when the simulated order fills, and when an external broker accepts or fills an order. A chart fill marker or an alert notification does not establish that a live brokerage order filled at the same moment.

Why an arrow can disappear after an alert

If a script plots an unconfirmed condition, its live marker can change as prices update. An alert that already triggered from an eligible intrabar condition is not withdrawn because the marker later disappears. Waiting for a confirmed close can address that particular timing issue, but it is not a universal cure for higher-timeframe data changes or other repainting logic.

Check the setup without disturbing the live alert

  1. Record the current script version, inputs, symbol, interval and alert type.
  2. Identify the event the alert actually listens to.
  3. Check the script's calculation settings and frequency controls.
  4. Compare live observations in a separate test setup.
  5. Create a deliberate replacement only after verifying the intended behavior; an existing alert keeps its saved configuration.

Explore TradingView. Affiliate disclosure: Atlas may earn a commission from an eligible subscription through this link, at no additional cost to you. Alert timing does not establish trading profitability.

Related: Saved alert settings versus your chart · Trace an alert that produced no broker trade · TGIM trading tools.

Sources