ccxt 4.3.28 → 4.3.29
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 +30 -0
- package/dist/ccxt.browser.min.js.LICENSE.txt +12 -0
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/ws/OrderBookSide.js +4 -4
- package/dist/cjs/src/bingx.js +97 -83
- package/dist/cjs/src/bitmart.js +72 -0
- package/dist/cjs/src/kucoin.js +1 -0
- package/dist/cjs/src/pro/bitfinex.js +4 -4
- package/dist/cjs/src/pro/bitfinex2.js +2 -2
- package/dist/cjs/src/pro/bitmex.js +3 -3
- package/dist/cjs/src/pro/blockchaincom.js +2 -2
- package/dist/cjs/src/pro/cryptocom.js +4 -4
- package/dist/cjs/src/pro/deribit.js +9 -9
- package/dist/cjs/src/pro/idex.js +1 -1
- package/dist/cjs/src/pro/luno.js +4 -5
- package/dist/cjs/src/pro/mexc.js +2 -2
- package/dist/cjs/src/whitebit.js +1 -1
- 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/abstract/bitmart.d.ts +1 -0
- package/js/src/base/ws/Cache.d.ts +1 -1
- package/js/src/base/ws/OrderBookSide.d.ts +4 -5
- package/js/src/base/ws/OrderBookSide.js +4 -4
- package/js/src/bingx.js +97 -83
- package/js/src/bitmart.d.ts +2 -1
- package/js/src/bitmart.js +72 -0
- package/js/src/kucoin.js +1 -0
- package/js/src/pro/bitfinex.js +4 -4
- package/js/src/pro/bitfinex2.js +2 -2
- package/js/src/pro/bitmex.js +3 -3
- package/js/src/pro/blockchaincom.js +2 -2
- package/js/src/pro/cryptocom.js +4 -4
- package/js/src/pro/deribit.js +9 -9
- package/js/src/pro/idex.js +1 -1
- package/js/src/pro/luno.js +4 -5
- package/js/src/pro/mexc.js +2 -2
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/whitebit.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
Copyright (c) 2011, Yahoo! Inc. All rights reserved.
|
|
3
|
+
Code licensed under the BSD License:
|
|
4
|
+
http://developer.yahoo.com/yui/license.html
|
|
5
|
+
version: 2.9.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
9
|
+
|
|
10
|
+
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
11
|
+
|
|
12
|
+
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
package/dist/cjs/ccxt.js
CHANGED
|
@@ -185,7 +185,7 @@ var woofipro$1 = require('./src/pro/woofipro.js');
|
|
|
185
185
|
|
|
186
186
|
//-----------------------------------------------------------------------------
|
|
187
187
|
// this is updated by vss.js when building
|
|
188
|
-
const version = '4.3.
|
|
188
|
+
const version = '4.3.29';
|
|
189
189
|
Exchange["default"].ccxtVersion = version;
|
|
190
190
|
const exchanges = {
|
|
191
191
|
'ace': ace,
|
|
@@ -99,8 +99,8 @@ class OrderBookSide extends Array {
|
|
|
99
99
|
// or deletes price levels based on order counts (3rd value in a bidask delta)
|
|
100
100
|
// this class stores vector arrays of values indexed by price
|
|
101
101
|
class CountedOrderBookSide extends OrderBookSide {
|
|
102
|
-
store(price, size
|
|
103
|
-
|
|
102
|
+
store(price, size) {
|
|
103
|
+
throw new Error('CountedOrderBookSide.store() is not supported, use storeArray([price, size, count]) instead');
|
|
104
104
|
}
|
|
105
105
|
storeArray(delta) {
|
|
106
106
|
const price = delta[0];
|
|
@@ -164,8 +164,8 @@ class IndexedOrderBookSide extends Array {
|
|
|
164
164
|
this.storeArray(deltas[i].slice()); // slice is muy importante
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
store(price, size
|
|
168
|
-
|
|
167
|
+
store(price, size) {
|
|
168
|
+
throw new Error('IndexedOrderBook.store() is not supported, use storeArray([price, size, id]) instead');
|
|
169
169
|
}
|
|
170
170
|
storeArray(delta) {
|
|
171
171
|
const price = delta[0];
|
package/dist/cjs/src/bingx.js
CHANGED
|
@@ -18,8 +18,7 @@ class bingx extends bingx$1 {
|
|
|
18
18
|
'id': 'bingx',
|
|
19
19
|
'name': 'BingX',
|
|
20
20
|
'countries': ['US'],
|
|
21
|
-
|
|
22
|
-
'rateLimit': 1000,
|
|
21
|
+
'rateLimit': 100,
|
|
23
22
|
'version': 'v1',
|
|
24
23
|
'certified': true,
|
|
25
24
|
'pro': true,
|
|
@@ -132,44 +131,54 @@ class bingx extends bingx$1 {
|
|
|
132
131
|
'v1': {
|
|
133
132
|
'public': {
|
|
134
133
|
'get': {
|
|
135
|
-
'server/time':
|
|
136
|
-
'common/symbols':
|
|
137
|
-
'market/trades':
|
|
138
|
-
'market/depth':
|
|
139
|
-
'market/kline':
|
|
134
|
+
'server/time': 1,
|
|
135
|
+
'common/symbols': 1,
|
|
136
|
+
'market/trades': 1,
|
|
137
|
+
'market/depth': 1,
|
|
138
|
+
'market/kline': 1,
|
|
140
139
|
'ticker/24hr': 1,
|
|
140
|
+
'ticker/price': 1,
|
|
141
|
+
'ticker/bookTicker': 1,
|
|
141
142
|
},
|
|
142
143
|
},
|
|
143
144
|
'private': {
|
|
144
145
|
'get': {
|
|
145
|
-
'trade/query':
|
|
146
|
-
'trade/openOrders':
|
|
147
|
-
'trade/historyOrders':
|
|
148
|
-
'trade/myTrades':
|
|
149
|
-
'user/commissionRate':
|
|
150
|
-
'account/balance':
|
|
146
|
+
'trade/query': 1,
|
|
147
|
+
'trade/openOrders': 1,
|
|
148
|
+
'trade/historyOrders': 1,
|
|
149
|
+
'trade/myTrades': 2,
|
|
150
|
+
'user/commissionRate': 5,
|
|
151
|
+
'account/balance': 2,
|
|
151
152
|
},
|
|
152
153
|
'post': {
|
|
153
|
-
'trade/order':
|
|
154
|
-
'trade/cancel':
|
|
155
|
-
'trade/batchOrders':
|
|
156
|
-
'trade/order/cancelReplace':
|
|
157
|
-
'trade/cancelOrders':
|
|
158
|
-
'trade/cancelOpenOrders':
|
|
159
|
-
'trade/cancelAllAfter':
|
|
154
|
+
'trade/order': 2,
|
|
155
|
+
'trade/cancel': 2,
|
|
156
|
+
'trade/batchOrders': 5,
|
|
157
|
+
'trade/order/cancelReplace': 5,
|
|
158
|
+
'trade/cancelOrders': 5,
|
|
159
|
+
'trade/cancelOpenOrders': 5,
|
|
160
|
+
'trade/cancelAllAfter': 5,
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
'v2': {
|
|
165
|
+
'public': {
|
|
166
|
+
'get': {
|
|
167
|
+
'market/depth': 1,
|
|
168
|
+
'market/kline': 1,
|
|
160
169
|
},
|
|
161
170
|
},
|
|
162
171
|
},
|
|
163
172
|
'v3': {
|
|
164
173
|
'private': {
|
|
165
174
|
'get': {
|
|
166
|
-
'get/asset/transfer':
|
|
167
|
-
'asset/transfer':
|
|
168
|
-
'capital/deposit/hisrec':
|
|
169
|
-
'capital/withdraw/history':
|
|
175
|
+
'get/asset/transfer': 1,
|
|
176
|
+
'asset/transfer': 1,
|
|
177
|
+
'capital/deposit/hisrec': 1,
|
|
178
|
+
'capital/withdraw/history': 1,
|
|
170
179
|
},
|
|
171
180
|
'post': {
|
|
172
|
-
'post/asset/transfer':
|
|
181
|
+
'post/asset/transfer': 5,
|
|
173
182
|
},
|
|
174
183
|
},
|
|
175
184
|
},
|
|
@@ -179,26 +188,27 @@ class bingx extends bingx$1 {
|
|
|
179
188
|
'public': {
|
|
180
189
|
'get': {
|
|
181
190
|
'ticker/price': 1,
|
|
191
|
+
'market/historicalTrades': 1,
|
|
182
192
|
},
|
|
183
193
|
},
|
|
184
194
|
'private': {
|
|
185
195
|
'get': {
|
|
186
|
-
'positionSide/dual':
|
|
196
|
+
'positionSide/dual': 5,
|
|
187
197
|
'market/markPriceKlines': 1,
|
|
188
|
-
'trade/batchCancelReplace':
|
|
189
|
-
'trade/fullOrder':
|
|
198
|
+
'trade/batchCancelReplace': 5,
|
|
199
|
+
'trade/fullOrder': 2,
|
|
190
200
|
},
|
|
191
201
|
'post': {
|
|
192
|
-
'trade/cancelReplace':
|
|
193
|
-
'positionSide/dual':
|
|
194
|
-
'trade/closePosition':
|
|
202
|
+
'trade/cancelReplace': 2,
|
|
203
|
+
'positionSide/dual': 5,
|
|
204
|
+
'trade/closePosition': 2,
|
|
195
205
|
},
|
|
196
206
|
},
|
|
197
207
|
},
|
|
198
208
|
'v2': {
|
|
199
209
|
'public': {
|
|
200
210
|
'get': {
|
|
201
|
-
'server/time':
|
|
211
|
+
'server/time': 1,
|
|
202
212
|
'quote/contracts': 1,
|
|
203
213
|
'quote/price': 1,
|
|
204
214
|
'quote/depth': 1,
|
|
@@ -213,35 +223,35 @@ class bingx extends bingx$1 {
|
|
|
213
223
|
},
|
|
214
224
|
'private': {
|
|
215
225
|
'get': {
|
|
216
|
-
'user/balance':
|
|
217
|
-
'user/positions':
|
|
218
|
-
'user/income':
|
|
219
|
-
'trade/openOrders':
|
|
220
|
-
'trade/openOrder':
|
|
221
|
-
'trade/order':
|
|
222
|
-
'trade/marginType':
|
|
223
|
-
'trade/leverage':
|
|
224
|
-
'trade/forceOrders':
|
|
225
|
-
'trade/allOrders':
|
|
226
|
-
'trade/allFillOrders':
|
|
227
|
-
'user/income/export':
|
|
228
|
-
'user/commissionRate':
|
|
229
|
-
'quote/bookTicker':
|
|
226
|
+
'user/balance': 2,
|
|
227
|
+
'user/positions': 2,
|
|
228
|
+
'user/income': 2,
|
|
229
|
+
'trade/openOrders': 2,
|
|
230
|
+
'trade/openOrder': 2,
|
|
231
|
+
'trade/order': 2,
|
|
232
|
+
'trade/marginType': 5,
|
|
233
|
+
'trade/leverage': 2,
|
|
234
|
+
'trade/forceOrders': 1,
|
|
235
|
+
'trade/allOrders': 2,
|
|
236
|
+
'trade/allFillOrders': 2,
|
|
237
|
+
'user/income/export': 2,
|
|
238
|
+
'user/commissionRate': 2,
|
|
239
|
+
'quote/bookTicker': 1,
|
|
230
240
|
},
|
|
231
241
|
'post': {
|
|
232
|
-
'trade/order':
|
|
233
|
-
'trade/batchOrders':
|
|
234
|
-
'trade/closeAllPositions':
|
|
235
|
-
'trade/cancelAllAfter':
|
|
236
|
-
'trade/marginType':
|
|
237
|
-
'trade/leverage':
|
|
238
|
-
'trade/positionMargin':
|
|
239
|
-
'trade/order/test':
|
|
242
|
+
'trade/order': 2,
|
|
243
|
+
'trade/batchOrders': 2,
|
|
244
|
+
'trade/closeAllPositions': 2,
|
|
245
|
+
'trade/cancelAllAfter': 5,
|
|
246
|
+
'trade/marginType': 5,
|
|
247
|
+
'trade/leverage': 5,
|
|
248
|
+
'trade/positionMargin': 5,
|
|
249
|
+
'trade/order/test': 2,
|
|
240
250
|
},
|
|
241
251
|
'delete': {
|
|
242
|
-
'trade/order':
|
|
243
|
-
'trade/batchOrders':
|
|
244
|
-
'trade/allOpenOrders':
|
|
252
|
+
'trade/order': 2,
|
|
253
|
+
'trade/batchOrders': 2,
|
|
254
|
+
'trade/allOpenOrders': 2,
|
|
245
255
|
},
|
|
246
256
|
},
|
|
247
257
|
},
|
|
@@ -257,9 +267,9 @@ class bingx extends bingx$1 {
|
|
|
257
267
|
'v1': {
|
|
258
268
|
'private': {
|
|
259
269
|
'get': {
|
|
260
|
-
'allPosition':
|
|
261
|
-
'allOrders':
|
|
262
|
-
'balance':
|
|
270
|
+
'allPosition': 2,
|
|
271
|
+
'allOrders': 2,
|
|
272
|
+
'balance': 2,
|
|
263
273
|
},
|
|
264
274
|
},
|
|
265
275
|
},
|
|
@@ -268,18 +278,19 @@ class bingx extends bingx$1 {
|
|
|
268
278
|
'v1': {
|
|
269
279
|
'private': {
|
|
270
280
|
'get': {
|
|
271
|
-
'capital/config/getall':
|
|
272
|
-
'capital/deposit/address':
|
|
281
|
+
'capital/config/getall': 5,
|
|
282
|
+
'capital/deposit/address': 5,
|
|
273
283
|
'capital/innerTransfer/records': 1,
|
|
274
|
-
'capital/subAccount/deposit/address':
|
|
275
|
-
'capital/deposit/subHisrec':
|
|
284
|
+
'capital/subAccount/deposit/address': 5,
|
|
285
|
+
'capital/deposit/subHisrec': 2,
|
|
276
286
|
'capital/subAccount/innerTransfer/records': 1,
|
|
287
|
+
'capital/deposit/riskRecords': 5,
|
|
277
288
|
},
|
|
278
289
|
'post': {
|
|
279
|
-
'capital/withdraw/apply':
|
|
280
|
-
'capital/innerTransfer/apply':
|
|
281
|
-
'capital/subAccountInnerTransfer/apply':
|
|
282
|
-
'capital/deposit/createSubAddress':
|
|
290
|
+
'capital/withdraw/apply': 5,
|
|
291
|
+
'capital/innerTransfer/apply': 5,
|
|
292
|
+
'capital/subAccountInnerTransfer/apply': 2,
|
|
293
|
+
'capital/deposit/createSubAddress': 2,
|
|
283
294
|
},
|
|
284
295
|
},
|
|
285
296
|
},
|
|
@@ -288,15 +299,15 @@ class bingx extends bingx$1 {
|
|
|
288
299
|
'v1': {
|
|
289
300
|
'private': {
|
|
290
301
|
'get': {
|
|
291
|
-
'list':
|
|
292
|
-
'assets':
|
|
302
|
+
'list': 10,
|
|
303
|
+
'assets': 2,
|
|
293
304
|
},
|
|
294
305
|
'post': {
|
|
295
|
-
'create':
|
|
296
|
-
'apiKey/create':
|
|
297
|
-
'apiKey/edit':
|
|
298
|
-
'apiKey/del':
|
|
299
|
-
'updateStatus':
|
|
306
|
+
'create': 10,
|
|
307
|
+
'apiKey/create': 2,
|
|
308
|
+
'apiKey/edit': 2,
|
|
309
|
+
'apiKey/del': 2,
|
|
310
|
+
'updateStatus': 10,
|
|
300
311
|
},
|
|
301
312
|
},
|
|
302
313
|
},
|
|
@@ -306,10 +317,10 @@ class bingx extends bingx$1 {
|
|
|
306
317
|
'private': {
|
|
307
318
|
'get': {
|
|
308
319
|
'uid': 1,
|
|
309
|
-
'apiKey/query':
|
|
320
|
+
'apiKey/query': 2,
|
|
310
321
|
},
|
|
311
322
|
'post': {
|
|
312
|
-
'innerTransfer/authorizeSubAccount':
|
|
323
|
+
'innerTransfer/authorizeSubAccount': 1,
|
|
313
324
|
},
|
|
314
325
|
},
|
|
315
326
|
},
|
|
@@ -318,10 +329,13 @@ class bingx extends bingx$1 {
|
|
|
318
329
|
'auth': {
|
|
319
330
|
'private': {
|
|
320
331
|
'post': {
|
|
321
|
-
'userDataStream':
|
|
332
|
+
'userDataStream': 2,
|
|
322
333
|
},
|
|
323
334
|
'put': {
|
|
324
|
-
'userDataStream':
|
|
335
|
+
'userDataStream': 2,
|
|
336
|
+
},
|
|
337
|
+
'delete': {
|
|
338
|
+
'userDataStream': 2,
|
|
325
339
|
},
|
|
326
340
|
},
|
|
327
341
|
},
|
|
@@ -330,12 +344,12 @@ class bingx extends bingx$1 {
|
|
|
330
344
|
'v1': {
|
|
331
345
|
'private': {
|
|
332
346
|
'get': {
|
|
333
|
-
'swap/trace/currentTrack':
|
|
347
|
+
'swap/trace/currentTrack': 2,
|
|
334
348
|
},
|
|
335
349
|
'post': {
|
|
336
|
-
'swap/trace/closeTrackOrder':
|
|
337
|
-
'swap/trace/setTPSL':
|
|
338
|
-
'spot/trader/sellOrder':
|
|
350
|
+
'swap/trace/closeTrackOrder': 2,
|
|
351
|
+
'swap/trace/setTPSL': 2,
|
|
352
|
+
'spot/trader/sellOrder': 10,
|
|
339
353
|
},
|
|
340
354
|
},
|
|
341
355
|
},
|
package/dist/cjs/src/bitmart.js
CHANGED
|
@@ -40,6 +40,7 @@ class bitmart extends bitmart$1 {
|
|
|
40
40
|
'createMarketOrderWithCost': false,
|
|
41
41
|
'createMarketSellOrderWithCost': false,
|
|
42
42
|
'createOrder': true,
|
|
43
|
+
'createOrders': true,
|
|
43
44
|
'createPostOnlyOrder': true,
|
|
44
45
|
'createStopLimitOrder': false,
|
|
45
46
|
'createStopMarketOrder': false,
|
|
@@ -224,6 +225,7 @@ class bitmart extends bitmart$1 {
|
|
|
224
225
|
'spot/v4/query/trades': 5,
|
|
225
226
|
'spot/v4/query/order-trades': 5,
|
|
226
227
|
'spot/v4/cancel_orders': 3,
|
|
228
|
+
'spot/v4/batch_orders': 3,
|
|
227
229
|
// newer endpoint
|
|
228
230
|
'spot/v3/cancel_order': 1,
|
|
229
231
|
'spot/v2/batch_orders': 1,
|
|
@@ -2391,6 +2393,76 @@ class bitmart extends bitmart$1 {
|
|
|
2391
2393
|
order['price'] = price;
|
|
2392
2394
|
return order;
|
|
2393
2395
|
}
|
|
2396
|
+
async createOrders(orders, params = {}) {
|
|
2397
|
+
/**
|
|
2398
|
+
* @method
|
|
2399
|
+
* @name bitmart#createOrders
|
|
2400
|
+
* @description create a list of trade orders
|
|
2401
|
+
* @see https://developer-pro.bitmart.com/en/spot/#new-batch-order-v4-signed
|
|
2402
|
+
* @param {Array} orders list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
|
|
2403
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2404
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2405
|
+
*/
|
|
2406
|
+
await this.loadMarkets();
|
|
2407
|
+
const ordersRequests = [];
|
|
2408
|
+
let symbol = undefined;
|
|
2409
|
+
let market = undefined;
|
|
2410
|
+
for (let i = 0; i < orders.length; i++) {
|
|
2411
|
+
const rawOrder = orders[i];
|
|
2412
|
+
const marketId = this.safeString(rawOrder, 'symbol');
|
|
2413
|
+
market = this.market(marketId);
|
|
2414
|
+
if (!market['spot']) {
|
|
2415
|
+
throw new errors.NotSupported(this.id + ' createOrders() supports spot orders only');
|
|
2416
|
+
}
|
|
2417
|
+
if (symbol === undefined) {
|
|
2418
|
+
symbol = marketId;
|
|
2419
|
+
}
|
|
2420
|
+
else {
|
|
2421
|
+
if (symbol !== marketId) {
|
|
2422
|
+
throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same symbol');
|
|
2423
|
+
}
|
|
2424
|
+
}
|
|
2425
|
+
const type = this.safeString(rawOrder, 'type');
|
|
2426
|
+
const side = this.safeString(rawOrder, 'side');
|
|
2427
|
+
const amount = this.safeValue(rawOrder, 'amount');
|
|
2428
|
+
const price = this.safeValue(rawOrder, 'price');
|
|
2429
|
+
const orderParams = this.safeDict(rawOrder, 'params', {});
|
|
2430
|
+
let orderRequest = this.createSpotOrderRequest(marketId, type, side, amount, price, orderParams);
|
|
2431
|
+
orderRequest = this.omit(orderRequest, ['symbol']); // not needed because it goes in the outter object
|
|
2432
|
+
ordersRequests.push(orderRequest);
|
|
2433
|
+
}
|
|
2434
|
+
const request = {
|
|
2435
|
+
'symbol': market['id'],
|
|
2436
|
+
'orderParams': ordersRequests,
|
|
2437
|
+
};
|
|
2438
|
+
const response = await this.privatePostSpotV4BatchOrders(request);
|
|
2439
|
+
//
|
|
2440
|
+
// {
|
|
2441
|
+
// "message": "OK",
|
|
2442
|
+
// "code": 1000,
|
|
2443
|
+
// "trace": "5fc697fb817a4b5396284786a9b2609a.263.17022620476480263",
|
|
2444
|
+
// "data": {
|
|
2445
|
+
// "code": 0,
|
|
2446
|
+
// "msg": "success",
|
|
2447
|
+
// "data": {
|
|
2448
|
+
// "orderIds": [
|
|
2449
|
+
// "212751308355553320"
|
|
2450
|
+
// ]
|
|
2451
|
+
// }
|
|
2452
|
+
// }
|
|
2453
|
+
// }
|
|
2454
|
+
//
|
|
2455
|
+
const data = this.safeDict(response, 'data', {});
|
|
2456
|
+
const innderData = this.safeDict(data, 'data', {});
|
|
2457
|
+
const orderIds = this.safeList(innderData, 'orderIds', []);
|
|
2458
|
+
const parsedOrders = [];
|
|
2459
|
+
for (let i = 0; i < orderIds.length; i++) {
|
|
2460
|
+
const orderId = orderIds[i];
|
|
2461
|
+
const order = this.safeOrder({ 'id': orderId }, market);
|
|
2462
|
+
parsedOrders.push(order);
|
|
2463
|
+
}
|
|
2464
|
+
return parsedOrders;
|
|
2465
|
+
}
|
|
2394
2466
|
createSwapOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
|
|
2395
2467
|
/**
|
|
2396
2468
|
* @method
|
package/dist/cjs/src/kucoin.js
CHANGED
|
@@ -427,6 +427,7 @@ class kucoin extends kucoin$1 {
|
|
|
427
427
|
'The withdrawal amount is below the minimum requirement.': errors.ExchangeError,
|
|
428
428
|
'Unsuccessful! Exceeded the max. funds out-transfer limit': errors.InsufficientFunds,
|
|
429
429
|
'The amount increment is invalid.': errors.BadRequest,
|
|
430
|
+
'The quantity is below the minimum requirement.': errors.InvalidOrder,
|
|
430
431
|
'400': errors.BadRequest,
|
|
431
432
|
'401': errors.AuthenticationError,
|
|
432
433
|
'403': errors.NotSupported,
|
|
@@ -325,7 +325,7 @@ class bitfinex extends bitfinex$1 {
|
|
|
325
325
|
const size = (delta2Value < 0) ? -delta2Value : delta2Value;
|
|
326
326
|
const side = (delta2Value < 0) ? 'asks' : 'bids';
|
|
327
327
|
const bookside = orderbook[side];
|
|
328
|
-
bookside.
|
|
328
|
+
bookside.storeArray([price, size, id]);
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
331
|
else {
|
|
@@ -336,7 +336,7 @@ class bitfinex extends bitfinex$1 {
|
|
|
336
336
|
const size = (delta2 < 0) ? -delta2 : delta2;
|
|
337
337
|
const side = (delta2 < 0) ? 'asks' : 'bids';
|
|
338
338
|
const countedBookSide = orderbook[side];
|
|
339
|
-
countedBookSide.
|
|
339
|
+
countedBookSide.storeArray([delta[0], size, delta[1]]);
|
|
340
340
|
}
|
|
341
341
|
}
|
|
342
342
|
client.resolve(orderbook, messageHash);
|
|
@@ -352,14 +352,14 @@ class bitfinex extends bitfinex$1 {
|
|
|
352
352
|
const bookside = orderbook[side];
|
|
353
353
|
// price = 0 means that you have to remove the order from your book
|
|
354
354
|
const amount = Precise["default"].stringGt(price, '0') ? size : '0';
|
|
355
|
-
bookside.
|
|
355
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(amount), id]);
|
|
356
356
|
}
|
|
357
357
|
else {
|
|
358
358
|
const message3Value = message[3];
|
|
359
359
|
const size = (message3Value < 0) ? -message3Value : message3Value;
|
|
360
360
|
const side = (message3Value < 0) ? 'asks' : 'bids';
|
|
361
361
|
const countedBookSide = orderbook[side];
|
|
362
|
-
countedBookSide.
|
|
362
|
+
countedBookSide.storeArray([message[1], size, message[2]]);
|
|
363
363
|
}
|
|
364
364
|
client.resolve(orderbook, messageHash);
|
|
365
365
|
}
|
|
@@ -630,7 +630,7 @@ class bitfinex2 extends bitfinex2$1 {
|
|
|
630
630
|
// price = 0 means that you have to remove the order from your book
|
|
631
631
|
const amount = Precise["default"].stringGt(price, '0') ? size : '0';
|
|
632
632
|
const idString = this.safeString(deltas, 0);
|
|
633
|
-
bookside.
|
|
633
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(amount), idString]);
|
|
634
634
|
}
|
|
635
635
|
else {
|
|
636
636
|
const amount = this.safeString(deltas, 2);
|
|
@@ -639,7 +639,7 @@ class bitfinex2 extends bitfinex2$1 {
|
|
|
639
639
|
const size = Precise["default"].stringLt(amount, '0') ? Precise["default"].stringNeg(amount) : amount;
|
|
640
640
|
const side = Precise["default"].stringLt(amount, '0') ? 'asks' : 'bids';
|
|
641
641
|
const bookside = orderbookItem[side];
|
|
642
|
-
bookside.
|
|
642
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(size), this.parseNumber(counter)]);
|
|
643
643
|
}
|
|
644
644
|
client.resolve(orderbook, messageHash);
|
|
645
645
|
}
|
|
@@ -1430,7 +1430,7 @@ class bitmex extends bitmex$1 {
|
|
|
1430
1430
|
const data = this.safeValue(message, 'data', []);
|
|
1431
1431
|
// if it's an initial snapshot
|
|
1432
1432
|
if (action === 'partial') {
|
|
1433
|
-
const filter = this.
|
|
1433
|
+
const filter = this.safeDict(message, 'filter', {});
|
|
1434
1434
|
const marketId = this.safeValue(filter, 'symbol');
|
|
1435
1435
|
const market = this.safeMarket(marketId);
|
|
1436
1436
|
const symbol = market['symbol'];
|
|
@@ -1452,7 +1452,7 @@ class bitmex extends bitmex$1 {
|
|
|
1452
1452
|
let side = this.safeString(data[i], 'side');
|
|
1453
1453
|
side = (side === 'Buy') ? 'bids' : 'asks';
|
|
1454
1454
|
const bookside = orderbook[side];
|
|
1455
|
-
bookside.
|
|
1455
|
+
bookside.storeArray([price, size, id]);
|
|
1456
1456
|
const datetime = this.safeString(data[i], 'timestamp');
|
|
1457
1457
|
orderbook['timestamp'] = this.parse8601(datetime);
|
|
1458
1458
|
orderbook['datetime'] = datetime;
|
|
@@ -1477,7 +1477,7 @@ class bitmex extends bitmex$1 {
|
|
|
1477
1477
|
let side = this.safeString(data[i], 'side');
|
|
1478
1478
|
side = (side === 'Buy') ? 'bids' : 'asks';
|
|
1479
1479
|
const bookside = orderbook[side];
|
|
1480
|
-
bookside.
|
|
1480
|
+
bookside.storeArray([price, size, id]);
|
|
1481
1481
|
const datetime = this.safeString(data[i], 'timestamp');
|
|
1482
1482
|
orderbook['timestamp'] = this.parse8601(datetime);
|
|
1483
1483
|
orderbook['datetime'] = datetime;
|
|
@@ -695,8 +695,8 @@ class blockchaincom extends blockchaincom$1 {
|
|
|
695
695
|
orderbook.reset(snapshot);
|
|
696
696
|
}
|
|
697
697
|
else if (event === 'updated') {
|
|
698
|
-
const asks = this.
|
|
699
|
-
const bids = this.
|
|
698
|
+
const asks = this.safeList(message, 'asks', []);
|
|
699
|
+
const bids = this.safeList(message, 'bids', []);
|
|
700
700
|
this.handleDeltas(orderbook['asks'], asks);
|
|
701
701
|
this.handleDeltas(orderbook['bids'], bids);
|
|
702
702
|
orderbook['timestamp'] = timestamp;
|
|
@@ -128,7 +128,7 @@ class cryptocom extends cryptocom$1 {
|
|
|
128
128
|
const price = this.safeFloat(delta, 0);
|
|
129
129
|
const amount = this.safeFloat(delta, 1);
|
|
130
130
|
const count = this.safeInteger(delta, 2);
|
|
131
|
-
bookside.
|
|
131
|
+
bookside.storeArray([price, amount, count]);
|
|
132
132
|
}
|
|
133
133
|
handleDeltas(bookside, deltas) {
|
|
134
134
|
for (let i = 0; i < deltas.length; i++) {
|
|
@@ -197,11 +197,11 @@ class cryptocom extends cryptocom$1 {
|
|
|
197
197
|
let data = this.safeValue(message, 'data');
|
|
198
198
|
data = this.safeValue(data, 0);
|
|
199
199
|
const timestamp = this.safeInteger(data, 't');
|
|
200
|
-
|
|
201
|
-
if (orderbook === undefined) {
|
|
200
|
+
if (!(symbol in this.orderbooks)) {
|
|
202
201
|
const limit = this.safeInteger(message, 'depth');
|
|
203
|
-
|
|
202
|
+
this.orderbooks[symbol] = this.countedOrderBook({}, limit);
|
|
204
203
|
}
|
|
204
|
+
const orderbook = this.orderbooks[symbol];
|
|
205
205
|
const channel = this.safeString(message, 'channel');
|
|
206
206
|
const nonce = this.safeInteger2(data, 'u', 's');
|
|
207
207
|
let books = data;
|
|
@@ -505,12 +505,12 @@ class deribit extends deribit$1 {
|
|
|
505
505
|
const marketId = this.safeString(data, 'instrument_name');
|
|
506
506
|
const symbol = this.safeSymbol(marketId);
|
|
507
507
|
const timestamp = this.safeInteger(data, 'timestamp');
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
storedOrderBook = this.countedOrderBook();
|
|
508
|
+
if (!(symbol in this.orderbooks)) {
|
|
509
|
+
this.orderbooks[symbol] = this.countedOrderBook();
|
|
511
510
|
}
|
|
512
|
-
const
|
|
513
|
-
const
|
|
511
|
+
const storedOrderBook = this.orderbooks[symbol];
|
|
512
|
+
const asks = this.safeList(data, 'asks', []);
|
|
513
|
+
const bids = this.safeList(data, 'bids', []);
|
|
514
514
|
this.handleDeltas(storedOrderBook['asks'], asks);
|
|
515
515
|
this.handleDeltas(storedOrderBook['bids'], bids);
|
|
516
516
|
storedOrderBook['nonce'] = timestamp;
|
|
@@ -522,8 +522,8 @@ class deribit extends deribit$1 {
|
|
|
522
522
|
client.resolve(storedOrderBook, messageHash);
|
|
523
523
|
}
|
|
524
524
|
cleanOrderBook(data) {
|
|
525
|
-
const bids = this.
|
|
526
|
-
const asks = this.
|
|
525
|
+
const bids = this.safeList(data, 'bids', []);
|
|
526
|
+
const asks = this.safeList(data, 'asks', []);
|
|
527
527
|
const cleanedBids = [];
|
|
528
528
|
for (let i = 0; i < bids.length; i++) {
|
|
529
529
|
cleanedBids.push([bids[i][1], bids[i][2]]);
|
|
@@ -540,10 +540,10 @@ class deribit extends deribit$1 {
|
|
|
540
540
|
const price = delta[1];
|
|
541
541
|
const amount = delta[2];
|
|
542
542
|
if (delta[0] === 'new' || delta[0] === 'change') {
|
|
543
|
-
bookside.
|
|
543
|
+
bookside.storeArray([price, amount, 1]);
|
|
544
544
|
}
|
|
545
545
|
else if (delta[0] === 'delete') {
|
|
546
|
-
bookside.
|
|
546
|
+
bookside.storeArray([price, amount, 0]);
|
|
547
547
|
}
|
|
548
548
|
}
|
|
549
549
|
handleDeltas(bookside, deltas) {
|
package/dist/cjs/src/pro/idex.js
CHANGED
|
@@ -481,7 +481,7 @@ class idex extends idex$1 {
|
|
|
481
481
|
const price = this.safeFloat(delta, 0);
|
|
482
482
|
const amount = this.safeFloat(delta, 1);
|
|
483
483
|
const count = this.safeInteger(delta, 2);
|
|
484
|
-
bookside.
|
|
484
|
+
bookside.storeArray([price, amount, count]);
|
|
485
485
|
}
|
|
486
486
|
handleDeltas(bookside, deltas) {
|
|
487
487
|
for (let i = 0; i < deltas.length; i++) {
|
package/dist/cjs/src/pro/luno.js
CHANGED
|
@@ -190,12 +190,11 @@ class luno extends luno$1 {
|
|
|
190
190
|
//
|
|
191
191
|
const symbol = subscription['symbol'];
|
|
192
192
|
const messageHash = 'orderbook:' + symbol;
|
|
193
|
-
const timestamp = this.
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
orderbook = this.indexedOrderBook({});
|
|
197
|
-
this.orderbooks[symbol] = orderbook;
|
|
193
|
+
const timestamp = this.safeInteger(message, 'timestamp');
|
|
194
|
+
if (!(symbol in this.orderbooks)) {
|
|
195
|
+
this.orderbooks[symbol] = this.indexedOrderBook({});
|
|
198
196
|
}
|
|
197
|
+
const orderbook = this.orderbooks[symbol];
|
|
199
198
|
const asks = this.safeValue(message, 'asks');
|
|
200
199
|
if (asks !== undefined) {
|
|
201
200
|
const snapshot = this.customParseOrderBook(message, symbol, timestamp, 'bids', 'asks', 'price', 'volume', 'id');
|