Skip to content

Commit d95b296

Browse files
author
Jon Eyrick
authored
WebSocket Reconnect
1 parent 10f8f4b commit d95b296

File tree

1 file changed

+56
-17
lines changed

1 file changed

+56
-17
lines changed

node-binance-api.js

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,7 @@ module.exports = function() {
113113
if ( reconnect ) {
114114
console.log("WebSocket reconnecting: "+endpoint);
115115
reconnect();
116-
}
117-
console.log("WebSocket connection closed! "+endpoint);
116+
} else console.log("WebSocket connection closed! "+endpoint);
118117
});
119118

120119
ws.on('message', function(data) {
@@ -276,9 +275,9 @@ module.exports = function() {
276275
let cumulative = 0;
277276
for ( let price of sorted ) {
278277
if ( baseValue == "cumulative" ) {
279-
cumulative+= cache[price];
280-
object[price] = cumulative.toFixed(8);
281-
} else if ( !baseValue ) object[price] = cache[price];
278+
cumulative+= parseFloat(cache[price]);
279+
object[price] = cumulative;
280+
} else if ( !baseValue ) object[price] = parseFloat(cache[price]);
282281
else object[price] = parseFloat((cache[price] * parseFloat(price)).toFixed(8));
283282
if ( ++count > max ) break;
284283
}
@@ -287,14 +286,14 @@ module.exports = function() {
287286
sortAsks: function(symbol, max = Infinity, baseValue = false) {
288287
let object = {}, count = 0, cache;
289288
if ( typeof symbol == "object" ) cache = symbol;
290-
else cache = getDepthCache(sparseFloatymbol).asks;
289+
else cache = getDepthCache(symbol).asks;
291290
let sorted = Object.keys(cache).sort(function(a, b){return parseFloat(a)-parseFloat(b)});
292291
let cumulative = 0;
293292
for ( let price of sorted ) {
294293
if ( baseValue == "cumulative" ) {
295-
cumulative+= cache[price];
296-
object[price] = cumulative.toFixed(8);
297-
} else if ( !baseValue ) object[price] = cache[price];
294+
cumulative+= parseFloat(cache[price]);
295+
object[price] = cumulative;
296+
} else if ( !baseValue ) object[price] = parseFloat(cache[price]);
298297
else object[price] = parseFloat((cache[price] * parseFloat(price)).toFixed(8));
299298
if ( ++count > max ) break;
300299
}
@@ -331,17 +330,36 @@ module.exports = function() {
331330
marketSell: function(symbol, quantity, callback = false) {
332331
order("SELL", symbol, quantity, 0, {type:"MARKET"}, callback);
333332
},
334-
cancel: function(symbol, orderid, callback) {
335-
signedRequest(base+"v3/order", {symbol:symbol, orderId:orderid}, callback, "DELETE");
333+
cancel: function(symbol, orderid, callback = false) {
334+
signedRequest(base+"v3/order", {symbol:symbol, orderId:orderid}, function(data) {
335+
if ( callback ) return callback.call(this, data, symbol);
336+
}, "DELETE");
336337
},
337338
orderStatus: function(symbol, orderid, callback) {
338-
signedRequest(base+"v3/order", {symbol:symbol, orderId:orderid}, callback);
339+
signedRequest(base+"v3/order", {symbol:symbol, orderId:orderid}, function(data) {
340+
if ( callback ) return callback.call(this, data, symbol);
341+
});
339342
},
340343
openOrders: function(symbol, callback) {
341-
signedRequest(base+"v3/openOrders", {symbol:symbol}, callback);
344+
signedRequest(base+"v3/openOrders", {symbol:symbol}, function(data) {
345+
return callback.call(this, data, symbol);
346+
});
347+
},
348+
cancelOrders: function(symbol, callback = false) {
349+
signedRequest(base+"v3/openOrders", {symbol:symbol}, function(json) {
350+
for ( let obj of json ) {
351+
let quantity = obj.origQty - obj.executedQty;
352+
console.log("cancel order: "+obj.side+" "+symbol+" "+quantity+" @ "+obj.price+" #"+obj.orderId);
353+
signedRequest(base+"v3/order", {symbol:symbol, orderId:obj.orderId}, function(data) {
354+
if ( callback ) return callback.call(this, data, symbol);
355+
}, "DELETE");
356+
}
357+
});
342358
},
343359
allOrders: function(symbol, callback) {
344-
signedRequest(base+"v3/allOrders", {symbol:symbol, limit:500}, callback);
360+
signedRequest(base+"v3/allOrders", {symbol:symbol, limit:500}, function(data) {
361+
if ( callback ) return callback.call(this, data, symbol);
362+
});
345363
},
346364
depth: function(symbol, callback) {
347365
publicRequest(base+"v1/depth", {symbol:symbol}, function(data) {
@@ -361,7 +379,9 @@ module.exports = function() {
361379
});
362380
},
363381
prevDay: function(symbol, callback) {
364-
publicRequest(base+"v1/ticker/24hr", {symbol:symbol}, callback);
382+
publicRequest(base+"v1/ticker/24hr", {symbol:symbol}, function(data) {
383+
if ( callback ) return callback.call(this, data, symbol);
384+
});
365385
},
366386
account: function(callback) {
367387
signedRequest(base+"v3/account", {}, callback);
@@ -371,8 +391,27 @@ module.exports = function() {
371391
if ( callback ) callback(balanceData(data));
372392
});
373393
},
374-
trades: function(symbol,callback) {
375-
signedRequest(base+"v3/myTrades", {symbol:symbol}, callback);
394+
trades: function(symbol, callback) {
395+
signedRequest(base+"v3/myTrades", {symbol:symbol}, function(data) {
396+
if ( callback ) return callback.call(this, data, symbol);
397+
});
398+
},
399+
// convert chart data to highstock array [timestamp,open,high,low,close]
400+
highstock: function(chart, include_volume = false) {
401+
let array = [];
402+
for ( let timestamp in chart ) {
403+
let obj = chart[timestamp];
404+
let line = [
405+
Number(timestamp),
406+
parseFloat(obj.open),
407+
parseFloat(obj.high),
408+
parseFloat(obj.low),
409+
parseFloat(obj.close)
410+
];
411+
if ( include_volume ) line.push(parseFloat(obj.volume));
412+
array.push(line);
413+
}
414+
return array;
376415
},
377416
ohlc: function(chart) {
378417
let open = [], high = [], low = [], close = [], volume = [];

0 commit comments

Comments
 (0)