ccxt 4.1.95 → 4.1.96
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/build.sh +16 -16
- package/dist/ccxt.browser.js +385 -251
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/binance.js +145 -135
- package/dist/cjs/src/bingx.js +8 -7
- package/dist/cjs/src/bit2c.js +2 -3
- package/dist/cjs/src/bitfinex2.js +2 -3
- package/dist/cjs/src/bitmart.js +1 -1
- package/dist/cjs/src/btcbox.js +2 -3
- package/dist/cjs/src/coinbase.js +11 -5
- package/dist/cjs/src/cryptocom.js +2 -1
- package/dist/cjs/src/delta.js +25 -0
- package/dist/cjs/src/gate.js +2 -2
- package/dist/cjs/src/kraken.js +46 -45
- package/dist/cjs/src/krakenfutures.js +53 -26
- package/dist/cjs/src/kucoin.js +73 -3
- package/dist/cjs/src/kucoinfutures.js +1 -1
- package/dist/cjs/src/pro/binance.js +2 -3
- package/dist/cjs/src/pro/bitfinex.js +2 -3
- package/dist/cjs/src/pro/cex.js +1 -1
- package/dist/cjs/src/pro/gate.js +2 -2
- package/dist/cjs/src/pro/kraken.js +2 -3
- package/dist/cjs/src/pro/okx.js +1 -1
- package/dist/cjs/src/pro/woo.js +2 -3
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/kucoin.d.ts +12 -0
- package/js/src/abstract/kucoinfutures.d.ts +12 -1
- package/js/src/binance.js +145 -135
- package/js/src/bingx.js +8 -7
- package/js/src/bit2c.js +2 -3
- package/js/src/bitfinex2.js +2 -3
- package/js/src/bitmart.js +1 -1
- package/js/src/btcbox.js +2 -3
- package/js/src/coinbase.js +11 -5
- package/js/src/cryptocom.js +2 -1
- package/js/src/delta.d.ts +5 -4
- package/js/src/delta.js +25 -0
- package/js/src/gate.js +2 -2
- package/js/src/kraken.js +46 -45
- package/js/src/krakenfutures.js +53 -26
- package/js/src/kucoin.d.ts +3 -0
- package/js/src/kucoin.js +73 -3
- package/js/src/kucoinfutures.js +1 -1
- package/js/src/pro/binance.js +2 -3
- package/js/src/pro/bitfinex.js +2 -3
- package/js/src/pro/cex.js +1 -1
- package/js/src/pro/gate.js +2 -2
- package/js/src/pro/kraken.js +2 -3
- package/js/src/pro/okx.js +1 -1
- package/js/src/pro/woo.js +2 -3
- package/package.json +2 -2
package/dist/cjs/ccxt.js
CHANGED
|
@@ -168,7 +168,7 @@ var woo$1 = require('./src/pro/woo.js');
|
|
|
168
168
|
|
|
169
169
|
//-----------------------------------------------------------------------------
|
|
170
170
|
// this is updated by vss.js when building
|
|
171
|
-
const version = '4.1.
|
|
171
|
+
const version = '4.1.96';
|
|
172
172
|
Exchange["default"].ccxtVersion = version;
|
|
173
173
|
const exchanges = {
|
|
174
174
|
'ace': ace,
|
package/dist/cjs/src/binance.js
CHANGED
|
@@ -2565,24 +2565,23 @@ class binance extends binance$1 {
|
|
|
2565
2565
|
let type = this.safeString(params, 'type', defaultType);
|
|
2566
2566
|
let subType = undefined;
|
|
2567
2567
|
[subType, params] = this.handleSubTypeAndParams('fetchBalance', undefined, params);
|
|
2568
|
-
|
|
2569
|
-
let
|
|
2568
|
+
let marginMode = undefined;
|
|
2569
|
+
let query = undefined;
|
|
2570
|
+
[marginMode, query] = this.handleMarginModeAndParams('fetchBalance', params);
|
|
2571
|
+
query = this.omit(query, 'type');
|
|
2572
|
+
let response = undefined;
|
|
2570
2573
|
const request = {};
|
|
2571
2574
|
if (this.isLinear(type, subType)) {
|
|
2572
|
-
const options = this.safeValue(this.options, type, {});
|
|
2573
|
-
const fetchBalanceOptions = this.safeValue(options, 'fetchBalance', {});
|
|
2574
|
-
method = this.safeString(fetchBalanceOptions, 'method', 'fapiPrivateV2GetAccount');
|
|
2575
2575
|
type = 'linear';
|
|
2576
|
+
response = await this.fapiPrivateV2GetAccount(this.extend(request, query));
|
|
2576
2577
|
}
|
|
2577
2578
|
else if (this.isInverse(type, subType)) {
|
|
2578
|
-
const options = this.safeValue(this.options, type, {});
|
|
2579
|
-
const fetchBalanceOptions = this.safeValue(options, 'fetchBalance', {});
|
|
2580
|
-
method = this.safeString(fetchBalanceOptions, 'method', 'dapiPrivateGetAccount');
|
|
2581
2579
|
type = 'inverse';
|
|
2580
|
+
response = await this.dapiPrivateGetAccount(this.extend(request, query));
|
|
2582
2581
|
}
|
|
2583
2582
|
else if (marginMode === 'isolated') {
|
|
2584
|
-
method = 'sapiGetMarginIsolatedAccount';
|
|
2585
2583
|
const paramSymbols = this.safeValue(params, 'symbols');
|
|
2584
|
+
query = this.omit(query, 'symbols');
|
|
2586
2585
|
if (paramSymbols !== undefined) {
|
|
2587
2586
|
let symbols = '';
|
|
2588
2587
|
if (Array.isArray(paramSymbols)) {
|
|
@@ -2598,18 +2597,20 @@ class binance extends binance$1 {
|
|
|
2598
2597
|
}
|
|
2599
2598
|
request['symbols'] = symbols;
|
|
2600
2599
|
}
|
|
2600
|
+
response = await this.sapiGetMarginIsolatedAccount(this.extend(request, query));
|
|
2601
2601
|
}
|
|
2602
2602
|
else if ((type === 'margin') || (marginMode === 'cross')) {
|
|
2603
|
-
|
|
2603
|
+
response = await this.sapiGetMarginAccount(this.extend(request, query));
|
|
2604
2604
|
}
|
|
2605
2605
|
else if (type === 'savings') {
|
|
2606
|
-
|
|
2606
|
+
response = await this.sapiGetLendingUnionAccount(this.extend(request, query));
|
|
2607
2607
|
}
|
|
2608
2608
|
else if (type === 'funding') {
|
|
2609
|
-
|
|
2609
|
+
response = await this.sapiPostAssetGetFundingAsset(this.extend(request, query));
|
|
2610
|
+
}
|
|
2611
|
+
else {
|
|
2612
|
+
response = await this.privateGetAccount(this.extend(request, query));
|
|
2610
2613
|
}
|
|
2611
|
-
const requestParams = this.omit(query, ['type', 'symbols']);
|
|
2612
|
-
const response = await this[method](this.extend(request, requestParams));
|
|
2613
2614
|
//
|
|
2614
2615
|
// spot
|
|
2615
2616
|
//
|
|
@@ -3301,33 +3302,35 @@ class binance extends binance$1 {
|
|
|
3301
3302
|
if (until !== undefined) {
|
|
3302
3303
|
request['endTime'] = until;
|
|
3303
3304
|
}
|
|
3304
|
-
let
|
|
3305
|
+
let response = undefined;
|
|
3305
3306
|
if (market['option']) {
|
|
3306
|
-
|
|
3307
|
+
response = await this.eapiPublicGetKlines(this.extend(request, params));
|
|
3307
3308
|
}
|
|
3308
3309
|
else if (price === 'mark') {
|
|
3309
3310
|
if (market['inverse']) {
|
|
3310
|
-
|
|
3311
|
+
response = await this.dapiPublicGetMarkPriceKlines(this.extend(request, params));
|
|
3311
3312
|
}
|
|
3312
3313
|
else {
|
|
3313
|
-
|
|
3314
|
+
response = await this.fapiPublicGetMarkPriceKlines(this.extend(request, params));
|
|
3314
3315
|
}
|
|
3315
3316
|
}
|
|
3316
3317
|
else if (price === 'index') {
|
|
3317
3318
|
if (market['inverse']) {
|
|
3318
|
-
|
|
3319
|
+
response = await this.dapiPublicGetIndexPriceKlines(this.extend(request, params));
|
|
3319
3320
|
}
|
|
3320
3321
|
else {
|
|
3321
|
-
|
|
3322
|
+
response = await this.fapiPublicGetIndexPriceKlines(this.extend(request, params));
|
|
3322
3323
|
}
|
|
3323
3324
|
}
|
|
3324
3325
|
else if (market['linear']) {
|
|
3325
|
-
|
|
3326
|
+
response = await this.fapiPublicGetKlines(this.extend(request, params));
|
|
3326
3327
|
}
|
|
3327
3328
|
else if (market['inverse']) {
|
|
3328
|
-
|
|
3329
|
+
response = await this.dapiPublicGetKlines(this.extend(request, params));
|
|
3330
|
+
}
|
|
3331
|
+
else {
|
|
3332
|
+
response = await this.publicGetKlines(this.extend(request, params));
|
|
3329
3333
|
}
|
|
3330
|
-
const response = await this[method](this.extend(request, params));
|
|
3331
3334
|
//
|
|
3332
3335
|
// [
|
|
3333
3336
|
// [1591478520000,"0.02501300","0.02501800","0.02500000","0.02500000","22.19000000",1591478579999,"0.55490906",40,"10.92900000","0.27336462","0"],
|
|
@@ -4743,22 +4746,6 @@ class binance extends binance$1 {
|
|
|
4743
4746
|
const request = {
|
|
4744
4747
|
'symbol': market['id'],
|
|
4745
4748
|
};
|
|
4746
|
-
let method = 'privateGetOrder';
|
|
4747
|
-
if (market['option']) {
|
|
4748
|
-
method = 'eapiPrivateGetOrder';
|
|
4749
|
-
}
|
|
4750
|
-
else if (market['linear']) {
|
|
4751
|
-
method = 'fapiPrivateGetOrder';
|
|
4752
|
-
}
|
|
4753
|
-
else if (market['inverse']) {
|
|
4754
|
-
method = 'dapiPrivateGetOrder';
|
|
4755
|
-
}
|
|
4756
|
-
else if (type === 'margin' || marginMode !== undefined) {
|
|
4757
|
-
method = 'sapiGetMarginOrder';
|
|
4758
|
-
if (marginMode === 'isolated') {
|
|
4759
|
-
request['isIsolated'] = true;
|
|
4760
|
-
}
|
|
4761
|
-
}
|
|
4762
4749
|
const clientOrderId = this.safeValue2(params, 'origClientOrderId', 'clientOrderId');
|
|
4763
4750
|
if (clientOrderId !== undefined) {
|
|
4764
4751
|
if (market['option']) {
|
|
@@ -4772,7 +4759,25 @@ class binance extends binance$1 {
|
|
|
4772
4759
|
request['orderId'] = id;
|
|
4773
4760
|
}
|
|
4774
4761
|
const requestParams = this.omit(query, ['type', 'clientOrderId', 'origClientOrderId']);
|
|
4775
|
-
|
|
4762
|
+
let response = undefined;
|
|
4763
|
+
if (market['option']) {
|
|
4764
|
+
response = await this.eapiPrivateGetOrder(this.extend(request, requestParams));
|
|
4765
|
+
}
|
|
4766
|
+
else if (market['linear']) {
|
|
4767
|
+
response = await this.fapiPrivateGetOrder(this.extend(request, requestParams));
|
|
4768
|
+
}
|
|
4769
|
+
else if (market['inverse']) {
|
|
4770
|
+
response = await this.dapiPrivateGetOrder(this.extend(request, requestParams));
|
|
4771
|
+
}
|
|
4772
|
+
else if (type === 'margin' || marginMode !== undefined) {
|
|
4773
|
+
if (marginMode === 'isolated') {
|
|
4774
|
+
request['isIsolated'] = true;
|
|
4775
|
+
}
|
|
4776
|
+
response = await this.sapiGetMarginOrder(this.extend(request, requestParams));
|
|
4777
|
+
}
|
|
4778
|
+
else {
|
|
4779
|
+
response = await this.privateGetOrder(this.extend(request, requestParams));
|
|
4780
|
+
}
|
|
4776
4781
|
return this.parseOrder(response, market);
|
|
4777
4782
|
}
|
|
4778
4783
|
async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -4810,34 +4815,36 @@ class binance extends binance$1 {
|
|
|
4810
4815
|
const request = {
|
|
4811
4816
|
'symbol': market['id'],
|
|
4812
4817
|
};
|
|
4813
|
-
|
|
4818
|
+
const until = this.safeInteger(params, 'until');
|
|
4819
|
+
if (until !== undefined) {
|
|
4820
|
+
params = this.omit(params, 'until');
|
|
4821
|
+
request['endTime'] = until;
|
|
4822
|
+
}
|
|
4823
|
+
if (since !== undefined) {
|
|
4824
|
+
request['startTime'] = since;
|
|
4825
|
+
}
|
|
4826
|
+
if (limit !== undefined) {
|
|
4827
|
+
request['limit'] = limit;
|
|
4828
|
+
}
|
|
4829
|
+
let response = undefined;
|
|
4814
4830
|
if (market['option']) {
|
|
4815
|
-
|
|
4831
|
+
response = await this.eapiPrivateGetHistoryOrders(this.extend(request, query));
|
|
4816
4832
|
}
|
|
4817
4833
|
else if (market['linear']) {
|
|
4818
|
-
|
|
4834
|
+
response = await this.fapiPrivateGetAllOrders(this.extend(request, query));
|
|
4819
4835
|
}
|
|
4820
4836
|
else if (market['inverse']) {
|
|
4821
|
-
|
|
4837
|
+
response = await this.dapiPrivateGetAllOrders(this.extend(request, query));
|
|
4822
4838
|
}
|
|
4823
4839
|
else if (type === 'margin' || marginMode !== undefined) {
|
|
4824
|
-
method = 'sapiGetMarginAllOrders';
|
|
4825
4840
|
if (marginMode === 'isolated') {
|
|
4826
4841
|
request['isIsolated'] = true;
|
|
4827
4842
|
}
|
|
4843
|
+
response = await this.sapiGetMarginAllOrders(this.extend(request, query));
|
|
4828
4844
|
}
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
params = this.omit(params, 'until');
|
|
4832
|
-
request['endTime'] = until;
|
|
4833
|
-
}
|
|
4834
|
-
if (since !== undefined) {
|
|
4835
|
-
request['startTime'] = since;
|
|
4836
|
-
}
|
|
4837
|
-
if (limit !== undefined) {
|
|
4838
|
-
request['limit'] = limit;
|
|
4845
|
+
else {
|
|
4846
|
+
response = await this.privateGetAllOrders(this.extend(request, query));
|
|
4839
4847
|
}
|
|
4840
|
-
const response = await this[method](this.extend(request, query));
|
|
4841
4848
|
//
|
|
4842
4849
|
// spot
|
|
4843
4850
|
//
|
|
@@ -4962,32 +4969,34 @@ class binance extends binance$1 {
|
|
|
4962
4969
|
let subType = undefined;
|
|
4963
4970
|
[subType, query] = this.handleSubTypeAndParams('fetchOpenOrders', market, query);
|
|
4964
4971
|
const requestParams = this.omit(query, 'type');
|
|
4965
|
-
let
|
|
4972
|
+
let response = undefined;
|
|
4966
4973
|
if (type === 'option') {
|
|
4967
|
-
method = 'eapiPrivateGetOpenOrders';
|
|
4968
4974
|
if (since !== undefined) {
|
|
4969
4975
|
request['startTime'] = since;
|
|
4970
4976
|
}
|
|
4971
4977
|
if (limit !== undefined) {
|
|
4972
4978
|
request['limit'] = limit;
|
|
4973
4979
|
}
|
|
4980
|
+
response = await this.eapiPrivateGetOpenOrders(this.extend(request, requestParams));
|
|
4974
4981
|
}
|
|
4975
4982
|
else if (this.isLinear(type, subType)) {
|
|
4976
|
-
|
|
4983
|
+
response = await this.fapiPrivateGetOpenOrders(this.extend(request, requestParams));
|
|
4977
4984
|
}
|
|
4978
4985
|
else if (this.isInverse(type, subType)) {
|
|
4979
|
-
|
|
4986
|
+
response = await this.dapiPrivateGetOpenOrders(this.extend(request, requestParams));
|
|
4980
4987
|
}
|
|
4981
4988
|
else if (type === 'margin' || marginMode !== undefined) {
|
|
4982
|
-
method = 'sapiGetMarginOpenOrders';
|
|
4983
4989
|
if (marginMode === 'isolated') {
|
|
4984
4990
|
request['isIsolated'] = true;
|
|
4985
4991
|
if (symbol === undefined) {
|
|
4986
4992
|
throw new errors.ArgumentsRequired(this.id + ' fetchOpenOrders() requires a symbol argument for isolated markets');
|
|
4987
4993
|
}
|
|
4988
4994
|
}
|
|
4995
|
+
response = await this.sapiGetMarginOpenOrders(this.extend(request, requestParams));
|
|
4996
|
+
}
|
|
4997
|
+
else {
|
|
4998
|
+
response = await this.privateGetOpenOrders(this.extend(request, requestParams));
|
|
4989
4999
|
}
|
|
4990
|
-
const response = await this[method](this.extend(request, requestParams));
|
|
4991
5000
|
return this.parseOrders(response, market, since, limit);
|
|
4992
5001
|
}
|
|
4993
5002
|
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -5078,24 +5087,26 @@ class binance extends binance$1 {
|
|
|
5078
5087
|
else {
|
|
5079
5088
|
request['orderId'] = id;
|
|
5080
5089
|
}
|
|
5081
|
-
|
|
5090
|
+
const requestParams = this.omit(query, ['type', 'origClientOrderId', 'clientOrderId']);
|
|
5091
|
+
let response = undefined;
|
|
5082
5092
|
if (market['option']) {
|
|
5083
|
-
|
|
5093
|
+
response = await this.eapiPrivateDeleteOrder(this.extend(request, requestParams));
|
|
5084
5094
|
}
|
|
5085
5095
|
else if (market['linear']) {
|
|
5086
|
-
|
|
5096
|
+
response = await this.fapiPrivateDeleteOrder(this.extend(request, requestParams));
|
|
5087
5097
|
}
|
|
5088
5098
|
else if (market['inverse']) {
|
|
5089
|
-
|
|
5099
|
+
response = await this.dapiPrivateDeleteOrder(this.extend(request, requestParams));
|
|
5090
5100
|
}
|
|
5091
5101
|
else if (type === 'margin' || marginMode !== undefined) {
|
|
5092
|
-
method = 'sapiDeleteMarginOrder';
|
|
5093
5102
|
if (marginMode === 'isolated') {
|
|
5094
5103
|
request['isIsolated'] = true;
|
|
5095
5104
|
}
|
|
5105
|
+
response = await this.sapiDeleteMarginOrder(this.extend(request, requestParams));
|
|
5106
|
+
}
|
|
5107
|
+
else {
|
|
5108
|
+
response = await this.privateDeleteOrder(this.extend(request, requestParams));
|
|
5096
5109
|
}
|
|
5097
|
-
const requestParams = this.omit(query, ['type', 'origClientOrderId', 'clientOrderId']);
|
|
5098
|
-
const response = await this[method](this.extend(request, requestParams));
|
|
5099
5110
|
return this.parseOrder(response, market);
|
|
5100
5111
|
}
|
|
5101
5112
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
@@ -5124,23 +5135,25 @@ class binance extends binance$1 {
|
|
|
5124
5135
|
const type = this.safeString(params, 'type', market['type']);
|
|
5125
5136
|
params = this.omit(params, ['type']);
|
|
5126
5137
|
const [marginMode, query] = this.handleMarginModeAndParams('cancelAllOrders', params);
|
|
5127
|
-
let
|
|
5138
|
+
let response = undefined;
|
|
5128
5139
|
if (market['option']) {
|
|
5129
|
-
|
|
5140
|
+
response = await this.eapiPrivateDeleteAllOpenOrders(this.extend(request, query));
|
|
5130
5141
|
}
|
|
5131
5142
|
else if (market['linear']) {
|
|
5132
|
-
|
|
5143
|
+
response = await this.fapiPrivateDeleteAllOpenOrders(this.extend(request, query));
|
|
5133
5144
|
}
|
|
5134
5145
|
else if (market['inverse']) {
|
|
5135
|
-
|
|
5146
|
+
response = await this.dapiPrivateDeleteAllOpenOrders(this.extend(request, query));
|
|
5136
5147
|
}
|
|
5137
5148
|
else if ((type === 'margin') || (marginMode !== undefined)) {
|
|
5138
|
-
method = 'sapiDeleteMarginOpenOrders';
|
|
5139
5149
|
if (marginMode === 'isolated') {
|
|
5140
5150
|
request['isIsolated'] = true;
|
|
5141
5151
|
}
|
|
5152
|
+
response = await this.sapiDeleteMarginOpenOrders(this.extend(request, query));
|
|
5153
|
+
}
|
|
5154
|
+
else {
|
|
5155
|
+
response = await this.privateDeleteOpenOrders(this.extend(request, query));
|
|
5142
5156
|
}
|
|
5143
|
-
const response = await this[method](this.extend(request, query));
|
|
5144
5157
|
if (Array.isArray(response)) {
|
|
5145
5158
|
return this.parseOrders(response, market);
|
|
5146
5159
|
}
|
|
@@ -5277,37 +5290,12 @@ class binance extends binance$1 {
|
|
|
5277
5290
|
const request = {};
|
|
5278
5291
|
let market = undefined;
|
|
5279
5292
|
let type = undefined;
|
|
5280
|
-
let method = undefined;
|
|
5281
5293
|
let marginMode = undefined;
|
|
5282
5294
|
if (symbol !== undefined) {
|
|
5283
5295
|
market = this.market(symbol);
|
|
5284
5296
|
request['symbol'] = market['id'];
|
|
5285
5297
|
}
|
|
5286
5298
|
[type, params] = this.handleMarketTypeAndParams('fetchMyTrades', market, params);
|
|
5287
|
-
if (type === 'option') {
|
|
5288
|
-
method = 'eapiPrivateGetUserTrades';
|
|
5289
|
-
}
|
|
5290
|
-
else {
|
|
5291
|
-
if (symbol === undefined) {
|
|
5292
|
-
throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
|
|
5293
|
-
}
|
|
5294
|
-
[marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
|
|
5295
|
-
if (type === 'spot' || type === 'margin') {
|
|
5296
|
-
method = 'privateGetMyTrades';
|
|
5297
|
-
if ((type === 'margin') || (marginMode !== undefined)) {
|
|
5298
|
-
method = 'sapiGetMarginMyTrades';
|
|
5299
|
-
if (marginMode === 'isolated') {
|
|
5300
|
-
request['isIsolated'] = true;
|
|
5301
|
-
}
|
|
5302
|
-
}
|
|
5303
|
-
}
|
|
5304
|
-
else if (market['linear']) {
|
|
5305
|
-
method = 'fapiPrivateGetUserTrades';
|
|
5306
|
-
}
|
|
5307
|
-
else if (market['inverse']) {
|
|
5308
|
-
method = 'dapiPrivateGetUserTrades';
|
|
5309
|
-
}
|
|
5310
|
-
}
|
|
5311
5299
|
let endTime = this.safeInteger2(params, 'until', 'endTime');
|
|
5312
5300
|
if (since !== undefined) {
|
|
5313
5301
|
const startTime = since;
|
|
@@ -5335,7 +5323,33 @@ class binance extends binance$1 {
|
|
|
5335
5323
|
}
|
|
5336
5324
|
request['limit'] = limit;
|
|
5337
5325
|
}
|
|
5338
|
-
|
|
5326
|
+
let response = undefined;
|
|
5327
|
+
if (type === 'option') {
|
|
5328
|
+
response = await this.eapiPrivateGetUserTrades(this.extend(request, params));
|
|
5329
|
+
}
|
|
5330
|
+
else {
|
|
5331
|
+
if (symbol === undefined) {
|
|
5332
|
+
throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
|
|
5333
|
+
}
|
|
5334
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
|
|
5335
|
+
if (type === 'spot' || type === 'margin') {
|
|
5336
|
+
if ((type === 'margin') || (marginMode !== undefined)) {
|
|
5337
|
+
if (marginMode === 'isolated') {
|
|
5338
|
+
request['isIsolated'] = true;
|
|
5339
|
+
}
|
|
5340
|
+
response = await this.sapiGetMarginMyTrades(this.extend(request, params));
|
|
5341
|
+
}
|
|
5342
|
+
else {
|
|
5343
|
+
response = await this.privateGetMyTrades(this.extend(request, params));
|
|
5344
|
+
}
|
|
5345
|
+
}
|
|
5346
|
+
else if (market['linear']) {
|
|
5347
|
+
response = await this.fapiPrivateGetUserTrades(this.extend(request, params));
|
|
5348
|
+
}
|
|
5349
|
+
else if (market['inverse']) {
|
|
5350
|
+
response = await this.dapiPrivateGetUserTrades(this.extend(request, params));
|
|
5351
|
+
}
|
|
5352
|
+
}
|
|
5339
5353
|
//
|
|
5340
5354
|
// spot trade
|
|
5341
5355
|
//
|
|
@@ -6665,7 +6679,6 @@ class binance extends binance$1 {
|
|
|
6665
6679
|
* @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
|
|
6666
6680
|
*/
|
|
6667
6681
|
await this.loadMarkets();
|
|
6668
|
-
let method = undefined;
|
|
6669
6682
|
let type = undefined;
|
|
6670
6683
|
[type, params] = this.handleMarketTypeAndParams('fetchTradingFees', undefined, params);
|
|
6671
6684
|
let subType = undefined;
|
|
@@ -6673,16 +6686,16 @@ class binance extends binance$1 {
|
|
|
6673
6686
|
const isSpotOrMargin = (type === 'spot') || (type === 'margin');
|
|
6674
6687
|
const isLinear = this.isLinear(type, subType);
|
|
6675
6688
|
const isInverse = this.isInverse(type, subType);
|
|
6689
|
+
let response = undefined;
|
|
6676
6690
|
if (isSpotOrMargin) {
|
|
6677
|
-
|
|
6691
|
+
response = await this.sapiGetAssetTradeFee(params);
|
|
6678
6692
|
}
|
|
6679
6693
|
else if (isLinear) {
|
|
6680
|
-
|
|
6694
|
+
response = await this.fapiPrivateV2GetAccount(params);
|
|
6681
6695
|
}
|
|
6682
6696
|
else if (isInverse) {
|
|
6683
|
-
|
|
6697
|
+
response = await this.dapiPrivateGetAccount(params);
|
|
6684
6698
|
}
|
|
6685
|
-
const response = await this[method](params);
|
|
6686
6699
|
//
|
|
6687
6700
|
// sapi / spot
|
|
6688
6701
|
//
|
|
@@ -6880,17 +6893,16 @@ class binance extends binance$1 {
|
|
|
6880
6893
|
const request = {
|
|
6881
6894
|
'symbol': market['id'],
|
|
6882
6895
|
};
|
|
6883
|
-
let
|
|
6896
|
+
let response = undefined;
|
|
6884
6897
|
if (market['linear']) {
|
|
6885
|
-
|
|
6898
|
+
response = await this.fapiPublicGetPremiumIndex(this.extend(request, params));
|
|
6886
6899
|
}
|
|
6887
6900
|
else if (market['inverse']) {
|
|
6888
|
-
|
|
6901
|
+
response = await this.dapiPublicGetPremiumIndex(this.extend(request, params));
|
|
6889
6902
|
}
|
|
6890
6903
|
else {
|
|
6891
6904
|
throw new errors.NotSupported(this.id + ' fetchFundingRate() supports linear and inverse contracts only');
|
|
6892
6905
|
}
|
|
6893
|
-
let response = await this[method](this.extend(request, params));
|
|
6894
6906
|
if (market['inverse']) {
|
|
6895
6907
|
response = response[0];
|
|
6896
6908
|
}
|
|
@@ -7528,20 +7540,20 @@ class binance extends binance$1 {
|
|
|
7528
7540
|
* @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}, indexed by market symbols
|
|
7529
7541
|
*/
|
|
7530
7542
|
await this.loadMarkets();
|
|
7531
|
-
|
|
7543
|
+
let type = undefined;
|
|
7544
|
+
[type, params] = this.handleMarketTypeAndParams('fetchLeverageTiers', undefined, params);
|
|
7532
7545
|
let subType = undefined;
|
|
7533
|
-
[subType, params] = this.handleSubTypeAndParams('fetchLeverageTiers', undefined,
|
|
7534
|
-
let
|
|
7546
|
+
[subType, params] = this.handleSubTypeAndParams('fetchLeverageTiers', undefined, params, 'linear');
|
|
7547
|
+
let response = undefined;
|
|
7535
7548
|
if (this.isLinear(type, subType)) {
|
|
7536
|
-
|
|
7549
|
+
response = await this.fapiPrivateGetLeverageBracket(params);
|
|
7537
7550
|
}
|
|
7538
7551
|
else if (this.isInverse(type, subType)) {
|
|
7539
|
-
|
|
7552
|
+
response = await this.dapiPrivateV2GetLeverageBracket(params);
|
|
7540
7553
|
}
|
|
7541
7554
|
else {
|
|
7542
7555
|
throw new errors.NotSupported(this.id + ' fetchLeverageTiers() supports linear and inverse contracts only');
|
|
7543
7556
|
}
|
|
7544
|
-
const response = await this[method](query);
|
|
7545
7557
|
//
|
|
7546
7558
|
// usdm
|
|
7547
7559
|
//
|
|
@@ -8015,21 +8027,21 @@ class binance extends binance$1 {
|
|
|
8015
8027
|
}
|
|
8016
8028
|
await this.loadMarkets();
|
|
8017
8029
|
const market = this.market(symbol);
|
|
8018
|
-
|
|
8030
|
+
const request = {
|
|
8031
|
+
'symbol': market['id'],
|
|
8032
|
+
'leverage': leverage,
|
|
8033
|
+
};
|
|
8034
|
+
let response = undefined;
|
|
8019
8035
|
if (market['linear']) {
|
|
8020
|
-
|
|
8036
|
+
response = await this.fapiPrivatePostLeverage(this.extend(request, params));
|
|
8021
8037
|
}
|
|
8022
8038
|
else if (market['inverse']) {
|
|
8023
|
-
|
|
8039
|
+
response = await this.dapiPrivatePostLeverage(this.extend(request, params));
|
|
8024
8040
|
}
|
|
8025
8041
|
else {
|
|
8026
8042
|
throw new errors.NotSupported(this.id + ' setLeverage() supports linear and inverse contracts only');
|
|
8027
8043
|
}
|
|
8028
|
-
|
|
8029
|
-
'symbol': market['id'],
|
|
8030
|
-
'leverage': leverage,
|
|
8031
|
-
};
|
|
8032
|
-
return await this[method](this.extend(request, params));
|
|
8044
|
+
return response;
|
|
8033
8045
|
}
|
|
8034
8046
|
async setMarginMode(marginMode, symbol = undefined, params = {}) {
|
|
8035
8047
|
/**
|
|
@@ -8062,23 +8074,21 @@ class binance extends binance$1 {
|
|
|
8062
8074
|
}
|
|
8063
8075
|
await this.loadMarkets();
|
|
8064
8076
|
const market = this.market(symbol);
|
|
8065
|
-
let method = undefined;
|
|
8066
|
-
if (market['linear']) {
|
|
8067
|
-
method = 'fapiPrivatePostMarginType';
|
|
8068
|
-
}
|
|
8069
|
-
else if (market['inverse']) {
|
|
8070
|
-
method = 'dapiPrivatePostMarginType';
|
|
8071
|
-
}
|
|
8072
|
-
else {
|
|
8073
|
-
throw new errors.NotSupported(this.id + ' setMarginMode() supports linear and inverse contracts only');
|
|
8074
|
-
}
|
|
8075
8077
|
const request = {
|
|
8076
8078
|
'symbol': market['id'],
|
|
8077
8079
|
'marginType': marginMode,
|
|
8078
8080
|
};
|
|
8079
8081
|
let response = undefined;
|
|
8080
8082
|
try {
|
|
8081
|
-
|
|
8083
|
+
if (market['linear']) {
|
|
8084
|
+
response = await this.fapiPrivatePostMarginType(this.extend(request, params));
|
|
8085
|
+
}
|
|
8086
|
+
else if (market['inverse']) {
|
|
8087
|
+
response = await this.dapiPrivatePostMarginType(this.extend(request, params));
|
|
8088
|
+
}
|
|
8089
|
+
else {
|
|
8090
|
+
throw new errors.NotSupported(this.id + ' setMarginMode() supports linear and inverse contracts only');
|
|
8091
|
+
}
|
|
8082
8092
|
}
|
|
8083
8093
|
catch (e) {
|
|
8084
8094
|
// not an error
|
package/dist/cjs/src/bingx.js
CHANGED
|
@@ -328,6 +328,7 @@ class bingx extends bingx$1 {
|
|
|
328
328
|
'100202': errors.InsufficientFunds,
|
|
329
329
|
'100204': errors.BadRequest,
|
|
330
330
|
'100400': errors.BadRequest,
|
|
331
|
+
'100421': errors.BadSymbol,
|
|
331
332
|
'100440': errors.ExchangeError,
|
|
332
333
|
'100500': errors.ExchangeError,
|
|
333
334
|
'100503': errors.ExchangeError,
|
|
@@ -1303,7 +1304,7 @@ class bingx extends bingx$1 {
|
|
|
1303
1304
|
// }
|
|
1304
1305
|
//
|
|
1305
1306
|
const marketId = this.safeString(ticker, 'symbol');
|
|
1306
|
-
const change = this.safeString(ticker, 'priceChange');
|
|
1307
|
+
// const change = this.safeString (ticker, 'priceChange'); // this is not ccxt's change because it does high-low instead of last-open
|
|
1307
1308
|
const lastQty = this.safeString(ticker, 'lastQty');
|
|
1308
1309
|
// in spot markets, lastQty is not present
|
|
1309
1310
|
// it's (bad, but) the only way we can check the tickers origin
|
|
@@ -1315,10 +1316,10 @@ class bingx extends bingx$1 {
|
|
|
1315
1316
|
const close = this.safeString(ticker, 'lastPrice');
|
|
1316
1317
|
const quoteVolume = this.safeString(ticker, 'quoteVolume');
|
|
1317
1318
|
const baseVolume = this.safeString(ticker, 'volume');
|
|
1318
|
-
let percentage = this.safeString(ticker, 'priceChangePercent');
|
|
1319
|
-
if (percentage !== undefined) {
|
|
1320
|
-
|
|
1321
|
-
}
|
|
1319
|
+
// let percentage = this.safeString (ticker, 'priceChangePercent');
|
|
1320
|
+
// if (percentage !== undefined) {
|
|
1321
|
+
// percentage = percentage.replace ('%', '');
|
|
1322
|
+
// } similarly to change, it's not ccxt's percentage because it does priceChange/open, and priceChange is high-low
|
|
1322
1323
|
const ts = this.safeInteger(ticker, 'closeTime');
|
|
1323
1324
|
const datetime = this.iso8601(ts);
|
|
1324
1325
|
const bid = this.safeString(ticker, 'bidPrice');
|
|
@@ -1340,8 +1341,8 @@ class bingx extends bingx$1 {
|
|
|
1340
1341
|
'close': close,
|
|
1341
1342
|
'last': undefined,
|
|
1342
1343
|
'previousClose': undefined,
|
|
1343
|
-
'change':
|
|
1344
|
-
'percentage':
|
|
1344
|
+
'change': undefined,
|
|
1345
|
+
'percentage': undefined,
|
|
1345
1346
|
'average': undefined,
|
|
1346
1347
|
'baseVolume': baseVolume,
|
|
1347
1348
|
'quoteVolume': quoteVolume,
|
package/dist/cjs/src/bit2c.js
CHANGED
|
@@ -276,14 +276,13 @@ class bit2c extends bit2c$1 {
|
|
|
276
276
|
}
|
|
277
277
|
parseTicker(ticker, market = undefined) {
|
|
278
278
|
const symbol = this.safeSymbol(undefined, market);
|
|
279
|
-
const timestamp = this.milliseconds();
|
|
280
279
|
const averagePrice = this.safeString(ticker, 'av');
|
|
281
280
|
const baseVolume = this.safeString(ticker, 'a');
|
|
282
281
|
const last = this.safeString(ticker, 'll');
|
|
283
282
|
return this.safeTicker({
|
|
284
283
|
'symbol': symbol,
|
|
285
|
-
'timestamp':
|
|
286
|
-
'datetime':
|
|
284
|
+
'timestamp': undefined,
|
|
285
|
+
'datetime': undefined,
|
|
287
286
|
'high': undefined,
|
|
288
287
|
'low': undefined,
|
|
289
288
|
'bid': this.safeString(ticker, 'h'),
|
|
@@ -1063,15 +1063,14 @@ class bitfinex2 extends bitfinex2$1 {
|
|
|
1063
1063
|
// FRR_AMOUNT_AVAILABLE
|
|
1064
1064
|
// ]
|
|
1065
1065
|
//
|
|
1066
|
-
const timestamp = this.milliseconds();
|
|
1067
1066
|
const symbol = this.safeSymbol(undefined, market);
|
|
1068
1067
|
const length = ticker.length;
|
|
1069
1068
|
const last = this.safeString(ticker, length - 4);
|
|
1070
1069
|
const percentage = this.safeString(ticker, length - 5);
|
|
1071
1070
|
return this.safeTicker({
|
|
1072
1071
|
'symbol': symbol,
|
|
1073
|
-
'timestamp':
|
|
1074
|
-
'datetime':
|
|
1072
|
+
'timestamp': undefined,
|
|
1073
|
+
'datetime': undefined,
|
|
1075
1074
|
'high': this.safeString(ticker, length - 2),
|
|
1076
1075
|
'low': this.safeString(ticker, length - 1),
|
|
1077
1076
|
'bid': this.safeString(ticker, length - 10),
|
package/dist/cjs/src/bitmart.js
CHANGED
|
@@ -1077,7 +1077,7 @@ class bitmart extends bitmart$1 {
|
|
|
1077
1077
|
// "legal_coin_price":"0.1302699"
|
|
1078
1078
|
// }
|
|
1079
1079
|
//
|
|
1080
|
-
const timestamp = this.safeInteger(ticker, 'timestamp'
|
|
1080
|
+
const timestamp = this.safeInteger(ticker, 'timestamp');
|
|
1081
1081
|
const marketId = this.safeString2(ticker, 'symbol', 'contract_symbol');
|
|
1082
1082
|
market = this.safeMarket(marketId, market);
|
|
1083
1083
|
const symbol = market['symbol'];
|
package/dist/cjs/src/btcbox.js
CHANGED
|
@@ -174,13 +174,12 @@ class btcbox extends btcbox$1 {
|
|
|
174
174
|
return this.parseOrderBook(response, market['symbol']);
|
|
175
175
|
}
|
|
176
176
|
parseTicker(ticker, market = undefined) {
|
|
177
|
-
const timestamp = this.milliseconds();
|
|
178
177
|
const symbol = this.safeSymbol(undefined, market);
|
|
179
178
|
const last = this.safeString(ticker, 'last');
|
|
180
179
|
return this.safeTicker({
|
|
181
180
|
'symbol': symbol,
|
|
182
|
-
'timestamp':
|
|
183
|
-
'datetime':
|
|
181
|
+
'timestamp': undefined,
|
|
182
|
+
'datetime': undefined,
|
|
184
183
|
'high': this.safeString(ticker, 'high'),
|
|
185
184
|
'low': this.safeString(ticker, 'low'),
|
|
186
185
|
'bid': this.safeString(ticker, 'buy'),
|