虚拟货币现货大单买入监控最小落地方案(Node.js实现)
本文提供一个最小可落地方案,实现实时监控 Binance 交易所现货大单买入,使用 Node.js 和 WebSocket 技术。
1️⃣ 安装依赖
bash
npm init -y
npm install ws2️⃣ Node.js 代码示例
js
// largeBuyMonitor.js
const WebSocket = require('ws');
const SYMBOL = "btcusdt"; // 监控交易对
const THRESHOLD_USD = 100000; // 单笔大买阈值(美元)
// Binance WebSocket URL
const WS_URL = `wss://stream.binance.com:9443/ws/${SYMBOL}@aggTrade`;
// 建立 WebSocket 连接
const ws = new WebSocket(WS_URL);
ws.on('open', () => {
console.log(`Connected to Binance aggTrade stream for ${SYMBOL}`);
});
ws.on('message', (msg) => {
try {
const data = JSON.parse(msg);
const price = parseFloat(data.p); // 成交价格
const baseVol = parseFloat(data.q); // 成交量(币数量)
const takerBuyQuote = parseFloat(data.Q); // taker 买入成交额(USD 计)
const isBuyerMaker = data.m; // true = 卖方为 maker, false = 买方为 taker
const isTakerBuy = !isBuyerMaker; // taker 买入 = 主动吃盘
// 以 taker 买入的成交额作为判断
const quoteVolume = takerBuyQuote > 0 ? takerBuyQuote : price * baseVol;
if (isTakerBuy && quoteVolume >= THRESHOLD_USD) {
console.log(`[${new Date().toISOString()}] LARGE BUY detected!`);
console.log(`Price: ${price}, Base Volume: ${baseVol}, Quote Volume: ${quoteVolume}`);
}
} catch (err) {
console.error('Parse error', err);
}
});
ws.on('close', () => {
console.log('WebSocket closed, retrying in 3s...');
setTimeout(() => {
require('child_process').fork(__filename);
}, 3000);
});
ws.on('error', (err) => {
console.error('WebSocket error', err);
});3️⃣ 运行方式
bash
node largeBuyMonitor.js运行后,当发现单笔大买单(超过阈值)时,控制台会输出:
txt
[2025-10-29T12:00:05.123Z] LARGE BUY detected!
Price: 30123.45, Base Volume: 3.5, Quote Volume: 1054324️⃣ 可扩展的最小改进
- 多交易对:将
SYMBOL改为数组,forEach 启动多个 WebSocket。 - 报警通知:将
console.log替换为 Telegram Bot / Webhook / Email 通知。 - 重连策略优化:当前简单重启进程,可改为指数退避策略。
- 短期聚合:可维护最近 10 秒的成交量,用于检测成交量突增。
此方案适合快速落地验证大单买入信号,如需生产环境使用,建议增加日志、异常处理、多交易所数据和报警系统。