@@ -113,8 +113,7 @@ module.exports = function() {
113
113
if ( reconnect ) {
114
114
console . log ( "WebSocket reconnecting: " + endpoint ) ;
115
115
reconnect ( ) ;
116
- }
117
- console . log ( "WebSocket connection closed! " + endpoint ) ;
116
+ } else console . log ( "WebSocket connection closed! " + endpoint ) ;
118
117
} ) ;
119
118
120
119
ws . on ( 'message' , function ( data ) {
@@ -276,9 +275,9 @@ module.exports = function() {
276
275
let cumulative = 0 ;
277
276
for ( let price of sorted ) {
278
277
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 ] ) ;
282
281
else object [ price ] = parseFloat ( ( cache [ price ] * parseFloat ( price ) ) . toFixed ( 8 ) ) ;
283
282
if ( ++ count > max ) break ;
284
283
}
@@ -287,14 +286,14 @@ module.exports = function() {
287
286
sortAsks : function ( symbol , max = Infinity , baseValue = false ) {
288
287
let object = { } , count = 0 , cache ;
289
288
if ( typeof symbol == "object" ) cache = symbol ;
290
- else cache = getDepthCache ( sparseFloatymbol ) . asks ;
289
+ else cache = getDepthCache ( symbol ) . asks ;
291
290
let sorted = Object . keys ( cache ) . sort ( function ( a , b ) { return parseFloat ( a ) - parseFloat ( b ) } ) ;
292
291
let cumulative = 0 ;
293
292
for ( let price of sorted ) {
294
293
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 ] ) ;
298
297
else object [ price ] = parseFloat ( ( cache [ price ] * parseFloat ( price ) ) . toFixed ( 8 ) ) ;
299
298
if ( ++ count > max ) break ;
300
299
}
@@ -331,17 +330,36 @@ module.exports = function() {
331
330
marketSell : function ( symbol , quantity , callback = false ) {
332
331
order ( "SELL" , symbol , quantity , 0 , { type :"MARKET" } , callback ) ;
333
332
} ,
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" ) ;
336
337
} ,
337
338
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
+ } ) ;
339
342
} ,
340
343
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
+ } ) ;
342
358
} ,
343
359
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
+ } ) ;
345
363
} ,
346
364
depth : function ( symbol , callback ) {
347
365
publicRequest ( base + "v1/depth" , { symbol :symbol } , function ( data ) {
@@ -361,7 +379,9 @@ module.exports = function() {
361
379
} ) ;
362
380
} ,
363
381
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
+ } ) ;
365
385
} ,
366
386
account : function ( callback ) {
367
387
signedRequest ( base + "v3/account" , { } , callback ) ;
@@ -371,8 +391,27 @@ module.exports = function() {
371
391
if ( callback ) callback ( balanceData ( data ) ) ;
372
392
} ) ;
373
393
} ,
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 ;
376
415
} ,
377
416
ohlc : function ( chart ) {
378
417
let open = [ ] , high = [ ] , low = [ ] , close = [ ] , volume = [ ] ;
0 commit comments