A long-standing issue: restarting the scanner mid-session wiped all tracked session highs. Every HOD accumulated since 09:00 was gone. The Price Alerts panel would start firing against the wrong baseline — treating the current price as the high when the real high was set hours earlier. For any ticker that had already run and pulled back, this produced a flood of false HOD alerts.
The fix is a periodic snapshot loop running inside the server. Every 60 seconds the full session state — day highs, open prices, bar volumes — is written to disk. On restart, the server reads this file immediately before doing anything else, restoring all tracked highs to within 60 seconds of their last known values. The price history seed that follows only upgrades values it finds higher than the restored ones, so no data is ever downgraded on restart.
- 60-second checkpoint. Worst case on a restart is 60 seconds of missed high updates — in practice far less.
- Date-aware restore. The snapshot includes a timestamp. If the file is from a previous session date, it is ignored and the scanner starts fresh. Yesterday's highs never bleed into today.
- Clears on session reset. The 03:00 ET boundary watcher triggers a final save before wiping all state for the new premarket session.
- Browser refresh unaffected. This was always handled by the server sending current state on reconnect — the snapshot loop ensures that state is correct even after a restart.
The EMA9 bounce alert threshold slider was not working as labelled. Setting it to 3% did not mean a ticker had to be 3% above its EMA9 to trigger — the actual threshold being applied was a fraction of that, causing alerts to fire on tickers barely above their EMA9. The root cause was a dollar-conversion calculation that scaled the percentage to a fixed $0.90 price before converting back to a percentage against the actual EMA9 price. For any ticker priced above $1, this produced an effective threshold far below the slider value.
The fix removes the dollar conversion entirely. The slider value is now applied directly as a percentage above EMA9, which is what the label always said it was doing. A 3% threshold now means the price must be at least 3% above EMA9 before a bounce alert fires.
- Slider now accurate. 2.5% means 2.5% above EMA9 for all tickers regardless of price.
- Fewer false positives. Alerts that were triggering on marginal EMA9 touches are filtered out.
- Continuation logic unchanged. Once triggered, the continuation alerts (new highs above the last alert price) work exactly as before.