ccxt 4.1.69 → 4.1.71
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 +3 -3
- package/dist/ccxt.browser.js +702 -207
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/binance.js +1 -0
- package/dist/cjs/src/coinbase.js +3 -0
- package/dist/cjs/src/coinex.js +388 -63
- package/dist/cjs/src/gate.js +297 -134
- package/dist/cjs/src/pro/binance.js +13 -10
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- 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/coinbase.d.ts +3 -0
- package/js/src/binance.js +1 -0
- package/js/src/coinbase.js +3 -0
- package/js/src/coinex.d.ts +4 -1
- package/js/src/coinex.js +388 -63
- package/js/src/gate.js +297 -134
- package/js/src/pro/binance.js +13 -10
- package/package.json +1 -1
- package/skip-tests.json +3 -1
package/dist/cjs/src/gate.js
CHANGED
|
@@ -2235,11 +2235,16 @@ class gate extends gate$1 {
|
|
|
2235
2235
|
if (limit !== undefined) {
|
|
2236
2236
|
request['limit'] = limit;
|
|
2237
2237
|
}
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
}
|
|
2242
|
-
|
|
2238
|
+
let response = undefined;
|
|
2239
|
+
if (type === 'swap') {
|
|
2240
|
+
response = await this.privateFuturesGetSettleAccountBook(this.extend(request, requestParams));
|
|
2241
|
+
}
|
|
2242
|
+
else if (type === 'future') {
|
|
2243
|
+
response = await this.privateDeliveryGetSettleAccountBook(this.extend(request, requestParams));
|
|
2244
|
+
}
|
|
2245
|
+
else {
|
|
2246
|
+
throw new errors.NotSupported(this.id + ' fetchFundingHistory() only support swap & future market type');
|
|
2247
|
+
}
|
|
2243
2248
|
//
|
|
2244
2249
|
// [
|
|
2245
2250
|
// {
|
|
@@ -2312,18 +2317,26 @@ class gate extends gate$1 {
|
|
|
2312
2317
|
// };
|
|
2313
2318
|
//
|
|
2314
2319
|
const [request, query] = this.prepareRequest(market, market['type'], params);
|
|
2315
|
-
const method = this.getSupportedMapping(market['type'], {
|
|
2316
|
-
'spot': 'publicSpotGetOrderBook',
|
|
2317
|
-
'margin': 'publicSpotGetOrderBook',
|
|
2318
|
-
'swap': 'publicFuturesGetSettleOrderBook',
|
|
2319
|
-
'future': 'publicDeliveryGetSettleOrderBook',
|
|
2320
|
-
'option': 'publicOptionsGetOrderBook',
|
|
2321
|
-
});
|
|
2322
2320
|
if (limit !== undefined) {
|
|
2323
2321
|
request['limit'] = limit; // default 10, max 100
|
|
2324
2322
|
}
|
|
2325
2323
|
request['with_id'] = true;
|
|
2326
|
-
|
|
2324
|
+
let response = undefined;
|
|
2325
|
+
if (market['spot'] || market['margin']) {
|
|
2326
|
+
response = await this.publicSpotGetOrderBook(this.extend(request, query));
|
|
2327
|
+
}
|
|
2328
|
+
else if (market['swap']) {
|
|
2329
|
+
response = await this.publicFuturesGetSettleOrderBook(this.extend(request, query));
|
|
2330
|
+
}
|
|
2331
|
+
else if (market['future']) {
|
|
2332
|
+
response = await this.publicDeliveryGetSettleOrderBook(this.extend(request, query));
|
|
2333
|
+
}
|
|
2334
|
+
else if (market['option']) {
|
|
2335
|
+
response = await this.publicOptionsGetOrderBook(this.extend(request, query));
|
|
2336
|
+
}
|
|
2337
|
+
else {
|
|
2338
|
+
throw new errors.NotSupported(this.id + ' fetchOrderBook() not support this market type');
|
|
2339
|
+
}
|
|
2327
2340
|
//
|
|
2328
2341
|
// spot
|
|
2329
2342
|
//
|
|
@@ -2415,19 +2428,25 @@ class gate extends gate$1 {
|
|
|
2415
2428
|
await this.loadMarkets();
|
|
2416
2429
|
const market = this.market(symbol);
|
|
2417
2430
|
const [request, query] = this.prepareRequest(market, undefined, params);
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
}
|
|
2425
|
-
if (market['
|
|
2431
|
+
let response = undefined;
|
|
2432
|
+
if (market['spot'] || market['margin']) {
|
|
2433
|
+
response = await this.publicSpotGetTickers(this.extend(request, query));
|
|
2434
|
+
}
|
|
2435
|
+
else if (market['swap']) {
|
|
2436
|
+
response = await this.publicFuturesGetSettleTickers(this.extend(request, query));
|
|
2437
|
+
}
|
|
2438
|
+
else if (market['future']) {
|
|
2439
|
+
response = await this.publicDeliveryGetSettleTickers(this.extend(request, query));
|
|
2440
|
+
}
|
|
2441
|
+
else if (market['option']) {
|
|
2426
2442
|
const marketId = market['id'];
|
|
2427
2443
|
const optionParts = marketId.split('-');
|
|
2428
2444
|
request['underlying'] = this.safeString(optionParts, 0);
|
|
2445
|
+
response = await this.publicOptionsGetTickers(this.extend(request, query));
|
|
2446
|
+
}
|
|
2447
|
+
else {
|
|
2448
|
+
throw new errors.NotSupported(this.id + ' fetchTicker() not support this market type');
|
|
2429
2449
|
}
|
|
2430
|
-
const response = await this[method](this.extend(request, query));
|
|
2431
2450
|
let ticker = undefined;
|
|
2432
2451
|
if (market['option']) {
|
|
2433
2452
|
for (let i = 0; i < response.length; i++) {
|
|
@@ -2577,20 +2596,26 @@ class gate extends gate$1 {
|
|
|
2577
2596
|
}
|
|
2578
2597
|
const [type, query] = this.handleMarketTypeAndParams('fetchTickers', market, params);
|
|
2579
2598
|
const [request, requestParams] = this.prepareRequest(undefined, type, query);
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
}
|
|
2587
|
-
if (type === '
|
|
2599
|
+
let response = undefined;
|
|
2600
|
+
if (type === 'spot' || type === 'margin') {
|
|
2601
|
+
response = await this.publicSpotGetTickers(this.extend(request, requestParams));
|
|
2602
|
+
}
|
|
2603
|
+
else if (type === 'swap') {
|
|
2604
|
+
response = await this.publicFuturesGetSettleTickers(this.extend(request, requestParams));
|
|
2605
|
+
}
|
|
2606
|
+
else if (type === 'future') {
|
|
2607
|
+
response = await this.publicDeliveryGetSettleTickers(this.extend(request, requestParams));
|
|
2608
|
+
}
|
|
2609
|
+
else if (type === 'option') {
|
|
2588
2610
|
this.checkRequiredArgument('fetchTickers', symbols, 'symbols');
|
|
2589
2611
|
const marketId = market['id'];
|
|
2590
2612
|
const optionParts = marketId.split('-');
|
|
2591
2613
|
request['underlying'] = this.safeString(optionParts, 0);
|
|
2614
|
+
response = await this.publicOptionsGetTickers(this.extend(request, requestParams));
|
|
2615
|
+
}
|
|
2616
|
+
else {
|
|
2617
|
+
throw new errors.NotSupported(this.id + ' fetchTickers() not support this market type');
|
|
2592
2618
|
}
|
|
2593
|
-
const response = await this[method](this.extend(request, requestParams));
|
|
2594
2619
|
return this.parseTickers(response, symbols);
|
|
2595
2620
|
}
|
|
2596
2621
|
parseBalanceHelper(entry) {
|
|
@@ -2621,18 +2646,36 @@ class gate extends gate$1 {
|
|
|
2621
2646
|
const market = this.market(symbol);
|
|
2622
2647
|
request['currency_pair'] = market['id'];
|
|
2623
2648
|
}
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
'
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2649
|
+
let response = undefined;
|
|
2650
|
+
if (type === 'spot') {
|
|
2651
|
+
if (marginMode === 'spot') {
|
|
2652
|
+
response = await this.privateSpotGetAccounts(this.extend(request, requestQuery));
|
|
2653
|
+
}
|
|
2654
|
+
else if (marginMode === 'margin') {
|
|
2655
|
+
response = await this.privateMarginGetAccounts(this.extend(request, requestQuery));
|
|
2656
|
+
}
|
|
2657
|
+
else if (marginMode === 'cross_margin') {
|
|
2658
|
+
response = await this.privateMarginGetCrossAccounts(this.extend(request, requestQuery));
|
|
2659
|
+
}
|
|
2660
|
+
else {
|
|
2661
|
+
throw new errors.NotSupported(this.id + ' fetchBalance() not support this marginMode');
|
|
2662
|
+
}
|
|
2663
|
+
}
|
|
2664
|
+
else if (type === 'funding') {
|
|
2665
|
+
response = await this.privateMarginGetFundingAccounts(this.extend(request, requestQuery));
|
|
2666
|
+
}
|
|
2667
|
+
else if (type === 'swap') {
|
|
2668
|
+
response = await this.privateFuturesGetSettleAccounts(this.extend(request, requestQuery));
|
|
2669
|
+
}
|
|
2670
|
+
else if (type === 'future') {
|
|
2671
|
+
response = await this.privateDeliveryGetSettleAccounts(this.extend(request, requestQuery));
|
|
2672
|
+
}
|
|
2673
|
+
else if (type === 'option') {
|
|
2674
|
+
response = await this.privateOptionsGetAccounts(this.extend(request, requestQuery));
|
|
2675
|
+
}
|
|
2676
|
+
else {
|
|
2677
|
+
throw new errors.NotSupported(this.id + ' fetchBalance() not support this market type');
|
|
2678
|
+
}
|
|
2636
2679
|
const contract = ((type === 'swap') || (type === 'future') || (type === 'option'));
|
|
2637
2680
|
if (contract) {
|
|
2638
2681
|
response = [response];
|
|
@@ -2852,23 +2895,7 @@ class gate extends gate$1 {
|
|
|
2852
2895
|
let request = {};
|
|
2853
2896
|
[request, params] = this.prepareRequest(market, undefined, params);
|
|
2854
2897
|
request['interval'] = this.safeString(this.timeframes, timeframe, timeframe);
|
|
2855
|
-
let method = 'publicSpotGetCandlesticks';
|
|
2856
2898
|
let maxLimit = 1000;
|
|
2857
|
-
if (market['contract']) {
|
|
2858
|
-
maxLimit = 1999;
|
|
2859
|
-
if (market['future']) {
|
|
2860
|
-
method = 'publicDeliveryGetSettleCandlesticks';
|
|
2861
|
-
}
|
|
2862
|
-
else if (market['swap']) {
|
|
2863
|
-
method = 'publicFuturesGetSettleCandlesticks';
|
|
2864
|
-
}
|
|
2865
|
-
const isMark = (price === 'mark');
|
|
2866
|
-
const isIndex = (price === 'index');
|
|
2867
|
-
if (isMark || isIndex) {
|
|
2868
|
-
request['contract'] = price + '_' + market['id'];
|
|
2869
|
-
params = this.omit(params, 'price');
|
|
2870
|
-
}
|
|
2871
|
-
}
|
|
2872
2899
|
limit = (limit === undefined) ? maxLimit : Math.min(limit, maxLimit);
|
|
2873
2900
|
let until = this.safeInteger(params, 'until');
|
|
2874
2901
|
if (until !== undefined) {
|
|
@@ -2895,7 +2922,25 @@ class gate extends gate$1 {
|
|
|
2895
2922
|
}
|
|
2896
2923
|
request['limit'] = limit;
|
|
2897
2924
|
}
|
|
2898
|
-
|
|
2925
|
+
let response = undefined;
|
|
2926
|
+
if (market['contract']) {
|
|
2927
|
+
maxLimit = 1999;
|
|
2928
|
+
const isMark = (price === 'mark');
|
|
2929
|
+
const isIndex = (price === 'index');
|
|
2930
|
+
if (isMark || isIndex) {
|
|
2931
|
+
request['contract'] = price + '_' + market['id'];
|
|
2932
|
+
params = this.omit(params, 'price');
|
|
2933
|
+
}
|
|
2934
|
+
if (market['future']) {
|
|
2935
|
+
response = await this.publicDeliveryGetSettleCandlesticks(this.extend(request, params));
|
|
2936
|
+
}
|
|
2937
|
+
else if (market['swap']) {
|
|
2938
|
+
response = await this.publicFuturesGetSettleCandlesticks(this.extend(request, params));
|
|
2939
|
+
}
|
|
2940
|
+
}
|
|
2941
|
+
else {
|
|
2942
|
+
response = await this.publicSpotGetCandlesticks(this.extend(request, params));
|
|
2943
|
+
}
|
|
2899
2944
|
return this.parseOHLCVs(response, market, timeframe, since, limit);
|
|
2900
2945
|
}
|
|
2901
2946
|
async fetchOptionOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
@@ -2932,8 +2977,7 @@ class gate extends gate$1 {
|
|
|
2932
2977
|
if (limit !== undefined) {
|
|
2933
2978
|
request['limit'] = limit;
|
|
2934
2979
|
}
|
|
2935
|
-
const
|
|
2936
|
-
const response = await this[method](this.extend(request, query));
|
|
2980
|
+
const response = await this.publicFuturesGetSettleFundingRate(this.extend(request, query));
|
|
2937
2981
|
//
|
|
2938
2982
|
// {
|
|
2939
2983
|
// "r": "0.00063521",
|
|
@@ -3048,13 +3092,6 @@ class gate extends gate$1 {
|
|
|
3048
3092
|
// };
|
|
3049
3093
|
//
|
|
3050
3094
|
const [request, query] = this.prepareRequest(market, undefined, params);
|
|
3051
|
-
const method = this.getSupportedMapping(market['type'], {
|
|
3052
|
-
'spot': 'publicSpotGetTrades',
|
|
3053
|
-
'margin': 'publicSpotGetTrades',
|
|
3054
|
-
'swap': 'publicFuturesGetSettleTrades',
|
|
3055
|
-
'future': 'publicDeliveryGetSettleTrades',
|
|
3056
|
-
'option': 'publicOptionsGetTrades',
|
|
3057
|
-
});
|
|
3058
3095
|
const until = this.safeInteger2(params, 'to', 'until');
|
|
3059
3096
|
if (until !== undefined) {
|
|
3060
3097
|
params = this.omit(params, ['until']);
|
|
@@ -3066,7 +3103,22 @@ class gate extends gate$1 {
|
|
|
3066
3103
|
if (since !== undefined && (market['contract'])) {
|
|
3067
3104
|
request['from'] = this.parseToInt(since / 1000);
|
|
3068
3105
|
}
|
|
3069
|
-
|
|
3106
|
+
let response = undefined;
|
|
3107
|
+
if (market['type'] === 'spot' || market['type'] === 'margin') {
|
|
3108
|
+
response = await this.publicSpotGetTrades(this.extend(request, query));
|
|
3109
|
+
}
|
|
3110
|
+
else if (market['swap']) {
|
|
3111
|
+
response = await this.publicFuturesGetSettleTrades(this.extend(request, query));
|
|
3112
|
+
}
|
|
3113
|
+
else if (market['future']) {
|
|
3114
|
+
response = await this.publicDeliveryGetSettleTrades(this.extend(request, query));
|
|
3115
|
+
}
|
|
3116
|
+
else if (market['type'] === 'option') {
|
|
3117
|
+
response = await this.publicOptionsGetTrades(this.extend(request, query));
|
|
3118
|
+
}
|
|
3119
|
+
else {
|
|
3120
|
+
throw new errors.NotSupported(this.id + ' fetchTrades() not support this market type.');
|
|
3121
|
+
}
|
|
3070
3122
|
//
|
|
3071
3123
|
// spot
|
|
3072
3124
|
//
|
|
@@ -3212,14 +3264,22 @@ class gate extends gate$1 {
|
|
|
3212
3264
|
if (until !== undefined) {
|
|
3213
3265
|
request['to'] = this.parseToInt(until / 1000);
|
|
3214
3266
|
}
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
}
|
|
3222
|
-
|
|
3267
|
+
let response = undefined;
|
|
3268
|
+
if (type === 'spot' || type === 'margin') {
|
|
3269
|
+
response = await this.privateSpotGetMyTrades(this.extend(request, params));
|
|
3270
|
+
}
|
|
3271
|
+
else if (type === 'swap') {
|
|
3272
|
+
response = await this.privateFuturesGetSettleMyTradesTimerange(this.extend(request, params));
|
|
3273
|
+
}
|
|
3274
|
+
else if (type === 'future') {
|
|
3275
|
+
response = await this.privateDeliveryGetSettleMyTrades(this.extend(request, params));
|
|
3276
|
+
}
|
|
3277
|
+
else if (type === 'option') {
|
|
3278
|
+
response = await this.privateOptionsGetMyTrades(this.extend(request, params));
|
|
3279
|
+
}
|
|
3280
|
+
else {
|
|
3281
|
+
throw new errors.NotSupported(this.id + ' fetchMyTrades() not support this market type.');
|
|
3282
|
+
}
|
|
3223
3283
|
//
|
|
3224
3284
|
// spot
|
|
3225
3285
|
//
|
|
@@ -4470,15 +4530,37 @@ class gate extends gate$1 {
|
|
|
4470
4530
|
const contract = (type === 'swap') || (type === 'future') || (type === 'option');
|
|
4471
4531
|
const [request, requestParams] = contract ? this.prepareRequest(market, type, query) : this.spotOrderPrepareRequest(market, stop, query);
|
|
4472
4532
|
request['order_id'] = orderId;
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4533
|
+
let response = undefined;
|
|
4534
|
+
if (type === 'spot' || type === 'margin') {
|
|
4535
|
+
if (stop) {
|
|
4536
|
+
response = await this.privateSpotGetPriceOrdersOrderId(this.extend(request, requestParams));
|
|
4537
|
+
}
|
|
4538
|
+
else {
|
|
4539
|
+
response = await this.privateSpotGetOrdersOrderId(this.extend(request, requestParams));
|
|
4540
|
+
}
|
|
4541
|
+
}
|
|
4542
|
+
else if (type === 'swap') {
|
|
4543
|
+
if (stop) {
|
|
4544
|
+
response = await this.privateFuturesGetSettlePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4545
|
+
}
|
|
4546
|
+
else {
|
|
4547
|
+
response = await this.privateFuturesGetSettleOrdersOrderId(this.extend(request, requestParams));
|
|
4548
|
+
}
|
|
4549
|
+
}
|
|
4550
|
+
else if (type === 'future') {
|
|
4551
|
+
if (stop) {
|
|
4552
|
+
response = await this.privateDeliveryGetSettlePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4553
|
+
}
|
|
4554
|
+
else {
|
|
4555
|
+
response = await this.privateDeliveryGetSettleOrdersOrderId(this.extend(request, requestParams));
|
|
4556
|
+
}
|
|
4557
|
+
}
|
|
4558
|
+
else if (type === 'option') {
|
|
4559
|
+
response = await this.privateOptionsGetOrdersOrderId(this.extend(request, requestParams));
|
|
4560
|
+
}
|
|
4561
|
+
else {
|
|
4562
|
+
throw new errors.NotSupported(this.id + ' fetchOrder() not support this market type');
|
|
4563
|
+
}
|
|
4482
4564
|
return this.parseOrder(response, market);
|
|
4483
4565
|
}
|
|
4484
4566
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -4543,19 +4625,41 @@ class gate extends gate$1 {
|
|
|
4543
4625
|
if (since !== undefined && spot) {
|
|
4544
4626
|
request['from'] = this.parseToInt(since / 1000);
|
|
4545
4627
|
}
|
|
4546
|
-
let methodTail = stop ? 'PriceOrders' : 'Orders';
|
|
4547
4628
|
const openSpotOrders = spot && (status === 'open') && !stop;
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4629
|
+
let response = undefined;
|
|
4630
|
+
if (type === 'spot' || type === 'margin') {
|
|
4631
|
+
if (openSpotOrders) {
|
|
4632
|
+
response = await this.privateSpotGetOpenOrders(this.extend(request, requestParams));
|
|
4633
|
+
}
|
|
4634
|
+
else if (stop) {
|
|
4635
|
+
response = await this.privateSpotGetPriceOrders(this.extend(request, requestParams));
|
|
4636
|
+
}
|
|
4637
|
+
else {
|
|
4638
|
+
response = await this.privateSpotGetOrders(this.extend(request, requestParams));
|
|
4639
|
+
}
|
|
4640
|
+
}
|
|
4641
|
+
else if (type === 'swap') {
|
|
4642
|
+
if (stop) {
|
|
4643
|
+
response = await this.privateFuturesGetSettlePriceOrders(this.extend(request, requestParams));
|
|
4644
|
+
}
|
|
4645
|
+
else {
|
|
4646
|
+
response = await this.privateFuturesGetSettleOrders(this.extend(request, requestParams));
|
|
4647
|
+
}
|
|
4648
|
+
}
|
|
4649
|
+
else if (type === 'future') {
|
|
4650
|
+
if (stop) {
|
|
4651
|
+
response = await this.privateDeliveryGetSettlePriceOrders(this.extend(request, requestParams));
|
|
4652
|
+
}
|
|
4653
|
+
else {
|
|
4654
|
+
response = await this.privateDeliveryGetSettleOrders(this.extend(request, requestParams));
|
|
4655
|
+
}
|
|
4656
|
+
}
|
|
4657
|
+
else if (type === 'option') {
|
|
4658
|
+
response = await this.privateOptionsGetOrders(this.extend(request, requestParams));
|
|
4659
|
+
}
|
|
4660
|
+
else {
|
|
4661
|
+
throw new errors.NotSupported(this.id + ' fetchOrders() not support this market type');
|
|
4662
|
+
}
|
|
4559
4663
|
//
|
|
4560
4664
|
// spot open orders
|
|
4561
4665
|
//
|
|
@@ -4735,15 +4839,37 @@ class gate extends gate$1 {
|
|
|
4735
4839
|
const [type, query] = this.handleMarketTypeAndParams('cancelOrder', market, params);
|
|
4736
4840
|
const [request, requestParams] = (type === 'spot' || type === 'margin') ? this.spotOrderPrepareRequest(market, stop, query) : this.prepareRequest(market, type, query);
|
|
4737
4841
|
request['order_id'] = id;
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
|
|
4745
|
-
|
|
4746
|
-
|
|
4842
|
+
let response = undefined;
|
|
4843
|
+
if (type === 'spot' || type === 'margin') {
|
|
4844
|
+
if (stop) {
|
|
4845
|
+
response = await this.privateSpotDeletePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4846
|
+
}
|
|
4847
|
+
else {
|
|
4848
|
+
response = await this.privateSpotDeleteOrdersOrderId(this.extend(request, requestParams));
|
|
4849
|
+
}
|
|
4850
|
+
}
|
|
4851
|
+
else if (type === 'swap') {
|
|
4852
|
+
if (stop) {
|
|
4853
|
+
response = await this.privateFuturesDeleteSettlePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4854
|
+
}
|
|
4855
|
+
else {
|
|
4856
|
+
response = await this.privateFuturesDeleteSettleOrdersOrderId(this.extend(request, requestParams));
|
|
4857
|
+
}
|
|
4858
|
+
}
|
|
4859
|
+
else if (type === 'future') {
|
|
4860
|
+
if (stop) {
|
|
4861
|
+
response = await this.privateDeliveryDeleteSettlePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4862
|
+
}
|
|
4863
|
+
else {
|
|
4864
|
+
response = await this.privateDeliveryDeleteSettleOrdersOrderId(this.extend(request, requestParams));
|
|
4865
|
+
}
|
|
4866
|
+
}
|
|
4867
|
+
else if (type === 'option') {
|
|
4868
|
+
response = await this.privateOptionsDeleteOrdersOrderId(this.extend(request, requestParams));
|
|
4869
|
+
}
|
|
4870
|
+
else {
|
|
4871
|
+
throw new errors.NotSupported(this.id + ' cancelOrder() not support this market type');
|
|
4872
|
+
}
|
|
4747
4873
|
//
|
|
4748
4874
|
// spot
|
|
4749
4875
|
//
|
|
@@ -4846,15 +4972,37 @@ class gate extends gate$1 {
|
|
|
4846
4972
|
params = this.omit(params, 'stop');
|
|
4847
4973
|
const [type, query] = this.handleMarketTypeAndParams('cancelAllOrders', market, params);
|
|
4848
4974
|
const [request, requestParams] = (type === 'spot') ? this.multiOrderSpotPrepareRequest(market, stop, query) : this.prepareRequest(market, type, query);
|
|
4849
|
-
|
|
4850
|
-
|
|
4851
|
-
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4975
|
+
let response = undefined;
|
|
4976
|
+
if (type === 'spot' || type === 'margin') {
|
|
4977
|
+
if (stop) {
|
|
4978
|
+
response = await this.privateSpotDeletePriceOrders(this.extend(request, requestParams));
|
|
4979
|
+
}
|
|
4980
|
+
else {
|
|
4981
|
+
response = await this.privateSpotDeleteOrders(this.extend(request, requestParams));
|
|
4982
|
+
}
|
|
4983
|
+
}
|
|
4984
|
+
else if (type === 'swap') {
|
|
4985
|
+
if (stop) {
|
|
4986
|
+
response = await this.privateFuturesDeleteSettlePriceOrders(this.extend(request, requestParams));
|
|
4987
|
+
}
|
|
4988
|
+
else {
|
|
4989
|
+
response = await this.privateFuturesDeleteSettleOrders(this.extend(request, requestParams));
|
|
4990
|
+
}
|
|
4991
|
+
}
|
|
4992
|
+
else if (type === 'future') {
|
|
4993
|
+
if (stop) {
|
|
4994
|
+
response = await this.privateDeliveryDeleteSettlePriceOrders(this.extend(request, requestParams));
|
|
4995
|
+
}
|
|
4996
|
+
else {
|
|
4997
|
+
response = await this.privateDeliveryDeleteSettleOrders(this.extend(request, requestParams));
|
|
4998
|
+
}
|
|
4999
|
+
}
|
|
5000
|
+
else if (type === 'option') {
|
|
5001
|
+
response = await this.privateOptionsDeleteOrders(this.extend(request, requestParams));
|
|
5002
|
+
}
|
|
5003
|
+
else {
|
|
5004
|
+
throw new errors.NotSupported(this.id + ' cancelAllOrders() not support this market type');
|
|
5005
|
+
}
|
|
4858
5006
|
//
|
|
4859
5007
|
// [
|
|
4860
5008
|
// {
|
|
@@ -4984,10 +5132,6 @@ class gate extends gate$1 {
|
|
|
4984
5132
|
}
|
|
4985
5133
|
await this.loadMarkets();
|
|
4986
5134
|
const market = this.market(symbol);
|
|
4987
|
-
const method = this.getSupportedMapping(market['type'], {
|
|
4988
|
-
'swap': 'privateFuturesPostSettlePositionsContractLeverage',
|
|
4989
|
-
'future': 'privateDeliveryPostSettlePositionsContractLeverage',
|
|
4990
|
-
});
|
|
4991
5135
|
const [request, query] = this.prepareRequest(market, undefined, params);
|
|
4992
5136
|
const defaultMarginMode = this.safeString2(this.options, 'marginMode', 'defaultMarginMode');
|
|
4993
5137
|
const crossLeverageLimit = this.safeString(query, 'cross_leverage_limit');
|
|
@@ -5003,7 +5147,16 @@ class gate extends gate$1 {
|
|
|
5003
5147
|
else {
|
|
5004
5148
|
request['leverage'] = leverage.toString();
|
|
5005
5149
|
}
|
|
5006
|
-
|
|
5150
|
+
let response = undefined;
|
|
5151
|
+
if (market['swap']) {
|
|
5152
|
+
response = await this.privateFuturesPostSettlePositionsContractLeverage(this.extend(request, query));
|
|
5153
|
+
}
|
|
5154
|
+
else if (market['future']) {
|
|
5155
|
+
response = await this.privateDeliveryPostSettlePositionsContractLeverage(this.extend(request, query));
|
|
5156
|
+
}
|
|
5157
|
+
else {
|
|
5158
|
+
throw new errors.NotSupported(this.id + ' setLeverage() not support this market type');
|
|
5159
|
+
}
|
|
5007
5160
|
//
|
|
5008
5161
|
// {
|
|
5009
5162
|
// "value": "0",
|
|
@@ -5164,10 +5317,10 @@ class gate extends gate$1 {
|
|
|
5164
5317
|
[request, params] = this.prepareRequest(market, market['type'], params);
|
|
5165
5318
|
const extendedRequest = this.extend(request, params);
|
|
5166
5319
|
let response = undefined;
|
|
5167
|
-
if (market['
|
|
5320
|
+
if (market['swap']) {
|
|
5168
5321
|
response = await this.privateFuturesGetSettlePositionsContract(extendedRequest);
|
|
5169
5322
|
}
|
|
5170
|
-
else if (market['
|
|
5323
|
+
else if (market['future']) {
|
|
5171
5324
|
response = await this.privateDeliveryGetSettlePositionsContract(extendedRequest);
|
|
5172
5325
|
}
|
|
5173
5326
|
else if (market['type'] === 'option') {
|
|
@@ -5347,11 +5500,16 @@ class gate extends gate$1 {
|
|
|
5347
5500
|
if (type !== 'future' && type !== 'swap') {
|
|
5348
5501
|
throw new errors.BadRequest(this.id + ' fetchLeverageTiers only supports swap and future');
|
|
5349
5502
|
}
|
|
5350
|
-
|
|
5351
|
-
|
|
5352
|
-
|
|
5353
|
-
}
|
|
5354
|
-
|
|
5503
|
+
let response = undefined;
|
|
5504
|
+
if (type === 'swap') {
|
|
5505
|
+
response = await this.publicFuturesGetSettleContracts(this.extend(request, requestParams));
|
|
5506
|
+
}
|
|
5507
|
+
else if (type === 'future') {
|
|
5508
|
+
response = await this.publicDeliveryGetSettleContracts(this.extend(request, requestParams));
|
|
5509
|
+
}
|
|
5510
|
+
else {
|
|
5511
|
+
throw new errors.NotSupported(this.id + ' fetchLeverageTiers() not support this market type');
|
|
5512
|
+
}
|
|
5355
5513
|
//
|
|
5356
5514
|
// Perpetual swap
|
|
5357
5515
|
//
|
|
@@ -5857,11 +6015,16 @@ class gate extends gate$1 {
|
|
|
5857
6015
|
const market = this.market(symbol);
|
|
5858
6016
|
const [request, query] = this.prepareRequest(market, undefined, params);
|
|
5859
6017
|
request['change'] = this.numberToString(amount);
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
|
|
5863
|
-
}
|
|
5864
|
-
|
|
6018
|
+
let response = undefined;
|
|
6019
|
+
if (market['swap']) {
|
|
6020
|
+
response = await this.privateFuturesPostSettlePositionsContractMargin(this.extend(request, query));
|
|
6021
|
+
}
|
|
6022
|
+
else if (market['future']) {
|
|
6023
|
+
response = await this.privateDeliveryPostSettlePositionsContractMargin(this.extend(request, query));
|
|
6024
|
+
}
|
|
6025
|
+
else {
|
|
6026
|
+
throw new errors.NotSupported(this.id + ' modifyMarginHelper() not support this market type');
|
|
6027
|
+
}
|
|
5865
6028
|
return this.parseMarginModification(response, market);
|
|
5866
6029
|
}
|
|
5867
6030
|
parseMarginModification(data, market = undefined) {
|
|
@@ -50,8 +50,8 @@ class binance extends binance$1 {
|
|
|
50
50
|
},
|
|
51
51
|
'api': {
|
|
52
52
|
'ws': {
|
|
53
|
-
'spot': 'wss://stream.binance.com
|
|
54
|
-
'margin': 'wss://stream.binance.com
|
|
53
|
+
'spot': 'wss://stream.binance.com/ws',
|
|
54
|
+
'margin': 'wss://stream.binance.com/ws',
|
|
55
55
|
'future': 'wss://fstream.binance.com/ws',
|
|
56
56
|
'delivery': 'wss://dstream.binance.com/ws',
|
|
57
57
|
'ws': 'wss://ws-api.binance.com:443/ws-api/v3',
|
|
@@ -1306,20 +1306,23 @@ class binance extends binance$1 {
|
|
|
1306
1306
|
return;
|
|
1307
1307
|
}
|
|
1308
1308
|
let method = 'publicPutUserDataStream';
|
|
1309
|
+
const request = {};
|
|
1310
|
+
const symbol = this.safeString(params, 'symbol');
|
|
1311
|
+
const sendParams = this.omit(params, ['type', 'symbol']);
|
|
1309
1312
|
if (type === 'future') {
|
|
1310
1313
|
method = 'fapiPrivatePutListenKey';
|
|
1311
1314
|
}
|
|
1312
1315
|
else if (type === 'delivery') {
|
|
1313
1316
|
method = 'dapiPrivatePutListenKey';
|
|
1314
1317
|
}
|
|
1315
|
-
else
|
|
1316
|
-
|
|
1318
|
+
else {
|
|
1319
|
+
request['listenKey'] = listenKey;
|
|
1320
|
+
if (type === 'margin') {
|
|
1321
|
+
request['symbol'] = symbol;
|
|
1322
|
+
method = 'sapiPutUserDataStream';
|
|
1323
|
+
}
|
|
1317
1324
|
}
|
|
1318
|
-
const request = {
|
|
1319
|
-
'listenKey': listenKey,
|
|
1320
|
-
};
|
|
1321
1325
|
const time = this.milliseconds();
|
|
1322
|
-
const sendParams = this.omit(params, 'type');
|
|
1323
1326
|
try {
|
|
1324
1327
|
await this[method](this.extend(request, sendParams));
|
|
1325
1328
|
}
|
|
@@ -2073,9 +2076,7 @@ class binance extends binance$1 {
|
|
|
2073
2076
|
market = this.market(symbol);
|
|
2074
2077
|
symbol = market['symbol'];
|
|
2075
2078
|
messageHash += ':' + symbol;
|
|
2076
|
-
params = this.extend(params, { 'type': market['type'], 'symbol': symbol }); // needed inside authenticate for isolated margin
|
|
2077
2079
|
}
|
|
2078
|
-
await this.authenticate(params);
|
|
2079
2080
|
let type = undefined;
|
|
2080
2081
|
[type, params] = this.handleMarketTypeAndParams('watchOrders', market, params);
|
|
2081
2082
|
let subType = undefined;
|
|
@@ -2086,6 +2087,8 @@ class binance extends binance$1 {
|
|
|
2086
2087
|
else if (this.isInverse(type, subType)) {
|
|
2087
2088
|
type = 'delivery';
|
|
2088
2089
|
}
|
|
2090
|
+
params = this.extend(params, { 'type': type, 'symbol': symbol }); // needed inside authenticate for isolated margin
|
|
2091
|
+
await this.authenticate(params);
|
|
2089
2092
|
let urlType = type;
|
|
2090
2093
|
if (type === 'margin') {
|
|
2091
2094
|
urlType = 'spot'; // spot-margin shares the same stream as regular spot
|
package/js/ccxt.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
|
|
|
4
4
|
import * as errors from './src/base/errors.js';
|
|
5
5
|
import { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks } from './src/base/types.js';
|
|
6
6
|
import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
|
|
7
|
-
declare const version = "4.1.
|
|
7
|
+
declare const version = "4.1.70";
|
|
8
8
|
import ace from './src/ace.js';
|
|
9
9
|
import alpaca from './src/alpaca.js';
|
|
10
10
|
import ascendex from './src/ascendex.js';
|