ccxt 4.4.42 → 4.4.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -33
- package/dist/ccxt.browser.min.js +15 -15
- package/dist/cjs/ccxt.js +6 -1
- package/dist/cjs/src/binance.js +55 -43
- package/dist/cjs/src/bingx.js +37 -12
- package/dist/cjs/src/bitfinex.js +6 -2
- package/dist/cjs/src/bitget.js +3 -1
- package/dist/cjs/src/bitmart.js +4 -7
- package/dist/cjs/src/bitmex.js +3 -5
- package/dist/cjs/src/bitstamp.js +59 -0
- package/dist/cjs/src/bybit.js +7 -22
- package/dist/cjs/src/coinbase.js +13 -9
- package/dist/cjs/src/coinbaseinternational.js +13 -9
- package/dist/cjs/src/coincatch.js +2 -2
- package/dist/cjs/src/coinex.js +5 -5
- package/dist/cjs/src/cryptocom.js +3 -1
- package/dist/cjs/src/defx.js +2 -2
- package/dist/cjs/src/delta.js +1 -1
- package/dist/cjs/src/gate.js +7 -2
- package/dist/cjs/src/gemini.js +65 -2
- package/dist/cjs/src/hashkey.js +9 -9
- package/dist/cjs/src/htx.js +105 -2
- package/dist/cjs/src/hyperliquid.js +6 -1
- package/dist/cjs/src/kraken.js +9 -2
- package/dist/cjs/src/krakenfutures.js +5 -0
- package/dist/cjs/src/kucoin.js +9 -7
- package/dist/cjs/src/kucoinfutures.js +5 -5
- package/dist/cjs/src/mexc.js +16 -10
- package/dist/cjs/src/myokx.js +35 -0
- package/dist/cjs/src/ndax.js +1 -1
- package/dist/cjs/src/oceanex.js +1 -1
- package/dist/cjs/src/okx.js +4 -5
- package/dist/cjs/src/phemex.js +7 -5
- package/dist/cjs/src/pro/bitcoincom.js +4 -1
- package/dist/cjs/src/pro/bitopro.js +1 -1
- package/dist/cjs/src/pro/myokx.js +24 -0
- package/dist/cjs/src/vertex.js +69 -4
- package/dist/cjs/src/whitebit.js +4 -2
- package/dist/cjs/src/woo.js +8 -6
- package/dist/cjs/src/woofipro.js +5 -2
- package/js/ccxt.d.ts +8 -2
- package/js/ccxt.js +6 -2
- package/js/src/abstract/binance.d.ts +1 -0
- package/js/src/abstract/binancecoinm.d.ts +1 -0
- package/js/src/abstract/binanceus.d.ts +1 -0
- package/js/src/abstract/binanceusdm.d.ts +1 -0
- package/js/src/abstract/bingx.d.ts +4 -0
- package/js/src/abstract/bitstamp.d.ts +1 -0
- package/js/src/abstract/myokx.d.ts +343 -0
- package/js/src/abstract/myokx.js +11 -0
- package/js/src/binance.d.ts +33 -32
- package/js/src/binance.js +55 -43
- package/js/src/bingx.js +37 -12
- package/js/src/bitfinex.js +6 -2
- package/js/src/bitget.js +3 -1
- package/js/src/bitmart.js +4 -7
- package/js/src/bitmex.js +3 -5
- package/js/src/bitstamp.js +59 -0
- package/js/src/bybit.js +7 -22
- package/js/src/coinbase.js +13 -9
- package/js/src/coinbaseinternational.js +13 -9
- package/js/src/coincatch.js +2 -2
- package/js/src/coinex.js +5 -5
- package/js/src/cryptocom.js +3 -1
- package/js/src/defx.js +2 -2
- package/js/src/delta.js +1 -1
- package/js/src/gate.js +7 -2
- package/js/src/gemini.js +65 -2
- package/js/src/hashkey.js +9 -9
- package/js/src/htx.d.ts +13 -1
- package/js/src/htx.js +105 -2
- package/js/src/hyperliquid.js +6 -1
- package/js/src/kraken.js +9 -2
- package/js/src/krakenfutures.js +5 -0
- package/js/src/kucoin.js +9 -7
- package/js/src/kucoinfutures.js +5 -5
- package/js/src/mexc.js +16 -10
- package/js/src/myokx.d.ts +4 -0
- package/js/src/myokx.js +36 -0
- package/js/src/ndax.js +1 -1
- package/js/src/oceanex.js +1 -1
- package/js/src/okx.js +4 -5
- package/js/src/phemex.d.ts +1 -0
- package/js/src/phemex.js +7 -5
- package/js/src/pro/bitcoincom.js +4 -1
- package/js/src/pro/bitopro.js +1 -1
- package/js/src/pro/myokx.d.ts +4 -0
- package/js/src/pro/myokx.js +25 -0
- package/js/src/vertex.d.ts +11 -1
- package/js/src/vertex.js +69 -4
- package/js/src/whitebit.js +4 -2
- package/js/src/woo.js +8 -6
- package/js/src/woofipro.js +5 -2
- package/package.json +15 -8
package/js/src/bybit.js
CHANGED
|
@@ -1110,12 +1110,12 @@ export default class bybit extends Exchange {
|
|
|
1110
1110
|
'GTD': false,
|
|
1111
1111
|
},
|
|
1112
1112
|
'hedged': true,
|
|
1113
|
-
// exchange-supported features
|
|
1114
1113
|
'selfTradePrevention': true,
|
|
1115
1114
|
'trailing': true,
|
|
1116
|
-
'twap': false,
|
|
1117
1115
|
'iceberg': false,
|
|
1118
|
-
'
|
|
1116
|
+
'leverage': false,
|
|
1117
|
+
'marketBuyRequiresPrice': false,
|
|
1118
|
+
'marketBuyByCost': true,
|
|
1119
1119
|
},
|
|
1120
1120
|
'createOrders': {
|
|
1121
1121
|
'max': 10,
|
|
@@ -1154,29 +1154,13 @@ export default class bybit extends Exchange {
|
|
|
1154
1154
|
'spot': {
|
|
1155
1155
|
'extends': 'default',
|
|
1156
1156
|
'createOrder': {
|
|
1157
|
-
'marginMode': false,
|
|
1158
|
-
'triggerPrice': true,
|
|
1159
1157
|
'triggerPriceType': undefined,
|
|
1160
1158
|
'triggerDirection': false,
|
|
1161
|
-
'stopLossPrice': true,
|
|
1162
|
-
'takeProfitPrice': true,
|
|
1163
1159
|
'attachedStopLossTakeProfit': {
|
|
1164
1160
|
'triggerPriceType': undefined,
|
|
1165
1161
|
'limitPrice': true,
|
|
1166
1162
|
},
|
|
1167
|
-
'
|
|
1168
|
-
'IOC': true,
|
|
1169
|
-
'FOK': true,
|
|
1170
|
-
'PO': true,
|
|
1171
|
-
'GTD': false,
|
|
1172
|
-
},
|
|
1173
|
-
'hedged': true,
|
|
1174
|
-
// exchange-supported features
|
|
1175
|
-
'selfTradePrevention': true,
|
|
1176
|
-
'trailing': true,
|
|
1177
|
-
'twap': false,
|
|
1178
|
-
'iceberg': false,
|
|
1179
|
-
'oco': false,
|
|
1163
|
+
'marketBuyRequiresPrice': true,
|
|
1180
1164
|
},
|
|
1181
1165
|
},
|
|
1182
1166
|
'swap': {
|
|
@@ -2101,6 +2085,7 @@ export default class bybit extends Exchange {
|
|
|
2101
2085
|
'quoteId': quoteId,
|
|
2102
2086
|
'settleId': settleId,
|
|
2103
2087
|
'type': 'option',
|
|
2088
|
+
'subType': 'linear',
|
|
2104
2089
|
'spot': false,
|
|
2105
2090
|
'margin': false,
|
|
2106
2091
|
'swap': false,
|
|
@@ -2108,8 +2093,8 @@ export default class bybit extends Exchange {
|
|
|
2108
2093
|
'option': true,
|
|
2109
2094
|
'active': isActive,
|
|
2110
2095
|
'contract': true,
|
|
2111
|
-
'linear':
|
|
2112
|
-
'inverse':
|
|
2096
|
+
'linear': true,
|
|
2097
|
+
'inverse': false,
|
|
2113
2098
|
'taker': this.safeNumber(market, 'takerFee', this.parseNumber('0.0006')),
|
|
2114
2099
|
'maker': this.safeNumber(market, 'makerFee', this.parseNumber('0.0001')),
|
|
2115
2100
|
'contractSize': this.parseNumber('1'),
|
package/js/src/coinbase.js
CHANGED
|
@@ -378,7 +378,7 @@ export default class coinbase extends Exchange {
|
|
|
378
378
|
'user_native_currency': 'USD', // needed to get fees for v3
|
|
379
379
|
},
|
|
380
380
|
'features': {
|
|
381
|
-
'
|
|
381
|
+
'default': {
|
|
382
382
|
'sandbox': false,
|
|
383
383
|
'createOrder': {
|
|
384
384
|
'marginMode': true,
|
|
@@ -396,6 +396,11 @@ export default class coinbase extends Exchange {
|
|
|
396
396
|
},
|
|
397
397
|
'hedged': false,
|
|
398
398
|
'trailing': false,
|
|
399
|
+
'leverage': true,
|
|
400
|
+
'marketBuyByCost': true,
|
|
401
|
+
'marketBuyRequiresPrice': true,
|
|
402
|
+
'selfTradePrevention': false,
|
|
403
|
+
'iceberg': false,
|
|
399
404
|
},
|
|
400
405
|
'createOrders': undefined,
|
|
401
406
|
'fetchMyTrades': {
|
|
@@ -436,21 +441,20 @@ export default class coinbase extends Exchange {
|
|
|
436
441
|
'limit': 350,
|
|
437
442
|
},
|
|
438
443
|
},
|
|
444
|
+
'spot': {
|
|
445
|
+
'extends': 'default',
|
|
446
|
+
},
|
|
439
447
|
'swap': {
|
|
440
448
|
'linear': {
|
|
441
|
-
'extends': '
|
|
442
|
-
},
|
|
443
|
-
'inverse': {
|
|
444
|
-
'extends': 'spot',
|
|
449
|
+
'extends': 'default',
|
|
445
450
|
},
|
|
451
|
+
'inverse': undefined,
|
|
446
452
|
},
|
|
447
453
|
'future': {
|
|
448
454
|
'linear': {
|
|
449
|
-
'extends': '
|
|
450
|
-
},
|
|
451
|
-
'inverse': {
|
|
452
|
-
'extends': 'spot',
|
|
455
|
+
'extends': 'default',
|
|
453
456
|
},
|
|
457
|
+
'inverse': undefined,
|
|
454
458
|
},
|
|
455
459
|
},
|
|
456
460
|
});
|
|
@@ -259,7 +259,7 @@ export default class coinbaseinternational extends Exchange {
|
|
|
259
259
|
},
|
|
260
260
|
},
|
|
261
261
|
'features': {
|
|
262
|
-
'
|
|
262
|
+
'default': {
|
|
263
263
|
'sandbox': true,
|
|
264
264
|
'createOrder': {
|
|
265
265
|
'marginMode': false,
|
|
@@ -278,6 +278,11 @@ export default class coinbaseinternational extends Exchange {
|
|
|
278
278
|
},
|
|
279
279
|
'hedged': false,
|
|
280
280
|
'trailing': false,
|
|
281
|
+
'leverage': false,
|
|
282
|
+
'marketBuyByCost': false,
|
|
283
|
+
'marketBuyRequiresPrice': true,
|
|
284
|
+
'selfTradePrevention': true,
|
|
285
|
+
'iceberg': false,
|
|
281
286
|
},
|
|
282
287
|
'createOrders': undefined,
|
|
283
288
|
'fetchMyTrades': {
|
|
@@ -303,21 +308,20 @@ export default class coinbaseinternational extends Exchange {
|
|
|
303
308
|
'limit': 300,
|
|
304
309
|
},
|
|
305
310
|
},
|
|
311
|
+
'spot': {
|
|
312
|
+
'extends': 'default',
|
|
313
|
+
},
|
|
306
314
|
'swap': {
|
|
307
315
|
'linear': {
|
|
308
|
-
'extends': '
|
|
316
|
+
'extends': 'default',
|
|
309
317
|
},
|
|
310
318
|
'inverse': {
|
|
311
|
-
'extends': '
|
|
319
|
+
'extends': 'default',
|
|
312
320
|
},
|
|
313
321
|
},
|
|
314
322
|
'future': {
|
|
315
|
-
'linear':
|
|
316
|
-
|
|
317
|
-
},
|
|
318
|
-
'inverse': {
|
|
319
|
-
'extends': 'spot',
|
|
320
|
-
},
|
|
323
|
+
'linear': undefined,
|
|
324
|
+
'inverse': undefined,
|
|
321
325
|
},
|
|
322
326
|
},
|
|
323
327
|
});
|
package/js/src/coincatch.js
CHANGED
|
@@ -843,8 +843,8 @@ export default class coincatch extends Exchange {
|
|
|
843
843
|
settleId = this.safeString(supportMarginCoins, 0);
|
|
844
844
|
settle = this.safeCurrencyCode(settleId);
|
|
845
845
|
suffix = ':' + settle;
|
|
846
|
-
isLinear =
|
|
847
|
-
isInverse =
|
|
846
|
+
isLinear = quoteId === settleId; // todo check
|
|
847
|
+
isInverse = baseId === settleId; // todo check
|
|
848
848
|
if (isLinear) {
|
|
849
849
|
subType = 'linear';
|
|
850
850
|
}
|
package/js/src/coinex.js
CHANGED
|
@@ -522,11 +522,11 @@ export default class coinex extends Exchange {
|
|
|
522
522
|
},
|
|
523
523
|
'hedged': false,
|
|
524
524
|
'trailing': false,
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
525
|
+
'leverage': false,
|
|
526
|
+
'marketBuyByCost': true,
|
|
527
|
+
'marketBuyRequiresPrice': true,
|
|
528
|
+
'selfTradePrevention': true,
|
|
529
|
+
'iceberg': true, // todo implement
|
|
530
530
|
},
|
|
531
531
|
'createOrders': {
|
|
532
532
|
'max': 5,
|
package/js/src/cryptocom.js
CHANGED
|
@@ -374,10 +374,12 @@ export default class cryptocom extends Exchange {
|
|
|
374
374
|
'GTD': false,
|
|
375
375
|
},
|
|
376
376
|
'hedged': false,
|
|
377
|
-
// exchange-supported features
|
|
378
377
|
'selfTradePrevention': true,
|
|
379
378
|
'trailing': false,
|
|
380
379
|
'iceberg': false,
|
|
380
|
+
'leverage': false,
|
|
381
|
+
'marketBuyByCost': true,
|
|
382
|
+
'marketBuyRequiresPrice': true,
|
|
381
383
|
},
|
|
382
384
|
'createOrders': {
|
|
383
385
|
'max': 10,
|
package/js/src/defx.js
CHANGED
|
@@ -937,10 +937,10 @@ export default class defx extends Exchange {
|
|
|
937
937
|
const id = this.safeString(trade, 'id');
|
|
938
938
|
const oid = this.safeString(trade, 'orderId');
|
|
939
939
|
const takerOrMaker = this.safeStringLower(trade, 'role');
|
|
940
|
-
const buyerMaker = this.
|
|
940
|
+
const buyerMaker = this.safeBool(trade, 'buyerMaker');
|
|
941
941
|
let side = this.safeStringLower(trade, 'side');
|
|
942
942
|
if (buyerMaker !== undefined) {
|
|
943
|
-
if (buyerMaker
|
|
943
|
+
if (buyerMaker) {
|
|
944
944
|
side = 'sell';
|
|
945
945
|
}
|
|
946
946
|
else {
|
package/js/src/delta.js
CHANGED
|
@@ -742,7 +742,7 @@ export default class delta extends Exchange {
|
|
|
742
742
|
// other markets (swap, futures, move, spread, irs) seem to use the step of '1' contract
|
|
743
743
|
amountPrecision = this.parseNumber('1');
|
|
744
744
|
}
|
|
745
|
-
const linear = (settle ===
|
|
745
|
+
const linear = (settle === quote);
|
|
746
746
|
let optionType = undefined;
|
|
747
747
|
let symbol = base + '/' + quote;
|
|
748
748
|
if (swap || future || option) {
|
package/js/src/gate.js
CHANGED
|
@@ -708,7 +708,7 @@ export default class gate extends Exchange {
|
|
|
708
708
|
},
|
|
709
709
|
},
|
|
710
710
|
'features': {
|
|
711
|
-
'
|
|
711
|
+
'default': {
|
|
712
712
|
'sandbox': true,
|
|
713
713
|
'createOrder': {
|
|
714
714
|
'marginMode': true,
|
|
@@ -727,9 +727,11 @@ export default class gate extends Exchange {
|
|
|
727
727
|
},
|
|
728
728
|
'hedged': false,
|
|
729
729
|
'trailing': false,
|
|
730
|
-
// exchange-specific features
|
|
731
730
|
'iceberg': true,
|
|
732
731
|
'selfTradePrevention': true,
|
|
732
|
+
'leverage': false,
|
|
733
|
+
'marketBuyByCost': true,
|
|
734
|
+
'marketBuyRequiresPrice': true,
|
|
733
735
|
},
|
|
734
736
|
'createOrders': {
|
|
735
737
|
'max': 40, // NOTE! max 10 per symbol
|
|
@@ -765,6 +767,9 @@ export default class gate extends Exchange {
|
|
|
765
767
|
'limit': 1000,
|
|
766
768
|
},
|
|
767
769
|
},
|
|
770
|
+
'spot': {
|
|
771
|
+
'extends': 'default',
|
|
772
|
+
},
|
|
768
773
|
'forDerivatives': {
|
|
769
774
|
'extends': 'spot',
|
|
770
775
|
'createOrder': {
|
package/js/src/gemini.js
CHANGED
|
@@ -299,6 +299,69 @@ export default class gemini extends Exchange {
|
|
|
299
299
|
},
|
|
300
300
|
},
|
|
301
301
|
},
|
|
302
|
+
'features': {
|
|
303
|
+
'default': {
|
|
304
|
+
'sandbox': true,
|
|
305
|
+
'createOrder': {
|
|
306
|
+
'marginMode': false,
|
|
307
|
+
'triggerPrice': true,
|
|
308
|
+
'triggerPriceType': undefined,
|
|
309
|
+
'triggerDirection': false,
|
|
310
|
+
'stopLossPrice': false,
|
|
311
|
+
'takeProfitPrice': false,
|
|
312
|
+
'attachedStopLossTakeProfit': undefined,
|
|
313
|
+
'timeInForce': {
|
|
314
|
+
'IOC': true,
|
|
315
|
+
'FOK': true,
|
|
316
|
+
'PO': true,
|
|
317
|
+
'GTD': false,
|
|
318
|
+
},
|
|
319
|
+
'hedged': false,
|
|
320
|
+
'trailing': false,
|
|
321
|
+
'leverage': false,
|
|
322
|
+
'marketBuyByCost': true,
|
|
323
|
+
'marketBuyRequiresPrice': false,
|
|
324
|
+
'selfTradePrevention': false,
|
|
325
|
+
'iceberg': false,
|
|
326
|
+
},
|
|
327
|
+
'createOrders': undefined,
|
|
328
|
+
'fetchMyTrades': {
|
|
329
|
+
'marginMode': false,
|
|
330
|
+
'limit': 500,
|
|
331
|
+
'daysBack': undefined,
|
|
332
|
+
'untilDays': undefined,
|
|
333
|
+
},
|
|
334
|
+
'fetchOrder': {
|
|
335
|
+
'marginMode': false,
|
|
336
|
+
'trigger': false,
|
|
337
|
+
'trailing': false,
|
|
338
|
+
},
|
|
339
|
+
'fetchOpenOrders': {
|
|
340
|
+
'marginMode': false,
|
|
341
|
+
'limit': undefined,
|
|
342
|
+
'trigger': false,
|
|
343
|
+
'trailing': false,
|
|
344
|
+
},
|
|
345
|
+
'fetchOrders': undefined,
|
|
346
|
+
'fetchClosedOrders': undefined,
|
|
347
|
+
'fetchOHLCV': {
|
|
348
|
+
'limit': undefined,
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
'spot': {
|
|
352
|
+
'extends': 'default',
|
|
353
|
+
},
|
|
354
|
+
'swap': {
|
|
355
|
+
'linear': {
|
|
356
|
+
'extends': 'default',
|
|
357
|
+
},
|
|
358
|
+
'inverse': undefined,
|
|
359
|
+
},
|
|
360
|
+
'future': {
|
|
361
|
+
'linear': undefined,
|
|
362
|
+
'inverse': undefined,
|
|
363
|
+
},
|
|
364
|
+
},
|
|
302
365
|
});
|
|
303
366
|
}
|
|
304
367
|
/**
|
|
@@ -1480,8 +1543,8 @@ export default class gemini extends Exchange {
|
|
|
1480
1543
|
};
|
|
1481
1544
|
type = this.safeString(params, 'type', type);
|
|
1482
1545
|
params = this.omit(params, 'type');
|
|
1483
|
-
const triggerPrice = this.safeStringN(params, ['stop_price', 'stopPrice']);
|
|
1484
|
-
params = this.omit(params, ['stop_price', 'stopPrice', 'type']);
|
|
1546
|
+
const triggerPrice = this.safeStringN(params, ['triggerPrice', 'stop_price', 'stopPrice']);
|
|
1547
|
+
params = this.omit(params, ['triggerPrice', 'stop_price', 'stopPrice', 'type']);
|
|
1485
1548
|
if (type === 'stopLimit') {
|
|
1486
1549
|
throw new ArgumentsRequired(this.id + ' createOrder() requires a triggerPrice parameter or a stop_price parameter for ' + type + ' orders');
|
|
1487
1550
|
}
|
package/js/src/hashkey.js
CHANGED
|
@@ -358,13 +358,11 @@ export default class hashkey extends Exchange {
|
|
|
358
358
|
},
|
|
359
359
|
'hedged': false,
|
|
360
360
|
'trailing': false,
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
// 'iceberg': false,
|
|
367
|
-
// 'oco': false,
|
|
361
|
+
'leverage': false,
|
|
362
|
+
'marketBuyByCost': true,
|
|
363
|
+
'marketBuyRequiresPrice': true,
|
|
364
|
+
'selfTradePrevention': true,
|
|
365
|
+
'iceberg': false,
|
|
368
366
|
},
|
|
369
367
|
'createOrders': {
|
|
370
368
|
'max': 20,
|
|
@@ -2440,8 +2438,10 @@ export default class hashkey extends Exchange {
|
|
|
2440
2438
|
if (!market['spot']) {
|
|
2441
2439
|
throw new NotSupported(this.id + ' createMarketBuyOrderWithCost() is supported for spot markets only');
|
|
2442
2440
|
}
|
|
2443
|
-
|
|
2444
|
-
|
|
2441
|
+
const req = {
|
|
2442
|
+
'cost': cost,
|
|
2443
|
+
};
|
|
2444
|
+
return await this.createOrder(symbol, 'market', 'buy', cost, undefined, this.extend(req, params));
|
|
2445
2445
|
}
|
|
2446
2446
|
/**
|
|
2447
2447
|
* @method
|
package/js/src/htx.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/htx.js';
|
|
2
|
-
import type { TransferEntry, Int, OrderSide, OrderType, Order, OHLCV, Trade, FundingRateHistory, Balances, Str, Dict, Transaction, Ticker, OrderBook, Tickers, OrderRequest, Strings, Market, Currency, Num, Account, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, LeverageTiers, LeverageTier, int, LedgerEntry, FundingRate, FundingRates, DepositAddress, BorrowInterest } from './base/types.js';
|
|
2
|
+
import type { TransferEntry, Int, OrderSide, OrderType, Order, OHLCV, Trade, FundingRateHistory, Balances, Str, Dict, Transaction, Ticker, OrderBook, Tickers, OrderRequest, Strings, Market, Currency, Num, Account, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, LeverageTiers, LeverageTier, int, LedgerEntry, FundingRate, FundingRates, DepositAddress, BorrowInterest, OpenInterests } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class huobi
|
|
5
5
|
* @augments Exchange
|
|
@@ -789,6 +789,18 @@ export default class htx extends Exchange {
|
|
|
789
789
|
* @returns {object} an array of [open interest structures]{@link https://docs.ccxt.com/#/?id=open-interest-structure}
|
|
790
790
|
*/
|
|
791
791
|
fetchOpenInterestHistory(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").OpenInterest[]>;
|
|
792
|
+
/**
|
|
793
|
+
* @method
|
|
794
|
+
* @name htx#fetchOpenInterests
|
|
795
|
+
* @description Retrieves the open interest for a list of symbols
|
|
796
|
+
* @see https://huobiapi.github.io/docs/dm/v1/en/#get-contract-open-interest-information
|
|
797
|
+
* @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-swap-open-interest-information
|
|
798
|
+
* @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-get-swap-open-interest-information
|
|
799
|
+
* @param {string[]} [symbols] a list of unified CCXT market symbols
|
|
800
|
+
* @param {object} [params] exchange specific parameters
|
|
801
|
+
* @returns {object[]} a list of [open interest structures]{@link https://docs.ccxt.com/#/?id=open-interest-structure}
|
|
802
|
+
*/
|
|
803
|
+
fetchOpenInterests(symbols?: Strings, params?: {}): Promise<OpenInterests>;
|
|
792
804
|
/**
|
|
793
805
|
* @method
|
|
794
806
|
* @name htx#fetchOpenInterest
|
package/js/src/htx.js
CHANGED
|
@@ -99,6 +99,7 @@ export default class htx extends Exchange {
|
|
|
99
99
|
'fetchOHLCV': true,
|
|
100
100
|
'fetchOpenInterest': true,
|
|
101
101
|
'fetchOpenInterestHistory': true,
|
|
102
|
+
'fetchOpenInterests': true,
|
|
102
103
|
'fetchOpenOrder': undefined,
|
|
103
104
|
'fetchOpenOrders': true,
|
|
104
105
|
'fetchOrder': true,
|
|
@@ -1254,9 +1255,11 @@ export default class htx extends Exchange {
|
|
|
1254
1255
|
},
|
|
1255
1256
|
'hedged': false,
|
|
1256
1257
|
'trailing': false,
|
|
1257
|
-
// exchange-specific features
|
|
1258
1258
|
'iceberg': false,
|
|
1259
1259
|
'selfTradePrevention': true,
|
|
1260
|
+
'leverage': true,
|
|
1261
|
+
'marketBuyByCost': true,
|
|
1262
|
+
'marketBuyRequiresPrice': true,
|
|
1260
1263
|
},
|
|
1261
1264
|
'createOrders': {
|
|
1262
1265
|
'max': 10,
|
|
@@ -8643,6 +8646,105 @@ export default class htx extends Exchange {
|
|
|
8643
8646
|
const tick = this.safeList(data, 'tick');
|
|
8644
8647
|
return this.parseOpenInterestsHistory(tick, market, since, limit);
|
|
8645
8648
|
}
|
|
8649
|
+
/**
|
|
8650
|
+
* @method
|
|
8651
|
+
* @name htx#fetchOpenInterests
|
|
8652
|
+
* @description Retrieves the open interest for a list of symbols
|
|
8653
|
+
* @see https://huobiapi.github.io/docs/dm/v1/en/#get-contract-open-interest-information
|
|
8654
|
+
* @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-swap-open-interest-information
|
|
8655
|
+
* @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-get-swap-open-interest-information
|
|
8656
|
+
* @param {string[]} [symbols] a list of unified CCXT market symbols
|
|
8657
|
+
* @param {object} [params] exchange specific parameters
|
|
8658
|
+
* @returns {object[]} a list of [open interest structures]{@link https://docs.ccxt.com/#/?id=open-interest-structure}
|
|
8659
|
+
*/
|
|
8660
|
+
async fetchOpenInterests(symbols = undefined, params = {}) {
|
|
8661
|
+
await this.loadMarkets();
|
|
8662
|
+
symbols = this.marketSymbols(symbols);
|
|
8663
|
+
let market = undefined;
|
|
8664
|
+
if (symbols !== undefined) {
|
|
8665
|
+
const symbolsLength = symbols.length;
|
|
8666
|
+
if (symbolsLength > 0) {
|
|
8667
|
+
const first = this.safeString(symbols, 0);
|
|
8668
|
+
market = this.market(first);
|
|
8669
|
+
}
|
|
8670
|
+
}
|
|
8671
|
+
const request = {};
|
|
8672
|
+
let subType = undefined;
|
|
8673
|
+
[subType, params] = this.handleSubTypeAndParams('fetchPositions', market, params, 'linear');
|
|
8674
|
+
let marketType = undefined;
|
|
8675
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchPositions', market, params);
|
|
8676
|
+
let response = undefined;
|
|
8677
|
+
if (marketType === 'future') {
|
|
8678
|
+
response = await this.contractPublicGetApiV1ContractOpenInterest(this.extend(request, params));
|
|
8679
|
+
//
|
|
8680
|
+
// {
|
|
8681
|
+
// "status": "ok",
|
|
8682
|
+
// "data": [
|
|
8683
|
+
// {
|
|
8684
|
+
// "volume": 118850.000000000000000000,
|
|
8685
|
+
// "amount": 635.502025211544374189,
|
|
8686
|
+
// "symbol": "BTC",
|
|
8687
|
+
// "contract_type": "this_week",
|
|
8688
|
+
// "contract_code": "BTC220930",
|
|
8689
|
+
// "trade_amount": 1470.9400749347598691119206024033947897351,
|
|
8690
|
+
// "trade_volume": 286286,
|
|
8691
|
+
// "trade_turnover": 28628600.000000000000000000
|
|
8692
|
+
// }
|
|
8693
|
+
// ],
|
|
8694
|
+
// "ts": 1664337928805
|
|
8695
|
+
// }
|
|
8696
|
+
//
|
|
8697
|
+
}
|
|
8698
|
+
else if (subType === 'inverse') {
|
|
8699
|
+
response = await this.contractPublicGetSwapApiV1SwapOpenInterest(this.extend(request, params));
|
|
8700
|
+
//
|
|
8701
|
+
// {
|
|
8702
|
+
// "status": "ok",
|
|
8703
|
+
// "data": [
|
|
8704
|
+
// {
|
|
8705
|
+
// "volume": 518018.000000000000000000,
|
|
8706
|
+
// "amount": 2769.675777407074725180,
|
|
8707
|
+
// "symbol": "BTC",
|
|
8708
|
+
// "contract_code": "BTC-USD",
|
|
8709
|
+
// "trade_amount": 9544.4032080046491323463688602729806842458,
|
|
8710
|
+
// "trade_volume": 1848448,
|
|
8711
|
+
// "trade_turnover": 184844800.000000000000000000
|
|
8712
|
+
// }
|
|
8713
|
+
// ],
|
|
8714
|
+
// "ts": 1664337226028
|
|
8715
|
+
// }
|
|
8716
|
+
//
|
|
8717
|
+
}
|
|
8718
|
+
else {
|
|
8719
|
+
request['contract_type'] = 'swap';
|
|
8720
|
+
response = await this.contractPublicGetLinearSwapApiV1SwapOpenInterest(this.extend(request, params));
|
|
8721
|
+
//
|
|
8722
|
+
// {
|
|
8723
|
+
// "status": "ok",
|
|
8724
|
+
// "data": [
|
|
8725
|
+
// {
|
|
8726
|
+
// "volume": 7192610.000000000000000000,
|
|
8727
|
+
// "amount": 7192.610000000000000000,
|
|
8728
|
+
// "symbol": "BTC",
|
|
8729
|
+
// "value": 134654290.332000000000000000,
|
|
8730
|
+
// "contract_code": "BTC-USDT",
|
|
8731
|
+
// "trade_amount": 70692.804,
|
|
8732
|
+
// "trade_volume": 70692804,
|
|
8733
|
+
// "trade_turnover": 1379302592.9518,
|
|
8734
|
+
// "business_type": "swap",
|
|
8735
|
+
// "pair": "BTC-USDT",
|
|
8736
|
+
// "contract_type": "swap",
|
|
8737
|
+
// "trade_partition": "USDT"
|
|
8738
|
+
// }
|
|
8739
|
+
// ],
|
|
8740
|
+
// "ts": 1664336503144
|
|
8741
|
+
// }
|
|
8742
|
+
//
|
|
8743
|
+
}
|
|
8744
|
+
const data = this.safeList(response, 'data', []);
|
|
8745
|
+
const result = this.parseOpenInterests(data);
|
|
8746
|
+
return this.filterByArray(result, 'symbol', symbols);
|
|
8747
|
+
}
|
|
8646
8748
|
/**
|
|
8647
8749
|
* @method
|
|
8648
8750
|
* @name htx#fetchOpenInterest
|
|
@@ -8806,8 +8908,9 @@ export default class htx extends Exchange {
|
|
|
8806
8908
|
const timestamp = this.safeInteger(interest, 'ts');
|
|
8807
8909
|
const amount = this.safeNumber(interest, 'volume');
|
|
8808
8910
|
const value = this.safeNumber(interest, 'value');
|
|
8911
|
+
const marketId = this.safeString(interest, 'contract_code');
|
|
8809
8912
|
return this.safeOpenInterest({
|
|
8810
|
-
'symbol': this.
|
|
8913
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
8811
8914
|
'baseVolume': amount,
|
|
8812
8915
|
'quoteVolume': value,
|
|
8813
8916
|
'openInterestAmount': amount,
|
package/js/src/hyperliquid.js
CHANGED
|
@@ -25,7 +25,7 @@ export default class hyperliquid extends Exchange {
|
|
|
25
25
|
'countries': [],
|
|
26
26
|
'version': 'v1',
|
|
27
27
|
'rateLimit': 50,
|
|
28
|
-
'certified':
|
|
28
|
+
'certified': true,
|
|
29
29
|
'pro': true,
|
|
30
30
|
'dex': true,
|
|
31
31
|
'has': {
|
|
@@ -238,6 +238,11 @@ export default class hyperliquid extends Exchange {
|
|
|
238
238
|
},
|
|
239
239
|
'hedged': false,
|
|
240
240
|
'trailing': false,
|
|
241
|
+
'leverage': false,
|
|
242
|
+
'marketBuyByCost': false,
|
|
243
|
+
'marketBuyRequiresPrice': false,
|
|
244
|
+
'selfTradePrevention': false,
|
|
245
|
+
'iceberg': false,
|
|
241
246
|
},
|
|
242
247
|
'createOrders': {
|
|
243
248
|
'max': 1000,
|
package/js/src/kraken.js
CHANGED
|
@@ -449,6 +449,11 @@ export default class kraken extends Exchange {
|
|
|
449
449
|
},
|
|
450
450
|
'hedged': false,
|
|
451
451
|
'trailing': true,
|
|
452
|
+
'leverage': false,
|
|
453
|
+
'marketBuyByCost': true,
|
|
454
|
+
'marketBuyRequiresPrice': false,
|
|
455
|
+
'selfTradePrevention': true,
|
|
456
|
+
'iceberg': true, // todo implement
|
|
452
457
|
},
|
|
453
458
|
'createOrders': undefined,
|
|
454
459
|
'fetchMyTrades': {
|
|
@@ -1511,8 +1516,10 @@ export default class kraken extends Exchange {
|
|
|
1511
1516
|
async createMarketOrderWithCost(symbol, side, cost, params = {}) {
|
|
1512
1517
|
await this.loadMarkets();
|
|
1513
1518
|
// only buy orders are supported by the endpoint
|
|
1514
|
-
|
|
1515
|
-
|
|
1519
|
+
const req = {
|
|
1520
|
+
'cost': cost,
|
|
1521
|
+
};
|
|
1522
|
+
return await this.createOrder(symbol, 'market', side, 1, undefined, this.extend(req, params));
|
|
1516
1523
|
}
|
|
1517
1524
|
/**
|
|
1518
1525
|
* @method
|
package/js/src/krakenfutures.js
CHANGED
|
@@ -287,6 +287,11 @@ export default class krakenfutures extends Exchange {
|
|
|
287
287
|
},
|
|
288
288
|
'hedged': false,
|
|
289
289
|
'trailing': false,
|
|
290
|
+
'leverage': false,
|
|
291
|
+
'marketBuyByCost': false,
|
|
292
|
+
'marketBuyRequiresPrice': false,
|
|
293
|
+
'selfTradePrevention': false,
|
|
294
|
+
'iceberg': false,
|
|
290
295
|
},
|
|
291
296
|
'createOrders': {
|
|
292
297
|
'max': 100,
|
package/js/src/kucoin.js
CHANGED
|
@@ -1009,11 +1009,11 @@ export default class kucoin extends Exchange {
|
|
|
1009
1009
|
},
|
|
1010
1010
|
'hedged': false,
|
|
1011
1011
|
'trailing': false,
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1012
|
+
'leverage': false,
|
|
1013
|
+
'marketBuyByCost': true,
|
|
1014
|
+
'marketBuyRequiresPrice': false,
|
|
1015
|
+
'selfTradePrevention': true,
|
|
1016
|
+
'iceberg': true, // todo implement
|
|
1017
1017
|
},
|
|
1018
1018
|
'createOrders': {
|
|
1019
1019
|
'max': 5,
|
|
@@ -2318,8 +2318,10 @@ export default class kucoin extends Exchange {
|
|
|
2318
2318
|
*/
|
|
2319
2319
|
async createMarketOrderWithCost(symbol, side, cost, params = {}) {
|
|
2320
2320
|
await this.loadMarkets();
|
|
2321
|
-
|
|
2322
|
-
|
|
2321
|
+
const req = {
|
|
2322
|
+
'cost': cost,
|
|
2323
|
+
};
|
|
2324
|
+
return await this.createOrder(symbol, 'market', side, 0, undefined, this.extend(req, params));
|
|
2323
2325
|
}
|
|
2324
2326
|
/**
|
|
2325
2327
|
* @method
|