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/js/src/gate.js
CHANGED
|
@@ -2238,11 +2238,16 @@ export default class gate extends Exchange {
|
|
|
2238
2238
|
if (limit !== undefined) {
|
|
2239
2239
|
request['limit'] = limit;
|
|
2240
2240
|
}
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
}
|
|
2245
|
-
|
|
2241
|
+
let response = undefined;
|
|
2242
|
+
if (type === 'swap') {
|
|
2243
|
+
response = await this.privateFuturesGetSettleAccountBook(this.extend(request, requestParams));
|
|
2244
|
+
}
|
|
2245
|
+
else if (type === 'future') {
|
|
2246
|
+
response = await this.privateDeliveryGetSettleAccountBook(this.extend(request, requestParams));
|
|
2247
|
+
}
|
|
2248
|
+
else {
|
|
2249
|
+
throw new NotSupported(this.id + ' fetchFundingHistory() only support swap & future market type');
|
|
2250
|
+
}
|
|
2246
2251
|
//
|
|
2247
2252
|
// [
|
|
2248
2253
|
// {
|
|
@@ -2315,18 +2320,26 @@ export default class gate extends Exchange {
|
|
|
2315
2320
|
// };
|
|
2316
2321
|
//
|
|
2317
2322
|
const [request, query] = this.prepareRequest(market, market['type'], params);
|
|
2318
|
-
const method = this.getSupportedMapping(market['type'], {
|
|
2319
|
-
'spot': 'publicSpotGetOrderBook',
|
|
2320
|
-
'margin': 'publicSpotGetOrderBook',
|
|
2321
|
-
'swap': 'publicFuturesGetSettleOrderBook',
|
|
2322
|
-
'future': 'publicDeliveryGetSettleOrderBook',
|
|
2323
|
-
'option': 'publicOptionsGetOrderBook',
|
|
2324
|
-
});
|
|
2325
2323
|
if (limit !== undefined) {
|
|
2326
2324
|
request['limit'] = limit; // default 10, max 100
|
|
2327
2325
|
}
|
|
2328
2326
|
request['with_id'] = true;
|
|
2329
|
-
|
|
2327
|
+
let response = undefined;
|
|
2328
|
+
if (market['spot'] || market['margin']) {
|
|
2329
|
+
response = await this.publicSpotGetOrderBook(this.extend(request, query));
|
|
2330
|
+
}
|
|
2331
|
+
else if (market['swap']) {
|
|
2332
|
+
response = await this.publicFuturesGetSettleOrderBook(this.extend(request, query));
|
|
2333
|
+
}
|
|
2334
|
+
else if (market['future']) {
|
|
2335
|
+
response = await this.publicDeliveryGetSettleOrderBook(this.extend(request, query));
|
|
2336
|
+
}
|
|
2337
|
+
else if (market['option']) {
|
|
2338
|
+
response = await this.publicOptionsGetOrderBook(this.extend(request, query));
|
|
2339
|
+
}
|
|
2340
|
+
else {
|
|
2341
|
+
throw new NotSupported(this.id + ' fetchOrderBook() not support this market type');
|
|
2342
|
+
}
|
|
2330
2343
|
//
|
|
2331
2344
|
// spot
|
|
2332
2345
|
//
|
|
@@ -2418,19 +2431,25 @@ export default class gate extends Exchange {
|
|
|
2418
2431
|
await this.loadMarkets();
|
|
2419
2432
|
const market = this.market(symbol);
|
|
2420
2433
|
const [request, query] = this.prepareRequest(market, undefined, params);
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
}
|
|
2428
|
-
if (market['
|
|
2434
|
+
let response = undefined;
|
|
2435
|
+
if (market['spot'] || market['margin']) {
|
|
2436
|
+
response = await this.publicSpotGetTickers(this.extend(request, query));
|
|
2437
|
+
}
|
|
2438
|
+
else if (market['swap']) {
|
|
2439
|
+
response = await this.publicFuturesGetSettleTickers(this.extend(request, query));
|
|
2440
|
+
}
|
|
2441
|
+
else if (market['future']) {
|
|
2442
|
+
response = await this.publicDeliveryGetSettleTickers(this.extend(request, query));
|
|
2443
|
+
}
|
|
2444
|
+
else if (market['option']) {
|
|
2429
2445
|
const marketId = market['id'];
|
|
2430
2446
|
const optionParts = marketId.split('-');
|
|
2431
2447
|
request['underlying'] = this.safeString(optionParts, 0);
|
|
2448
|
+
response = await this.publicOptionsGetTickers(this.extend(request, query));
|
|
2449
|
+
}
|
|
2450
|
+
else {
|
|
2451
|
+
throw new NotSupported(this.id + ' fetchTicker() not support this market type');
|
|
2432
2452
|
}
|
|
2433
|
-
const response = await this[method](this.extend(request, query));
|
|
2434
2453
|
let ticker = undefined;
|
|
2435
2454
|
if (market['option']) {
|
|
2436
2455
|
for (let i = 0; i < response.length; i++) {
|
|
@@ -2580,20 +2599,26 @@ export default class gate extends Exchange {
|
|
|
2580
2599
|
}
|
|
2581
2600
|
const [type, query] = this.handleMarketTypeAndParams('fetchTickers', market, params);
|
|
2582
2601
|
const [request, requestParams] = this.prepareRequest(undefined, type, query);
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
}
|
|
2590
|
-
if (type === '
|
|
2602
|
+
let response = undefined;
|
|
2603
|
+
if (type === 'spot' || type === 'margin') {
|
|
2604
|
+
response = await this.publicSpotGetTickers(this.extend(request, requestParams));
|
|
2605
|
+
}
|
|
2606
|
+
else if (type === 'swap') {
|
|
2607
|
+
response = await this.publicFuturesGetSettleTickers(this.extend(request, requestParams));
|
|
2608
|
+
}
|
|
2609
|
+
else if (type === 'future') {
|
|
2610
|
+
response = await this.publicDeliveryGetSettleTickers(this.extend(request, requestParams));
|
|
2611
|
+
}
|
|
2612
|
+
else if (type === 'option') {
|
|
2591
2613
|
this.checkRequiredArgument('fetchTickers', symbols, 'symbols');
|
|
2592
2614
|
const marketId = market['id'];
|
|
2593
2615
|
const optionParts = marketId.split('-');
|
|
2594
2616
|
request['underlying'] = this.safeString(optionParts, 0);
|
|
2617
|
+
response = await this.publicOptionsGetTickers(this.extend(request, requestParams));
|
|
2618
|
+
}
|
|
2619
|
+
else {
|
|
2620
|
+
throw new NotSupported(this.id + ' fetchTickers() not support this market type');
|
|
2595
2621
|
}
|
|
2596
|
-
const response = await this[method](this.extend(request, requestParams));
|
|
2597
2622
|
return this.parseTickers(response, symbols);
|
|
2598
2623
|
}
|
|
2599
2624
|
parseBalanceHelper(entry) {
|
|
@@ -2624,18 +2649,36 @@ export default class gate extends Exchange {
|
|
|
2624
2649
|
const market = this.market(symbol);
|
|
2625
2650
|
request['currency_pair'] = market['id'];
|
|
2626
2651
|
}
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
'
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2652
|
+
let response = undefined;
|
|
2653
|
+
if (type === 'spot') {
|
|
2654
|
+
if (marginMode === 'spot') {
|
|
2655
|
+
response = await this.privateSpotGetAccounts(this.extend(request, requestQuery));
|
|
2656
|
+
}
|
|
2657
|
+
else if (marginMode === 'margin') {
|
|
2658
|
+
response = await this.privateMarginGetAccounts(this.extend(request, requestQuery));
|
|
2659
|
+
}
|
|
2660
|
+
else if (marginMode === 'cross_margin') {
|
|
2661
|
+
response = await this.privateMarginGetCrossAccounts(this.extend(request, requestQuery));
|
|
2662
|
+
}
|
|
2663
|
+
else {
|
|
2664
|
+
throw new NotSupported(this.id + ' fetchBalance() not support this marginMode');
|
|
2665
|
+
}
|
|
2666
|
+
}
|
|
2667
|
+
else if (type === 'funding') {
|
|
2668
|
+
response = await this.privateMarginGetFundingAccounts(this.extend(request, requestQuery));
|
|
2669
|
+
}
|
|
2670
|
+
else if (type === 'swap') {
|
|
2671
|
+
response = await this.privateFuturesGetSettleAccounts(this.extend(request, requestQuery));
|
|
2672
|
+
}
|
|
2673
|
+
else if (type === 'future') {
|
|
2674
|
+
response = await this.privateDeliveryGetSettleAccounts(this.extend(request, requestQuery));
|
|
2675
|
+
}
|
|
2676
|
+
else if (type === 'option') {
|
|
2677
|
+
response = await this.privateOptionsGetAccounts(this.extend(request, requestQuery));
|
|
2678
|
+
}
|
|
2679
|
+
else {
|
|
2680
|
+
throw new NotSupported(this.id + ' fetchBalance() not support this market type');
|
|
2681
|
+
}
|
|
2639
2682
|
const contract = ((type === 'swap') || (type === 'future') || (type === 'option'));
|
|
2640
2683
|
if (contract) {
|
|
2641
2684
|
response = [response];
|
|
@@ -2855,23 +2898,7 @@ export default class gate extends Exchange {
|
|
|
2855
2898
|
let request = {};
|
|
2856
2899
|
[request, params] = this.prepareRequest(market, undefined, params);
|
|
2857
2900
|
request['interval'] = this.safeString(this.timeframes, timeframe, timeframe);
|
|
2858
|
-
let method = 'publicSpotGetCandlesticks';
|
|
2859
2901
|
let maxLimit = 1000;
|
|
2860
|
-
if (market['contract']) {
|
|
2861
|
-
maxLimit = 1999;
|
|
2862
|
-
if (market['future']) {
|
|
2863
|
-
method = 'publicDeliveryGetSettleCandlesticks';
|
|
2864
|
-
}
|
|
2865
|
-
else if (market['swap']) {
|
|
2866
|
-
method = 'publicFuturesGetSettleCandlesticks';
|
|
2867
|
-
}
|
|
2868
|
-
const isMark = (price === 'mark');
|
|
2869
|
-
const isIndex = (price === 'index');
|
|
2870
|
-
if (isMark || isIndex) {
|
|
2871
|
-
request['contract'] = price + '_' + market['id'];
|
|
2872
|
-
params = this.omit(params, 'price');
|
|
2873
|
-
}
|
|
2874
|
-
}
|
|
2875
2902
|
limit = (limit === undefined) ? maxLimit : Math.min(limit, maxLimit);
|
|
2876
2903
|
let until = this.safeInteger(params, 'until');
|
|
2877
2904
|
if (until !== undefined) {
|
|
@@ -2898,7 +2925,25 @@ export default class gate extends Exchange {
|
|
|
2898
2925
|
}
|
|
2899
2926
|
request['limit'] = limit;
|
|
2900
2927
|
}
|
|
2901
|
-
|
|
2928
|
+
let response = undefined;
|
|
2929
|
+
if (market['contract']) {
|
|
2930
|
+
maxLimit = 1999;
|
|
2931
|
+
const isMark = (price === 'mark');
|
|
2932
|
+
const isIndex = (price === 'index');
|
|
2933
|
+
if (isMark || isIndex) {
|
|
2934
|
+
request['contract'] = price + '_' + market['id'];
|
|
2935
|
+
params = this.omit(params, 'price');
|
|
2936
|
+
}
|
|
2937
|
+
if (market['future']) {
|
|
2938
|
+
response = await this.publicDeliveryGetSettleCandlesticks(this.extend(request, params));
|
|
2939
|
+
}
|
|
2940
|
+
else if (market['swap']) {
|
|
2941
|
+
response = await this.publicFuturesGetSettleCandlesticks(this.extend(request, params));
|
|
2942
|
+
}
|
|
2943
|
+
}
|
|
2944
|
+
else {
|
|
2945
|
+
response = await this.publicSpotGetCandlesticks(this.extend(request, params));
|
|
2946
|
+
}
|
|
2902
2947
|
return this.parseOHLCVs(response, market, timeframe, since, limit);
|
|
2903
2948
|
}
|
|
2904
2949
|
async fetchOptionOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
@@ -2935,8 +2980,7 @@ export default class gate extends Exchange {
|
|
|
2935
2980
|
if (limit !== undefined) {
|
|
2936
2981
|
request['limit'] = limit;
|
|
2937
2982
|
}
|
|
2938
|
-
const
|
|
2939
|
-
const response = await this[method](this.extend(request, query));
|
|
2983
|
+
const response = await this.publicFuturesGetSettleFundingRate(this.extend(request, query));
|
|
2940
2984
|
//
|
|
2941
2985
|
// {
|
|
2942
2986
|
// "r": "0.00063521",
|
|
@@ -3051,13 +3095,6 @@ export default class gate extends Exchange {
|
|
|
3051
3095
|
// };
|
|
3052
3096
|
//
|
|
3053
3097
|
const [request, query] = this.prepareRequest(market, undefined, params);
|
|
3054
|
-
const method = this.getSupportedMapping(market['type'], {
|
|
3055
|
-
'spot': 'publicSpotGetTrades',
|
|
3056
|
-
'margin': 'publicSpotGetTrades',
|
|
3057
|
-
'swap': 'publicFuturesGetSettleTrades',
|
|
3058
|
-
'future': 'publicDeliveryGetSettleTrades',
|
|
3059
|
-
'option': 'publicOptionsGetTrades',
|
|
3060
|
-
});
|
|
3061
3098
|
const until = this.safeInteger2(params, 'to', 'until');
|
|
3062
3099
|
if (until !== undefined) {
|
|
3063
3100
|
params = this.omit(params, ['until']);
|
|
@@ -3069,7 +3106,22 @@ export default class gate extends Exchange {
|
|
|
3069
3106
|
if (since !== undefined && (market['contract'])) {
|
|
3070
3107
|
request['from'] = this.parseToInt(since / 1000);
|
|
3071
3108
|
}
|
|
3072
|
-
|
|
3109
|
+
let response = undefined;
|
|
3110
|
+
if (market['type'] === 'spot' || market['type'] === 'margin') {
|
|
3111
|
+
response = await this.publicSpotGetTrades(this.extend(request, query));
|
|
3112
|
+
}
|
|
3113
|
+
else if (market['swap']) {
|
|
3114
|
+
response = await this.publicFuturesGetSettleTrades(this.extend(request, query));
|
|
3115
|
+
}
|
|
3116
|
+
else if (market['future']) {
|
|
3117
|
+
response = await this.publicDeliveryGetSettleTrades(this.extend(request, query));
|
|
3118
|
+
}
|
|
3119
|
+
else if (market['type'] === 'option') {
|
|
3120
|
+
response = await this.publicOptionsGetTrades(this.extend(request, query));
|
|
3121
|
+
}
|
|
3122
|
+
else {
|
|
3123
|
+
throw new NotSupported(this.id + ' fetchTrades() not support this market type.');
|
|
3124
|
+
}
|
|
3073
3125
|
//
|
|
3074
3126
|
// spot
|
|
3075
3127
|
//
|
|
@@ -3215,14 +3267,22 @@ export default class gate extends Exchange {
|
|
|
3215
3267
|
if (until !== undefined) {
|
|
3216
3268
|
request['to'] = this.parseToInt(until / 1000);
|
|
3217
3269
|
}
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
}
|
|
3225
|
-
|
|
3270
|
+
let response = undefined;
|
|
3271
|
+
if (type === 'spot' || type === 'margin') {
|
|
3272
|
+
response = await this.privateSpotGetMyTrades(this.extend(request, params));
|
|
3273
|
+
}
|
|
3274
|
+
else if (type === 'swap') {
|
|
3275
|
+
response = await this.privateFuturesGetSettleMyTradesTimerange(this.extend(request, params));
|
|
3276
|
+
}
|
|
3277
|
+
else if (type === 'future') {
|
|
3278
|
+
response = await this.privateDeliveryGetSettleMyTrades(this.extend(request, params));
|
|
3279
|
+
}
|
|
3280
|
+
else if (type === 'option') {
|
|
3281
|
+
response = await this.privateOptionsGetMyTrades(this.extend(request, params));
|
|
3282
|
+
}
|
|
3283
|
+
else {
|
|
3284
|
+
throw new NotSupported(this.id + ' fetchMyTrades() not support this market type.');
|
|
3285
|
+
}
|
|
3226
3286
|
//
|
|
3227
3287
|
// spot
|
|
3228
3288
|
//
|
|
@@ -4473,15 +4533,37 @@ export default class gate extends Exchange {
|
|
|
4473
4533
|
const contract = (type === 'swap') || (type === 'future') || (type === 'option');
|
|
4474
4534
|
const [request, requestParams] = contract ? this.prepareRequest(market, type, query) : this.spotOrderPrepareRequest(market, stop, query);
|
|
4475
4535
|
request['order_id'] = orderId;
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4536
|
+
let response = undefined;
|
|
4537
|
+
if (type === 'spot' || type === 'margin') {
|
|
4538
|
+
if (stop) {
|
|
4539
|
+
response = await this.privateSpotGetPriceOrdersOrderId(this.extend(request, requestParams));
|
|
4540
|
+
}
|
|
4541
|
+
else {
|
|
4542
|
+
response = await this.privateSpotGetOrdersOrderId(this.extend(request, requestParams));
|
|
4543
|
+
}
|
|
4544
|
+
}
|
|
4545
|
+
else if (type === 'swap') {
|
|
4546
|
+
if (stop) {
|
|
4547
|
+
response = await this.privateFuturesGetSettlePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4548
|
+
}
|
|
4549
|
+
else {
|
|
4550
|
+
response = await this.privateFuturesGetSettleOrdersOrderId(this.extend(request, requestParams));
|
|
4551
|
+
}
|
|
4552
|
+
}
|
|
4553
|
+
else if (type === 'future') {
|
|
4554
|
+
if (stop) {
|
|
4555
|
+
response = await this.privateDeliveryGetSettlePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4556
|
+
}
|
|
4557
|
+
else {
|
|
4558
|
+
response = await this.privateDeliveryGetSettleOrdersOrderId(this.extend(request, requestParams));
|
|
4559
|
+
}
|
|
4560
|
+
}
|
|
4561
|
+
else if (type === 'option') {
|
|
4562
|
+
response = await this.privateOptionsGetOrdersOrderId(this.extend(request, requestParams));
|
|
4563
|
+
}
|
|
4564
|
+
else {
|
|
4565
|
+
throw new NotSupported(this.id + ' fetchOrder() not support this market type');
|
|
4566
|
+
}
|
|
4485
4567
|
return this.parseOrder(response, market);
|
|
4486
4568
|
}
|
|
4487
4569
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -4546,19 +4628,41 @@ export default class gate extends Exchange {
|
|
|
4546
4628
|
if (since !== undefined && spot) {
|
|
4547
4629
|
request['from'] = this.parseToInt(since / 1000);
|
|
4548
4630
|
}
|
|
4549
|
-
let methodTail = stop ? 'PriceOrders' : 'Orders';
|
|
4550
4631
|
const openSpotOrders = spot && (status === 'open') && !stop;
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4560
|
-
|
|
4561
|
-
|
|
4632
|
+
let response = undefined;
|
|
4633
|
+
if (type === 'spot' || type === 'margin') {
|
|
4634
|
+
if (openSpotOrders) {
|
|
4635
|
+
response = await this.privateSpotGetOpenOrders(this.extend(request, requestParams));
|
|
4636
|
+
}
|
|
4637
|
+
else if (stop) {
|
|
4638
|
+
response = await this.privateSpotGetPriceOrders(this.extend(request, requestParams));
|
|
4639
|
+
}
|
|
4640
|
+
else {
|
|
4641
|
+
response = await this.privateSpotGetOrders(this.extend(request, requestParams));
|
|
4642
|
+
}
|
|
4643
|
+
}
|
|
4644
|
+
else if (type === 'swap') {
|
|
4645
|
+
if (stop) {
|
|
4646
|
+
response = await this.privateFuturesGetSettlePriceOrders(this.extend(request, requestParams));
|
|
4647
|
+
}
|
|
4648
|
+
else {
|
|
4649
|
+
response = await this.privateFuturesGetSettleOrders(this.extend(request, requestParams));
|
|
4650
|
+
}
|
|
4651
|
+
}
|
|
4652
|
+
else if (type === 'future') {
|
|
4653
|
+
if (stop) {
|
|
4654
|
+
response = await this.privateDeliveryGetSettlePriceOrders(this.extend(request, requestParams));
|
|
4655
|
+
}
|
|
4656
|
+
else {
|
|
4657
|
+
response = await this.privateDeliveryGetSettleOrders(this.extend(request, requestParams));
|
|
4658
|
+
}
|
|
4659
|
+
}
|
|
4660
|
+
else if (type === 'option') {
|
|
4661
|
+
response = await this.privateOptionsGetOrders(this.extend(request, requestParams));
|
|
4662
|
+
}
|
|
4663
|
+
else {
|
|
4664
|
+
throw new NotSupported(this.id + ' fetchOrders() not support this market type');
|
|
4665
|
+
}
|
|
4562
4666
|
//
|
|
4563
4667
|
// spot open orders
|
|
4564
4668
|
//
|
|
@@ -4738,15 +4842,37 @@ export default class gate extends Exchange {
|
|
|
4738
4842
|
const [type, query] = this.handleMarketTypeAndParams('cancelOrder', market, params);
|
|
4739
4843
|
const [request, requestParams] = (type === 'spot' || type === 'margin') ? this.spotOrderPrepareRequest(market, stop, query) : this.prepareRequest(market, type, query);
|
|
4740
4844
|
request['order_id'] = id;
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
|
|
4745
|
-
|
|
4746
|
-
|
|
4747
|
-
|
|
4748
|
-
|
|
4749
|
-
|
|
4845
|
+
let response = undefined;
|
|
4846
|
+
if (type === 'spot' || type === 'margin') {
|
|
4847
|
+
if (stop) {
|
|
4848
|
+
response = await this.privateSpotDeletePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4849
|
+
}
|
|
4850
|
+
else {
|
|
4851
|
+
response = await this.privateSpotDeleteOrdersOrderId(this.extend(request, requestParams));
|
|
4852
|
+
}
|
|
4853
|
+
}
|
|
4854
|
+
else if (type === 'swap') {
|
|
4855
|
+
if (stop) {
|
|
4856
|
+
response = await this.privateFuturesDeleteSettlePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4857
|
+
}
|
|
4858
|
+
else {
|
|
4859
|
+
response = await this.privateFuturesDeleteSettleOrdersOrderId(this.extend(request, requestParams));
|
|
4860
|
+
}
|
|
4861
|
+
}
|
|
4862
|
+
else if (type === 'future') {
|
|
4863
|
+
if (stop) {
|
|
4864
|
+
response = await this.privateDeliveryDeleteSettlePriceOrdersOrderId(this.extend(request, requestParams));
|
|
4865
|
+
}
|
|
4866
|
+
else {
|
|
4867
|
+
response = await this.privateDeliveryDeleteSettleOrdersOrderId(this.extend(request, requestParams));
|
|
4868
|
+
}
|
|
4869
|
+
}
|
|
4870
|
+
else if (type === 'option') {
|
|
4871
|
+
response = await this.privateOptionsDeleteOrdersOrderId(this.extend(request, requestParams));
|
|
4872
|
+
}
|
|
4873
|
+
else {
|
|
4874
|
+
throw new NotSupported(this.id + ' cancelOrder() not support this market type');
|
|
4875
|
+
}
|
|
4750
4876
|
//
|
|
4751
4877
|
// spot
|
|
4752
4878
|
//
|
|
@@ -4849,15 +4975,37 @@ export default class gate extends Exchange {
|
|
|
4849
4975
|
params = this.omit(params, 'stop');
|
|
4850
4976
|
const [type, query] = this.handleMarketTypeAndParams('cancelAllOrders', market, params);
|
|
4851
4977
|
const [request, requestParams] = (type === 'spot') ? this.multiOrderSpotPrepareRequest(market, stop, query) : this.prepareRequest(market, type, query);
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
4978
|
+
let response = undefined;
|
|
4979
|
+
if (type === 'spot' || type === 'margin') {
|
|
4980
|
+
if (stop) {
|
|
4981
|
+
response = await this.privateSpotDeletePriceOrders(this.extend(request, requestParams));
|
|
4982
|
+
}
|
|
4983
|
+
else {
|
|
4984
|
+
response = await this.privateSpotDeleteOrders(this.extend(request, requestParams));
|
|
4985
|
+
}
|
|
4986
|
+
}
|
|
4987
|
+
else if (type === 'swap') {
|
|
4988
|
+
if (stop) {
|
|
4989
|
+
response = await this.privateFuturesDeleteSettlePriceOrders(this.extend(request, requestParams));
|
|
4990
|
+
}
|
|
4991
|
+
else {
|
|
4992
|
+
response = await this.privateFuturesDeleteSettleOrders(this.extend(request, requestParams));
|
|
4993
|
+
}
|
|
4994
|
+
}
|
|
4995
|
+
else if (type === 'future') {
|
|
4996
|
+
if (stop) {
|
|
4997
|
+
response = await this.privateDeliveryDeleteSettlePriceOrders(this.extend(request, requestParams));
|
|
4998
|
+
}
|
|
4999
|
+
else {
|
|
5000
|
+
response = await this.privateDeliveryDeleteSettleOrders(this.extend(request, requestParams));
|
|
5001
|
+
}
|
|
5002
|
+
}
|
|
5003
|
+
else if (type === 'option') {
|
|
5004
|
+
response = await this.privateOptionsDeleteOrders(this.extend(request, requestParams));
|
|
5005
|
+
}
|
|
5006
|
+
else {
|
|
5007
|
+
throw new NotSupported(this.id + ' cancelAllOrders() not support this market type');
|
|
5008
|
+
}
|
|
4861
5009
|
//
|
|
4862
5010
|
// [
|
|
4863
5011
|
// {
|
|
@@ -4987,10 +5135,6 @@ export default class gate extends Exchange {
|
|
|
4987
5135
|
}
|
|
4988
5136
|
await this.loadMarkets();
|
|
4989
5137
|
const market = this.market(symbol);
|
|
4990
|
-
const method = this.getSupportedMapping(market['type'], {
|
|
4991
|
-
'swap': 'privateFuturesPostSettlePositionsContractLeverage',
|
|
4992
|
-
'future': 'privateDeliveryPostSettlePositionsContractLeverage',
|
|
4993
|
-
});
|
|
4994
5138
|
const [request, query] = this.prepareRequest(market, undefined, params);
|
|
4995
5139
|
const defaultMarginMode = this.safeString2(this.options, 'marginMode', 'defaultMarginMode');
|
|
4996
5140
|
const crossLeverageLimit = this.safeString(query, 'cross_leverage_limit');
|
|
@@ -5006,7 +5150,16 @@ export default class gate extends Exchange {
|
|
|
5006
5150
|
else {
|
|
5007
5151
|
request['leverage'] = leverage.toString();
|
|
5008
5152
|
}
|
|
5009
|
-
|
|
5153
|
+
let response = undefined;
|
|
5154
|
+
if (market['swap']) {
|
|
5155
|
+
response = await this.privateFuturesPostSettlePositionsContractLeverage(this.extend(request, query));
|
|
5156
|
+
}
|
|
5157
|
+
else if (market['future']) {
|
|
5158
|
+
response = await this.privateDeliveryPostSettlePositionsContractLeverage(this.extend(request, query));
|
|
5159
|
+
}
|
|
5160
|
+
else {
|
|
5161
|
+
throw new NotSupported(this.id + ' setLeverage() not support this market type');
|
|
5162
|
+
}
|
|
5010
5163
|
//
|
|
5011
5164
|
// {
|
|
5012
5165
|
// "value": "0",
|
|
@@ -5167,10 +5320,10 @@ export default class gate extends Exchange {
|
|
|
5167
5320
|
[request, params] = this.prepareRequest(market, market['type'], params);
|
|
5168
5321
|
const extendedRequest = this.extend(request, params);
|
|
5169
5322
|
let response = undefined;
|
|
5170
|
-
if (market['
|
|
5323
|
+
if (market['swap']) {
|
|
5171
5324
|
response = await this.privateFuturesGetSettlePositionsContract(extendedRequest);
|
|
5172
5325
|
}
|
|
5173
|
-
else if (market['
|
|
5326
|
+
else if (market['future']) {
|
|
5174
5327
|
response = await this.privateDeliveryGetSettlePositionsContract(extendedRequest);
|
|
5175
5328
|
}
|
|
5176
5329
|
else if (market['type'] === 'option') {
|
|
@@ -5350,11 +5503,16 @@ export default class gate extends Exchange {
|
|
|
5350
5503
|
if (type !== 'future' && type !== 'swap') {
|
|
5351
5504
|
throw new BadRequest(this.id + ' fetchLeverageTiers only supports swap and future');
|
|
5352
5505
|
}
|
|
5353
|
-
|
|
5354
|
-
|
|
5355
|
-
|
|
5356
|
-
}
|
|
5357
|
-
|
|
5506
|
+
let response = undefined;
|
|
5507
|
+
if (type === 'swap') {
|
|
5508
|
+
response = await this.publicFuturesGetSettleContracts(this.extend(request, requestParams));
|
|
5509
|
+
}
|
|
5510
|
+
else if (type === 'future') {
|
|
5511
|
+
response = await this.publicDeliveryGetSettleContracts(this.extend(request, requestParams));
|
|
5512
|
+
}
|
|
5513
|
+
else {
|
|
5514
|
+
throw new NotSupported(this.id + ' fetchLeverageTiers() not support this market type');
|
|
5515
|
+
}
|
|
5358
5516
|
//
|
|
5359
5517
|
// Perpetual swap
|
|
5360
5518
|
//
|
|
@@ -5860,11 +6018,16 @@ export default class gate extends Exchange {
|
|
|
5860
6018
|
const market = this.market(symbol);
|
|
5861
6019
|
const [request, query] = this.prepareRequest(market, undefined, params);
|
|
5862
6020
|
request['change'] = this.numberToString(amount);
|
|
5863
|
-
|
|
5864
|
-
|
|
5865
|
-
|
|
5866
|
-
}
|
|
5867
|
-
|
|
6021
|
+
let response = undefined;
|
|
6022
|
+
if (market['swap']) {
|
|
6023
|
+
response = await this.privateFuturesPostSettlePositionsContractMargin(this.extend(request, query));
|
|
6024
|
+
}
|
|
6025
|
+
else if (market['future']) {
|
|
6026
|
+
response = await this.privateDeliveryPostSettlePositionsContractMargin(this.extend(request, query));
|
|
6027
|
+
}
|
|
6028
|
+
else {
|
|
6029
|
+
throw new NotSupported(this.id + ' modifyMarginHelper() not support this market type');
|
|
6030
|
+
}
|
|
5868
6031
|
return this.parseMarginModification(response, market);
|
|
5869
6032
|
}
|
|
5870
6033
|
parseMarginModification(data, market = undefined) {
|
package/js/src/pro/binance.js
CHANGED
|
@@ -53,8 +53,8 @@ export default class binance extends binanceRest {
|
|
|
53
53
|
},
|
|
54
54
|
'api': {
|
|
55
55
|
'ws': {
|
|
56
|
-
'spot': 'wss://stream.binance.com
|
|
57
|
-
'margin': 'wss://stream.binance.com
|
|
56
|
+
'spot': 'wss://stream.binance.com/ws',
|
|
57
|
+
'margin': 'wss://stream.binance.com/ws',
|
|
58
58
|
'future': 'wss://fstream.binance.com/ws',
|
|
59
59
|
'delivery': 'wss://dstream.binance.com/ws',
|
|
60
60
|
'ws': 'wss://ws-api.binance.com:443/ws-api/v3',
|
|
@@ -1309,20 +1309,23 @@ export default class binance extends binanceRest {
|
|
|
1309
1309
|
return;
|
|
1310
1310
|
}
|
|
1311
1311
|
let method = 'publicPutUserDataStream';
|
|
1312
|
+
const request = {};
|
|
1313
|
+
const symbol = this.safeString(params, 'symbol');
|
|
1314
|
+
const sendParams = this.omit(params, ['type', 'symbol']);
|
|
1312
1315
|
if (type === 'future') {
|
|
1313
1316
|
method = 'fapiPrivatePutListenKey';
|
|
1314
1317
|
}
|
|
1315
1318
|
else if (type === 'delivery') {
|
|
1316
1319
|
method = 'dapiPrivatePutListenKey';
|
|
1317
1320
|
}
|
|
1318
|
-
else
|
|
1319
|
-
|
|
1321
|
+
else {
|
|
1322
|
+
request['listenKey'] = listenKey;
|
|
1323
|
+
if (type === 'margin') {
|
|
1324
|
+
request['symbol'] = symbol;
|
|
1325
|
+
method = 'sapiPutUserDataStream';
|
|
1326
|
+
}
|
|
1320
1327
|
}
|
|
1321
|
-
const request = {
|
|
1322
|
-
'listenKey': listenKey,
|
|
1323
|
-
};
|
|
1324
1328
|
const time = this.milliseconds();
|
|
1325
|
-
const sendParams = this.omit(params, 'type');
|
|
1326
1329
|
try {
|
|
1327
1330
|
await this[method](this.extend(request, sendParams));
|
|
1328
1331
|
}
|
|
@@ -2076,9 +2079,7 @@ export default class binance extends binanceRest {
|
|
|
2076
2079
|
market = this.market(symbol);
|
|
2077
2080
|
symbol = market['symbol'];
|
|
2078
2081
|
messageHash += ':' + symbol;
|
|
2079
|
-
params = this.extend(params, { 'type': market['type'], 'symbol': symbol }); // needed inside authenticate for isolated margin
|
|
2080
2082
|
}
|
|
2081
|
-
await this.authenticate(params);
|
|
2082
2083
|
let type = undefined;
|
|
2083
2084
|
[type, params] = this.handleMarketTypeAndParams('watchOrders', market, params);
|
|
2084
2085
|
let subType = undefined;
|
|
@@ -2089,6 +2090,8 @@ export default class binance extends binanceRest {
|
|
|
2089
2090
|
else if (this.isInverse(type, subType)) {
|
|
2090
2091
|
type = 'delivery';
|
|
2091
2092
|
}
|
|
2093
|
+
params = this.extend(params, { 'type': type, 'symbol': symbol }); // needed inside authenticate for isolated margin
|
|
2094
|
+
await this.authenticate(params);
|
|
2092
2095
|
let urlType = type;
|
|
2093
2096
|
if (type === 'margin') {
|
|
2094
2097
|
urlType = 'spot'; // spot-margin shares the same stream as regular spot
|
package/package.json
CHANGED