Volume Screener Development for Crypto Trading

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

Blockchain Development Services

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1452
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    1005
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1270
  • image_logo-advance_0.webp
    B2B Advance company logo design
    719
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    1011

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
Email 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

  1. Analysis — discuss exchanges, pairs, metrics, and alert types.
  2. Design — architecture for collection, caching, filtering; UI design.
  3. Development — data collection, metric calculation, alerts, interface; tests written in parallel.
  4. Integration — connect exchanges via API, configure rate limits.
  5. Testing — validate against historical data, reduce false positives, optimize thresholds.
  6. 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.