ccxt 4.2.12 → 4.2.14
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.js +1338 -366
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/js/ccxt.js +1 -1
- package/dist/cjs/js/src/base/Exchange.js +148 -1
- package/dist/cjs/js/src/bigone.js +125 -54
- package/dist/cjs/js/src/binance.js +142 -27
- package/dist/cjs/js/src/binanceus.js +8 -0
- package/dist/cjs/js/src/bingx.js +110 -36
- package/dist/cjs/js/src/bitget.js +17 -6
- package/dist/cjs/js/src/bitmart.js +3 -3
- package/dist/cjs/js/src/bybit.js +5 -1
- package/dist/cjs/js/src/coinbase.js +176 -26
- package/dist/cjs/js/src/coinex.js +3 -0
- package/dist/cjs/js/src/coinlist.js +1 -1
- package/dist/cjs/js/src/coinone.js +1 -1
- package/dist/cjs/js/src/delta.js +7 -1
- package/dist/cjs/js/src/deribit.js +1 -1
- package/dist/cjs/js/src/gate.js +79 -56
- package/dist/cjs/js/src/gemini.js +1 -1
- package/dist/cjs/js/src/htx.js +151 -1
- package/dist/cjs/js/src/independentreserve.js +7 -5
- package/dist/cjs/js/src/kraken.js +22 -14
- package/dist/cjs/js/src/kucoin.js +5 -0
- package/dist/cjs/js/src/kucoinfutures.js +131 -77
- package/dist/cjs/js/src/lbank.js +59 -33
- package/dist/cjs/js/src/oceanex.js +1 -1
- package/dist/cjs/js/src/okx.js +11 -9
- package/dist/cjs/js/src/phemex.js +9 -2
- package/dist/cjs/js/src/pro/kraken.js +1 -1
- package/dist/cjs/js/src/pro/okx.js +52 -2
- package/dist/cjs/js/src/probit.js +4 -2
- package/dist/cjs/js/src/wavesexchange.js +1 -1
- package/dist/cjs/js/src/woo.js +56 -2
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bigone.d.ts +1 -0
- package/js/src/abstract/bingx.d.ts +2 -0
- package/js/src/abstract/kucoin.d.ts +4 -0
- package/js/src/abstract/kucoinfutures.d.ts +4 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/base/Exchange.d.ts +8 -0
- package/js/src/base/Exchange.js +148 -1
- package/js/src/bigone.d.ts +2 -0
- package/js/src/bigone.js +125 -54
- package/js/src/binance.d.ts +9 -0
- package/js/src/binance.js +142 -27
- package/js/src/binanceus.js +8 -0
- package/js/src/bingx.js +110 -36
- package/js/src/bitget.js +17 -6
- package/js/src/bitmart.js +3 -3
- package/js/src/bybit.js +5 -1
- package/js/src/coinbase.d.ts +26 -3
- package/js/src/coinbase.js +176 -26
- package/js/src/coinex.js +3 -0
- package/js/src/coinlist.js +1 -1
- package/js/src/coinone.js +1 -1
- package/js/src/delta.js +7 -1
- package/js/src/deribit.js +1 -1
- package/js/src/gate.js +79 -56
- package/js/src/gemini.js +1 -1
- package/js/src/htx.d.ts +10 -0
- package/js/src/htx.js +151 -1
- package/js/src/independentreserve.js +7 -5
- package/js/src/kraken.js +22 -14
- package/js/src/kucoin.js +5 -0
- package/js/src/kucoinfutures.d.ts +4 -2
- package/js/src/kucoinfutures.js +131 -77
- package/js/src/lbank.js +59 -33
- package/js/src/oceanex.js +1 -1
- package/js/src/okx.js +11 -9
- package/js/src/phemex.js +9 -2
- package/js/src/pro/kraken.js +1 -1
- package/js/src/pro/okx.d.ts +1 -0
- package/js/src/pro/okx.js +52 -2
- package/js/src/probit.js +4 -2
- package/js/src/wavesexchange.js +1 -1
- package/js/src/woo.d.ts +2 -0
- package/js/src/woo.js +56 -2
- package/package.json +1 -1
package/dist/cjs/js/src/lbank.js
CHANGED
|
@@ -929,13 +929,17 @@ class lbank extends lbank$1 {
|
|
|
929
929
|
else {
|
|
930
930
|
request['size'] = 600; // max
|
|
931
931
|
}
|
|
932
|
-
|
|
932
|
+
const options = this.safeValue(this.options, 'fetchTrades', {});
|
|
933
|
+
const defaultMethod = this.safeString(options, 'method', 'spotPublicGetTrades');
|
|
934
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
933
935
|
params = this.omit(params, 'method');
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
936
|
+
let response = undefined;
|
|
937
|
+
if (method === 'spotPublicGetSupplementTrades') {
|
|
938
|
+
response = await this.spotPublicGetSupplementTrades(this.extend(request, params));
|
|
939
|
+
}
|
|
940
|
+
else {
|
|
941
|
+
response = await this.spotPublicGetTrades(this.extend(request, params));
|
|
937
942
|
}
|
|
938
|
-
const response = await this[method](this.extend(request, params));
|
|
939
943
|
//
|
|
940
944
|
// {
|
|
941
945
|
// "result":"true",
|
|
@@ -1172,12 +1176,19 @@ class lbank extends lbank$1 {
|
|
|
1172
1176
|
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
1173
1177
|
*/
|
|
1174
1178
|
await this.loadMarkets();
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
+
const options = this.safeValue(this.options, 'fetchBalance', {});
|
|
1180
|
+
const defaultMethod = this.safeString(options, 'method', 'spotPrivatePostSupplementUserInfo');
|
|
1181
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
1182
|
+
let response = undefined;
|
|
1183
|
+
if (method === 'spotPrivatePostSupplementUserInfoAccount') {
|
|
1184
|
+
response = await this.spotPrivatePostSupplementUserInfoAccount();
|
|
1185
|
+
}
|
|
1186
|
+
else if (method === 'spotPrivatePostUserInfo') {
|
|
1187
|
+
response = await this.spotPrivatePostUserInfo();
|
|
1188
|
+
}
|
|
1189
|
+
else {
|
|
1190
|
+
response = await this.spotPrivatePostSupplementUserInfo();
|
|
1179
1191
|
}
|
|
1180
|
-
const response = await this[method]();
|
|
1181
1192
|
//
|
|
1182
1193
|
// {
|
|
1183
1194
|
// "result": "true",
|
|
@@ -1362,14 +1373,17 @@ class lbank extends lbank$1 {
|
|
|
1362
1373
|
if (clientOrderId !== undefined) {
|
|
1363
1374
|
request['custom_id'] = clientOrderId;
|
|
1364
1375
|
}
|
|
1365
|
-
|
|
1366
|
-
|
|
1376
|
+
const options = this.safeValue(this.options, 'createOrder', {});
|
|
1377
|
+
const defaultMethod = this.safeString(options, 'method', 'spotPrivatePostSupplementCreateOrder');
|
|
1378
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
1367
1379
|
params = this.omit(params, 'method');
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1380
|
+
let response = undefined;
|
|
1381
|
+
if (method === 'spotPrivatePostCreateOrder') {
|
|
1382
|
+
response = await this.spotPrivatePostCreateOrder(this.extend(request, params));
|
|
1383
|
+
}
|
|
1384
|
+
else {
|
|
1385
|
+
response = await this.spotPrivatePostSupplementCreateOrder(this.extend(request, params));
|
|
1371
1386
|
}
|
|
1372
|
-
const response = await this[method](this.extend(request, params));
|
|
1373
1387
|
//
|
|
1374
1388
|
// {
|
|
1375
1389
|
// "result":true,
|
|
@@ -1904,13 +1918,18 @@ class lbank extends lbank$1 {
|
|
|
1904
1918
|
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
1905
1919
|
*/
|
|
1906
1920
|
await this.loadMarkets();
|
|
1907
|
-
|
|
1921
|
+
const options = this.safeValue(this.options, 'fetchDepositAddress', {});
|
|
1922
|
+
const defaultMethod = this.safeString(options, 'method', 'fetchDepositAddressDefault');
|
|
1923
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
1908
1924
|
params = this.omit(params, 'method');
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1925
|
+
let response = undefined;
|
|
1926
|
+
if (method === 'fetchDepositAddressSupplement') {
|
|
1927
|
+
response = await this.fetchDepositAddressSupplement(code, params);
|
|
1912
1928
|
}
|
|
1913
|
-
|
|
1929
|
+
else {
|
|
1930
|
+
response = await this.fetchDepositAddressDefault(code, params);
|
|
1931
|
+
}
|
|
1932
|
+
return response;
|
|
1914
1933
|
}
|
|
1915
1934
|
async fetchDepositAddressDefault(code, params = {}) {
|
|
1916
1935
|
await this.loadMarkets();
|
|
@@ -2282,13 +2301,16 @@ class lbank extends lbank$1 {
|
|
|
2282
2301
|
const isAuthorized = this.checkRequiredCredentials(false);
|
|
2283
2302
|
let result = undefined;
|
|
2284
2303
|
if (isAuthorized === true) {
|
|
2285
|
-
|
|
2304
|
+
const options = this.safeValue(this.options, 'fetchTransactionFees', {});
|
|
2305
|
+
const defaultMethod = this.safeString(options, 'method', 'fetchPrivateTransactionFees');
|
|
2306
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
2286
2307
|
params = this.omit(params, 'method');
|
|
2287
|
-
if (method ===
|
|
2288
|
-
|
|
2289
|
-
|
|
2308
|
+
if (method === 'fetchPublicTransactionFees') {
|
|
2309
|
+
result = await this.fetchPublicTransactionFees(params);
|
|
2310
|
+
}
|
|
2311
|
+
else {
|
|
2312
|
+
result = await this.fetchPrivateTransactionFees(params);
|
|
2290
2313
|
}
|
|
2291
|
-
result = await this[method](params);
|
|
2292
2314
|
}
|
|
2293
2315
|
else {
|
|
2294
2316
|
result = await this.fetchPublicTransactionFees(params);
|
|
@@ -2426,19 +2448,23 @@ class lbank extends lbank$1 {
|
|
|
2426
2448
|
*/
|
|
2427
2449
|
await this.loadMarkets();
|
|
2428
2450
|
const isAuthorized = this.checkRequiredCredentials(false);
|
|
2429
|
-
|
|
2451
|
+
const response = undefined;
|
|
2430
2452
|
if (isAuthorized === true) {
|
|
2431
|
-
|
|
2453
|
+
const options = this.safeValue(this.options, 'fetchDepositWithdrawFees', {});
|
|
2454
|
+
const defaultMethod = this.safeString(options, 'method', 'fetchPrivateDepositWithdrawFees');
|
|
2455
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
2432
2456
|
params = this.omit(params, 'method');
|
|
2433
|
-
if (method ===
|
|
2434
|
-
|
|
2435
|
-
|
|
2457
|
+
if (method === 'fetchPublicDepositWithdrawFees') {
|
|
2458
|
+
await this.fetchPublicDepositWithdrawFees(codes, params);
|
|
2459
|
+
}
|
|
2460
|
+
else {
|
|
2461
|
+
await this.fetchPrivateDepositWithdrawFees(codes, params);
|
|
2436
2462
|
}
|
|
2437
2463
|
}
|
|
2438
2464
|
else {
|
|
2439
|
-
|
|
2465
|
+
await this.fetchPublicDepositWithdrawFees(codes, params);
|
|
2440
2466
|
}
|
|
2441
|
-
return
|
|
2467
|
+
return response;
|
|
2442
2468
|
}
|
|
2443
2469
|
async fetchPrivateDepositWithdrawFees(codes = undefined, params = {}) {
|
|
2444
2470
|
// complete response
|
|
@@ -472,7 +472,7 @@ class oceanex extends oceanex$1 {
|
|
|
472
472
|
'market': market['id'],
|
|
473
473
|
};
|
|
474
474
|
if (limit !== undefined) {
|
|
475
|
-
request['limit'] = limit;
|
|
475
|
+
request['limit'] = Math.min(limit, 1000);
|
|
476
476
|
}
|
|
477
477
|
const response = await this.publicGetTrades(this.extend(request, params));
|
|
478
478
|
//
|
package/dist/cjs/js/src/okx.js
CHANGED
|
@@ -38,14 +38,18 @@ class okx extends okx$1 {
|
|
|
38
38
|
'createDepositAddress': false,
|
|
39
39
|
'createMarketBuyOrderWithCost': true,
|
|
40
40
|
'createMarketSellOrderWithCost': true,
|
|
41
|
-
'createTrailingPercentOrder': true,
|
|
42
41
|
'createOrder': true,
|
|
43
42
|
'createOrders': true,
|
|
43
|
+
'createOrderWithTakeProfitAndStopLoss': true,
|
|
44
44
|
'createPostOnlyOrder': true,
|
|
45
45
|
'createReduceOnlyOrder': true,
|
|
46
|
+
'createStopLossOrder': true,
|
|
46
47
|
'createStopLimitOrder': true,
|
|
47
48
|
'createStopMarketOrder': true,
|
|
48
49
|
'createStopOrder': true,
|
|
50
|
+
'createTakeProfitOrder': true,
|
|
51
|
+
'createTrailingPercentOrder': true,
|
|
52
|
+
'createTriggerOrder': true,
|
|
49
53
|
'editOrder': true,
|
|
50
54
|
'fetchAccounts': true,
|
|
51
55
|
'fetchBalance': true,
|
|
@@ -259,6 +263,7 @@ class okx extends okx$1 {
|
|
|
259
263
|
'sprd/order': 1 / 3,
|
|
260
264
|
'sprd/orders-pending': 1 / 3,
|
|
261
265
|
'sprd/orders-history': 1 / 2,
|
|
266
|
+
'sprd/orders-history-archive': 1 / 2,
|
|
262
267
|
'sprd/trades': 1 / 3,
|
|
263
268
|
// trade
|
|
264
269
|
'trade/order': 1 / 3,
|
|
@@ -2132,17 +2137,14 @@ class okx extends okx$1 {
|
|
|
2132
2137
|
let defaultType = 'Candles';
|
|
2133
2138
|
if (since !== undefined) {
|
|
2134
2139
|
const now = this.milliseconds();
|
|
2135
|
-
const difference = now - since;
|
|
2136
2140
|
const durationInMilliseconds = duration * 1000;
|
|
2137
|
-
//
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
if (difference > calc) {
|
|
2141
|
+
// switch to history candles if since is past the cutoff for current candles
|
|
2142
|
+
const historyBorder = now - ((1440 - 1) * durationInMilliseconds);
|
|
2143
|
+
if (since < historyBorder) {
|
|
2141
2144
|
defaultType = 'HistoryCandles';
|
|
2142
2145
|
}
|
|
2143
|
-
|
|
2144
|
-
request['
|
|
2145
|
-
request['after'] = this.sum(startTime, durationInMilliseconds * limit);
|
|
2146
|
+
request['before'] = since;
|
|
2147
|
+
request['after'] = this.sum(since, durationInMilliseconds * limit);
|
|
2146
2148
|
}
|
|
2147
2149
|
const until = this.safeInteger(params, 'until');
|
|
2148
2150
|
if (until !== undefined) {
|
|
@@ -452,7 +452,7 @@ class phemex extends phemex$1 {
|
|
|
452
452
|
},
|
|
453
453
|
},
|
|
454
454
|
'options': {
|
|
455
|
-
'brokerId': '
|
|
455
|
+
'brokerId': 'CCXT123456',
|
|
456
456
|
'x-phemex-request-expiry': 60,
|
|
457
457
|
'createOrderByQuoteRequiresPrice': true,
|
|
458
458
|
'networks': {
|
|
@@ -2477,7 +2477,7 @@ class phemex extends phemex$1 {
|
|
|
2477
2477
|
const takeProfit = this.safeValue(params, 'takeProfit');
|
|
2478
2478
|
const takeProfitDefined = (takeProfit !== undefined);
|
|
2479
2479
|
if (clientOrderId === undefined) {
|
|
2480
|
-
const brokerId = this.safeString(this.options, 'brokerId');
|
|
2480
|
+
const brokerId = this.safeString(this.options, 'brokerId', 'CCXT123456');
|
|
2481
2481
|
if (brokerId !== undefined) {
|
|
2482
2482
|
request['clOrdID'] = brokerId + this.uuid16();
|
|
2483
2483
|
}
|
|
@@ -4273,6 +4273,13 @@ class phemex extends phemex$1 {
|
|
|
4273
4273
|
};
|
|
4274
4274
|
let payload = '';
|
|
4275
4275
|
if (method === 'POST') {
|
|
4276
|
+
const isOrderPlacement = (path === 'g-orders') || (path === 'spot/orders') || (path === 'orders');
|
|
4277
|
+
if (isOrderPlacement) {
|
|
4278
|
+
if (this.safeString(params, 'clOrdID') === undefined) {
|
|
4279
|
+
const id = this.safeString(this.options, 'brokerId', 'CCXT123456');
|
|
4280
|
+
params['clOrdID'] = id + this.uuid16();
|
|
4281
|
+
}
|
|
4282
|
+
}
|
|
4276
4283
|
payload = this.json(params);
|
|
4277
4284
|
body = payload;
|
|
4278
4285
|
headers['Content-Type'] = 'application/json';
|
|
@@ -542,7 +542,7 @@ class kraken extends kraken$1 {
|
|
|
542
542
|
],
|
|
543
543
|
'subscription': {
|
|
544
544
|
'name': name,
|
|
545
|
-
'interval': this.
|
|
545
|
+
'interval': this.safeValue(this.timeframes, timeframe, timeframe),
|
|
546
546
|
},
|
|
547
547
|
};
|
|
548
548
|
const request = this.deepExtend(subscribe, params);
|
|
@@ -20,6 +20,7 @@ class okx extends okx$1 {
|
|
|
20
20
|
'watchOrderBookForSymbols': true,
|
|
21
21
|
'watchBalance': true,
|
|
22
22
|
'watchOHLCV': true,
|
|
23
|
+
'watchOHLCVForSymbols': true,
|
|
23
24
|
'watchOrders': true,
|
|
24
25
|
'watchMyTrades': true,
|
|
25
26
|
'watchPositions': true,
|
|
@@ -356,6 +357,50 @@ class okx extends okx$1 {
|
|
|
356
357
|
}
|
|
357
358
|
return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
|
|
358
359
|
}
|
|
360
|
+
async watchOHLCVForSymbols(symbolsAndTimeframes, since = undefined, limit = undefined, params = {}) {
|
|
361
|
+
/**
|
|
362
|
+
* @method
|
|
363
|
+
* @name okx#watchOHLCVForSymbols
|
|
364
|
+
* @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
365
|
+
* @param {string[][]} symbolsAndTimeframes array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
|
|
366
|
+
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
367
|
+
* @param {int} [limit] the maximum amount of candles to fetch
|
|
368
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
369
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
370
|
+
*/
|
|
371
|
+
const symbolsLength = symbolsAndTimeframes.length;
|
|
372
|
+
if (symbolsLength === 0 || !Array.isArray(symbolsAndTimeframes[0])) {
|
|
373
|
+
throw new errors.ArgumentsRequired(this.id + " watchOHLCVForSymbols() requires a an array of symbols and timeframes, like [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]");
|
|
374
|
+
}
|
|
375
|
+
await this.loadMarkets();
|
|
376
|
+
const topics = [];
|
|
377
|
+
const messageHashes = [];
|
|
378
|
+
for (let i = 0; i < symbolsAndTimeframes.length; i++) {
|
|
379
|
+
const symbolAndTimeframe = symbolsAndTimeframes[i];
|
|
380
|
+
const sym = symbolAndTimeframe[0];
|
|
381
|
+
const tf = symbolAndTimeframe[1];
|
|
382
|
+
const marketId = this.marketId(sym);
|
|
383
|
+
const interval = this.safeString(this.timeframes, tf, tf);
|
|
384
|
+
const channel = 'candle' + interval;
|
|
385
|
+
const topic = {
|
|
386
|
+
'channel': channel,
|
|
387
|
+
'instId': marketId,
|
|
388
|
+
};
|
|
389
|
+
topics.push(topic);
|
|
390
|
+
messageHashes.push('multi:' + channel + ':' + sym);
|
|
391
|
+
}
|
|
392
|
+
const request = {
|
|
393
|
+
'op': 'subscribe',
|
|
394
|
+
'args': topics,
|
|
395
|
+
};
|
|
396
|
+
const url = this.getUrl('candle', 'public');
|
|
397
|
+
const [symbol, timeframe, candles] = await this.watchMultiple(url, messageHashes, request, messageHashes);
|
|
398
|
+
if (this.newUpdates) {
|
|
399
|
+
limit = candles.getLimit(symbol, limit);
|
|
400
|
+
}
|
|
401
|
+
const filtered = this.filterBySinceLimit(candles, since, limit, 0, true);
|
|
402
|
+
return this.createOHLCVObject(symbol, timeframe, filtered);
|
|
403
|
+
}
|
|
359
404
|
handleOHLCV(client, message) {
|
|
360
405
|
//
|
|
361
406
|
// {
|
|
@@ -378,7 +423,7 @@ class okx extends okx$1 {
|
|
|
378
423
|
const data = this.safeValue(message, 'data', []);
|
|
379
424
|
const marketId = this.safeString(arg, 'instId');
|
|
380
425
|
const market = this.safeMarket(marketId);
|
|
381
|
-
const symbol = market['
|
|
426
|
+
const symbol = market['symbol'];
|
|
382
427
|
const interval = channel.replace('candle', '');
|
|
383
428
|
// use a reverse lookup in a static map instead
|
|
384
429
|
const timeframe = this.findTimeframe(interval);
|
|
@@ -392,8 +437,13 @@ class okx extends okx$1 {
|
|
|
392
437
|
this.ohlcvs[symbol][timeframe] = stored;
|
|
393
438
|
}
|
|
394
439
|
stored.append(parsed);
|
|
395
|
-
const messageHash = channel + ':' +
|
|
440
|
+
const messageHash = channel + ':' + market['id'];
|
|
396
441
|
client.resolve(stored, messageHash);
|
|
442
|
+
// for multiOHLCV we need special object, as opposed to other "multi"
|
|
443
|
+
// methods, because OHLCV response item does not contain symbol
|
|
444
|
+
// or timeframe, thus otherwise it would be unrecognizable
|
|
445
|
+
const messageHashForMulti = 'multi:' + channel + ':' + symbol;
|
|
446
|
+
client.resolve([symbol, timeframe, stored], messageHashForMulti);
|
|
397
447
|
}
|
|
398
448
|
}
|
|
399
449
|
async watchOrderBook(symbol, limit = undefined, params = {}) {
|
|
@@ -776,7 +776,6 @@ class probit extends probit$1 {
|
|
|
776
776
|
const market = this.market(symbol);
|
|
777
777
|
const request = {
|
|
778
778
|
'market_id': market['id'],
|
|
779
|
-
'limit': 100,
|
|
780
779
|
'start_time': '1970-01-01T00:00:00.000Z',
|
|
781
780
|
'end_time': this.iso8601(this.milliseconds()),
|
|
782
781
|
};
|
|
@@ -784,7 +783,10 @@ class probit extends probit$1 {
|
|
|
784
783
|
request['start_time'] = this.iso8601(since);
|
|
785
784
|
}
|
|
786
785
|
if (limit !== undefined) {
|
|
787
|
-
request['limit'] = Math.min(limit,
|
|
786
|
+
request['limit'] = Math.min(limit, 1000);
|
|
787
|
+
}
|
|
788
|
+
else {
|
|
789
|
+
request['limit'] = 1000; // required to set any value
|
|
788
790
|
}
|
|
789
791
|
const response = await this.publicGetTrade(this.extend(request, params));
|
|
790
792
|
//
|
|
@@ -2092,7 +2092,7 @@ class wavesexchange extends wavesexchange$1 {
|
|
|
2092
2092
|
'priceAsset': market['quoteId'],
|
|
2093
2093
|
};
|
|
2094
2094
|
if (limit !== undefined) {
|
|
2095
|
-
request['limit'] = limit;
|
|
2095
|
+
request['limit'] = Math.min(limit, 100);
|
|
2096
2096
|
}
|
|
2097
2097
|
if (since !== undefined) {
|
|
2098
2098
|
request['timeStart'] = since;
|
package/dist/cjs/js/src/woo.js
CHANGED
|
@@ -41,13 +41,17 @@ class woo extends woo$1 {
|
|
|
41
41
|
'createMarketOrder': false,
|
|
42
42
|
'createMarketOrderWithCost': false,
|
|
43
43
|
'createMarketSellOrderWithCost': false,
|
|
44
|
-
'createTrailingAmountOrder': true,
|
|
45
|
-
'createTrailingPercentOrder': true,
|
|
46
44
|
'createOrder': true,
|
|
47
45
|
'createReduceOnlyOrder': true,
|
|
48
46
|
'createStopLimitOrder': false,
|
|
49
47
|
'createStopMarketOrder': false,
|
|
50
48
|
'createStopOrder': false,
|
|
49
|
+
'createTrailingAmountOrder': true,
|
|
50
|
+
'createTrailingPercentOrder': true,
|
|
51
|
+
'createTriggerOrder': true,
|
|
52
|
+
'createTakeProfitOrder': true,
|
|
53
|
+
'createStopLossOrder': true,
|
|
54
|
+
'createOrderWithTakeProfitAndStopLoss': true,
|
|
51
55
|
'fetchAccounts': true,
|
|
52
56
|
'fetchBalance': true,
|
|
53
57
|
'fetchCanceledOrders': false,
|
|
@@ -763,6 +767,56 @@ class woo extends woo$1 {
|
|
|
763
767
|
params['createMarketBuyOrderRequiresPrice'] = false;
|
|
764
768
|
return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
|
|
765
769
|
}
|
|
770
|
+
async createTrailingAmountOrder(symbol, type, side, amount, price = undefined, trailingAmount = undefined, trailingTriggerPrice = undefined, params = {}) {
|
|
771
|
+
/**
|
|
772
|
+
* @method
|
|
773
|
+
* @name woo#createTrailingAmountOrder
|
|
774
|
+
* @description create a trailing order by providing the symbol, type, side, amount, price and trailingAmount
|
|
775
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
776
|
+
* @param {string} type 'market' or 'limit'
|
|
777
|
+
* @param {string} side 'buy' or 'sell'
|
|
778
|
+
* @param {float} amount how much you want to trade in units of the base currency, or number of contracts
|
|
779
|
+
* @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
|
|
780
|
+
* @param {float} trailingAmount the quote amount to trail away from the current market price
|
|
781
|
+
* @param {float} trailingTriggerPrice the price to activate a trailing order, default uses the price argument
|
|
782
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
783
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
784
|
+
*/
|
|
785
|
+
if (trailingAmount === undefined) {
|
|
786
|
+
throw new errors.ArgumentsRequired(this.id + ' createTrailingAmountOrder() requires a trailingAmount argument');
|
|
787
|
+
}
|
|
788
|
+
if (trailingTriggerPrice === undefined) {
|
|
789
|
+
throw new errors.ArgumentsRequired(this.id + ' createTrailingAmountOrder() requires a trailingTriggerPrice argument');
|
|
790
|
+
}
|
|
791
|
+
params['trailingAmount'] = trailingAmount;
|
|
792
|
+
params['trailingTriggerPrice'] = trailingTriggerPrice;
|
|
793
|
+
return await this.createOrder(symbol, type, side, amount, price, params);
|
|
794
|
+
}
|
|
795
|
+
async createTrailingPercentOrder(symbol, type, side, amount, price = undefined, trailingPercent = undefined, trailingTriggerPrice = undefined, params = {}) {
|
|
796
|
+
/**
|
|
797
|
+
* @method
|
|
798
|
+
* @name woo#createTrailingPercentOrder
|
|
799
|
+
* @description create a trailing order by providing the symbol, type, side, amount, price and trailingPercent
|
|
800
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
801
|
+
* @param {string} type 'market' or 'limit'
|
|
802
|
+
* @param {string} side 'buy' or 'sell'
|
|
803
|
+
* @param {float} amount how much you want to trade in units of the base currency, or number of contracts
|
|
804
|
+
* @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
|
|
805
|
+
* @param {float} trailingPercent the percent to trail away from the current market price
|
|
806
|
+
* @param {float} trailingTriggerPrice the price to activate a trailing order, default uses the price argument
|
|
807
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
808
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
809
|
+
*/
|
|
810
|
+
if (trailingPercent === undefined) {
|
|
811
|
+
throw new errors.ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingPercent argument');
|
|
812
|
+
}
|
|
813
|
+
if (trailingTriggerPrice === undefined) {
|
|
814
|
+
throw new errors.ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingTriggerPrice argument');
|
|
815
|
+
}
|
|
816
|
+
params['trailingPercent'] = trailingPercent;
|
|
817
|
+
params['trailingTriggerPrice'] = trailingTriggerPrice;
|
|
818
|
+
return await this.createOrder(symbol, type, side, amount, price, params);
|
|
819
|
+
}
|
|
766
820
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
767
821
|
/**
|
|
768
822
|
* @method
|
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 } from './src/base/types.js';
|
|
6
6
|
import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
|
|
7
|
-
declare const version = "4.2.
|
|
7
|
+
declare const version = "4.2.13";
|
|
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, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
|
|
39
39
|
//-----------------------------------------------------------------------------
|
|
40
40
|
// this is updated by vss.js when building
|
|
41
|
-
const version = '4.2.
|
|
41
|
+
const version = '4.2.14';
|
|
42
42
|
Exchange.ccxtVersion = version;
|
|
43
43
|
//-----------------------------------------------------------------------------
|
|
44
44
|
import ace from './src/ace.js';
|
|
@@ -22,6 +22,7 @@ interface Exchange {
|
|
|
22
22
|
privatePostOrdersCancel(params?: {}): Promise<implicitReturnType>;
|
|
23
23
|
privatePostWithdrawals(params?: {}): Promise<implicitReturnType>;
|
|
24
24
|
privatePostTransfer(params?: {}): Promise<implicitReturnType>;
|
|
25
|
+
contractPublicGetSymbols(params?: {}): Promise<implicitReturnType>;
|
|
25
26
|
contractPublicGetInstruments(params?: {}): Promise<implicitReturnType>;
|
|
26
27
|
contractPublicGetDepthSymbolSnapshot(params?: {}): Promise<implicitReturnType>;
|
|
27
28
|
contractPublicGetInstrumentsDifference(params?: {}): Promise<implicitReturnType>;
|
|
@@ -9,6 +9,7 @@ interface Exchange {
|
|
|
9
9
|
spotV1PrivateGetTradeQuery(params?: {}): Promise<implicitReturnType>;
|
|
10
10
|
spotV1PrivateGetTradeOpenOrders(params?: {}): Promise<implicitReturnType>;
|
|
11
11
|
spotV1PrivateGetTradeHistoryOrders(params?: {}): Promise<implicitReturnType>;
|
|
12
|
+
spotV1PrivateGetTradeMyTrades(params?: {}): Promise<implicitReturnType>;
|
|
12
13
|
spotV1PrivateGetUserCommissionRate(params?: {}): Promise<implicitReturnType>;
|
|
13
14
|
spotV1PrivateGetAccountBalance(params?: {}): Promise<implicitReturnType>;
|
|
14
15
|
spotV1PrivatePostTradeOrder(params?: {}): Promise<implicitReturnType>;
|
|
@@ -38,6 +39,7 @@ interface Exchange {
|
|
|
38
39
|
swapV2PrivateGetUserPositions(params?: {}): Promise<implicitReturnType>;
|
|
39
40
|
swapV2PrivateGetUserIncome(params?: {}): Promise<implicitReturnType>;
|
|
40
41
|
swapV2PrivateGetTradeOpenOrders(params?: {}): Promise<implicitReturnType>;
|
|
42
|
+
swapV2PrivateGetTradeOpenOrder(params?: {}): Promise<implicitReturnType>;
|
|
41
43
|
swapV2PrivateGetTradeOrder(params?: {}): Promise<implicitReturnType>;
|
|
42
44
|
swapV2PrivateGetTradeMarginType(params?: {}): Promise<implicitReturnType>;
|
|
43
45
|
swapV2PrivateGetTradeLeverage(params?: {}): Promise<implicitReturnType>;
|
|
@@ -149,6 +149,7 @@ interface Exchange {
|
|
|
149
149
|
futuresPublicGetPremiumQuery(params?: {}): Promise<implicitReturnType>;
|
|
150
150
|
futuresPublicGetTradeStatistics(params?: {}): Promise<implicitReturnType>;
|
|
151
151
|
futuresPublicGetFundingRateSymbolCurrent(params?: {}): Promise<implicitReturnType>;
|
|
152
|
+
futuresPublicGetContractFundingRates(params?: {}): Promise<implicitReturnType>;
|
|
152
153
|
futuresPublicGetTimestamp(params?: {}): Promise<implicitReturnType>;
|
|
153
154
|
futuresPublicGetStatus(params?: {}): Promise<implicitReturnType>;
|
|
154
155
|
futuresPublicGetLevel2MessageQuery(params?: {}): Promise<implicitReturnType>;
|
|
@@ -167,13 +168,16 @@ interface Exchange {
|
|
|
167
168
|
futuresPrivateGetOpenOrderStatistics(params?: {}): Promise<implicitReturnType>;
|
|
168
169
|
futuresPrivateGetPosition(params?: {}): Promise<implicitReturnType>;
|
|
169
170
|
futuresPrivateGetPositions(params?: {}): Promise<implicitReturnType>;
|
|
171
|
+
futuresPrivateGetMarginMaxWithdrawMargin(params?: {}): Promise<implicitReturnType>;
|
|
170
172
|
futuresPrivateGetContractsRiskLimitSymbol(params?: {}): Promise<implicitReturnType>;
|
|
171
173
|
futuresPrivateGetFundingHistory(params?: {}): Promise<implicitReturnType>;
|
|
172
174
|
futuresPrivatePostTransferOut(params?: {}): Promise<implicitReturnType>;
|
|
173
175
|
futuresPrivatePostTransferIn(params?: {}): Promise<implicitReturnType>;
|
|
174
176
|
futuresPrivatePostOrders(params?: {}): Promise<implicitReturnType>;
|
|
175
177
|
futuresPrivatePostOrdersTest(params?: {}): Promise<implicitReturnType>;
|
|
178
|
+
futuresPrivatePostOrdersMulti(params?: {}): Promise<implicitReturnType>;
|
|
176
179
|
futuresPrivatePostPositionMarginAutoDepositStatus(params?: {}): Promise<implicitReturnType>;
|
|
180
|
+
futuresPrivatePostMarginWithdrawMargin(params?: {}): Promise<implicitReturnType>;
|
|
177
181
|
futuresPrivatePostPositionMarginDepositMargin(params?: {}): Promise<implicitReturnType>;
|
|
178
182
|
futuresPrivatePostPositionRiskLimitLevelChange(params?: {}): Promise<implicitReturnType>;
|
|
179
183
|
futuresPrivatePostBulletPrivate(params?: {}): Promise<implicitReturnType>;
|
|
@@ -149,6 +149,7 @@ interface kucoin {
|
|
|
149
149
|
futuresPublicGetPremiumQuery(params?: {}): Promise<implicitReturnType>;
|
|
150
150
|
futuresPublicGetTradeStatistics(params?: {}): Promise<implicitReturnType>;
|
|
151
151
|
futuresPublicGetFundingRateSymbolCurrent(params?: {}): Promise<implicitReturnType>;
|
|
152
|
+
futuresPublicGetContractFundingRates(params?: {}): Promise<implicitReturnType>;
|
|
152
153
|
futuresPublicGetTimestamp(params?: {}): Promise<implicitReturnType>;
|
|
153
154
|
futuresPublicGetStatus(params?: {}): Promise<implicitReturnType>;
|
|
154
155
|
futuresPublicGetLevel2MessageQuery(params?: {}): Promise<implicitReturnType>;
|
|
@@ -171,6 +172,7 @@ interface kucoin {
|
|
|
171
172
|
futuresPrivateGetOpenOrderStatistics(params?: {}): Promise<implicitReturnType>;
|
|
172
173
|
futuresPrivateGetPosition(params?: {}): Promise<implicitReturnType>;
|
|
173
174
|
futuresPrivateGetPositions(params?: {}): Promise<implicitReturnType>;
|
|
175
|
+
futuresPrivateGetMarginMaxWithdrawMargin(params?: {}): Promise<implicitReturnType>;
|
|
174
176
|
futuresPrivateGetContractsRiskLimitSymbol(params?: {}): Promise<implicitReturnType>;
|
|
175
177
|
futuresPrivateGetFundingHistory(params?: {}): Promise<implicitReturnType>;
|
|
176
178
|
futuresPrivateGetDepositAddress(params?: {}): Promise<implicitReturnType>;
|
|
@@ -183,7 +185,9 @@ interface kucoin {
|
|
|
183
185
|
futuresPrivatePostTransferIn(params?: {}): Promise<implicitReturnType>;
|
|
184
186
|
futuresPrivatePostOrders(params?: {}): Promise<implicitReturnType>;
|
|
185
187
|
futuresPrivatePostOrdersTest(params?: {}): Promise<implicitReturnType>;
|
|
188
|
+
futuresPrivatePostOrdersMulti(params?: {}): Promise<implicitReturnType>;
|
|
186
189
|
futuresPrivatePostPositionMarginAutoDepositStatus(params?: {}): Promise<implicitReturnType>;
|
|
190
|
+
futuresPrivatePostMarginWithdrawMargin(params?: {}): Promise<implicitReturnType>;
|
|
187
191
|
futuresPrivatePostPositionMarginDepositMargin(params?: {}): Promise<implicitReturnType>;
|
|
188
192
|
futuresPrivatePostPositionRiskLimitLevelChange(params?: {}): Promise<implicitReturnType>;
|
|
189
193
|
futuresPrivatePostBulletPrivate(params?: {}): Promise<implicitReturnType>;
|
package/js/src/abstract/okx.d.ts
CHANGED
|
@@ -81,6 +81,7 @@ interface Exchange {
|
|
|
81
81
|
privateGetSprdOrder(params?: {}): Promise<implicitReturnType>;
|
|
82
82
|
privateGetSprdOrdersPending(params?: {}): Promise<implicitReturnType>;
|
|
83
83
|
privateGetSprdOrdersHistory(params?: {}): Promise<implicitReturnType>;
|
|
84
|
+
privateGetSprdOrdersHistoryArchive(params?: {}): Promise<implicitReturnType>;
|
|
84
85
|
privateGetSprdTrades(params?: {}): Promise<implicitReturnType>;
|
|
85
86
|
privateGetTradeOrder(params?: {}): Promise<implicitReturnType>;
|
|
86
87
|
privateGetTradeOrdersPending(params?: {}): Promise<implicitReturnType>;
|
|
@@ -303,13 +303,17 @@ export default class Exchange {
|
|
|
303
303
|
createMarketOrderWithCost: any;
|
|
304
304
|
createMarketSellOrderWithCost: any;
|
|
305
305
|
createOrders: any;
|
|
306
|
+
createOrderWithTakeProfitAndStopLoss: any;
|
|
306
307
|
createPostOnlyOrder: any;
|
|
307
308
|
createReduceOnlyOrder: any;
|
|
309
|
+
createStopLossOrder: any;
|
|
308
310
|
createStopOrder: any;
|
|
309
311
|
createStopLimitOrder: any;
|
|
310
312
|
createStopMarketOrder: any;
|
|
313
|
+
createTakeProfitOrder: any;
|
|
311
314
|
createTrailingAmountOrder: any;
|
|
312
315
|
createTrailingPercentOrder: any;
|
|
316
|
+
createTriggerOrder: any;
|
|
313
317
|
createOrderWs: any;
|
|
314
318
|
editOrderWs: any;
|
|
315
319
|
fetchOpenOrdersWs: any;
|
|
@@ -778,6 +782,10 @@ export default class Exchange {
|
|
|
778
782
|
createMarketOrderWithCost(symbol: string, side: OrderSide, cost: any, params?: {}): Promise<Order>;
|
|
779
783
|
createMarketBuyOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
|
|
780
784
|
createMarketSellOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
|
|
785
|
+
createTriggerOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, triggerPrice?: any, params?: {}): Promise<Order>;
|
|
786
|
+
createStopLossOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, stopLossPrice?: any, params?: {}): Promise<Order>;
|
|
787
|
+
createTakeProfitOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, takeProfitPrice?: any, params?: {}): Promise<Order>;
|
|
788
|
+
createOrderWithTakeProfitAndStopLoss(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, takeProfit?: any, stopLoss?: any, params?: {}): Promise<Order>;
|
|
781
789
|
createOrders(orders: OrderRequest[], params?: {}): Promise<Order[]>;
|
|
782
790
|
createOrderWs(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
|
|
783
791
|
cancelOrder(id: string, symbol?: string, params?: {}): Promise<any>;
|