We develop professional volume screeners for crypto funds and traders working with volume anomalies. Our volume screener development focuses on trade volume screener for cryptocurrency volume analysis, using RVOL metric as a volume spike detector. Off-the-shelf solutions like CoinMarketCap only show the top 10 by absolute volume — you miss spikes on new Uniswap pairs or low-liquidity CEXs. Our screener engines monitor 500+ pairs across 10 exchanges simultaneously, computing Volume Ratio, Relative Volume (RVOL), and volume trend in real time. Every second of delay costs money: professional traders lose the chance to enter a position before the crowd. Therefore, we implement data collection with minimal latency, custom metrics, and alerts via Telegram/Slack.
The key feature of our approach is an adaptive threshold: we don't use hard thresholds but adjust to each pair's volatility on each timeframe. This yields 2–3 times fewer false signals compared to a fixed ratio of 3. The result — you see only the spikes that truly matter, not the noise. With 5+ years of experience and 50+ completed projects, our team ensures top quality volume screener development.
Why Simple Volume Ratio Is Not Enough
Volume Ratio = current volume / average over N periods. Ratio > 3 means a potential spike. But using only this metric will give false positives on pairs with daily cycles. For example, on ETH/USDT at 2:00 AM the norm is 10,000 ETH, while at 2:00 PM it's 100,000 ETH. A Ratio of 3 at night is only 30,000, which is normal during the day. That's why we add RVOL — Relative Volume by time of day (Relative volume).
RVOL levels out seasonality: for each hour, we store the average volume over 30 days. The current volume is divided by the hourly average. RVOL > 2 indicates an anomaly regardless of time.
| Metric | Formula | Benefit |
|---|---|---|
| Volume Ratio | current / average over 20 | Detects volume growth |
| RVOL | current / average for this hour | Accounts for daily seasonality |
| Volume Spike | sudden burst > 3x previous candle | Entry of a large player |
| OBV | cumulative indicator | Money flow (accumulation/distribution) |
| Volume Trend | regression slope over 5 candles | Direction (increasing/decreasing) |
How to Collect Data from 5 Exchanges Simultaneously
Parallel collection is the main challenge. One exchange returns data in 50–200 ms, but five sequentially take 1 second. We use Promise.all with chunking into groups of 10 symbols and pauses between chunks to avoid exceeding rate limits.
Here's an example VolumeDataCollector class — it caches candles and filters pairs by minimum Volume Ratio.
class VolumeDataCollector { private candleCache = new Map<string, OHLCV[]>(); private exchange: ccxt.Exchange; async fetchAllCandles(symbols: string[], timeframe: string): Promise<void> { const chunks = chunkArray(symbols, 10); for (const chunk of chunks) { await Promise.all( chunk.map(async (symbol) => { const candles = await this.exchange.fetchOHLCV(symbol, timeframe, undefined, 100); this.candleCache.set(`${symbol}:${timeframe}`, candles.map(formatCandle)); }) ); await sleep(100); } } async getScreenerData(timeframe: string, minVolumeRatio: number = 2): Promise<VolumeScreenerItem[]> { const results: VolumeScreenerItem[] = []; for (const [key, candles] of this.candleCache) { if (!key.endsWith(`:${timeframe}`)) continue; const symbol = key.split(':')[0]; if (candles.length < 21) continue; const metrics = calculateVolumeMetrics(candles.slice(0, -1), candles[candles.length - 1]); if (metrics.volumeRatio >= minVolumeRatio) { results.push({ symbol, currentVolume: candles[candles.length - 1].volume, ...metrics, }); } } return results.sort((a, b) => b.volumeRatio - a.volumeRatio); } } How volume metrics are calculated (explanation)
The calculateVolumeMetrics function takes the last 20 candles for average, the current candle for Volume Ratio, and the last 5 for trend. Volume Trend is computed via linear regression: positive slope indicates increase, negative slope indicates decrease. A spike is flagged when Ratio > 3 regardless of trend.
function calculateVolumeMetrics( candles: OHLCV[], currentCandle: OHLCV ): VolumeMetrics { const period = 20; const recentCandles = candles.slice(-period); const avgVolume = recentCandles.reduce((sum, c) => sum + c.volume, 0) / period; const volumeRatio = currentCandle.volume / avgVolume; const recentVolumes = candles.slice(-5).map(c => c.volume); const volumeTrendSlope = linearRegressionSlope(recentVolumes); const priceChange = (currentCandle.close - candles.slice(-2)[0].close) / candles.slice(-2)[0].close; const volumeChange = currentCandle.volume / candles.slice(-2)[0].volume - 1; const confirming = (priceChange > 0 && volumeChange > 0) || (priceChange < 0 && volumeChange > 0); return { avgVolume, volumeRatio, volumeTrend: volumeTrendSlope > 0.1 ? 'increasing' : volumeTrendSlope < -0.1 ? 'decreasing' : (volumeRatio > 3 ? 'spike' : 'normal'), volumePrice: confirming ? 'confirming' : 'diverging', }; } UI for Traders: What We Embed
The interface is a React table with column sorting and visual indicators. We use a VolumeRow component that highlights rows with Ratio > 5 in orange — traders see urgent signals in a second.
const VolumeRow: React.FC<{ item: VolumeScreenerItem }> = ({ item }) => ( <tr className={item.volumeRatio > 5 ? 'highlight-spike' : ''}> <td><span>{item.symbol}</span></td> <td> <VolumeRatioBar ratio={item.volumeRatio} /> <span>{item.volumeRatio.toFixed(1)}x</span> </td> <td>{item.rvol.toFixed(1)}x</td> <td>{formatVolume(item.currentVolume)}</td> <td className={item.priceChange > 0 ? 'green' : 'red'}> {item.priceChange > 0 ? '+' : ''}{item.priceChange.toFixed(2)}% </td> <td><TrendIcon trend={item.volumeTrend} /></td> <td> <span className={item.volumePrice === 'confirming' ? 'green' : 'yellow'}> {item.volumePrice === 'confirming' ? '✓ Confirm' : '⚡ Diverge'} </span> </td> </tr> ); How to Set Up Alerts for Your Strategy
Showing data is not enough — traders need notifications. We configure alerts via Telegram, email, or webhook. Each alert is tied to a symbol and a minimum Ratio. When the threshold is reached, a detailed message is sent.
| Channel | Format | Typical latency |
|---|---|---|
| Telegram | Markdown text | 1–3 seconds |
| HTML | 10–30 seconds | |
| Webhook | JSON | 0.5–2 seconds |
async function checkVolumeAlerts(screenerData: VolumeScreenerItem[], alerts: VolumeAlert[]) { for (const alert of alerts) { const item = screenerData.find(d => d.symbol === alert.symbol); if (!item) continue; if (item.volumeRatio >= alert.minVolumeRatio) { await sendAlert(alert.notifyVia, { message: `Volume spike on ${item.symbol}! Ratio: ${item.volumeRatio.toFixed(1)}x avg | Price: ${item.priceChange > 0 ? '+' : ''}${item.priceChange.toFixed(2)}%`, }); } } } Our Process
- Analysis — discuss exchanges, pairs, metrics, and alert types.
- Design — architecture for collection, caching, filtering; UI design.
- Development — data collection, metric calculation, alerts, interface; tests written in parallel.
- Integration — connect exchanges via API, configure rate limits.
- Testing — validate against historical data, reduce false positives, optimize thresholds.
- Deployment — deploy to cloud (AWS/GCP), set up monitoring.
To start working on a project, contact us — we will analyze requirements and propose an architecture within 2 days. Get a consultation and preliminary estimate today.
What's Included
- Architectural documentation and data flow diagrams
- Source code of volume screener with open API
- Adaptive table with sorting and filters
- Alert system (Telegram, email, webhook)
- Cloud infrastructure deployment
- Operations documentation
- 2-week warranty support after deployment
Timeline: 4 to 6 weeks depending on number of exchanges and metrics. A typical project investment ranges from $25,000 to $75,000, offering a rapid payback period. Our adaptive thresholds filter out 80% more noise than fixed ratio screeners, delivering 5x more actionable alerts. Our volume screener is designed for professional cryptocurrency volume analysis, acting as a powerful trade volume screener and volume spike detector. It excels at abnormal volume detection across multiple exchanges, making it an essential tool for volume analysis trading. Our team's experience: 5+ years in Web3 development, 50+ completed projects, certified Solidity and Rust engineers. We guarantee SLA adherence and a transparent process.
Want a volume screener tailored to your needs? We'll evaluate your project in 2 days — request development and receive a market analysis as a bonus.







