Price Alerts That Fire at the Right Time: Not Every Time
Generic price alerts fire on ticks that revert. Close-based triggers and ATR-normalized distance cut daily alert count from 14 to 2 that actually matter.
Marcus Chen7 min readThree years ago I had 47 active price alerts on my watchlist and got an average of 14 triggers per day. I silenced the channel in week two. The alerts weren't wrong, AAPL really did touch 200 that day, but they fired on a single 3-second tick that immediately reverted, then fired again on the next re-touch 40 minutes later, then again at 4:02am on a European open ADR cross. "Price touched 200" is not information. What I actually wanted to know was "price has meaningfully committed above 200," which is a completely different question. The fix wasn't to set fewer alerts; it was to set smarter ones. I rebuilt the alert stack using three rules: daily-close crosses instead of intraday ticks, ATR-normalized distance instead of round-number levels, and relative-strength alerts for rotation work. Daily trigger count dropped from 14 to about 2. The remaining 2 were almost always worth looking at. Alert-spam fatigue was a design problem, not a volume problem.
This post is about the Price Alerts card, why three refinements (close-based, ATR-normalized, and relative-strength) separate useful alerts from spam, and how to design alerts that inform rather than interrupt.
TL;DR
- Intraday tick alerts fire on noise that reverts immediately. Close-based alerts fire on commitment.
- ATR-normalized distance filters tape chop. A 2-ATR move is meaningful; a 0.3-ATR move is noise.
- Relative-strength alerts catch rotations early. Individual-price alerts miss the market-leadership signal.
- Always set both sides of a key level. The failed setup is as informative as the successful one.
- Fewer well-designed alerts beat many sloppy ones. Target 2-3 alerts per day max per active watchlist.
Why most price alerts don't help
The generic retail price alert, "tell me when AAPL hits 200", has three fundamental problems:
- Triggers on ticks that revert. A single 3-second tick through 200 followed by an immediate retrace means nothing, but the alert fires. On a volatile day this can happen 20+ times.
- No volatility context. A 1% move in a high-vol regime is noise; the same move in a low-vol regime is a breakout. Round-number price levels ignore this.
- Fires on 24-hour tape prints. ADR prices print through European and Asian sessions; alerts fire at inconvenient times when the US session hasn't even started.
The fix is to replace "price touches level" with three more-selective conditions:
- Close-based: fires only on the daily or hourly close, not intraday ticks
- ATR-normalized: measures move size in ATR units (2+ ATR = meaningful) rather than absolute dollars
- Relative-strength: fires when ticker outperforms or underperforms a benchmark by a threshold over N bars
These three reduce false positives by roughly an order of magnitude. The cost is that you occasionally miss a move that never translates to a close, but most of those were false starts anyway.
What the Price Alerts card shows
The Price Alerts card lets you configure alerts by type and delivery:
- Level-cross: fires when price closes above or below a level (daily or intraday bar close)
- Percentage-move: fires when return over N bars exceeds a threshold
- ATR-normalized move: fires when the move exceeds 2× average true range (filters chop)
- Relative-strength: fires when ticker outperforms or underperforms a benchmark by X% over N days
- Delivery channels: email, browser push, mobile push, webhook (for integration with trading systems)
- Active hours: limit delivery to US market hours to avoid overnight ADR prints
- Rule history: every firing with timestamp, price, and context
- Cooldown: prevents the same alert from re-firing within N hours even if the condition recurs

