Fast visual screener for order book densities on Binance Futures (USDT-M). Shows large limit levels near current mark price, sorts and highlights "MM" (market maker) levels with high liquidity strength.
cd /home/app/futures-screener
pm2 delete futures-screener 2>/dev/null || true
PORT=3200 pm2 start npm --name "futures-screener" -- run dev
pm2 logs futures-screener
Open http://127.0.0.1:3200 in your browser.
| Method | Path | Description |
|---|---|---|
| GET | /health |
Health check |
| GET | /symbols |
All USDT-PERP symbols |
| GET | /depth/:symbol |
Order book depth |
| GET | /densities/simple |
Main endpoint โ densities with MM flag |
| GET | /_cache/stats |
Server cache stats |
/densities/simple Parameters| Param | Default | Description |
|---|---|---|
symbols |
(all) | Comma-separated (e.g. BTCUSDT,ETHUSDT) |
minNotional |
0 |
Minimum notional (price ร qty) |
depthLimit |
100 |
Max levels to return |
windowPct |
5.0 |
Window around price (ยฑ%) |
concurrency |
5 |
Parallel requests to Binance |
xFilter |
0 |
Filter by x multiplier (0 = no filter) |
natrFilter |
0 |
Filter by NATR (0 = no filter) |
mmMode |
false |
Show only MM levels |
mmMultiplier |
4 |
MM candidate multiplier |
{
"count": 200,
"minNotional": 0,
"depthLimit": 100,
"concurrency": 5,
"mmMode": false,
"windowPct": 5.0,
"xFilter": 0,
"natrFilter": 0,
"data": [
{
"symbol": "BTCUSDT",
"side": "bid",
"price": 72500.00,
"qty": 10.5,
"notional": 761250,
"distancePct": 0.15,
"x": 2.35,
"mmCount": 3,
"score": 4.1234,
"vol1": 1500000,
"vol2": 1200000,
"vol3": 980000,
"natr": 0.45,
"mmBaseBid": 350000,
"mmBaseAsk": 380000
}
]
}
score = log10(1 + notional) ร exp(-distancePct / 0.45) ร (isMM ? 1.8 : 1)
notional: Order size (price ร quantity)distancePct: Distance from mark price (%)isMM: Flag based on cluster analysisfutures-screener/
โโโ server/
โ โโโ index.js # Fastify API
โโโ app/
โ โโโ index.html # Main HTML
โ โโโ app.js # UI logic
โ โโโ styles.css # Tailwind styles
โโโ docs/
โ โโโ VISION.md # Long-term goals
โ โโโ ROADMAP.md # Development stages
โ โโโ UI-SPEC.md # UI specification
โโโ package.json
โโโ README.md # This file
โโโ CRITICAL_ISSUES.md # Bug fixes history
โโโ MEMORY.md # Long-term memory
/densities/simple workingsudo cp futures-screener.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable futures-screener
sudo systemctl start futures-screener
server {
listen 443 ssl http2;
server_name futures-screener.szhub.space;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:3200;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
| Variable | Default | Description |
|---|---|---|
PORT |
3200 |
Server port |
MM_SEED_MULTIPLIER |
2.0 |
MM candidate multiplier (initial) |
SERVICE_NAME |
futures-screener |
Service name for healthcheck |
No API key required โ public endpoints only.
# Run locally (no PM2)
cd server
node index.js
# Run tests (if added)
npm test
# Type check (if migrated to TS)
npm run type-check
Created for OpenClaw by Morty ๐ฆ
MIT