Why Your TradingView Alerts Fire Too Often (Or Not at All)
You set up a TradingView alert on your RSI crossover, go to bed, and wake up to 47 notifications. Half of them fired on the same bar. The other half reversed before the bar even closed.
The culprit? The alert frequency setting — specifically, the difference between "Once Per Bar" and "Once Per Bar Close."
This is one of TradingView's most misunderstood features. Get it wrong and you'll either drown in false signals or miss real ones entirely. I've been running live TradingView alerts for my USDJPY momentum strategy for months, and I've hit every failure mode. Here's how each setting actually works.
The Five Alert Frequency Options Explained
When you create an alert in TradingView, the "Trigger" section gives you five frequency options. Each one changes *when* and *how often* your alert fires:
1. Only Once
The alert fires exactly one time, then deactivates permanently.
Use case: One-off price targets. "Alert me when BTC hits $100,000" — you only need that notification once. Gotcha: The alert triggers on the *first tick* that meets the condition, not at bar close. If price briefly spikes past your level on a wick and reverses, you still get the alert.2. Once Per Bar
The alert fires the *first time* the condition becomes true during each bar, then stays silent for the rest of that bar. It resets when the next bar opens.
Use case: You want to know as soon as something happens within a bar, but don't want repeated alerts if the condition flickers on and off during the same bar. The problem: On a 1-hour chart, "Once Per Bar" fires the moment RSI crosses 70 — even if RSI drops back to 69 before the hour ends. The bar hasn't closed yet. The signal isn't confirmed. If you're sending alerts to a webhook for automated trading, you just placed a trade on an unconfirmed signal.3. Once Per Bar Close ⭐
The alert checks the condition only *after the bar has fully closed*. If the condition is true at close, it fires. If the condition flickered to true mid-bar but reverted before close — no alert.
Use case: Almost every strategy-based alert. This is the setting you want 90% of the time. Why it matters: Most technical indicators (RSI, MACD, moving averages) are designed to be evaluated on *closed* bars. A moving average crossover that happens mid-bar can reverse before close. Once Per Bar Close eliminates these phantom signals.I run my USDJPY momentum alerts on the daily chart with Once Per Bar Close. Before switching to this setting, I was getting 3-4 false crossover alerts per week on the 4H chart. After switching: zero false fires in two months.
4. Once Per Minute
The alert checks every 60 seconds and fires each time the condition is true. No deduplication per bar.
Use case: Real-time monitoring of fast-moving conditions where you want constant updates. Price within a range, volume spikes, etc. Warning: This can generate A LOT of notifications. If your condition stays true for an entire 4-hour bar, that's 240 alerts. Use sparingly.5. Every Time the Condition Changes (default for some alert types)
Fires whenever the condition transitions from false→true or true→false.
Use case: Tracking state changes — "RSI entered overbought" and "RSI left overbought" as separate events. Warning: On volatile instruments with noisy indicators, this creates alert storms. RSI bouncing between 69.8 and 70.2 will fire on every cross.The Real Decision: Once Per Bar vs Once Per Bar Close
For strategy alerts, the choice boils down to these two. Here's a side-by-side:
| Once Per Bar | Once Per Bar Close | |
|---|---|---|
| When it fires | First tick condition is true | After bar closes, if true |
| Speed | Faster (real-time) | Delayed (waits for close) |
| False signals | More (mid-bar reversals) | Fewer (confirmed signals) |
| Best for | Breakout alerts, price levels | Indicator crossovers, strategy signals |
| Webhook trading | Risky | Recommended |
When Once Per Bar Actually Makes Sense
- Price level alerts: "Alert me when price touches $95,000." You want this immediately, not after the bar closes — price might bounce off that level and the close could be far away.
- Volume spike detection: A sudden 5x volume surge matters *now*, not 4 hours from now at bar close.
- Breakout confirmation: Price breaking above a trendline — you want to know the moment it happens, even if it could retrace.
When You Must Use Once Per Bar Close
- Moving average crossovers: A 20 EMA crossing above the 50 EMA mid-bar is meaningless. Wait for close.
- RSI overbought/oversold entries: RSI at 71 mid-bar could close at 68. Only the closing value matters.
- MACD signal line crosses: Same logic — MACD histogram can flip multiple times within a bar.
- Any Pine Script strategy alert: If your script uses
strategy.entry()orstrategy.exit(), Once Per Bar Close ensures the signal matches what your strategy tester shows. - Webhook-to-exchange automation: If your alert triggers an order on OKX or any exchange via webhook, you MUST use Once Per Bar Close. Otherwise, you're placing orders on unconfirmed signals.
Common Mistakes and How to Fix Them
Mistake 1: Using Once Per Bar for a strategy, then blaming the strategy
"My backtest shows 65% win rate but my live alerts are only winning 40%."
The backtest runs on closed bars. Your alerts fire on the first tick. You're comparing two completely different signal sets.
Fix: Switch to Once Per Bar Close. Your live results should now match your backtest more closely.Mistake 2: Setting Once Per Bar Close on a price level alert
"I set an alert for BTC at $100K with Once Per Bar Close on the daily chart. Price hit $100,200 intraday, pulled back, and closed at $99,800. My alert never fired."
That's working as designed — but probably not what you wanted.
Fix: Use Once Per Bar for price level alerts. Or switch to a shorter timeframe (1-minute chart with Once Per Bar Close gives near-real-time confirmation).Mistake 3: Wrong timeframe + wrong frequency
You have a 5-minute chart with Once Per Bar Close alerts, but your strategy was designed on the daily chart. Your alert is checking a daily crossover every 5 minutes.
Fix: Alerts inherit the timeframe of the chart they were created on. Make sure you create the alert while viewing the correct timeframe. Alternatively, use Pine Script withrequest.security() to hardcode the timeframe.
Mistake 4: Alert condition repaints
Some indicators repaint — they change their historical values after the bar closes. With Once Per Bar, you get the alert based on the real-time (repainting) value. With Once Per Bar Close, you get the non-repainting value.
If your indicator repaints and you use Once Per Bar, you'll see signals in your alert history that don't exist on your chart anymore. Confusing.
Like what you're reading? Try it yourself — this link supports ChartedTrader at no cost to you.
Get started with TradingView →How to Set Alert Frequency in TradingView
Step by step:
1. Right-click on your chart or click the "Alert" button (clock icon) in the top toolbar
2. Set your condition — choose the indicator, crossing direction, and value 3. Under "Trigger" — this is where you select the frequency: - Open the dropdown that says "Once Per Bar" (or whatever the default is) - Select "Once Per Bar Close" for strategy-based alerts 4. Set expiration — free plan alerts expire after 2 months; paid plans get indefinite alerts 5. Configure notifications — app notification, email, webhook, or all three 6. Click CreateIf you're using Pine Script alerts (via alertcondition() or alert()), the frequency setting in the UI still applies. Your script generates the condition; the frequency setting controls how often TradingView checks and fires it.
Pine Script Alert Frequency Tips
If you write your own indicators, you can avoid most frequency headaches by designing your Pine Script correctly:
// Bad: condition is true whenever RSI > 70
alertcondition(ta.rsi(close, 14) > 70, "RSI Overbought")
// This fires repeatedly while RSI stays above 70
// Good: condition fires only on the crossover
alertcondition(ta.crossover(ta.rsi(close, 14), 70), "RSI Crosses Above 70")
// This fires once when RSI first crosses 70, regardless of frequency setting
// Best: use Once Per Bar Close + crossover for confirmed signals
alertcondition(ta.crossover(ta.sma(close, 20), ta.sma(close, 50)), "Golden Cross")
// Pair with Once Per Bar Close for maximum reliability
The ta.crossover() and ta.crossunder() functions are your best friends. They only return true on the exact bar where the cross happens, which naturally limits alert frequency even if you accidentally leave it on "Once Per Bar."
My Setup: What I Use for Live Trading
For my USDJPY momentum strategy running on the daily chart:
- Signal alerts: Once Per Bar Close (daily). I only want signals confirmed by the closing price.
- Price level alerts: Once Per Bar (4H). When USDJPY approaches my entry zones, I want to know in near-real-time.
- Risk alerts: Once Per Minute. If my position moves against me by more than 2%, I want continuous updates until I act on it.
FAQ
Does Once Per Bar Close work on all timeframes?
Yes. On a 1-minute chart, it checks after each minute closes. On a weekly chart, it checks after each week closes (Sunday night for most instruments). The delay before firing is proportional to the timeframe.
Can I change alert frequency after creating it?
No. You need to delete the alert and create a new one with the correct frequency. This is a common TradingView annoyance — there's no edit option for the trigger setting.
Do webhook alerts respect the frequency setting?
Yes. If you set Once Per Bar Close, the webhook only receives a POST request when the bar closes and the condition is true. This is critical for automated trading — you don't want your webhook firing mid-bar.
I'm on the free plan. Does this affect my alert limit?
The frequency setting doesn't affect how many alerts you can create (free plan: 1 active alert; Essential: 20; Plus: 100; Premium: 400). But choosing Once Per Bar Close means fewer total notifications, which helps if you're hitting notification limits.
Why does my alert fire at slightly different times than bar close?
TradingView checks alert conditions in batches, not instantaneously at bar close. There can be a 1-5 second delay after the bar closes before your alert fires. For webhook trading, this latency is normally acceptable, but be aware of it for scalping strategies.
Bottom Line
Default to Once Per Bar Close for everything strategy-related. Only switch to Once Per Bar for price level alerts or time-sensitive breakout notifications.If you're automating trades via webhooks, Once Per Bar Close isn't optional — it's mandatory. The alternative is placing orders on unconfirmed signals and wondering why your live results don't match your backtest.
And if you're still getting too many alerts after switching? The problem isn't the frequency setting — it's your indicator. Use ta.crossover() instead of raw threshold comparisons, and your alert inbox will thank you.
*Trading with TradingView alerts? Get started with TradingView — the platform I use daily for live USDJPY signals.*
Related Articles
---*This article contains affiliate links. If you sign up through our links, we may earn a commission at no extra cost to you. This helps support our independent research and content.*