Commit efe5e04b by ken

depth

parent 97531d17
...@@ -161,21 +161,23 @@ function _handleDepthData(symbol, data, source) { ...@@ -161,21 +161,23 @@ function _handleDepthData(symbol, data, source) {
const key = symbol.replace('_', '').toUpperCase() + 'DEPTH@zb'; const key = symbol.replace('_', '').toUpperCase() + 'DEPTH@zb';
symbol = symbol.toUpperCase(); symbol = symbol.toUpperCase();
const lastEventTime = lastEventTimeMap[symbol] || 0; const lastEventTime = lastEventTimeMap[symbol] || 0;
if (data.timestamp >= lastEventTime /*|| (data.timestamp === lastEventTime && JSON.stringify(data) !== lastDataMap[symbol] && JSON.stringify(data) !== lastLastDataMap[symbol])*/) { const asks = data.asks.reverse().slice(0, 5);
const bids = data.bids.slice(0, 5);
const currentJsonData = JSON.stringify({asks, bids});
if (data.timestamp > lastEventTime || (data.timestamp === lastEventTime && currentJsonData !== lastDataMap[symbol])) {
if (symbol === "BTCUSDT") { if (symbol === "BTCUSDT") {
let consoleMethod = console.log; let consoleMethod = console.log;
if (data.timestamp === lastEventTime) { if (data.timestamp === lastEventTime) {
consoleMethod = console.warn; consoleMethod = console.warn;
} }
consoleMethod(symbol + '@' + data.timestamp * 1000 + ' from ' + source); consoleMethod(symbol + '@' + data.timestamp * 1000 + ' from ' + source);
consoleMethod(JSON.stringify(data)); consoleMethod(currentJsonData);
} }
lastEventTimeMap[symbol] = data.timestamp; lastEventTimeMap[symbol] = data.timestamp;
lastLastDataMap[symbol] = lastDataMap[symbol]; // lastLastDataMap[symbol] = lastDataMap[symbol];
lastDataMap[symbol] = JSON.stringify(data); lastDataMap[symbol] = currentJsonData;
const publishContent = JSON.stringify({symbol, time: data.timestamp * 1000}); const publishContent = JSON.stringify({symbol, time: data.timestamp * 1000});
const asks = data.asks.reverse();
const bids = data.bids;
const depthJson = JSON.stringify({asks, bids, symbol}); const depthJson = JSON.stringify({asks, bids, symbol});
if (asks[0][0] >= bids[0][0]) { if (asks[0][0] >= bids[0][0]) {
redisClient.set(key, depthJson, 'EX', 2); redisClient.set(key, depthJson, 'EX', 2);
...@@ -186,9 +188,19 @@ function _handleDepthData(symbol, data, source) { ...@@ -186,9 +188,19 @@ function _handleDepthData(symbol, data, source) {
} }
} }
const lastDepthRestSendTimeMap = {};
function depthByRest(symbol,callback) { function depthByRest(symbol,callback) {
const url = `http://api.zb.com/data/v1/depth?market=${symbol}&size=5`; const url = `http://api.zb.com/data/v1/depth?market=${symbol}&size=5`;
const sendTime = Date.now();
_request("GET", url, (err, data) => { _request("GET", url, (err, data) => {
const lastDepthRestSendTime = lastDepthRestSendTimeMap[symbol] || 0;
if (sendTime > lastDepthRestSendTime) {
lastDepthRestSendTimeMap[symbol] = sendTime
} else {
console.error("延迟太大,丢弃该数据");
return;
}
if (err) { if (err) {
console.error(url + "出错"); console.error(url + "出错");
} else { } else {
...@@ -232,13 +244,13 @@ function getBalanceByRest() { ...@@ -232,13 +244,13 @@ function getBalanceByRest() {
function run() { function run() {
subscribe(); subscribe();
// const depthInterval = Math.max(60 * 1000 / (900 * ips.length / observerSymbol.length), 80); const depthInterval = Math.max(60 * 1000 / (900 * ips.length / observerSymbol.length), 80);
// console.log(depthInterval); console.log(depthInterval);
// setInterval(() => { setInterval(() => {
// for (const symbol of observerSymbol) { for (const symbol of observerSymbol) {
// depthByRest(symbol); depthByRest(symbol);
// } }
// }, depthInterval); }, depthInterval);
setInterval(() => { setInterval(() => {
getBalanceByRest(); getBalanceByRest();
}, 2000); }, 2000);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment