1.7 KiB
Alerts on daily moving averages
Status: built. Agreed 2026-08-15. Bells live in Layers; watches persist in
user_prefs.json under namespace ma_alerts.
Daily SMAs (10/20/50/100/200) already exist as Levels and already join
confluence clusters. This is a per-period, on/off watch that fires when
price reaches that average, not a new drawing type.
UX
A bell next to each period in Layers, off by default, independent of the visibility checkbox. Hiding the line must not mute the alert — same rule as confluence: layer prefs are a display choice, a push is not.
Keep them out of the drawings list. They are not drawings.
How it fires
Same proximity test as a typed price alert: /ES within half an ATR of
that MA's current price. The engine already runs every closed minute.
Do not copy manual-line disarm. A line you drew is one-shot. A 200 DMA is a standing level: fire, then stay quiet until price leaves and comes back (the existing cooldown). Sitting on the average must not chatter.
The push names the average (200 DMA), not a zone. The forming daily SMA
moves as the session prints, so a “touch” can be the average walking to
price. That is real; the label is what stops it being mistaken for
confluence.
Persistence
Five booleans, not rows in manual_lines.json. When a user-keyed
preference store exists (docs/multi_user.md), these belong there. Until
then, one small prefs object — same shape, single constant user_id.
What not to do
- Do not alert because the layer is visible.
- Do not put MA watches in the drawings list or give them drawing numbers.
- Do not one-shot-disarm them like a hand-placed line.
- Do not gate them on confluence score. You asked for this average.