Three design rules
Prefer close-based to intraday-tick alerts. The intraday-tick alert fires every time the price crosses a threshold, including on immediately-reverting wicks. The close-based alert fires when the price commits, finishing the bar beyond the level. A stock that touches 200 intraday but closes at 198.40 hasn't broken out; the tick alert fires anyway, the close alert correctly stays silent. For swing traders, daily closes are the right granularity. For day traders, 15-minute or hourly closes. Pure tick alerts are useful only for explicit stop-out execution, not for signal generation.
Use ATR-normalized distance for chop filtering. A 1% move means different things in different volatility regimes. In a low-vol name with 0.8% ATR, a 1% daily move is a meaningful breakout. In a high-vol name with 3% ATR, a 1% move is routine noise. Setting alerts in ATR units (2+ ATR = fire) is regime-adaptive: the alert gets more selective when vol expands and more triggerable when vol compresses, which is the right direction of adjustment. Round-number level alerts (200, 50, 100) have the opposite problem, they don't adapt at all.
Use relative-strength alerts for rotation work. Individual-price alerts miss the market-leadership signal entirely. A ticker can hold its absolute price while underperforming the sector badly, or rally 5% while the sector rallies 8%, absolute-price alerts don't distinguish. A relative-strength alert ("fire when AAPL underperforms QQQ by 3% over 10 days") catches rotations as they happen, which is the tradeable signal for long-short or sector-rotation work.
The fourth rule, not a design primitive but a practice: always set both sides of a key level. If you alert on a break above 200, also alert on a failure below 198. The failed breakout ("price touched 200 then closed below 198") is as actionable as the successful one ("price closed above 200 with follow-through"). Setting only the success-side alert means you miss half the signal.
Example: rebuilt alert stack
My rebuilt alert configuration on a watchlist of 15 names:
| Alert Type | Condition | Average fires per day |
|---|---|---|
| Daily-close break of 50-DMA | Price closes above/below 50-DMA | 0.4 |
| 2-ATR daily move | Daily return > 2× ATR | 0.3 |
| 10-day relative strength vs. sector | Under/outperform sector ETF by 3% | 0.2 |
| Volume > 2× 20-day average | Volume spike on close | 0.6 |
| IV rank crosses 70 | Options vol regime change | 0.1 |
Total fires per day across 15 names: about 1.6 on average. Before the rebuild: 14. The 1.6 that do fire are almost always worth a second look; the 14 were mostly spam.
What price alerts can miss
- Gap moves. A stock that gaps through a level opens past the trigger; the close-based alert fires at the new close, not at the level.
- Overnight news. Alerts fire on US-session closes; European and Asian session moves on ADRs aren't captured unless specifically enabled.
- Holidays and half-days. Volume and volatility are distorted on holiday sessions; ATR-based alerts may misfire.
- Ex-dividend and split dates. Mechanical price changes can trigger level alerts without any real information; the card flags these dates.
- Very illiquid names. Low-volume names have erratic ATR; alerts based on them may fire on single-print moves.
Common mistakes
- Too many tick-based alerts. Fast path to inbox spam. Convert to close-based.
- Single-side alerts. Missing the failure side means missing half the information.
- No cooldown. Without cooldown, one choppy session can fire the same alert 20 times.
- Alert on every watchlist name. Scope alerts to positions you'd actually act on; alerts on "watching only" names become noise.
- Ignoring the rule history. Review which alerts fired and whether the firing was useful; dead-wood alerts should be deleted, not left to spam.
Where it fits
Pair with Trade Alerts for entry/exit signal alerts (not just price), Trade Signals for the underlying technical triggers that generate the signal, and Watchlist to scope alerts to names you actually track. For portfolio-level alerts (drawdown, correlation breakdown), see AI Insights.
FAQ
How fast is delivery?
Email and push within 30 seconds of close. Webhook within 1-2 seconds.
Can I alert on options prices?
Yes, options-specific alerts support strike-level price, IV, and delta triggers. See the Trade Alerts card for those.
What's a reasonable alert count?
Target 2-3 per day across your full watchlist. More than 5/day is usually a design problem.
Does it support alert suppression during earnings?
Yes, the calendar-aware toggle silences price alerts in the 24 hours around earnings prints to avoid noise.
Can webhooks integrate with my broker?
Yes, if the broker supports webhook-driven order entry. Most do via third-party middleware.
Related reading
Open the Price Alerts card → /app/alerts
See it in the app
Live dashboard views that match this post. Each tile deep-links to the exact card.
Stocks mentioned
Related reading
The 10-Minute Daily Stock Research Workflow
A structured daily routine for checking your portfolio, reviewing signals, and identifying new opportunities in under ten minutes.
Recent Alerts on the Dashboard: Your Rule Triggers
Alert fatigue is the silent killer of alert systems. The Recent Alerts card consolidates every rule-driven event into one stream you can triage in five…
How to Set Up Trade Alerts That Actually Tell You What to Do
Most alert systems create noise you ignore within a week. This guide sets Alphactor alerts around strategy conditions so each notification stays worth reading.
Screener Filters: Composable Queries Over the Full Universe
Fixed-form screeners answer the most common queries and nothing else. A composable filter stack, fundamentals + technicals + sentiment + regime, with…
3 Universe Scanner Workflows for Finding Your Next Trade
Practical workflows using Alphactor's Universe Scanner to find actionable buy and sell signals, sector rotations, and high-credibility setups.
Ready to try alphactor.ai?
Validate your trading strategies with statistical credibility testing. Start free.
Get Started Free


