ccxt 4.3.66 → 4.3.67
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.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +1 -1
- package/dist/cjs/src/bingx.js +151 -19
- package/dist/cjs/src/bithumb.js +61 -17
- package/dist/cjs/src/pro/okx.js +17 -4
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bingx.d.ts +7 -0
- package/js/src/base/Exchange.d.ts +14 -13
- package/js/src/base/Exchange.js +1 -1
- package/js/src/bingx.js +151 -19
- package/js/src/bithumb.js +61 -17
- package/js/src/pro/bitget.d.ts +1 -1
- package/js/src/pro/bybit.d.ts +1 -1
- package/js/src/pro/coinone.d.ts +1 -1
- package/js/src/pro/currencycom.d.ts +1 -1
- package/js/src/pro/hollaex.d.ts +1 -1
- package/js/src/pro/hyperliquid.d.ts +1 -1
- package/js/src/pro/kucoin.d.ts +1 -1
- package/js/src/pro/kucoinfutures.d.ts +1 -1
- package/js/src/pro/mexc.d.ts +1 -1
- package/js/src/pro/okcoin.d.ts +1 -1
- package/js/src/pro/okx.d.ts +2 -2
- package/js/src/pro/okx.js +18 -5
- package/js/src/pro/oxfun.d.ts +1 -1
- package/js/src/pro/p2b.d.ts +1 -1
- package/js/src/pro/poloniex.d.ts +1 -1
- package/js/src/pro/whitebit.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/src/abstract/bittrex.js +0 -9
- package/dist/cjs/src/bittrex.js +0 -2308
- package/dist/cjs/src/pro/bittrex.js +0 -959
- package/js/src/bittrex.d.ts +0 -97
- package/js/src/bittrex.js +0 -2309
- package/js/src/pro/bittrex.d.ts +0 -69
- package/js/src/pro/bittrex.js +0 -960
package/dist/cjs/ccxt.js
CHANGED
|
@@ -191,7 +191,7 @@ var xt$1 = require('./src/pro/xt.js');
|
|
|
191
191
|
|
|
192
192
|
//-----------------------------------------------------------------------------
|
|
193
193
|
// this is updated by vss.js when building
|
|
194
|
-
const version = '4.3.
|
|
194
|
+
const version = '4.3.67';
|
|
195
195
|
Exchange["default"].ccxtVersion = version;
|
|
196
196
|
const exchanges = {
|
|
197
197
|
'ace': ace,
|
|
@@ -1180,7 +1180,7 @@ class Exchange {
|
|
|
1180
1180
|
return new OrderBook.CountedOrderBook(snapshot, depth);
|
|
1181
1181
|
}
|
|
1182
1182
|
handleMessage(client, message) { } // stub to override
|
|
1183
|
-
// ping (client) {} // stub to override
|
|
1183
|
+
// ping (client: Client) {} // stub to override
|
|
1184
1184
|
ping(client) {
|
|
1185
1185
|
return undefined;
|
|
1186
1186
|
}
|
package/dist/cjs/src/bingx.js
CHANGED
|
@@ -283,6 +283,10 @@ class bingx extends bingx$1 {
|
|
|
283
283
|
'trade/leverage': 2,
|
|
284
284
|
'trade/forceOrders': 2,
|
|
285
285
|
'trade/allFillOrders': 2,
|
|
286
|
+
'trade/openOrders': 2,
|
|
287
|
+
'trade/orderDetail': 2,
|
|
288
|
+
'trade/orderHistory': 2,
|
|
289
|
+
'trade/marginType': 2,
|
|
286
290
|
'user/commissionRate': 2,
|
|
287
291
|
'user/positions': 2,
|
|
288
292
|
'user/balance': 2,
|
|
@@ -291,9 +295,12 @@ class bingx extends bingx$1 {
|
|
|
291
295
|
'trade/order': 2,
|
|
292
296
|
'trade/leverage': 2,
|
|
293
297
|
'trade/closeAllPositions': 2,
|
|
298
|
+
'trade/marginType': 2,
|
|
299
|
+
'trade/positionMargin': 2,
|
|
294
300
|
},
|
|
295
301
|
'delete': {
|
|
296
302
|
'trade/allOpenOrders': 2,
|
|
303
|
+
'trade/cancelOrder': 2,
|
|
297
304
|
},
|
|
298
305
|
},
|
|
299
306
|
},
|
|
@@ -3004,7 +3011,8 @@ class bingx extends bingx$1 {
|
|
|
3004
3011
|
// "clientOrderID": ""
|
|
3005
3012
|
// }
|
|
3006
3013
|
//
|
|
3007
|
-
// inverse swap cancelAllOrders
|
|
3014
|
+
// inverse swap cancelAllOrders, cancelOrder
|
|
3015
|
+
// inverse swap cancelAllOrders, cancelOrder, fetchOpenOrders
|
|
3008
3016
|
//
|
|
3009
3017
|
// {
|
|
3010
3018
|
// "symbol": "SOL-USD",
|
|
@@ -3166,13 +3174,14 @@ class bingx extends bingx$1 {
|
|
|
3166
3174
|
* @method
|
|
3167
3175
|
* @name bingx#cancelOrder
|
|
3168
3176
|
* @description cancels an open order
|
|
3169
|
-
* @see https://bingx-api.github.io/docs/#/spot/trade-api.html#Cancel%
|
|
3170
|
-
* @see https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Cancel%
|
|
3177
|
+
* @see https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Cancel%20Order
|
|
3178
|
+
* @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Cancel%20Order
|
|
3179
|
+
* @see https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Cancel%20an%20Order
|
|
3171
3180
|
* @param {string} id order id
|
|
3172
3181
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
3173
3182
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3174
3183
|
* @param {string} [params.clientOrderId] a unique id for the order
|
|
3175
|
-
* @returns {object}
|
|
3184
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
3176
3185
|
*/
|
|
3177
3186
|
if (symbol === undefined) {
|
|
3178
3187
|
throw new errors.ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
|
|
@@ -3191,12 +3200,20 @@ class bingx extends bingx$1 {
|
|
|
3191
3200
|
request['orderId'] = id;
|
|
3192
3201
|
}
|
|
3193
3202
|
let response = undefined;
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3203
|
+
let type = undefined;
|
|
3204
|
+
let subType = undefined;
|
|
3205
|
+
[type, params] = this.handleMarketTypeAndParams('cancelOrder', market, params);
|
|
3206
|
+
[subType, params] = this.handleSubTypeAndParams('cancelOrder', market, params);
|
|
3207
|
+
if (type === 'spot') {
|
|
3208
|
+
response = await this.spotV1PrivatePostTradeCancel(this.extend(request, params));
|
|
3197
3209
|
}
|
|
3198
3210
|
else {
|
|
3199
|
-
|
|
3211
|
+
if (subType === 'inverse') {
|
|
3212
|
+
response = await this.cswapV1PrivateDeleteTradeCancelOrder(this.extend(request, params));
|
|
3213
|
+
}
|
|
3214
|
+
else {
|
|
3215
|
+
response = await this.swapV2PrivateDeleteTradeOrder(this.extend(request, params));
|
|
3216
|
+
}
|
|
3200
3217
|
}
|
|
3201
3218
|
//
|
|
3202
3219
|
// spot
|
|
@@ -3217,7 +3234,59 @@ class bingx extends bingx$1 {
|
|
|
3217
3234
|
// }
|
|
3218
3235
|
// }
|
|
3219
3236
|
//
|
|
3220
|
-
// swap
|
|
3237
|
+
// inverse swap
|
|
3238
|
+
//
|
|
3239
|
+
// {
|
|
3240
|
+
// "code": 0,
|
|
3241
|
+
// "msg": "",
|
|
3242
|
+
// "data": {
|
|
3243
|
+
// "order": {
|
|
3244
|
+
// "symbol": "SOL-USD",
|
|
3245
|
+
// "orderId": "1816002957423951872",
|
|
3246
|
+
// "side": "BUY",
|
|
3247
|
+
// "positionSide": "Long",
|
|
3248
|
+
// "type": "Pending",
|
|
3249
|
+
// "quantity": 0,
|
|
3250
|
+
// "origQty": "0",
|
|
3251
|
+
// "price": "150",
|
|
3252
|
+
// "executedQty": "0",
|
|
3253
|
+
// "avgPrice": "0",
|
|
3254
|
+
// "cumQuote": "0",
|
|
3255
|
+
// "stopPrice": "",
|
|
3256
|
+
// "profit": "0.0000",
|
|
3257
|
+
// "commission": "0.000000",
|
|
3258
|
+
// "status": "CANCELLED",
|
|
3259
|
+
// "time": 1721803819410,
|
|
3260
|
+
// "updateTime": 1721803819427,
|
|
3261
|
+
// "clientOrderId": "",
|
|
3262
|
+
// "leverage": "",
|
|
3263
|
+
// "takeProfit": {
|
|
3264
|
+
// "type": "",
|
|
3265
|
+
// "quantity": 0,
|
|
3266
|
+
// "stopPrice": 0,
|
|
3267
|
+
// "price": 0,
|
|
3268
|
+
// "workingType": "",
|
|
3269
|
+
// "stopGuaranteed": ""
|
|
3270
|
+
// },
|
|
3271
|
+
// "stopLoss": {
|
|
3272
|
+
// "type": "",
|
|
3273
|
+
// "quantity": 0,
|
|
3274
|
+
// "stopPrice": 0,
|
|
3275
|
+
// "price": 0,
|
|
3276
|
+
// "workingType": "",
|
|
3277
|
+
// "stopGuaranteed": ""
|
|
3278
|
+
// },
|
|
3279
|
+
// "advanceAttr": 0,
|
|
3280
|
+
// "positionID": 0,
|
|
3281
|
+
// "takeProfitEntrustPrice": 0,
|
|
3282
|
+
// "stopLossEntrustPrice": 0,
|
|
3283
|
+
// "orderType": "",
|
|
3284
|
+
// "workingType": ""
|
|
3285
|
+
// }
|
|
3286
|
+
// }
|
|
3287
|
+
// }
|
|
3288
|
+
//
|
|
3289
|
+
// linear swap
|
|
3221
3290
|
//
|
|
3222
3291
|
// {
|
|
3223
3292
|
// "code": 0,
|
|
@@ -3244,9 +3313,9 @@ class bingx extends bingx$1 {
|
|
|
3244
3313
|
// }
|
|
3245
3314
|
// }
|
|
3246
3315
|
//
|
|
3247
|
-
const data = this.
|
|
3248
|
-
const
|
|
3249
|
-
return this.parseOrder(
|
|
3316
|
+
const data = this.safeDict(response, 'data', {});
|
|
3317
|
+
const order = this.safeDict(data, 'order', data);
|
|
3318
|
+
return this.parseOrder(order, market);
|
|
3250
3319
|
}
|
|
3251
3320
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
3252
3321
|
/**
|
|
@@ -3726,9 +3795,10 @@ class bingx extends bingx$1 {
|
|
|
3726
3795
|
/**
|
|
3727
3796
|
* @method
|
|
3728
3797
|
* @name bingx#fetchOpenOrders
|
|
3729
|
-
* @see https://bingx-api.github.io/docs/#/spot/trade-api.html#Query%20Open%20Orders
|
|
3730
|
-
* @see https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Query%20all%20current%20pending%20orders
|
|
3731
3798
|
* @description fetch all unfilled currently open orders
|
|
3799
|
+
* @see https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Current%20Open%20Orders
|
|
3800
|
+
* @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Current%20All%20Open%20Orders
|
|
3801
|
+
* @see https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20all%20current%20pending%20orders
|
|
3732
3802
|
* @param {string} symbol unified market symbol
|
|
3733
3803
|
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
3734
3804
|
* @param {int} [limit] the maximum number of open order structures to retrieve
|
|
@@ -3742,13 +3812,21 @@ class bingx extends bingx$1 {
|
|
|
3742
3812
|
market = this.market(symbol);
|
|
3743
3813
|
request['symbol'] = market['id'];
|
|
3744
3814
|
}
|
|
3815
|
+
let type = undefined;
|
|
3816
|
+
let subType = undefined;
|
|
3745
3817
|
let response = undefined;
|
|
3746
|
-
|
|
3747
|
-
|
|
3748
|
-
|
|
3818
|
+
[type, params] = this.handleMarketTypeAndParams('fetchOpenOrders', market, params);
|
|
3819
|
+
[subType, params] = this.handleSubTypeAndParams('fetchOpenOrders', market, params);
|
|
3820
|
+
if (type === 'spot') {
|
|
3821
|
+
response = await this.spotV1PrivateGetTradeOpenOrders(this.extend(request, params));
|
|
3749
3822
|
}
|
|
3750
3823
|
else {
|
|
3751
|
-
|
|
3824
|
+
if (subType === 'inverse') {
|
|
3825
|
+
response = await this.cswapV1PrivateGetTradeOpenOrders(this.extend(request, params));
|
|
3826
|
+
}
|
|
3827
|
+
else {
|
|
3828
|
+
response = await this.swapV2PrivateGetTradeOpenOrders(this.extend(request, params));
|
|
3829
|
+
}
|
|
3752
3830
|
}
|
|
3753
3831
|
//
|
|
3754
3832
|
// spot
|
|
@@ -3776,7 +3854,61 @@ class bingx extends bingx$1 {
|
|
|
3776
3854
|
// }
|
|
3777
3855
|
// }
|
|
3778
3856
|
//
|
|
3779
|
-
// swap
|
|
3857
|
+
// inverse swap
|
|
3858
|
+
//
|
|
3859
|
+
// {
|
|
3860
|
+
// "code": 0,
|
|
3861
|
+
// "msg": "",
|
|
3862
|
+
// "data": {
|
|
3863
|
+
// "orders": [
|
|
3864
|
+
// {
|
|
3865
|
+
// "symbol": "SOL-USD",
|
|
3866
|
+
// "orderId": "1816013900044320768",
|
|
3867
|
+
// "side": "BUY",
|
|
3868
|
+
// "positionSide": "Long",
|
|
3869
|
+
// "type": "LIMIT",
|
|
3870
|
+
// "quantity": 1,
|
|
3871
|
+
// "origQty": "",
|
|
3872
|
+
// "price": "150",
|
|
3873
|
+
// "executedQty": "0",
|
|
3874
|
+
// "avgPrice": "0.000",
|
|
3875
|
+
// "cumQuote": "",
|
|
3876
|
+
// "stopPrice": "",
|
|
3877
|
+
// "profit": "0.0000",
|
|
3878
|
+
// "commission": "0.0000",
|
|
3879
|
+
// "status": "Pending",
|
|
3880
|
+
// "time": 1721806428334,
|
|
3881
|
+
// "updateTime": 1721806428352,
|
|
3882
|
+
// "clientOrderId": "",
|
|
3883
|
+
// "leverage": "",
|
|
3884
|
+
// "takeProfit": {
|
|
3885
|
+
// "type": "TAKE_PROFIT",
|
|
3886
|
+
// "quantity": 0,
|
|
3887
|
+
// "stopPrice": 0,
|
|
3888
|
+
// "price": 0,
|
|
3889
|
+
// "workingType": "MARK_PRICE",
|
|
3890
|
+
// "stopGuaranteed": ""
|
|
3891
|
+
// },
|
|
3892
|
+
// "stopLoss": {
|
|
3893
|
+
// "type": "STOP",
|
|
3894
|
+
// "quantity": 0,
|
|
3895
|
+
// "stopPrice": 0,
|
|
3896
|
+
// "price": 0,
|
|
3897
|
+
// "workingType": "MARK_PRICE",
|
|
3898
|
+
// "stopGuaranteed": ""
|
|
3899
|
+
// },
|
|
3900
|
+
// "advanceAttr": 0,
|
|
3901
|
+
// "positionID": 0,
|
|
3902
|
+
// "takeProfitEntrustPrice": 0,
|
|
3903
|
+
// "stopLossEntrustPrice": 0,
|
|
3904
|
+
// "orderType": "",
|
|
3905
|
+
// "workingType": "MARK_PRICE"
|
|
3906
|
+
// }
|
|
3907
|
+
// ]
|
|
3908
|
+
// }
|
|
3909
|
+
// }
|
|
3910
|
+
//
|
|
3911
|
+
// linear swap
|
|
3780
3912
|
//
|
|
3781
3913
|
// {
|
|
3782
3914
|
// "code": 0,
|
package/dist/cjs/src/bithumb.js
CHANGED
|
@@ -203,17 +203,57 @@ class bithumb extends bithumb$1 {
|
|
|
203
203
|
* @returns {object[]} an array of objects representing market data
|
|
204
204
|
*/
|
|
205
205
|
const result = [];
|
|
206
|
-
const quoteCurrencies = this.
|
|
206
|
+
const quoteCurrencies = this.safeDict(this.options, 'quoteCurrencies', {});
|
|
207
207
|
const quotes = Object.keys(quoteCurrencies);
|
|
208
|
+
const promises = [];
|
|
208
209
|
for (let i = 0; i < quotes.length; i++) {
|
|
209
|
-
const quote = quotes[i];
|
|
210
|
-
const quoteId = quote;
|
|
211
|
-
const extension = this.safeValue(quoteCurrencies, quote, {});
|
|
212
210
|
const request = {
|
|
213
|
-
'quoteId':
|
|
211
|
+
'quoteId': quotes[i],
|
|
214
212
|
};
|
|
215
|
-
|
|
216
|
-
|
|
213
|
+
promises.push(this.publicGetTickerALLQuoteId(this.extend(request, params)));
|
|
214
|
+
//
|
|
215
|
+
// {
|
|
216
|
+
// "status": "0000",
|
|
217
|
+
// "data": {
|
|
218
|
+
// "ETH": {
|
|
219
|
+
// "opening_price": "0.05153399",
|
|
220
|
+
// "closing_price": "0.05145144",
|
|
221
|
+
// "min_price": "0.05145144",
|
|
222
|
+
// "max_price": "0.05160781",
|
|
223
|
+
// "units_traded": "6.541124172077830855",
|
|
224
|
+
// "acc_trade_value": "0.33705472498492329997697755",
|
|
225
|
+
// "prev_closing_price": "0.0515943",
|
|
226
|
+
// "units_traded_24H": "43.368879902677400513",
|
|
227
|
+
// "acc_trade_value_24H": "2.24165339555398079994373342",
|
|
228
|
+
// "fluctate_24H": "-0.00018203",
|
|
229
|
+
// "fluctate_rate_24H": "-0.35"
|
|
230
|
+
// },
|
|
231
|
+
// "XRP": {
|
|
232
|
+
// "opening_price": "0.00000918",
|
|
233
|
+
// "closing_price": "0.0000092",
|
|
234
|
+
// "min_price": "0.00000918",
|
|
235
|
+
// "max_price": "0.0000092",
|
|
236
|
+
// "units_traded": "6516.949363",
|
|
237
|
+
// "acc_trade_value": "0.0598792533602796",
|
|
238
|
+
// "prev_closing_price": "0.00000916",
|
|
239
|
+
// "units_traded_24H": "229161.50354738",
|
|
240
|
+
// "acc_trade_value_24H": "2.0446589371637117",
|
|
241
|
+
// "fluctate_24H": "0.00000049",
|
|
242
|
+
// "fluctate_rate_24H": "5.63"
|
|
243
|
+
// },
|
|
244
|
+
// ...
|
|
245
|
+
// "date": "1721675913145"
|
|
246
|
+
// }
|
|
247
|
+
// }
|
|
248
|
+
//
|
|
249
|
+
}
|
|
250
|
+
const results = await Promise.all(promises);
|
|
251
|
+
for (let i = 0; i < quotes.length; i++) {
|
|
252
|
+
const quote = quotes[i];
|
|
253
|
+
const quoteId = quote;
|
|
254
|
+
const response = results[i];
|
|
255
|
+
const data = this.safeDict(response, 'data');
|
|
256
|
+
const extension = this.safeDict(quoteCurrencies, quote, {});
|
|
217
257
|
const currencyIds = Object.keys(data);
|
|
218
258
|
for (let j = 0; j < currencyIds.length; j++) {
|
|
219
259
|
const currencyId = currencyIds[j];
|
|
@@ -282,7 +322,7 @@ class bithumb extends bithumb$1 {
|
|
|
282
322
|
}
|
|
283
323
|
parseBalance(response) {
|
|
284
324
|
const result = { 'info': response };
|
|
285
|
-
const balances = this.
|
|
325
|
+
const balances = this.safeDict(response, 'data');
|
|
286
326
|
const codes = Object.keys(this.currencies);
|
|
287
327
|
for (let i = 0; i < codes.length; i++) {
|
|
288
328
|
const code = codes[i];
|
|
@@ -353,7 +393,7 @@ class bithumb extends bithumb$1 {
|
|
|
353
393
|
// }
|
|
354
394
|
// }
|
|
355
395
|
//
|
|
356
|
-
const data = this.
|
|
396
|
+
const data = this.safeDict(response, 'data', {});
|
|
357
397
|
const timestamp = this.safeInteger(data, 'timestamp');
|
|
358
398
|
return this.parseOrderBook(data, symbol, timestamp, 'bids', 'asks', 'price', 'quantity');
|
|
359
399
|
}
|
|
@@ -417,15 +457,19 @@ class bithumb extends bithumb$1 {
|
|
|
417
457
|
*/
|
|
418
458
|
await this.loadMarkets();
|
|
419
459
|
const result = {};
|
|
420
|
-
const quoteCurrencies = this.
|
|
460
|
+
const quoteCurrencies = this.safeDict(this.options, 'quoteCurrencies', {});
|
|
421
461
|
const quotes = Object.keys(quoteCurrencies);
|
|
462
|
+
const promises = [];
|
|
422
463
|
for (let i = 0; i < quotes.length; i++) {
|
|
423
|
-
const quote = quotes[i];
|
|
424
|
-
const quoteId = quote;
|
|
425
464
|
const request = {
|
|
426
|
-
'quoteId':
|
|
465
|
+
'quoteId': quotes[i],
|
|
427
466
|
};
|
|
428
|
-
|
|
467
|
+
promises.push(this.publicGetTickerALLQuoteId(this.extend(request, params)));
|
|
468
|
+
}
|
|
469
|
+
const responses = await Promise.all(promises);
|
|
470
|
+
for (let i = 0; i < quotes.length; i++) {
|
|
471
|
+
const quote = quotes[i];
|
|
472
|
+
const response = responses[i];
|
|
429
473
|
//
|
|
430
474
|
// {
|
|
431
475
|
// "status":"0000",
|
|
@@ -447,7 +491,7 @@ class bithumb extends bithumb$1 {
|
|
|
447
491
|
// }
|
|
448
492
|
// }
|
|
449
493
|
//
|
|
450
|
-
const data = this.
|
|
494
|
+
const data = this.safeDict(response, 'data', {});
|
|
451
495
|
const timestamp = this.safeInteger(data, 'date');
|
|
452
496
|
const tickers = this.omit(data, 'date');
|
|
453
497
|
const currencyIds = Object.keys(tickers);
|
|
@@ -832,7 +876,7 @@ class bithumb extends bithumb$1 {
|
|
|
832
876
|
// }
|
|
833
877
|
//
|
|
834
878
|
const timestamp = this.safeIntegerProduct(order, 'order_date', 0.001);
|
|
835
|
-
const sideProperty = this.
|
|
879
|
+
const sideProperty = this.safeString2(order, 'type', 'side');
|
|
836
880
|
const side = (sideProperty === 'bid') ? 'buy' : 'sell';
|
|
837
881
|
const status = this.parseOrderStatus(this.safeString(order, 'order_status'));
|
|
838
882
|
const price = this.safeString2(order, 'order_price', 'price');
|
|
@@ -863,7 +907,7 @@ class bithumb extends bithumb$1 {
|
|
|
863
907
|
symbol = market['symbol'];
|
|
864
908
|
}
|
|
865
909
|
const id = this.safeString(order, 'order_id');
|
|
866
|
-
const rawTrades = this.
|
|
910
|
+
const rawTrades = this.safeList(order, 'contract', []);
|
|
867
911
|
return this.safeOrder({
|
|
868
912
|
'info': order,
|
|
869
913
|
'id': id,
|
package/dist/cjs/src/pro/okx.js
CHANGED
|
@@ -894,7 +894,7 @@ class okx extends okx$1 {
|
|
|
894
894
|
this.handleDelta(bookside, deltas[i]);
|
|
895
895
|
}
|
|
896
896
|
}
|
|
897
|
-
handleOrderBookMessage(client, message, orderbook, messageHash) {
|
|
897
|
+
handleOrderBookMessage(client, message, orderbook, messageHash, market = undefined) {
|
|
898
898
|
//
|
|
899
899
|
// {
|
|
900
900
|
// "asks": [
|
|
@@ -909,6 +909,9 @@ class okx extends okx$1 {
|
|
|
909
909
|
// ],
|
|
910
910
|
// "instId": "BTC-USDT",
|
|
911
911
|
// "ts": "1626537446491"
|
|
912
|
+
// "checksum": -855196043,
|
|
913
|
+
// "prevSeqId": 123456,
|
|
914
|
+
// "seqId": 123457
|
|
912
915
|
// }
|
|
913
916
|
//
|
|
914
917
|
const asks = this.safeValue(message, 'asks', []);
|
|
@@ -918,9 +921,12 @@ class okx extends okx$1 {
|
|
|
918
921
|
this.handleDeltas(storedAsks, asks);
|
|
919
922
|
this.handleDeltas(storedBids, bids);
|
|
920
923
|
const marketId = this.safeString(message, 'instId');
|
|
921
|
-
const symbol = this.safeSymbol(marketId);
|
|
924
|
+
const symbol = this.safeSymbol(marketId, market);
|
|
922
925
|
const checksum = this.handleOption('watchOrderBook', 'checksum', true);
|
|
926
|
+
const seqId = this.safeInteger(message, 'seqId');
|
|
923
927
|
if (checksum) {
|
|
928
|
+
const prevSeqId = this.safeInteger(message, 'prevSeqId');
|
|
929
|
+
const nonce = orderbook['nonce'];
|
|
924
930
|
const asksLength = storedAsks.length;
|
|
925
931
|
const bidsLength = storedBids.length;
|
|
926
932
|
const payloadArray = [];
|
|
@@ -937,14 +943,21 @@ class okx extends okx$1 {
|
|
|
937
943
|
const payload = payloadArray.join(':');
|
|
938
944
|
const responseChecksum = this.safeInteger(message, 'checksum');
|
|
939
945
|
const localChecksum = this.crc32(payload, true);
|
|
946
|
+
let error = undefined;
|
|
947
|
+
if (prevSeqId !== -1 && nonce !== prevSeqId) {
|
|
948
|
+
error = new errors.InvalidNonce(this.id + ' watchOrderBook received invalid nonce');
|
|
949
|
+
}
|
|
940
950
|
if (responseChecksum !== localChecksum) {
|
|
941
|
-
|
|
951
|
+
error = new errors.ChecksumError(this.id + ' ' + this.orderbookChecksumMessage(symbol));
|
|
952
|
+
}
|
|
953
|
+
if (error !== undefined) {
|
|
942
954
|
delete client.subscriptions[messageHash];
|
|
943
955
|
delete this.orderbooks[symbol];
|
|
944
956
|
client.reject(error, messageHash);
|
|
945
957
|
}
|
|
946
958
|
}
|
|
947
959
|
const timestamp = this.safeInteger(message, 'ts');
|
|
960
|
+
orderbook['nonce'] = seqId;
|
|
948
961
|
orderbook['timestamp'] = timestamp;
|
|
949
962
|
orderbook['datetime'] = this.iso8601(timestamp);
|
|
950
963
|
return orderbook;
|
|
@@ -1066,7 +1079,7 @@ class okx extends okx$1 {
|
|
|
1066
1079
|
const orderbook = this.orderbooks[symbol];
|
|
1067
1080
|
for (let i = 0; i < data.length; i++) {
|
|
1068
1081
|
const update = data[i];
|
|
1069
|
-
this.handleOrderBookMessage(client, update, orderbook, messageHash);
|
|
1082
|
+
this.handleOrderBookMessage(client, update, orderbook, messageHash, market);
|
|
1070
1083
|
client.resolve(orderbook, messageHash);
|
|
1071
1084
|
}
|
|
1072
1085
|
}
|
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 type { Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, DepositAddressResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, TransferEntries, LeverageTiers } from './src/base/types.js';
|
|
6
6
|
import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
|
|
7
|
-
declare const version = "4.3.
|
|
7
|
+
declare const version = "4.3.66";
|
|
8
8
|
import ace from './src/ace.js';
|
|
9
9
|
import alpaca from './src/alpaca.js';
|
|
10
10
|
import ascendex from './src/ascendex.js';
|
package/js/ccxt.js
CHANGED
|
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
|
|
|
38
38
|
import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
|
|
39
39
|
//-----------------------------------------------------------------------------
|
|
40
40
|
// this is updated by vss.js when building
|
|
41
|
-
const version = '4.3.
|
|
41
|
+
const version = '4.3.67';
|
|
42
42
|
Exchange.ccxtVersion = version;
|
|
43
43
|
//-----------------------------------------------------------------------------
|
|
44
44
|
import ace from './src/ace.js';
|
|
@@ -84,13 +84,20 @@ interface Exchange {
|
|
|
84
84
|
cswapV1PrivateGetTradeLeverage(params?: {}): Promise<implicitReturnType>;
|
|
85
85
|
cswapV1PrivateGetTradeForceOrders(params?: {}): Promise<implicitReturnType>;
|
|
86
86
|
cswapV1PrivateGetTradeAllFillOrders(params?: {}): Promise<implicitReturnType>;
|
|
87
|
+
cswapV1PrivateGetTradeOpenOrders(params?: {}): Promise<implicitReturnType>;
|
|
88
|
+
cswapV1PrivateGetTradeOrderDetail(params?: {}): Promise<implicitReturnType>;
|
|
89
|
+
cswapV1PrivateGetTradeOrderHistory(params?: {}): Promise<implicitReturnType>;
|
|
90
|
+
cswapV1PrivateGetTradeMarginType(params?: {}): Promise<implicitReturnType>;
|
|
87
91
|
cswapV1PrivateGetUserCommissionRate(params?: {}): Promise<implicitReturnType>;
|
|
88
92
|
cswapV1PrivateGetUserPositions(params?: {}): Promise<implicitReturnType>;
|
|
89
93
|
cswapV1PrivateGetUserBalance(params?: {}): Promise<implicitReturnType>;
|
|
90
94
|
cswapV1PrivatePostTradeOrder(params?: {}): Promise<implicitReturnType>;
|
|
91
95
|
cswapV1PrivatePostTradeLeverage(params?: {}): Promise<implicitReturnType>;
|
|
92
96
|
cswapV1PrivatePostTradeCloseAllPositions(params?: {}): Promise<implicitReturnType>;
|
|
97
|
+
cswapV1PrivatePostTradeMarginType(params?: {}): Promise<implicitReturnType>;
|
|
98
|
+
cswapV1PrivatePostTradePositionMargin(params?: {}): Promise<implicitReturnType>;
|
|
93
99
|
cswapV1PrivateDeleteTradeAllOpenOrders(params?: {}): Promise<implicitReturnType>;
|
|
100
|
+
cswapV1PrivateDeleteTradeCancelOrder(params?: {}): Promise<implicitReturnType>;
|
|
94
101
|
contractV1PrivateGetAllPosition(params?: {}): Promise<implicitReturnType>;
|
|
95
102
|
contractV1PrivateGetAllOrders(params?: {}): Promise<implicitReturnType>;
|
|
96
103
|
contractV1PrivateGetBalance(params?: {}): Promise<implicitReturnType>;
|
|
@@ -7,6 +7,7 @@ import type { Market, Trade, Ticker, OHLCV, OHLCVC, Order, OrderBook, Balance, B
|
|
|
7
7
|
export type { Market, Trade, Fee, Ticker, OHLCV, OHLCVC, Order, OrderBook, Balance, Balances, Dictionary, Transaction, DepositAddressResponse, Currency, MinMax, IndexType, Int, Bool, OrderType, OrderSide, Position, LedgerEntry, BorrowInterest, OpenInterest, LeverageTier, TransferEntry, CrossBorrowRate, FundingRateHistory, Liquidation, FundingHistory, OrderRequest, MarginMode, Tickers, Greeks, Option, OptionChain, Str, Num, MarketInterface, CurrencyInterface, BalanceAccount, MarginModes, MarketType, Leverage, Leverages, LastPrice, LastPrices, Account, Strings, Conversion } from './types.js';
|
|
8
8
|
import { ArrayCache, ArrayCacheByTimestamp } from './ws/Cache.js';
|
|
9
9
|
import { OrderBook as Ob } from './ws/OrderBook.js';
|
|
10
|
+
import Client from './ws/Client.js';
|
|
10
11
|
/**
|
|
11
12
|
* @class Exchange
|
|
12
13
|
*/
|
|
@@ -648,7 +649,7 @@ export default class Exchange {
|
|
|
648
649
|
indexedOrderBook(snapshot?: {}, depth?: number): IndexedOrderBook;
|
|
649
650
|
countedOrderBook(snapshot?: {}, depth?: number): CountedOrderBook;
|
|
650
651
|
handleMessage(client: any, message: any): void;
|
|
651
|
-
ping(client:
|
|
652
|
+
ping(client: Client): any;
|
|
652
653
|
client(url: string): WsClient;
|
|
653
654
|
watchMultiple(url: string, messageHashes: string[], message?: any, subscribeHashes?: any, subscription?: any): import("./ws/Future.js").FutureInterface;
|
|
654
655
|
watch(url: string, messageHash: string, message?: any, subscribeHash?: any, subscription?: any): any;
|
|
@@ -658,7 +659,7 @@ export default class Exchange {
|
|
|
658
659
|
close(): Promise<void>;
|
|
659
660
|
loadOrderBook(client: any, messageHash: string, symbol: string, limit?: Int, params?: {}): Promise<void>;
|
|
660
661
|
convertToBigInt(value: string): bigint;
|
|
661
|
-
stringToCharsArray(value:
|
|
662
|
+
stringToCharsArray(value: string): string[];
|
|
662
663
|
valueIsDefined(value: any): boolean;
|
|
663
664
|
arraySlice(array: any, first: any, second?: any): any;
|
|
664
665
|
getProperty(obj: any, property: any, defaultValue?: any): any;
|
|
@@ -668,9 +669,9 @@ export default class Exchange {
|
|
|
668
669
|
ethAbiEncode(types: any, args: any): Uint8Array;
|
|
669
670
|
ethEncodeStructuredData(domain: any, messageTypes: any, messageData: any): Uint8Array;
|
|
670
671
|
intToBase16(elem: any): string;
|
|
671
|
-
extendExchangeOptions(newOptions:
|
|
672
|
+
extendExchangeOptions(newOptions: Dict): void;
|
|
672
673
|
createSafeDictionary(): {};
|
|
673
|
-
randomBytes(length:
|
|
674
|
+
randomBytes(length: number): string;
|
|
674
675
|
safeBoolN(dictionaryOrList: any, keys: IndexType[], defaultValue?: boolean): boolean | undefined;
|
|
675
676
|
safeBool2(dictionary: any, key1: IndexType, key2: IndexType, defaultValue?: boolean): boolean | undefined;
|
|
676
677
|
safeBool(dictionary: any, key: IndexType, defaultValue?: boolean): boolean | undefined;
|
|
@@ -722,7 +723,7 @@ export default class Exchange {
|
|
|
722
723
|
parseTrade(trade: Dict, market?: Market): Trade;
|
|
723
724
|
parseTransaction(transaction: Dict, currency?: Currency): Transaction;
|
|
724
725
|
parseTransfer(transfer: Dict, currency?: Currency): TransferEntry;
|
|
725
|
-
parseAccount(account:
|
|
726
|
+
parseAccount(account: Dict): Account;
|
|
726
727
|
parseLedgerEntry(item: Dict, currency?: Currency): object;
|
|
727
728
|
parseOrder(order: Dict, market?: Market): Order;
|
|
728
729
|
fetchCrossBorrowRates(params?: {}): Promise<CrossBorrowRates>;
|
|
@@ -796,11 +797,11 @@ export default class Exchange {
|
|
|
796
797
|
info: Dictionary<any>;
|
|
797
798
|
};
|
|
798
799
|
safeCurrencyStructure(currency: object): CurrencyInterface;
|
|
799
|
-
safeMarketStructure(market?:
|
|
800
|
+
safeMarketStructure(market?: Dict): MarketInterface;
|
|
800
801
|
setMarkets(markets: any, currencies?: any): Dictionary<any>;
|
|
801
802
|
getDescribeForExtendedWsExchange(currentRestInstance: any, parentRestInstance: any, wsBaseDescribe: Dictionary<any>): any;
|
|
802
|
-
safeBalance(balance:
|
|
803
|
-
safeOrder(order:
|
|
803
|
+
safeBalance(balance: Dict): Balances;
|
|
804
|
+
safeOrder(order: Dict, market?: Market): Order;
|
|
804
805
|
parseOrders(orders: object, market?: Market, since?: Int, limit?: Int, params?: {}): Order[];
|
|
805
806
|
calculateFee(symbol: string, type: string, side: string, amount: number, price: number, takerOrMaker?: string, params?: {}): {
|
|
806
807
|
type: string;
|
|
@@ -808,12 +809,12 @@ export default class Exchange {
|
|
|
808
809
|
rate: number;
|
|
809
810
|
cost: number;
|
|
810
811
|
};
|
|
811
|
-
safeLiquidation(liquidation:
|
|
812
|
-
safeTrade(trade:
|
|
812
|
+
safeLiquidation(liquidation: Dict, market?: Market): Liquidation;
|
|
813
|
+
safeTrade(trade: Dict, market?: Market): Trade;
|
|
813
814
|
findNearestCeiling(arr: number[], providedValue: number): number;
|
|
814
815
|
invertFlatStringDictionary(dict: any): {};
|
|
815
816
|
reduceFeesByCurrency(fees: any): any[];
|
|
816
|
-
safeTicker(ticker:
|
|
817
|
+
safeTicker(ticker: Dict, market?: Market): Ticker;
|
|
817
818
|
fetchBorrowRate(code: string, amount: any, params?: {}): Promise<{}>;
|
|
818
819
|
repayCrossMargin(code: string, amount: any, params?: {}): Promise<{}>;
|
|
819
820
|
repayIsolatedMargin(symbol: string, code: string, amount: any, params?: {}): Promise<{}>;
|
|
@@ -847,7 +848,7 @@ export default class Exchange {
|
|
|
847
848
|
parseOHLCVs(ohlcvs: object[], market?: any, timeframe?: string, since?: Int, limit?: Int): OHLCV[];
|
|
848
849
|
parseLeverageTiers(response: any, symbols?: string[], marketIdKey?: any): LeverageTiers;
|
|
849
850
|
loadTradingLimits(symbols?: Strings, reload?: boolean, params?: {}): Promise<Dictionary<any>>;
|
|
850
|
-
safePosition(position:
|
|
851
|
+
safePosition(position: Dict): Position;
|
|
851
852
|
parsePositions(positions: any[], symbols?: string[], params?: {}): Position[];
|
|
852
853
|
parseAccounts(accounts: any[], params?: {}): Account[];
|
|
853
854
|
parseTrades(trades: any[], market?: Market, since?: Int, limit?: Int, params?: {}): Trade[];
|
|
@@ -1092,7 +1093,7 @@ export default class Exchange {
|
|
|
1092
1093
|
sortCursorPaginatedResult(result: any): any;
|
|
1093
1094
|
removeRepeatedElementsFromArray(input: any): any;
|
|
1094
1095
|
handleUntilOption(key: string, request: any, params: any, multiplier?: number): any[];
|
|
1095
|
-
safeOpenInterest(interest:
|
|
1096
|
+
safeOpenInterest(interest: Dict, market?: Market): OpenInterest;
|
|
1096
1097
|
parseLiquidation(liquidation: any, market?: Market): Liquidation;
|
|
1097
1098
|
parseLiquidations(liquidations: Dict[], market?: Market, since?: Int, limit?: Int): Liquidation[];
|
|
1098
1099
|
parseGreeks(greeks: Dict, market?: Market): Greeks;
|
package/js/src/base/Exchange.js
CHANGED
|
@@ -1165,7 +1165,7 @@ export default class Exchange {
|
|
|
1165
1165
|
return new CountedOrderBook(snapshot, depth);
|
|
1166
1166
|
}
|
|
1167
1167
|
handleMessage(client, message) { } // stub to override
|
|
1168
|
-
// ping (client) {} // stub to override
|
|
1168
|
+
// ping (client: Client) {} // stub to override
|
|
1169
1169
|
ping(client) {
|
|
1170
1170
|
return undefined;
|
|
1171
1171
|
}
|