A price alert is a `(symbol, direction, threshold)` triple you configure in Settings → Notifications → Price Alerts. Direction is above or below. Optional label for context ("Above 1.10 = entry trigger").
The poller runs once on every authenticated page-load — `check_price_alerts` reads the latest cached candle for each watched symbol and fires when: - Direction is `above` AND latest close ≥ threshold, OR - Direction is `below` AND latest close ≤ threshold.
A notification fires through the dispatcher (price_alert kind), then `last_fired_at` stamps. For 24 hours the same alert is muted even if the condition stays true — that's the cooldown, designed so a price hovering around 1.10 doesn't fire ten times in an hour. After 24 hours the alert re-arms automatically.
Tier limits: Free members can't create any (Pro feature). Pro members get 5 active alerts. Pro+ gets 999 (effectively unlimited). Soft-deleted alerts don't count against the cap.
Set up: EURUSD above 1.10 (label "breakout entry"). Latest cached close is 1.0985. Throughout the day price drifts to 1.1003. Next page-load runs check_price_alerts.
Productive uses + traps to avoid: - Setup-trigger alerts — "DAX above 18,200" tells you when your watched level breaks. The notification frees your screen-time for analysis instead of staring at quotes. - Risk-watch alerts — "USD/JPY below 148.50" on a long position warns you near your stop without you having to babysit. Don't replace the actual stop with the alert; use the alert as your second pair of eyes. - Cooldown is a feature, not a limitation — if you find yourself wishing for tighter cooldown because the price is hovering, the level was the wrong level. Move it. - Multiple alerts on the same symbol — fine for confluence ("above 1.10 AND below 1.09" as a regime sentinel). Configure them as two separate alerts; the system doesn't know about combinations. - Price-cache lag — the alert triggers on the latest cached close, not real-time tick. For 1d cache, that's end-of-day prices. For intraday symbols, the cache refreshes every 60 seconds during market hours. Don't expect tick-level precision; expect candle-close precision.
The classic use is the patient setup trader: you've identified a level on EURUSD that should hold or break, but you don't want to stare at the chart for the next eight hours. Configure an alert above the level for the breakout case + an alert below it for the reject case. Walk away. The dispatcher reaches you when the market commits.
For the active position monitor use, the alert is your safety net for the moments your stop is wider than usual (overnight, weekend, conditional ranges). "USD/JPY below 148.50" with a position already at 149.00 means you'll know about the move toward your stop before the broker auto-fills, giving you the option to manage manually if you want to.
TradeOnyx renders every active alert as a row in Settings → Notifications → Price Alerts, with last-fired timestamp and current threshold. Stale alerts that never fire are easy to spot and prune. The whole list is per-user, not per-account — alerts move with you across accounts.