ccxt 4.3.28 → 4.3.30
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/Exchange.js +6 -0
- package/dist/cjs/src/base/ws/OrderBookSide.js +4 -4
- package/dist/cjs/src/bingx.js +98 -84
- package/dist/cjs/src/bitmart.js +72 -0
- package/dist/cjs/src/coinex.js +260 -311
- 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 +55 -5
- 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/Exchange.js +6 -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 +98 -84
- package/js/src/bitmart.d.ts +2 -1
- package/js/src/bitmart.js +72 -0
- package/js/src/coinex.d.ts +5 -6
- package/js/src/coinex.js +260 -311
- 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/whitebit.d.ts +2 -0
- package/js/src/whitebit.js +55 -5
- package/package.json +4 -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.30';
|
|
189
189
|
Exchange["default"].ccxtVersion = version;
|
|
190
190
|
const exchanges = {
|
|
191
191
|
'ace': ace,
|
|
@@ -6126,6 +6126,9 @@ class Exchange {
|
|
|
6126
6126
|
}
|
|
6127
6127
|
parseMarginModes(response, symbols = undefined, symbolKey = undefined, marketType = undefined) {
|
|
6128
6128
|
const marginModeStructures = {};
|
|
6129
|
+
if (marketType === undefined) {
|
|
6130
|
+
marketType = 'swap'; // default to swap
|
|
6131
|
+
}
|
|
6129
6132
|
for (let i = 0; i < response.length; i++) {
|
|
6130
6133
|
const info = response[i];
|
|
6131
6134
|
const marketId = this.safeString(info, symbolKey);
|
|
@@ -6141,6 +6144,9 @@ class Exchange {
|
|
|
6141
6144
|
}
|
|
6142
6145
|
parseLeverages(response, symbols = undefined, symbolKey = undefined, marketType = undefined) {
|
|
6143
6146
|
const leverageStructures = {};
|
|
6147
|
+
if (marketType === undefined) {
|
|
6148
|
+
marketType = 'swap'; // default to swap
|
|
6149
|
+
}
|
|
6144
6150
|
for (let i = 0; i < response.length; i++) {
|
|
6145
6151
|
const info = response[i];
|
|
6146
6152
|
const marketId = this.safeString(info, symbolKey);
|
|
@@ -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
|
},
|
|
@@ -2527,7 +2541,7 @@ class bingx extends bingx$1 {
|
|
|
2527
2541
|
'stopLossPrice': stopLossPrice,
|
|
2528
2542
|
'takeProfitPrice': takeProfitPrice,
|
|
2529
2543
|
'average': this.safeString2(order, 'avgPrice', 'ap'),
|
|
2530
|
-
'cost':
|
|
2544
|
+
'cost': this.safeString(order, 'cummulativeQuoteQty'),
|
|
2531
2545
|
'amount': this.safeStringN(order, ['origQty', 'q', 'quantity']),
|
|
2532
2546
|
'filled': this.safeString2(order, 'executedQty', 'z'),
|
|
2533
2547
|
'remaining': undefined,
|
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
|