@@ -6,8 +6,8 @@ module.exports = {
6
6
* @param callback
7
7
* @returns {Promise<unknown> }
8
8
*/
9
- binanceInitUsdT : async callback => {
10
- return new Promise ( resolve => {
9
+ binanceInitUsdT : async callback =>
10
+ new Promise ( resolve => {
11
11
request ( 'https://api.binance.com/api/v1/exchangeInfo' , ( _error , _res , body ) => {
12
12
const pairs = [ ] ;
13
13
@@ -28,10 +28,7 @@ module.exports = {
28
28
29
29
content . symbols
30
30
. filter (
31
- p =>
32
- [ 'USDT' ] . includes ( p . quoteAsset ) &&
33
- ! [ 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'BUSD' ] . includes ( p . baseAsset ) &&
34
- p . status . toLowerCase ( ) === 'trading'
31
+ p => [ 'USDT' ] . includes ( p . quoteAsset ) && ! [ 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'BUSD' ] . includes ( p . baseAsset ) && p . status . toLowerCase ( ) === 'trading'
35
32
)
36
33
. forEach ( pair => {
37
34
let result = {
@@ -51,16 +48,15 @@ module.exports = {
51
48
52
49
resolve ( pairs ) ;
53
50
} ) ;
54
- } ) ;
55
- } ,
51
+ } ) ,
56
52
57
53
/**
58
54
* Init helper for Binance to fetch all BUSD pairs
59
55
* @param callback
60
56
* @returns {Promise<unknown> }
61
57
*/
62
- binanceInitBusd : async callback => {
63
- return new Promise ( resolve => {
58
+ binanceInitBusd : async callback =>
59
+ new Promise ( resolve => {
64
60
request ( 'https://api.binance.com/api/v1/exchangeInfo' , ( _error , _res , body ) => {
65
61
const pairs = [ ] ;
66
62
@@ -81,10 +77,7 @@ module.exports = {
81
77
82
78
content . symbols
83
79
. filter (
84
- p =>
85
- [ 'BUSD' ] . includes ( p . quoteAsset ) &&
86
- ! [ 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'USDT' ] . includes ( p . baseAsset ) &&
87
- p . status . toLowerCase ( ) === 'trading'
80
+ p => [ 'BUSD' ] . includes ( p . quoteAsset ) && ! [ 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'USDT' ] . includes ( p . baseAsset ) && p . status . toLowerCase ( ) === 'trading'
88
81
)
89
82
. forEach ( pair => {
90
83
let result = {
@@ -104,16 +97,15 @@ module.exports = {
104
97
105
98
resolve ( pairs ) ;
106
99
} ) ;
107
- } ) ;
108
- } ,
100
+ } ) ,
109
101
110
102
/**
111
103
* Init helper for Binance to fetch all BNB pairs
112
104
* @param callback
113
105
* @returns {Promise<unknown> }
114
106
*/
115
- binanceInitBNB : async callback => {
116
- return new Promise ( resolve => {
107
+ binanceInitBNB : async callback =>
108
+ new Promise ( resolve => {
117
109
request ( 'https://api.binance.com/api/v1/exchangeInfo' , ( _error , _res , body ) => {
118
110
const pairs = [ ] ;
119
111
@@ -135,9 +127,7 @@ module.exports = {
135
127
content . symbols
136
128
. filter (
137
129
p =>
138
- [ 'BNB' ] . includes ( p . quoteAsset ) &&
139
- ! [ 'BUSD' , 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'USDT' ] . includes ( p . baseAsset ) &&
140
- p . status . toLowerCase ( ) === 'trading'
130
+ [ 'BNB' ] . includes ( p . quoteAsset ) && ! [ 'BUSD' , 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'USDT' ] . includes ( p . baseAsset ) && p . status . toLowerCase ( ) === 'trading'
141
131
)
142
132
. forEach ( pair => {
143
133
let result = {
@@ -157,16 +147,15 @@ module.exports = {
157
147
158
148
resolve ( pairs ) ;
159
149
} ) ;
160
- } ) ;
161
- } ,
150
+ } ) ,
162
151
163
152
/**
164
153
* Init helper for Binance to fetch all BTC pairs
165
154
* @param callback
166
155
* @returns {Promise<unknown> }
167
156
*/
168
- binanceInitBTC : async callback => {
169
- return new Promise ( resolve => {
157
+ binanceInitBTC : async callback =>
158
+ new Promise ( resolve => {
170
159
request ( 'https://api.binance.com/api/v1/exchangeInfo' , ( _error , _res , body ) => {
171
160
const pairs = [ ] ;
172
161
@@ -188,9 +177,7 @@ module.exports = {
188
177
content . symbols
189
178
. filter (
190
179
p =>
191
- [ 'BTC' ] . includes ( p . quoteAsset ) &&
192
- ! [ 'BUSD' , 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'USDT' ] . includes ( p . baseAsset ) &&
193
- p . status . toLowerCase ( ) === 'trading'
180
+ [ 'BTC' ] . includes ( p . quoteAsset ) && ! [ 'BUSD' , 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'USDT' ] . includes ( p . baseAsset ) && p . status . toLowerCase ( ) === 'trading'
194
181
)
195
182
. forEach ( pair => {
196
183
let result = {
@@ -210,16 +197,15 @@ module.exports = {
210
197
211
198
resolve ( pairs ) ;
212
199
} ) ;
213
- } ) ;
214
- } ,
200
+ } ) ,
215
201
216
202
/**
217
203
* Init helper for Binance to fetch all ETH pairs
218
204
* @param callback
219
205
* @returns {Promise<unknown> }
220
206
*/
221
- binanceInitETH : async callback => {
222
- return new Promise ( resolve => {
207
+ binanceInitETH : async callback =>
208
+ new Promise ( resolve => {
223
209
request ( 'https://api.binance.com/api/v1/exchangeInfo' , ( _error , _res , body ) => {
224
210
const pairs = [ ] ;
225
211
@@ -241,9 +227,7 @@ module.exports = {
241
227
content . symbols
242
228
. filter (
243
229
p =>
244
- [ 'ETH' ] . includes ( p . quoteAsset ) &&
245
- ! [ 'BUSD' , 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'USDT' ] . includes ( p . baseAsset ) &&
246
- p . status . toLowerCase ( ) === 'trading'
230
+ [ 'ETH' ] . includes ( p . quoteAsset ) && ! [ 'BUSD' , 'USDC' , 'PAX' , 'USDS' , 'TUSD' , 'USDT' ] . includes ( p . baseAsset ) && p . status . toLowerCase ( ) === 'trading'
247
231
)
248
232
. forEach ( pair => {
249
233
let result = {
@@ -263,8 +247,7 @@ module.exports = {
263
247
264
248
resolve ( pairs ) ;
265
249
} ) ;
266
- } ) ;
267
- } ,
250
+ } ) ,
268
251
269
252
/**
270
253
* Init helper for Binance to fetch all USDT pairs with spot only
@@ -382,84 +365,79 @@ module.exports = {
382
365
* @link https://www.binance.com/de/margin-fee
383
366
* @returns {Promise<unknown> }
384
367
*/
385
- binancecrossMarginPairsUsdT : ( ) => {
386
- return new Promise ( resolve => {
368
+ binancecrossMarginPairsUsdT : ( ) =>
369
+ new Promise ( resolve => {
387
370
request ( 'https://www.binance.com/gateway-api/v1/friendly/margin/vip/spec/list-all' , ( _error , _res , body ) => {
388
371
const content = JSON . parse ( body ) ;
389
372
const crossMarginPairsUsdT = content . data . map ( i => i . assetName ) ;
390
373
391
374
resolve ( crossMarginPairsUsdT ) ;
392
375
} ) ;
393
- } ) ;
394
- } ,
376
+ } ) ,
395
377
396
378
/**
397
379
* There is API (or not documented) where to filter isolated and cross margin wallet pairs take them from fee page api
398
380
*
399
381
* @link https://www.binance.com/de/margin-fee
400
382
* @returns {Promise<unknown> }
401
383
*/
402
- binancecrossMarginPairsBusd : ( ) => {
403
- return new Promise ( resolve => {
384
+ binancecrossMarginPairsBusd : ( ) =>
385
+ new Promise ( resolve => {
404
386
request ( 'https://www.binance.com/gateway-api/v1/friendly/margin/vip/spec/list-all' , ( _error , _res , body ) => {
405
387
const content = JSON . parse ( body ) ;
406
388
const crossMarginPairsBusd = content . data . map ( i => i . assetName ) ;
407
389
408
390
resolve ( crossMarginPairsBusd ) ;
409
391
} ) ;
410
- } ) ;
411
- } ,
392
+ } ) ,
412
393
413
394
/**
414
395
* There is API (or not documented) where to filter isolated and cross margin wallet pairs take them from fee page api
415
396
*
416
397
* @link https://www.binance.com/de/margin-fee
417
398
* @returns {Promise<unknown> }
418
399
*/
419
- binancecrossMarginPairsBNB : ( ) => {
420
- return new Promise ( resolve => {
400
+ binancecrossMarginPairsBNB : ( ) =>
401
+ new Promise ( resolve => {
421
402
request ( 'https://www.binance.com/gateway-api/v1/friendly/margin/vip/spec/list-all' , ( _error , _res , body ) => {
422
403
const content = JSON . parse ( body ) ;
423
404
const crossMarginPairsBNB = content . data . map ( i => i . assetName ) ;
424
405
425
406
resolve ( crossMarginPairsBNB ) ;
426
407
} ) ;
427
- } ) ;
428
- } ,
408
+ } ) ,
429
409
430
410
/**
431
411
* There is API (or not documented) where to filter isolated and cross margin wallet pairs take them from fee page api
432
412
*
433
413
* @link https://www.binance.com/de/margin-fee
434
414
* @returns {Promise<unknown> }
435
415
*/
436
- binancecrossMarginPairsBTC : ( ) => {
437
- return new Promise ( resolve => {
416
+ binancecrossMarginPairsBTC : ( ) =>
417
+ new Promise ( resolve => {
438
418
request ( 'https://www.binance.com/gateway-api/v1/friendly/margin/vip/spec/list-all' , ( _error , _res , body ) => {
439
419
const content = JSON . parse ( body ) ;
440
420
const crossMarginPairsBTC = content . data . map ( i => i . assetName ) ;
441
421
442
422
resolve ( crossMarginPairsBTC ) ;
443
423
} ) ;
444
- } ) ;
445
- } ,
424
+ } ) ,
446
425
447
426
/**
448
427
* There is API (or not documented) where to filter isolated and cross margin wallet pairs take them from fee page api
449
428
*
450
429
* @link https://www.binance.com/de/margin-fee
451
430
* @returns {Promise<unknown> }
452
431
*/
453
- binancecrossMarginPairsETH : ( ) => {
454
- return new Promise ( resolve => {
432
+ binancecrossMarginPairsETH : ( ) =>
433
+ new Promise ( resolve => {
455
434
request ( 'https://www.binance.com/gateway-api/v1/friendly/margin/vip/spec/list-all' , ( _error , _res , body ) => {
456
435
const content = JSON . parse ( body ) ;
457
436
const crossMarginPairsETH = content . data . map ( i => i . assetName ) ;
458
437
459
438
resolve ( crossMarginPairsETH ) ;
460
439
} ) ;
461
- } ) ;
462
- } ,
440
+ } ) ,
463
441
464
442
/**
465
443
* Init helper for Binance to fetch all USDT pairs with margin only
@@ -558,8 +536,8 @@ module.exports = {
558
536
* @param callback
559
537
* @returns {Promise<unknown> }
560
538
*/
561
- bitmexInit : async callback => {
562
- return new Promise ( resolve => {
539
+ bitmexInit : async callback =>
540
+ new Promise ( resolve => {
563
541
request ( 'https://www.bitmex.com/api/v1/instrument/active' , ( _error , _res , body ) => {
564
542
const pairs = [ ] ;
565
543
@@ -585,16 +563,15 @@ module.exports = {
585
563
586
564
resolve ( pairs ) ;
587
565
} ) ;
588
- } ) ;
589
- } ,
566
+ } ) ,
590
567
591
568
/**
592
569
* Init helper for Binance futures USDT & BUSD exchange to fetch active contracts
593
570
* @param callback
594
571
* @returns {Promise<unknown> }
595
572
*/
596
- binanceFuturesInit : async callback => {
597
- return new Promise ( resolve => {
573
+ binanceFuturesInit : async callback =>
574
+ new Promise ( resolve => {
598
575
request ( 'https://fapi.binance.com/fapi/v1/exchangeInfo' , ( _error , _res , body ) => {
599
576
const pairs = [ ] ;
600
577
@@ -620,16 +597,15 @@ module.exports = {
620
597
621
598
resolve ( pairs ) ;
622
599
} ) ;
623
- } ) ;
624
- } ,
600
+ } ) ,
625
601
626
602
/**
627
603
* Init helper for Binance futures COIN exchange to fetch active contracts
628
604
* @param callback
629
605
* @returns {Promise<unknown> }
630
606
*/
631
- binanceFuturesCoin : async callback => {
632
- return new Promise ( resolve => {
607
+ binanceFuturesCoin : async callback =>
608
+ new Promise ( resolve => {
633
609
request ( 'https://dapi.binance.com/dapi/v1/exchangeInfo' , ( _error , _res , body ) => {
634
610
const pairs = [ ] ;
635
611
@@ -655,12 +631,47 @@ module.exports = {
655
631
656
632
resolve ( pairs ) ;
657
633
} ) ;
658
- } ) ;
659
- } ,
634
+ } ) ,
635
+
636
+ /**
637
+ * @param callback
638
+ * @param limit
639
+ * @returns {Promise<unknown> }
640
+ */
641
+ bybitLinearCoin : async ( callback , limit = 100 ) =>
642
+ new Promise ( resolve => {
643
+ request ( 'https://api.bybit.com/v5/market/tickers?category=linear' , ( _error , _res , body ) => {
644
+ const pairs = [ ] ;
660
645
661
- // BitFinex
662
- bitfinexUsdMarginInit : async callback => {
663
- return new Promise ( resolve => {
646
+ const content = JSON . parse ( body ) ;
647
+
648
+ const arr = ( content ?. result ?. list || [ ] )
649
+ . filter ( p => p . symbol . toUpperCase ( ) . endsWith ( 'USDT' ) )
650
+ . sort ( ( a , b ) => b . turnover24h - a . turnover24h ) ;
651
+
652
+ arr . slice ( 0 , limit ) . forEach ( pair => {
653
+ let result = {
654
+ symbol : `${ pair . symbol . substring ( 0 , pair . symbol . length - 4 ) } /USDT:USDT` ,
655
+ periods : [ '15m' , '1h' ] ,
656
+ exchange : 'bybit_unified'
657
+ } ;
658
+
659
+ if ( callback ) {
660
+ result = callback ( result , pair ) ;
661
+ }
662
+
663
+ if ( result ) {
664
+ pairs . push ( result ) ;
665
+ }
666
+ } ) ;
667
+
668
+ resolve ( pairs ) ;
669
+ } ) ;
670
+ } ) ,
671
+
672
+ // BitFinex
673
+ bitfinexUsdMarginInit : async callback =>
674
+ new Promise ( resolve => {
664
675
request ( 'https://api.bitfinex.com/v1/symbols_details' , ( _error , _res , body ) => {
665
676
const pairs = [ ] ;
666
677
@@ -686,12 +697,11 @@ module.exports = {
686
697
687
698
resolve ( pairs ) ;
688
699
} ) ;
689
- } ) ;
690
- } ,
700
+ } ) ,
691
701
692
702
// Bybit
693
- bybitInit : async callback => {
694
- return new Promise ( resolve => {
703
+ bybitInit : async callback =>
704
+ new Promise ( resolve => {
695
705
request ( 'https://api.bybit.com/v2/public/symbols' , ( _error , _res , body ) => {
696
706
const pairs = [ ] ;
697
707
@@ -735,6 +745,5 @@ module.exports = {
735
745
736
746
resolve ( pairs ) ;
737
747
} ) ;
738
- } ) ;
739
- }
748
+ } )
740
749
} ;
0 commit comments