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
package/dist/cjs/src/pro/mexc.js
CHANGED
|
@@ -508,8 +508,8 @@ class mexc extends mexc$1 {
|
|
|
508
508
|
return;
|
|
509
509
|
}
|
|
510
510
|
orderbook['nonce'] = deltaNonce;
|
|
511
|
-
const asks = this.
|
|
512
|
-
const bids = this.
|
|
511
|
+
const asks = this.safeList(delta, 'asks', []);
|
|
512
|
+
const bids = this.safeList(delta, 'bids', []);
|
|
513
513
|
const asksOrderSide = orderbook['asks'];
|
|
514
514
|
const bidsOrderSide = orderbook['bids'];
|
|
515
515
|
this.handleBooksideDelta(asksOrderSide, asks);
|
package/dist/cjs/src/whitebit.js
CHANGED
|
@@ -1470,7 +1470,7 @@ class whitebit extends whitebit$1 {
|
|
|
1470
1470
|
const balance = response[id];
|
|
1471
1471
|
if (typeof balance === 'object' && balance !== undefined) {
|
|
1472
1472
|
const account = this.account();
|
|
1473
|
-
account['free'] = this.
|
|
1473
|
+
account['free'] = this.safeString2(balance, 'available', 'main_balance');
|
|
1474
1474
|
account['used'] = this.safeString(balance, 'freeze');
|
|
1475
1475
|
account['total'] = this.safeString(balance, 'main_balance');
|
|
1476
1476
|
result[code] = account;
|
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 { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain, Conversion } from './src/base/types.js';
|
|
6
6
|
import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
|
|
7
|
-
declare const version = "4.3.
|
|
7
|
+
declare const version = "4.3.28";
|
|
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, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } 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.29';
|
|
42
42
|
Exchange.ccxtVersion = version;
|
|
43
43
|
//-----------------------------------------------------------------------------
|
|
44
44
|
import ace from './src/ace.js';
|
|
@@ -7,6 +7,8 @@ interface Exchange {
|
|
|
7
7
|
spotV1PublicGetMarketDepth(params?: {}): Promise<implicitReturnType>;
|
|
8
8
|
spotV1PublicGetMarketKline(params?: {}): Promise<implicitReturnType>;
|
|
9
9
|
spotV1PublicGetTicker24hr(params?: {}): Promise<implicitReturnType>;
|
|
10
|
+
spotV1PublicGetTickerPrice(params?: {}): Promise<implicitReturnType>;
|
|
11
|
+
spotV1PublicGetTickerBookTicker(params?: {}): Promise<implicitReturnType>;
|
|
10
12
|
spotV1PrivateGetTradeQuery(params?: {}): Promise<implicitReturnType>;
|
|
11
13
|
spotV1PrivateGetTradeOpenOrders(params?: {}): Promise<implicitReturnType>;
|
|
12
14
|
spotV1PrivateGetTradeHistoryOrders(params?: {}): Promise<implicitReturnType>;
|
|
@@ -20,12 +22,15 @@ interface Exchange {
|
|
|
20
22
|
spotV1PrivatePostTradeCancelOrders(params?: {}): Promise<implicitReturnType>;
|
|
21
23
|
spotV1PrivatePostTradeCancelOpenOrders(params?: {}): Promise<implicitReturnType>;
|
|
22
24
|
spotV1PrivatePostTradeCancelAllAfter(params?: {}): Promise<implicitReturnType>;
|
|
25
|
+
spotV2PublicGetMarketDepth(params?: {}): Promise<implicitReturnType>;
|
|
26
|
+
spotV2PublicGetMarketKline(params?: {}): Promise<implicitReturnType>;
|
|
23
27
|
spotV3PrivateGetGetAssetTransfer(params?: {}): Promise<implicitReturnType>;
|
|
24
28
|
spotV3PrivateGetAssetTransfer(params?: {}): Promise<implicitReturnType>;
|
|
25
29
|
spotV3PrivateGetCapitalDepositHisrec(params?: {}): Promise<implicitReturnType>;
|
|
26
30
|
spotV3PrivateGetCapitalWithdrawHistory(params?: {}): Promise<implicitReturnType>;
|
|
27
31
|
spotV3PrivatePostPostAssetTransfer(params?: {}): Promise<implicitReturnType>;
|
|
28
32
|
swapV1PublicGetTickerPrice(params?: {}): Promise<implicitReturnType>;
|
|
33
|
+
swapV1PublicGetMarketHistoricalTrades(params?: {}): Promise<implicitReturnType>;
|
|
29
34
|
swapV1PrivateGetPositionSideDual(params?: {}): Promise<implicitReturnType>;
|
|
30
35
|
swapV1PrivateGetMarketMarkPriceKlines(params?: {}): Promise<implicitReturnType>;
|
|
31
36
|
swapV1PrivateGetTradeBatchCancelReplace(params?: {}): Promise<implicitReturnType>;
|
|
@@ -79,6 +84,7 @@ interface Exchange {
|
|
|
79
84
|
walletsV1PrivateGetCapitalSubAccountDepositAddress(params?: {}): Promise<implicitReturnType>;
|
|
80
85
|
walletsV1PrivateGetCapitalDepositSubHisrec(params?: {}): Promise<implicitReturnType>;
|
|
81
86
|
walletsV1PrivateGetCapitalSubAccountInnerTransferRecords(params?: {}): Promise<implicitReturnType>;
|
|
87
|
+
walletsV1PrivateGetCapitalDepositRiskRecords(params?: {}): Promise<implicitReturnType>;
|
|
82
88
|
walletsV1PrivatePostCapitalWithdrawApply(params?: {}): Promise<implicitReturnType>;
|
|
83
89
|
walletsV1PrivatePostCapitalInnerTransferApply(params?: {}): Promise<implicitReturnType>;
|
|
84
90
|
walletsV1PrivatePostCapitalSubAccountInnerTransferApply(params?: {}): Promise<implicitReturnType>;
|
|
@@ -95,6 +101,7 @@ interface Exchange {
|
|
|
95
101
|
accountV1PrivatePostInnerTransferAuthorizeSubAccount(params?: {}): Promise<implicitReturnType>;
|
|
96
102
|
userAuthPrivatePostUserDataStream(params?: {}): Promise<implicitReturnType>;
|
|
97
103
|
userAuthPrivatePutUserDataStream(params?: {}): Promise<implicitReturnType>;
|
|
104
|
+
userAuthPrivateDeleteUserDataStream(params?: {}): Promise<implicitReturnType>;
|
|
98
105
|
copyTradingV1PrivateGetSwapTraceCurrentTrack(params?: {}): Promise<implicitReturnType>;
|
|
99
106
|
copyTradingV1PrivatePostSwapTraceCloseTrackOrder(params?: {}): Promise<implicitReturnType>;
|
|
100
107
|
copyTradingV1PrivatePostSwapTraceSetTPSL(params?: {}): Promise<implicitReturnType>;
|
|
@@ -80,6 +80,7 @@ interface Exchange {
|
|
|
80
80
|
privatePostSpotV4QueryTrades(params?: {}): Promise<implicitReturnType>;
|
|
81
81
|
privatePostSpotV4QueryOrderTrades(params?: {}): Promise<implicitReturnType>;
|
|
82
82
|
privatePostSpotV4CancelOrders(params?: {}): Promise<implicitReturnType>;
|
|
83
|
+
privatePostSpotV4BatchOrders(params?: {}): Promise<implicitReturnType>;
|
|
83
84
|
privatePostSpotV3CancelOrder(params?: {}): Promise<implicitReturnType>;
|
|
84
85
|
privatePostSpotV2BatchOrders(params?: {}): Promise<implicitReturnType>;
|
|
85
86
|
privatePostSpotV2SubmitOrder(params?: {}): Promise<implicitReturnType>;
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
interface IOrderBookSide<T> extends Array<T> {
|
|
2
2
|
store(price: any, size: any): any;
|
|
3
|
-
store(price: any, size: any, index: any): any;
|
|
4
3
|
storeArray(array: any[]): any;
|
|
5
4
|
limit(): any;
|
|
6
5
|
}
|
|
7
|
-
declare class OrderBookSide extends Array implements IOrderBookSide {
|
|
6
|
+
declare class OrderBookSide extends Array implements IOrderBookSide<any> {
|
|
8
7
|
constructor(deltas?: any[], depth?: any);
|
|
9
8
|
storeArray(delta: any): void;
|
|
10
9
|
store(price: any, size: any): void;
|
|
11
10
|
limit(): void;
|
|
12
11
|
}
|
|
13
12
|
declare class CountedOrderBookSide extends OrderBookSide {
|
|
14
|
-
store(price: any, size: any
|
|
13
|
+
store(price: any, size: any): void;
|
|
15
14
|
storeArray(delta: any): void;
|
|
16
15
|
}
|
|
17
|
-
declare class IndexedOrderBookSide extends Array implements IOrderBookSide {
|
|
16
|
+
declare class IndexedOrderBookSide extends Array implements IOrderBookSide<any> {
|
|
18
17
|
constructor(deltas?: any[], depth?: number);
|
|
19
|
-
store(price: any, size: any
|
|
18
|
+
store(price: any, size: any): void;
|
|
20
19
|
storeArray(delta: any): void;
|
|
21
20
|
limit(): void;
|
|
22
21
|
}
|
|
@@ -101,8 +101,8 @@ class OrderBookSide extends Array {
|
|
|
101
101
|
// or deletes price levels based on order counts (3rd value in a bidask delta)
|
|
102
102
|
// this class stores vector arrays of values indexed by price
|
|
103
103
|
class CountedOrderBookSide extends OrderBookSide {
|
|
104
|
-
store(price, size
|
|
105
|
-
|
|
104
|
+
store(price, size) {
|
|
105
|
+
throw new Error('CountedOrderBookSide.store() is not supported, use storeArray([price, size, count]) instead');
|
|
106
106
|
}
|
|
107
107
|
storeArray(delta) {
|
|
108
108
|
const price = delta[0];
|
|
@@ -166,8 +166,8 @@ class IndexedOrderBookSide extends Array {
|
|
|
166
166
|
this.storeArray(deltas[i].slice()); // slice is muy importante
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
-
store(price, size
|
|
170
|
-
|
|
169
|
+
store(price, size) {
|
|
170
|
+
throw new Error('IndexedOrderBook.store() is not supported, use storeArray([price, size, id]) instead');
|
|
171
171
|
}
|
|
172
172
|
storeArray(delta) {
|
|
173
173
|
const price = delta[0];
|
package/js/src/bingx.js
CHANGED
|
@@ -21,8 +21,7 @@ export default class bingx extends Exchange {
|
|
|
21
21
|
'id': 'bingx',
|
|
22
22
|
'name': 'BingX',
|
|
23
23
|
'countries': ['US'],
|
|
24
|
-
|
|
25
|
-
'rateLimit': 1000,
|
|
24
|
+
'rateLimit': 100,
|
|
26
25
|
'version': 'v1',
|
|
27
26
|
'certified': true,
|
|
28
27
|
'pro': true,
|
|
@@ -135,44 +134,54 @@ export default class bingx extends Exchange {
|
|
|
135
134
|
'v1': {
|
|
136
135
|
'public': {
|
|
137
136
|
'get': {
|
|
138
|
-
'server/time':
|
|
139
|
-
'common/symbols':
|
|
140
|
-
'market/trades':
|
|
141
|
-
'market/depth':
|
|
142
|
-
'market/kline':
|
|
137
|
+
'server/time': 1,
|
|
138
|
+
'common/symbols': 1,
|
|
139
|
+
'market/trades': 1,
|
|
140
|
+
'market/depth': 1,
|
|
141
|
+
'market/kline': 1,
|
|
143
142
|
'ticker/24hr': 1,
|
|
143
|
+
'ticker/price': 1,
|
|
144
|
+
'ticker/bookTicker': 1,
|
|
144
145
|
},
|
|
145
146
|
},
|
|
146
147
|
'private': {
|
|
147
148
|
'get': {
|
|
148
|
-
'trade/query':
|
|
149
|
-
'trade/openOrders':
|
|
150
|
-
'trade/historyOrders':
|
|
151
|
-
'trade/myTrades':
|
|
152
|
-
'user/commissionRate':
|
|
153
|
-
'account/balance':
|
|
149
|
+
'trade/query': 1,
|
|
150
|
+
'trade/openOrders': 1,
|
|
151
|
+
'trade/historyOrders': 1,
|
|
152
|
+
'trade/myTrades': 2,
|
|
153
|
+
'user/commissionRate': 5,
|
|
154
|
+
'account/balance': 2,
|
|
154
155
|
},
|
|
155
156
|
'post': {
|
|
156
|
-
'trade/order':
|
|
157
|
-
'trade/cancel':
|
|
158
|
-
'trade/batchOrders':
|
|
159
|
-
'trade/order/cancelReplace':
|
|
160
|
-
'trade/cancelOrders':
|
|
161
|
-
'trade/cancelOpenOrders':
|
|
162
|
-
'trade/cancelAllAfter':
|
|
157
|
+
'trade/order': 2,
|
|
158
|
+
'trade/cancel': 2,
|
|
159
|
+
'trade/batchOrders': 5,
|
|
160
|
+
'trade/order/cancelReplace': 5,
|
|
161
|
+
'trade/cancelOrders': 5,
|
|
162
|
+
'trade/cancelOpenOrders': 5,
|
|
163
|
+
'trade/cancelAllAfter': 5,
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
'v2': {
|
|
168
|
+
'public': {
|
|
169
|
+
'get': {
|
|
170
|
+
'market/depth': 1,
|
|
171
|
+
'market/kline': 1,
|
|
163
172
|
},
|
|
164
173
|
},
|
|
165
174
|
},
|
|
166
175
|
'v3': {
|
|
167
176
|
'private': {
|
|
168
177
|
'get': {
|
|
169
|
-
'get/asset/transfer':
|
|
170
|
-
'asset/transfer':
|
|
171
|
-
'capital/deposit/hisrec':
|
|
172
|
-
'capital/withdraw/history':
|
|
178
|
+
'get/asset/transfer': 1,
|
|
179
|
+
'asset/transfer': 1,
|
|
180
|
+
'capital/deposit/hisrec': 1,
|
|
181
|
+
'capital/withdraw/history': 1,
|
|
173
182
|
},
|
|
174
183
|
'post': {
|
|
175
|
-
'post/asset/transfer':
|
|
184
|
+
'post/asset/transfer': 5,
|
|
176
185
|
},
|
|
177
186
|
},
|
|
178
187
|
},
|
|
@@ -182,26 +191,27 @@ export default class bingx extends Exchange {
|
|
|
182
191
|
'public': {
|
|
183
192
|
'get': {
|
|
184
193
|
'ticker/price': 1,
|
|
194
|
+
'market/historicalTrades': 1,
|
|
185
195
|
},
|
|
186
196
|
},
|
|
187
197
|
'private': {
|
|
188
198
|
'get': {
|
|
189
|
-
'positionSide/dual':
|
|
199
|
+
'positionSide/dual': 5,
|
|
190
200
|
'market/markPriceKlines': 1,
|
|
191
|
-
'trade/batchCancelReplace':
|
|
192
|
-
'trade/fullOrder':
|
|
201
|
+
'trade/batchCancelReplace': 5,
|
|
202
|
+
'trade/fullOrder': 2,
|
|
193
203
|
},
|
|
194
204
|
'post': {
|
|
195
|
-
'trade/cancelReplace':
|
|
196
|
-
'positionSide/dual':
|
|
197
|
-
'trade/closePosition':
|
|
205
|
+
'trade/cancelReplace': 2,
|
|
206
|
+
'positionSide/dual': 5,
|
|
207
|
+
'trade/closePosition': 2,
|
|
198
208
|
},
|
|
199
209
|
},
|
|
200
210
|
},
|
|
201
211
|
'v2': {
|
|
202
212
|
'public': {
|
|
203
213
|
'get': {
|
|
204
|
-
'server/time':
|
|
214
|
+
'server/time': 1,
|
|
205
215
|
'quote/contracts': 1,
|
|
206
216
|
'quote/price': 1,
|
|
207
217
|
'quote/depth': 1,
|
|
@@ -216,35 +226,35 @@ export default class bingx extends Exchange {
|
|
|
216
226
|
},
|
|
217
227
|
'private': {
|
|
218
228
|
'get': {
|
|
219
|
-
'user/balance':
|
|
220
|
-
'user/positions':
|
|
221
|
-
'user/income':
|
|
222
|
-
'trade/openOrders':
|
|
223
|
-
'trade/openOrder':
|
|
224
|
-
'trade/order':
|
|
225
|
-
'trade/marginType':
|
|
226
|
-
'trade/leverage':
|
|
227
|
-
'trade/forceOrders':
|
|
228
|
-
'trade/allOrders':
|
|
229
|
-
'trade/allFillOrders':
|
|
230
|
-
'user/income/export':
|
|
231
|
-
'user/commissionRate':
|
|
232
|
-
'quote/bookTicker':
|
|
229
|
+
'user/balance': 2,
|
|
230
|
+
'user/positions': 2,
|
|
231
|
+
'user/income': 2,
|
|
232
|
+
'trade/openOrders': 2,
|
|
233
|
+
'trade/openOrder': 2,
|
|
234
|
+
'trade/order': 2,
|
|
235
|
+
'trade/marginType': 5,
|
|
236
|
+
'trade/leverage': 2,
|
|
237
|
+
'trade/forceOrders': 1,
|
|
238
|
+
'trade/allOrders': 2,
|
|
239
|
+
'trade/allFillOrders': 2,
|
|
240
|
+
'user/income/export': 2,
|
|
241
|
+
'user/commissionRate': 2,
|
|
242
|
+
'quote/bookTicker': 1,
|
|
233
243
|
},
|
|
234
244
|
'post': {
|
|
235
|
-
'trade/order':
|
|
236
|
-
'trade/batchOrders':
|
|
237
|
-
'trade/closeAllPositions':
|
|
238
|
-
'trade/cancelAllAfter':
|
|
239
|
-
'trade/marginType':
|
|
240
|
-
'trade/leverage':
|
|
241
|
-
'trade/positionMargin':
|
|
242
|
-
'trade/order/test':
|
|
245
|
+
'trade/order': 2,
|
|
246
|
+
'trade/batchOrders': 2,
|
|
247
|
+
'trade/closeAllPositions': 2,
|
|
248
|
+
'trade/cancelAllAfter': 5,
|
|
249
|
+
'trade/marginType': 5,
|
|
250
|
+
'trade/leverage': 5,
|
|
251
|
+
'trade/positionMargin': 5,
|
|
252
|
+
'trade/order/test': 2,
|
|
243
253
|
},
|
|
244
254
|
'delete': {
|
|
245
|
-
'trade/order':
|
|
246
|
-
'trade/batchOrders':
|
|
247
|
-
'trade/allOpenOrders':
|
|
255
|
+
'trade/order': 2,
|
|
256
|
+
'trade/batchOrders': 2,
|
|
257
|
+
'trade/allOpenOrders': 2,
|
|
248
258
|
},
|
|
249
259
|
},
|
|
250
260
|
},
|
|
@@ -260,9 +270,9 @@ export default class bingx extends Exchange {
|
|
|
260
270
|
'v1': {
|
|
261
271
|
'private': {
|
|
262
272
|
'get': {
|
|
263
|
-
'allPosition':
|
|
264
|
-
'allOrders':
|
|
265
|
-
'balance':
|
|
273
|
+
'allPosition': 2,
|
|
274
|
+
'allOrders': 2,
|
|
275
|
+
'balance': 2,
|
|
266
276
|
},
|
|
267
277
|
},
|
|
268
278
|
},
|
|
@@ -271,18 +281,19 @@ export default class bingx extends Exchange {
|
|
|
271
281
|
'v1': {
|
|
272
282
|
'private': {
|
|
273
283
|
'get': {
|
|
274
|
-
'capital/config/getall':
|
|
275
|
-
'capital/deposit/address':
|
|
284
|
+
'capital/config/getall': 5,
|
|
285
|
+
'capital/deposit/address': 5,
|
|
276
286
|
'capital/innerTransfer/records': 1,
|
|
277
|
-
'capital/subAccount/deposit/address':
|
|
278
|
-
'capital/deposit/subHisrec':
|
|
287
|
+
'capital/subAccount/deposit/address': 5,
|
|
288
|
+
'capital/deposit/subHisrec': 2,
|
|
279
289
|
'capital/subAccount/innerTransfer/records': 1,
|
|
290
|
+
'capital/deposit/riskRecords': 5,
|
|
280
291
|
},
|
|
281
292
|
'post': {
|
|
282
|
-
'capital/withdraw/apply':
|
|
283
|
-
'capital/innerTransfer/apply':
|
|
284
|
-
'capital/subAccountInnerTransfer/apply':
|
|
285
|
-
'capital/deposit/createSubAddress':
|
|
293
|
+
'capital/withdraw/apply': 5,
|
|
294
|
+
'capital/innerTransfer/apply': 5,
|
|
295
|
+
'capital/subAccountInnerTransfer/apply': 2,
|
|
296
|
+
'capital/deposit/createSubAddress': 2,
|
|
286
297
|
},
|
|
287
298
|
},
|
|
288
299
|
},
|
|
@@ -291,15 +302,15 @@ export default class bingx extends Exchange {
|
|
|
291
302
|
'v1': {
|
|
292
303
|
'private': {
|
|
293
304
|
'get': {
|
|
294
|
-
'list':
|
|
295
|
-
'assets':
|
|
305
|
+
'list': 10,
|
|
306
|
+
'assets': 2,
|
|
296
307
|
},
|
|
297
308
|
'post': {
|
|
298
|
-
'create':
|
|
299
|
-
'apiKey/create':
|
|
300
|
-
'apiKey/edit':
|
|
301
|
-
'apiKey/del':
|
|
302
|
-
'updateStatus':
|
|
309
|
+
'create': 10,
|
|
310
|
+
'apiKey/create': 2,
|
|
311
|
+
'apiKey/edit': 2,
|
|
312
|
+
'apiKey/del': 2,
|
|
313
|
+
'updateStatus': 10,
|
|
303
314
|
},
|
|
304
315
|
},
|
|
305
316
|
},
|
|
@@ -309,10 +320,10 @@ export default class bingx extends Exchange {
|
|
|
309
320
|
'private': {
|
|
310
321
|
'get': {
|
|
311
322
|
'uid': 1,
|
|
312
|
-
'apiKey/query':
|
|
323
|
+
'apiKey/query': 2,
|
|
313
324
|
},
|
|
314
325
|
'post': {
|
|
315
|
-
'innerTransfer/authorizeSubAccount':
|
|
326
|
+
'innerTransfer/authorizeSubAccount': 1,
|
|
316
327
|
},
|
|
317
328
|
},
|
|
318
329
|
},
|
|
@@ -321,10 +332,13 @@ export default class bingx extends Exchange {
|
|
|
321
332
|
'auth': {
|
|
322
333
|
'private': {
|
|
323
334
|
'post': {
|
|
324
|
-
'userDataStream':
|
|
335
|
+
'userDataStream': 2,
|
|
325
336
|
},
|
|
326
337
|
'put': {
|
|
327
|
-
'userDataStream':
|
|
338
|
+
'userDataStream': 2,
|
|
339
|
+
},
|
|
340
|
+
'delete': {
|
|
341
|
+
'userDataStream': 2,
|
|
328
342
|
},
|
|
329
343
|
},
|
|
330
344
|
},
|
|
@@ -333,12 +347,12 @@ export default class bingx extends Exchange {
|
|
|
333
347
|
'v1': {
|
|
334
348
|
'private': {
|
|
335
349
|
'get': {
|
|
336
|
-
'swap/trace/currentTrack':
|
|
350
|
+
'swap/trace/currentTrack': 2,
|
|
337
351
|
},
|
|
338
352
|
'post': {
|
|
339
|
-
'swap/trace/closeTrackOrder':
|
|
340
|
-
'swap/trace/setTPSL':
|
|
341
|
-
'spot/trader/sellOrder':
|
|
353
|
+
'swap/trace/closeTrackOrder': 2,
|
|
354
|
+
'swap/trace/setTPSL': 2,
|
|
355
|
+
'spot/trader/sellOrder': 10,
|
|
342
356
|
},
|
|
343
357
|
},
|
|
344
358
|
},
|
package/js/src/bitmart.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/bitmart.js';
|
|
2
|
-
import type { Int, OrderSide, Balances, OrderType, OHLCV, Order, Str, Trade, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, Dict, TransferEntries } from './base/types.js';
|
|
2
|
+
import type { Int, OrderSide, Balances, OrderType, OHLCV, Order, Str, Trade, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, Dict, TransferEntries, OrderRequest } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class bitmart
|
|
5
5
|
* @augments Exchange
|
|
@@ -56,6 +56,7 @@ export default class bitmart extends Exchange {
|
|
|
56
56
|
parseOrderStatusByType(type: any, status: any): string;
|
|
57
57
|
createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
|
|
58
58
|
createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
|
|
59
|
+
createOrders(orders: OrderRequest[], params?: {}): Promise<Order[]>;
|
|
59
60
|
createSwapOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): any;
|
|
60
61
|
createSpotOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): any;
|
|
61
62
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
|
package/js/src/bitmart.js
CHANGED
|
@@ -43,6 +43,7 @@ export default class bitmart extends Exchange {
|
|
|
43
43
|
'createMarketOrderWithCost': false,
|
|
44
44
|
'createMarketSellOrderWithCost': false,
|
|
45
45
|
'createOrder': true,
|
|
46
|
+
'createOrders': true,
|
|
46
47
|
'createPostOnlyOrder': true,
|
|
47
48
|
'createStopLimitOrder': false,
|
|
48
49
|
'createStopMarketOrder': false,
|
|
@@ -227,6 +228,7 @@ export default class bitmart extends Exchange {
|
|
|
227
228
|
'spot/v4/query/trades': 5,
|
|
228
229
|
'spot/v4/query/order-trades': 5,
|
|
229
230
|
'spot/v4/cancel_orders': 3,
|
|
231
|
+
'spot/v4/batch_orders': 3,
|
|
230
232
|
// newer endpoint
|
|
231
233
|
'spot/v3/cancel_order': 1,
|
|
232
234
|
'spot/v2/batch_orders': 1,
|
|
@@ -2394,6 +2396,76 @@ export default class bitmart extends Exchange {
|
|
|
2394
2396
|
order['price'] = price;
|
|
2395
2397
|
return order;
|
|
2396
2398
|
}
|
|
2399
|
+
async createOrders(orders, params = {}) {
|
|
2400
|
+
/**
|
|
2401
|
+
* @method
|
|
2402
|
+
* @name bitmart#createOrders
|
|
2403
|
+
* @description create a list of trade orders
|
|
2404
|
+
* @see https://developer-pro.bitmart.com/en/spot/#new-batch-order-v4-signed
|
|
2405
|
+
* @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
|
|
2406
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2407
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2408
|
+
*/
|
|
2409
|
+
await this.loadMarkets();
|
|
2410
|
+
const ordersRequests = [];
|
|
2411
|
+
let symbol = undefined;
|
|
2412
|
+
let market = undefined;
|
|
2413
|
+
for (let i = 0; i < orders.length; i++) {
|
|
2414
|
+
const rawOrder = orders[i];
|
|
2415
|
+
const marketId = this.safeString(rawOrder, 'symbol');
|
|
2416
|
+
market = this.market(marketId);
|
|
2417
|
+
if (!market['spot']) {
|
|
2418
|
+
throw new NotSupported(this.id + ' createOrders() supports spot orders only');
|
|
2419
|
+
}
|
|
2420
|
+
if (symbol === undefined) {
|
|
2421
|
+
symbol = marketId;
|
|
2422
|
+
}
|
|
2423
|
+
else {
|
|
2424
|
+
if (symbol !== marketId) {
|
|
2425
|
+
throw new BadRequest(this.id + ' createOrders() requires all orders to have the same symbol');
|
|
2426
|
+
}
|
|
2427
|
+
}
|
|
2428
|
+
const type = this.safeString(rawOrder, 'type');
|
|
2429
|
+
const side = this.safeString(rawOrder, 'side');
|
|
2430
|
+
const amount = this.safeValue(rawOrder, 'amount');
|
|
2431
|
+
const price = this.safeValue(rawOrder, 'price');
|
|
2432
|
+
const orderParams = this.safeDict(rawOrder, 'params', {});
|
|
2433
|
+
let orderRequest = this.createSpotOrderRequest(marketId, type, side, amount, price, orderParams);
|
|
2434
|
+
orderRequest = this.omit(orderRequest, ['symbol']); // not needed because it goes in the outter object
|
|
2435
|
+
ordersRequests.push(orderRequest);
|
|
2436
|
+
}
|
|
2437
|
+
const request = {
|
|
2438
|
+
'symbol': market['id'],
|
|
2439
|
+
'orderParams': ordersRequests,
|
|
2440
|
+
};
|
|
2441
|
+
const response = await this.privatePostSpotV4BatchOrders(request);
|
|
2442
|
+
//
|
|
2443
|
+
// {
|
|
2444
|
+
// "message": "OK",
|
|
2445
|
+
// "code": 1000,
|
|
2446
|
+
// "trace": "5fc697fb817a4b5396284786a9b2609a.263.17022620476480263",
|
|
2447
|
+
// "data": {
|
|
2448
|
+
// "code": 0,
|
|
2449
|
+
// "msg": "success",
|
|
2450
|
+
// "data": {
|
|
2451
|
+
// "orderIds": [
|
|
2452
|
+
// "212751308355553320"
|
|
2453
|
+
// ]
|
|
2454
|
+
// }
|
|
2455
|
+
// }
|
|
2456
|
+
// }
|
|
2457
|
+
//
|
|
2458
|
+
const data = this.safeDict(response, 'data', {});
|
|
2459
|
+
const innderData = this.safeDict(data, 'data', {});
|
|
2460
|
+
const orderIds = this.safeList(innderData, 'orderIds', []);
|
|
2461
|
+
const parsedOrders = [];
|
|
2462
|
+
for (let i = 0; i < orderIds.length; i++) {
|
|
2463
|
+
const orderId = orderIds[i];
|
|
2464
|
+
const order = this.safeOrder({ 'id': orderId }, market);
|
|
2465
|
+
parsedOrders.push(order);
|
|
2466
|
+
}
|
|
2467
|
+
return parsedOrders;
|
|
2468
|
+
}
|
|
2397
2469
|
createSwapOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
|
|
2398
2470
|
/**
|
|
2399
2471
|
* @method
|
package/js/src/kucoin.js
CHANGED
|
@@ -430,6 +430,7 @@ export default class kucoin extends Exchange {
|
|
|
430
430
|
'The withdrawal amount is below the minimum requirement.': ExchangeError,
|
|
431
431
|
'Unsuccessful! Exceeded the max. funds out-transfer limit': InsufficientFunds,
|
|
432
432
|
'The amount increment is invalid.': BadRequest,
|
|
433
|
+
'The quantity is below the minimum requirement.': InvalidOrder,
|
|
433
434
|
'400': BadRequest,
|
|
434
435
|
'401': AuthenticationError,
|
|
435
436
|
'403': NotSupported,
|
package/js/src/pro/bitfinex.js
CHANGED
|
@@ -328,7 +328,7 @@ export default class bitfinex extends bitfinexRest {
|
|
|
328
328
|
const size = (delta2Value < 0) ? -delta2Value : delta2Value;
|
|
329
329
|
const side = (delta2Value < 0) ? 'asks' : 'bids';
|
|
330
330
|
const bookside = orderbook[side];
|
|
331
|
-
bookside.
|
|
331
|
+
bookside.storeArray([price, size, id]);
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
334
|
else {
|
|
@@ -339,7 +339,7 @@ export default class bitfinex extends bitfinexRest {
|
|
|
339
339
|
const size = (delta2 < 0) ? -delta2 : delta2;
|
|
340
340
|
const side = (delta2 < 0) ? 'asks' : 'bids';
|
|
341
341
|
const countedBookSide = orderbook[side];
|
|
342
|
-
countedBookSide.
|
|
342
|
+
countedBookSide.storeArray([delta[0], size, delta[1]]);
|
|
343
343
|
}
|
|
344
344
|
}
|
|
345
345
|
client.resolve(orderbook, messageHash);
|
|
@@ -355,14 +355,14 @@ export default class bitfinex extends bitfinexRest {
|
|
|
355
355
|
const bookside = orderbook[side];
|
|
356
356
|
// price = 0 means that you have to remove the order from your book
|
|
357
357
|
const amount = Precise.stringGt(price, '0') ? size : '0';
|
|
358
|
-
bookside.
|
|
358
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(amount), id]);
|
|
359
359
|
}
|
|
360
360
|
else {
|
|
361
361
|
const message3Value = message[3];
|
|
362
362
|
const size = (message3Value < 0) ? -message3Value : message3Value;
|
|
363
363
|
const side = (message3Value < 0) ? 'asks' : 'bids';
|
|
364
364
|
const countedBookSide = orderbook[side];
|
|
365
|
-
countedBookSide.
|
|
365
|
+
countedBookSide.storeArray([message[1], size, message[2]]);
|
|
366
366
|
}
|
|
367
367
|
client.resolve(orderbook, messageHash);
|
|
368
368
|
}
|
package/js/src/pro/bitfinex2.js
CHANGED
|
@@ -633,7 +633,7 @@ export default class bitfinex2 extends bitfinex2Rest {
|
|
|
633
633
|
// price = 0 means that you have to remove the order from your book
|
|
634
634
|
const amount = Precise.stringGt(price, '0') ? size : '0';
|
|
635
635
|
const idString = this.safeString(deltas, 0);
|
|
636
|
-
bookside.
|
|
636
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(amount), idString]);
|
|
637
637
|
}
|
|
638
638
|
else {
|
|
639
639
|
const amount = this.safeString(deltas, 2);
|
|
@@ -642,7 +642,7 @@ export default class bitfinex2 extends bitfinex2Rest {
|
|
|
642
642
|
const size = Precise.stringLt(amount, '0') ? Precise.stringNeg(amount) : amount;
|
|
643
643
|
const side = Precise.stringLt(amount, '0') ? 'asks' : 'bids';
|
|
644
644
|
const bookside = orderbookItem[side];
|
|
645
|
-
bookside.
|
|
645
|
+
bookside.storeArray([this.parseNumber(price), this.parseNumber(size), this.parseNumber(counter)]);
|
|
646
646
|
}
|
|
647
647
|
client.resolve(orderbook, messageHash);
|
|
648
648
|
}
|