@@ -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