Fintech · Market Screener
EMA Crossover Screener
Real-time crypto screener detecting 9/20 EMA crossovers across five timeframes, with a live dashboard and Telegram alerts.
Status
Live
EMA periods
9 / 20
Timeframes
1m · 15m · 1h · 4h · 1d
Data
Live WebSocket
Alerts
Telegram
The Problem
Spotting EMA crossovers by hand means flipping between charts, symbols, and timeframes — five timeframes across a dozen symbols is sixty charts to watch. Signals get missed, and by the time a crossover is noticed on a one-minute chart the move is often already over.
The Solution
A persistent WebSocket connection to Delta Exchange streams live candles into per-symbol, per-timeframe EMA state. Crossovers are confirmed on candle close and pushed straight to the browser over a WebSocket, so the dashboard updates without polling. The watchlist is dynamic — adding or removing a symbol subscribes and unsubscribes from the upstream feed at runtime, with no restart. Historical candles are cached to disk so restarts are near-instant instead of refetching everything.
Features
Real-Time Signal Detection
- Persistent WebSocket connection to the Delta Exchange India feed
- 9-period and 20-period EMA computed per symbol and per timeframe
- Crossovers confirmed on candle close to avoid mid-candle false signals
- Five timeframes tracked concurrently — 1m, 15m, 1h, 4h, and 1d
- Signals pushed to the browser over WebSocket, with no client polling
- Historical crossover lookup for any symbol and timeframe
Dynamic Watchlist
- Add or remove symbols from the UI without restarting the service
- Runtime subscribe and unsubscribe against the upstream market feed
- Full instrument list pulled live from the Delta Exchange products API
- Watchlist state persisted server-side across restarts
- Colour-coded multi-timeframe table showing bullish and bearish states
Alerts & Sessions
- Telegram alerts on confirmed crossovers, delivered per linked user
- PIN-based Telegram account linking, with unlink support
- HS256-signed sessions with a 30-minute expiry and rolling refresh
- Capped concurrent sessions per deployment
- Rotating file logs for both backend events and frontend errors
Architecture
“FastAPI application with an async polling manager holding one persistent WebSocket to Delta Exchange. Candle data flows into per-symbol, per-timeframe EMA state in shared memory; confirmed crossovers fan out to connected browsers over a /ws endpoint and to Telegram through the bot worker. Historical candles are cached on disk so restarts avoid refetching the full history. Runs as a containerised uvicorn app behind Nginx with Let's Encrypt TLS on GCP.”