ccxt 4.3.41 → 4.3.43
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 +5 -5
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/binance.js +169 -44
- package/dist/cjs/src/bitmart.js +196 -100
- package/dist/cjs/src/blockchaincom.js +11 -7
- package/dist/cjs/src/btcmarkets.js +31 -2
- package/dist/cjs/src/coinex.js +107 -108
- package/dist/cjs/src/kraken.js +30 -3
- package/dist/cjs/src/krakenfutures.js +56 -1
- package/dist/cjs/src/kucoin.js +59 -2
- package/dist/cjs/src/phemex.js +5 -4
- package/dist/cjs/src/pro/bitget.js +36 -22
- package/dist/cjs/src/pro/bybit.js +1 -1
- package/dist/cjs/src/pro/mexc.js +2 -2
- package/dist/cjs/src/pro/upbit.js +8 -4
- package/dist/cjs/src/pro/woo.js +2 -2
- package/dist/cjs/src/tradeogre.js +11 -5
- package/dist/cjs/src/wavesexchange.js +2 -2
- package/dist/cjs/src/wazirx.js +38 -15
- package/dist/cjs/src/zonda.js +9 -1
- package/js/ccxt.d.ts +3 -3
- package/js/ccxt.js +1 -1
- package/js/src/abstract/coinex.d.ts +2 -1
- package/js/src/binance.js +169 -44
- package/js/src/bitmart.js +196 -100
- package/js/src/blockchaincom.d.ts +2 -8
- package/js/src/blockchaincom.js +11 -7
- package/js/src/btcmarkets.d.ts +2 -2
- package/js/src/btcmarkets.js +31 -2
- package/js/src/coinex.js +107 -108
- package/js/src/kraken.d.ts +3 -3
- package/js/src/kraken.js +30 -3
- package/js/src/krakenfutures.d.ts +1 -1
- package/js/src/krakenfutures.js +56 -1
- package/js/src/kucoin.d.ts +1 -1
- package/js/src/kucoin.js +59 -2
- package/js/src/phemex.js +6 -5
- package/js/src/pro/bitget.js +36 -22
- package/js/src/pro/bybit.js +1 -1
- package/js/src/pro/mexc.js +2 -2
- package/js/src/pro/upbit.js +8 -4
- package/js/src/pro/woo.js +2 -2
- package/js/src/tradeogre.d.ts +1 -1
- package/js/src/tradeogre.js +12 -6
- package/js/src/wavesexchange.d.ts +1 -20
- package/js/src/wavesexchange.js +2 -2
- package/js/src/wazirx.d.ts +1 -1
- package/js/src/wazirx.js +38 -15
- package/js/src/zonda.d.ts +1 -1
- package/js/src/zonda.js +9 -1
- package/package.json +1 -1
package/js/src/coinex.js
CHANGED
|
@@ -21,7 +21,7 @@ export default class coinex extends Exchange {
|
|
|
21
21
|
return this.deepExtend(super.describe(), {
|
|
22
22
|
'id': 'coinex',
|
|
23
23
|
'name': 'CoinEx',
|
|
24
|
-
'version': '
|
|
24
|
+
'version': 'v2',
|
|
25
25
|
'countries': ['CN'],
|
|
26
26
|
// IP ratelimit is 400 requests per second
|
|
27
27
|
// rateLimit = 1000ms / 400 = 2.5
|
|
@@ -318,6 +318,8 @@ export default class coinex extends Exchange {
|
|
|
318
318
|
'futures/position-level': 1,
|
|
319
319
|
'futures/liquidation-history': 1,
|
|
320
320
|
'futures/basis-history': 1,
|
|
321
|
+
'assets/deposit-withdraw-config': 1,
|
|
322
|
+
'assets/all-deposit-withdraw-config': 1,
|
|
321
323
|
},
|
|
322
324
|
},
|
|
323
325
|
'private': {
|
|
@@ -340,7 +342,6 @@ export default class coinex extends Exchange {
|
|
|
340
342
|
'assets/deposit-address': 40,
|
|
341
343
|
'assets/deposit-history': 40,
|
|
342
344
|
'assets/withdraw': 40,
|
|
343
|
-
'assets/deposit-withdraw-config': 1,
|
|
344
345
|
'assets/transfer-history': 40,
|
|
345
346
|
'spot/order-status': 8,
|
|
346
347
|
'spot/batch-order-status': 8,
|
|
@@ -534,131 +535,129 @@ export default class coinex extends Exchange {
|
|
|
534
535
|
});
|
|
535
536
|
}
|
|
536
537
|
async fetchCurrencies(params = {}) {
|
|
537
|
-
|
|
538
|
+
/**
|
|
539
|
+
* @method
|
|
540
|
+
* @name coinex#fetchCurrencies
|
|
541
|
+
* @description fetches all available currencies on an exchange
|
|
542
|
+
* @see https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/list-all-deposit-withdrawal-config
|
|
543
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
544
|
+
* @returns {object} an associative dictionary of currencies
|
|
545
|
+
*/
|
|
546
|
+
const response = await this.v2PublicGetAssetsAllDepositWithdrawConfig(params);
|
|
547
|
+
//
|
|
538
548
|
// {
|
|
539
549
|
// "code": 0,
|
|
540
|
-
// "data":
|
|
541
|
-
//
|
|
542
|
-
//
|
|
543
|
-
//
|
|
544
|
-
//
|
|
545
|
-
//
|
|
546
|
-
//
|
|
547
|
-
//
|
|
548
|
-
//
|
|
549
|
-
//
|
|
550
|
-
//
|
|
551
|
-
//
|
|
552
|
-
//
|
|
553
|
-
//
|
|
554
|
-
//
|
|
550
|
+
// "data": [
|
|
551
|
+
// {
|
|
552
|
+
// "asset": {
|
|
553
|
+
// "ccy": "CET",
|
|
554
|
+
// "deposit_enabled": true,
|
|
555
|
+
// "withdraw_enabled": true,
|
|
556
|
+
// "inter_transfer_enabled": true,
|
|
557
|
+
// "is_st": false
|
|
558
|
+
// },
|
|
559
|
+
// "chains": [
|
|
560
|
+
// {
|
|
561
|
+
// "chain": "CSC",
|
|
562
|
+
// "min_deposit_amount": "0.8",
|
|
563
|
+
// "min_withdraw_amount": "8",
|
|
564
|
+
// "deposit_enabled": true,
|
|
565
|
+
// "withdraw_enabled": true,
|
|
566
|
+
// "deposit_delay_minutes": 0,
|
|
567
|
+
// "safe_confirmations": 10,
|
|
568
|
+
// "irreversible_confirmations": 20,
|
|
569
|
+
// "deflation_rate": "0",
|
|
570
|
+
// "withdrawal_fee": "0.026",
|
|
571
|
+
// "withdrawal_precision": 8,
|
|
572
|
+
// "memo": "",
|
|
573
|
+
// "is_memo_required_for_deposit": false,
|
|
574
|
+
// "explorer_asset_url": ""
|
|
575
|
+
// },
|
|
576
|
+
// ]
|
|
577
|
+
// }
|
|
578
|
+
// ],
|
|
579
|
+
// "message": "OK"
|
|
555
580
|
// }
|
|
556
581
|
//
|
|
557
|
-
const data = this.
|
|
558
|
-
const coins = Object.keys(data);
|
|
582
|
+
const data = this.safeList(response, 'data', []);
|
|
559
583
|
const result = {};
|
|
560
|
-
for (let i = 0; i <
|
|
561
|
-
const coin =
|
|
562
|
-
const
|
|
563
|
-
const
|
|
564
|
-
const
|
|
584
|
+
for (let i = 0; i < data.length; i++) {
|
|
585
|
+
const coin = data[i];
|
|
586
|
+
const asset = this.safeDict(coin, 'asset', {});
|
|
587
|
+
const chains = this.safeList(coin, 'chains', []);
|
|
588
|
+
const currencyId = this.safeString(asset, 'ccy');
|
|
589
|
+
if (currencyId === undefined) {
|
|
590
|
+
continue; // coinex returns empty structures for some reason
|
|
591
|
+
}
|
|
565
592
|
const code = this.safeCurrencyCode(currencyId);
|
|
566
|
-
const
|
|
567
|
-
const
|
|
568
|
-
const
|
|
569
|
-
const
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
'
|
|
581
|
-
|
|
593
|
+
const canDeposit = this.safeBool(asset, 'deposit_enabled');
|
|
594
|
+
const canWithdraw = this.safeBool(asset, 'withdraw_enabled');
|
|
595
|
+
const firstChain = this.safeDict(chains, 0, {});
|
|
596
|
+
const firstPrecisionString = this.parsePrecision(this.safeString(firstChain, 'withdrawal_precision'));
|
|
597
|
+
result[code] = {
|
|
598
|
+
'id': currencyId,
|
|
599
|
+
'code': code,
|
|
600
|
+
'name': undefined,
|
|
601
|
+
'active': canDeposit && canWithdraw,
|
|
602
|
+
'deposit': canDeposit,
|
|
603
|
+
'withdraw': canWithdraw,
|
|
604
|
+
'fee': undefined,
|
|
605
|
+
'precision': this.parseNumber(firstPrecisionString),
|
|
606
|
+
'limits': {
|
|
607
|
+
'amount': {
|
|
608
|
+
'min': undefined,
|
|
609
|
+
'max': undefined,
|
|
610
|
+
},
|
|
611
|
+
'deposit': {
|
|
612
|
+
'min': undefined,
|
|
613
|
+
'max': undefined,
|
|
614
|
+
},
|
|
615
|
+
'withdraw': {
|
|
616
|
+
'min': undefined,
|
|
617
|
+
'max': undefined,
|
|
618
|
+
},
|
|
619
|
+
},
|
|
620
|
+
'networks': {},
|
|
621
|
+
'info': coin,
|
|
622
|
+
};
|
|
623
|
+
for (let j = 0; j < chains.length; j++) {
|
|
624
|
+
const chain = chains[j];
|
|
625
|
+
const networkId = this.safeString(chain, 'chain');
|
|
626
|
+
const precisionString = this.parsePrecision(this.safeString(chain, 'withdrawal_precision'));
|
|
627
|
+
const feeString = this.safeString(chain, 'withdrawal_fee');
|
|
628
|
+
const minNetworkDepositString = this.safeString(chain, 'min_deposit_amount');
|
|
629
|
+
const minNetworkWithdrawString = this.safeString(chain, 'min_withdraw_amount');
|
|
630
|
+
const canDepositChain = this.safeBool(chain, 'deposit_enabled');
|
|
631
|
+
const canWithdrawChain = this.safeBool(chain, 'withdraw_enabled');
|
|
632
|
+
const network = {
|
|
633
|
+
'id': networkId,
|
|
634
|
+
'network': networkId,
|
|
582
635
|
'name': undefined,
|
|
583
|
-
'active':
|
|
584
|
-
'deposit':
|
|
585
|
-
'withdraw':
|
|
586
|
-
'fee':
|
|
587
|
-
'precision':
|
|
636
|
+
'active': canDepositChain && canWithdrawChain,
|
|
637
|
+
'deposit': canDepositChain,
|
|
638
|
+
'withdraw': canWithdrawChain,
|
|
639
|
+
'fee': this.parseNumber(feeString),
|
|
640
|
+
'precision': this.parseNumber(precisionString),
|
|
588
641
|
'limits': {
|
|
589
642
|
'amount': {
|
|
590
643
|
'min': undefined,
|
|
591
644
|
'max': undefined,
|
|
592
645
|
},
|
|
593
646
|
'deposit': {
|
|
594
|
-
'min':
|
|
647
|
+
'min': this.parseNumber(minNetworkDepositString),
|
|
595
648
|
'max': undefined,
|
|
596
649
|
},
|
|
597
650
|
'withdraw': {
|
|
598
|
-
'min':
|
|
651
|
+
'min': this.parseNumber(minNetworkWithdrawString),
|
|
599
652
|
'max': undefined,
|
|
600
653
|
},
|
|
601
654
|
},
|
|
655
|
+
'info': chain,
|
|
602
656
|
};
|
|
657
|
+
const networks = this.safeDict(result[code], 'networks', {});
|
|
658
|
+
networks[networkId] = network;
|
|
659
|
+
result[code]['networks'] = networks;
|
|
603
660
|
}
|
|
604
|
-
let minFeeString = this.safeString(result[code], 'fee');
|
|
605
|
-
if (feeString !== undefined) {
|
|
606
|
-
minFeeString = (minFeeString === undefined) ? feeString : Precise.stringMin(feeString, minFeeString);
|
|
607
|
-
}
|
|
608
|
-
let depositAvailable = this.safeValue(result[code], 'deposit');
|
|
609
|
-
depositAvailable = (canDeposit) ? canDeposit : depositAvailable;
|
|
610
|
-
let withdrawAvailable = this.safeValue(result[code], 'withdraw');
|
|
611
|
-
withdrawAvailable = (canWithdraw) ? canWithdraw : withdrawAvailable;
|
|
612
|
-
let minDepositString = this.safeString(result[code]['limits']['deposit'], 'min');
|
|
613
|
-
if (minNetworkDepositString !== undefined) {
|
|
614
|
-
minDepositString = (minDepositString === undefined) ? minNetworkDepositString : Precise.stringMin(minNetworkDepositString, minDepositString);
|
|
615
|
-
}
|
|
616
|
-
let minWithdrawString = this.safeString(result[code]['limits']['withdraw'], 'min');
|
|
617
|
-
if (minNetworkWithdrawString !== undefined) {
|
|
618
|
-
minWithdrawString = (minWithdrawString === undefined) ? minNetworkWithdrawString : Precise.stringMin(minNetworkWithdrawString, minWithdrawString);
|
|
619
|
-
}
|
|
620
|
-
let minPrecisionString = this.safeString(result[code], 'precision');
|
|
621
|
-
if (precisionString !== undefined) {
|
|
622
|
-
minPrecisionString = (minPrecisionString === undefined) ? precisionString : Precise.stringMin(precisionString, minPrecisionString);
|
|
623
|
-
}
|
|
624
|
-
const networks = this.safeValue(result[code], 'networks', {});
|
|
625
|
-
const network = {
|
|
626
|
-
'info': currency,
|
|
627
|
-
'id': networkId,
|
|
628
|
-
'network': networkId,
|
|
629
|
-
'name': undefined,
|
|
630
|
-
'limits': {
|
|
631
|
-
'amount': {
|
|
632
|
-
'min': undefined,
|
|
633
|
-
'max': undefined,
|
|
634
|
-
},
|
|
635
|
-
'deposit': {
|
|
636
|
-
'min': this.safeNumber(currency, 'deposit_least_amount'),
|
|
637
|
-
'max': undefined,
|
|
638
|
-
},
|
|
639
|
-
'withdraw': {
|
|
640
|
-
'min': this.safeNumber(currency, 'withdraw_least_amount'),
|
|
641
|
-
'max': undefined,
|
|
642
|
-
},
|
|
643
|
-
},
|
|
644
|
-
'active': canDeposit && canWithdraw,
|
|
645
|
-
'deposit': canDeposit,
|
|
646
|
-
'withdraw': canWithdraw,
|
|
647
|
-
'fee': fee,
|
|
648
|
-
'precision': precision,
|
|
649
|
-
};
|
|
650
|
-
networks[networkId] = network;
|
|
651
|
-
result[code]['networks'] = networks;
|
|
652
|
-
result[code]['active'] = depositAvailable && withdrawAvailable;
|
|
653
|
-
result[code]['deposit'] = depositAvailable;
|
|
654
|
-
result[code]['withdraw'] = withdrawAvailable;
|
|
655
|
-
const info = this.safeValue(result[code], 'info', []);
|
|
656
|
-
info.push(currency);
|
|
657
|
-
result[code]['info'] = info;
|
|
658
|
-
result[code]['fee'] = this.parseNumber(minFeeString);
|
|
659
|
-
result[code]['precision'] = this.parseNumber(minPrecisionString);
|
|
660
|
-
result[code]['limits']['deposit']['min'] = this.parseNumber(minDepositString);
|
|
661
|
-
result[code]['limits']['withdraw']['min'] = this.parseNumber(minWithdrawString);
|
|
662
661
|
}
|
|
663
662
|
return result;
|
|
664
663
|
}
|
|
@@ -5431,7 +5430,7 @@ export default class coinex extends Exchange {
|
|
|
5431
5430
|
const request = {
|
|
5432
5431
|
'ccy': currency['id'],
|
|
5433
5432
|
};
|
|
5434
|
-
const response = await this.
|
|
5433
|
+
const response = await this.v2PublicGetAssetsDepositWithdrawConfig(this.extend(request, params));
|
|
5435
5434
|
//
|
|
5436
5435
|
// {
|
|
5437
5436
|
// "code": 0,
|
|
@@ -5789,7 +5788,7 @@ export default class coinex extends Exchange {
|
|
|
5789
5788
|
preparedString += nonce + this.secret;
|
|
5790
5789
|
const signature = this.hash(this.encode(preparedString), sha256);
|
|
5791
5790
|
headers = {
|
|
5792
|
-
'Content-Type': 'application/json
|
|
5791
|
+
'Content-Type': 'application/json',
|
|
5793
5792
|
'Accept': 'application/json',
|
|
5794
5793
|
'X-COINEX-KEY': this.apiKey,
|
|
5795
5794
|
'X-COINEX-SIGN': signature,
|
package/js/src/kraken.d.ts
CHANGED
|
@@ -70,9 +70,9 @@ export default class kraken extends Exchange {
|
|
|
70
70
|
fetchOrderTrades(id: string, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
71
71
|
fetchOrdersByIds(ids: any, symbol?: Str, params?: {}): Promise<any[]>;
|
|
72
72
|
fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
73
|
-
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<
|
|
74
|
-
cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<
|
|
75
|
-
cancelAllOrders(symbol?: Str, params?: {}): Promise<
|
|
73
|
+
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
74
|
+
cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<Order[]>;
|
|
75
|
+
cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
|
|
76
76
|
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
77
77
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
78
78
|
fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/kraken.js
CHANGED
|
@@ -2140,6 +2140,14 @@ export default class kraken extends Exchange {
|
|
|
2140
2140
|
params = this.omit(params, ['userref', 'clientOrderId']);
|
|
2141
2141
|
try {
|
|
2142
2142
|
response = await this.privatePostCancelOrder(this.extend(request, params));
|
|
2143
|
+
//
|
|
2144
|
+
// {
|
|
2145
|
+
// error: [],
|
|
2146
|
+
// result: {
|
|
2147
|
+
// count: '1'
|
|
2148
|
+
// }
|
|
2149
|
+
// }
|
|
2150
|
+
//
|
|
2143
2151
|
}
|
|
2144
2152
|
catch (e) {
|
|
2145
2153
|
if (this.last_http_response) {
|
|
@@ -2149,7 +2157,9 @@ export default class kraken extends Exchange {
|
|
|
2149
2157
|
}
|
|
2150
2158
|
throw e;
|
|
2151
2159
|
}
|
|
2152
|
-
return
|
|
2160
|
+
return this.safeOrder({
|
|
2161
|
+
'info': response,
|
|
2162
|
+
});
|
|
2153
2163
|
}
|
|
2154
2164
|
async cancelOrders(ids, symbol = undefined, params = {}) {
|
|
2155
2165
|
/**
|
|
@@ -2174,7 +2184,11 @@ export default class kraken extends Exchange {
|
|
|
2174
2184
|
// }
|
|
2175
2185
|
// }
|
|
2176
2186
|
//
|
|
2177
|
-
return
|
|
2187
|
+
return [
|
|
2188
|
+
this.safeOrder({
|
|
2189
|
+
'info': response,
|
|
2190
|
+
}),
|
|
2191
|
+
];
|
|
2178
2192
|
}
|
|
2179
2193
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
2180
2194
|
/**
|
|
@@ -2187,7 +2201,20 @@ export default class kraken extends Exchange {
|
|
|
2187
2201
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2188
2202
|
*/
|
|
2189
2203
|
await this.loadMarkets();
|
|
2190
|
-
|
|
2204
|
+
const response = await this.privatePostCancelAll(params);
|
|
2205
|
+
//
|
|
2206
|
+
// {
|
|
2207
|
+
// error: [],
|
|
2208
|
+
// result: {
|
|
2209
|
+
// count: '1'
|
|
2210
|
+
// }
|
|
2211
|
+
// }
|
|
2212
|
+
//
|
|
2213
|
+
return [
|
|
2214
|
+
this.safeOrder({
|
|
2215
|
+
'info': response,
|
|
2216
|
+
}),
|
|
2217
|
+
];
|
|
2191
2218
|
}
|
|
2192
2219
|
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
2193
2220
|
/**
|
|
@@ -20,7 +20,7 @@ export default class krakenfutures extends Exchange {
|
|
|
20
20
|
editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
|
|
21
21
|
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
|
|
22
22
|
cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
|
|
23
|
-
cancelAllOrders(symbol?: Str, params?: {}): Promise<
|
|
23
|
+
cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
|
|
24
24
|
cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
|
|
25
25
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
26
26
|
fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/krakenfutures.js
CHANGED
|
@@ -1272,7 +1272,46 @@ export default class krakenfutures extends Exchange {
|
|
|
1272
1272
|
request['symbol'] = this.marketId(symbol);
|
|
1273
1273
|
}
|
|
1274
1274
|
const response = await this.privatePostCancelallorders(this.extend(request, params));
|
|
1275
|
-
|
|
1275
|
+
//
|
|
1276
|
+
// {
|
|
1277
|
+
// result: 'success',
|
|
1278
|
+
// cancelStatus: {
|
|
1279
|
+
// receivedTime: '2024-06-06T01:12:44.814Z',
|
|
1280
|
+
// cancelOnly: 'PF_XRPUSD',
|
|
1281
|
+
// status: 'cancelled',
|
|
1282
|
+
// cancelledOrders: [ { order_id: '272fd0ac-45c0-4003-b84d-d39b9e86bd36' } ],
|
|
1283
|
+
// orderEvents: [
|
|
1284
|
+
// {
|
|
1285
|
+
// uid: '272fd0ac-45c0-4003-b84d-d39b9e86bd36',
|
|
1286
|
+
// order: {
|
|
1287
|
+
// orderId: '272fd0ac-45c0-4003-b84d-d39b9e86bd36',
|
|
1288
|
+
// cliOrdId: null,
|
|
1289
|
+
// type: 'lmt',
|
|
1290
|
+
// symbol: 'PF_XRPUSD',
|
|
1291
|
+
// side: 'buy',
|
|
1292
|
+
// quantity: '10',
|
|
1293
|
+
// filled: '0',
|
|
1294
|
+
// limitPrice: '0.4',
|
|
1295
|
+
// reduceOnly: false,
|
|
1296
|
+
// timestamp: '2024-06-06T01:11:16.045Z',
|
|
1297
|
+
// lastUpdateTimestamp: '2024-06-06T01:11:16.045Z'
|
|
1298
|
+
// },
|
|
1299
|
+
// type: 'CANCEL'
|
|
1300
|
+
// }
|
|
1301
|
+
// ]
|
|
1302
|
+
// },
|
|
1303
|
+
// serverTime: '2024-06-06T01:12:44.814Z'
|
|
1304
|
+
// }
|
|
1305
|
+
//
|
|
1306
|
+
const cancelStatus = this.safeDict(response, 'cancelStatus');
|
|
1307
|
+
const orderEvents = this.safeList(cancelStatus, 'orderEvents', []);
|
|
1308
|
+
const orders = [];
|
|
1309
|
+
for (let i = 0; i < orderEvents.length; i++) {
|
|
1310
|
+
const orderEvent = this.safeDict(orderEvents, 0);
|
|
1311
|
+
const order = this.safeDict(orderEvent, 'order', {});
|
|
1312
|
+
orders.push(order);
|
|
1313
|
+
}
|
|
1314
|
+
return this.parseOrders(orders);
|
|
1276
1315
|
}
|
|
1277
1316
|
async cancelAllOrdersAfter(timeout, params = {}) {
|
|
1278
1317
|
/**
|
|
@@ -1640,6 +1679,22 @@ export default class krakenfutures extends Exchange {
|
|
|
1640
1679
|
// ]
|
|
1641
1680
|
// }
|
|
1642
1681
|
//
|
|
1682
|
+
// cancelAllOrders
|
|
1683
|
+
//
|
|
1684
|
+
// {
|
|
1685
|
+
// "orderId": "85c40002-3f20-4e87-9302-262626c3531b",
|
|
1686
|
+
// "cliOrdId": null,
|
|
1687
|
+
// "type": "lmt",
|
|
1688
|
+
// "symbol": "pi_xbtusd",
|
|
1689
|
+
// "side": "buy",
|
|
1690
|
+
// "quantity": 1000,
|
|
1691
|
+
// "filled": 0,
|
|
1692
|
+
// "limitPrice": 10144,
|
|
1693
|
+
// "stopPrice": null,
|
|
1694
|
+
// "reduceOnly": false,
|
|
1695
|
+
// "timestamp": "2019-08-01T15:26:27.790Z"
|
|
1696
|
+
// }
|
|
1697
|
+
//
|
|
1643
1698
|
// FETCH OPEN ORDERS
|
|
1644
1699
|
//
|
|
1645
1700
|
// {
|
package/js/src/kucoin.d.ts
CHANGED
|
@@ -63,7 +63,7 @@ export default class kucoin extends Exchange {
|
|
|
63
63
|
marketOrderAmountToPrecision(symbol: string, amount: any): string;
|
|
64
64
|
createOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): any;
|
|
65
65
|
editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
|
|
66
|
-
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<
|
|
66
|
+
cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
67
67
|
cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
|
|
68
68
|
fetchOrdersByStatus(status: any, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
69
69
|
fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/kucoin.js
CHANGED
|
@@ -2333,27 +2333,84 @@ export default class kucoin extends Exchange {
|
|
|
2333
2333
|
request['clientOid'] = clientOrderId;
|
|
2334
2334
|
if (stop) {
|
|
2335
2335
|
response = await this.privateDeleteStopOrderCancelOrderByClientOid(this.extend(request, params));
|
|
2336
|
+
//
|
|
2337
|
+
// {
|
|
2338
|
+
// code: '200000',
|
|
2339
|
+
// data: {
|
|
2340
|
+
// cancelledOrderId: 'vs8lgpiuao41iaft003khbbk',
|
|
2341
|
+
// clientOid: '123456'
|
|
2342
|
+
// }
|
|
2343
|
+
// }
|
|
2344
|
+
//
|
|
2336
2345
|
}
|
|
2337
2346
|
else if (hf) {
|
|
2338
2347
|
response = await this.privateDeleteHfOrdersClientOrderClientOid(this.extend(request, params));
|
|
2348
|
+
//
|
|
2349
|
+
// {
|
|
2350
|
+
// "code": "200000",
|
|
2351
|
+
// "data": {
|
|
2352
|
+
// "clientOid": "6d539dc614db3"
|
|
2353
|
+
// }
|
|
2354
|
+
// }
|
|
2355
|
+
//
|
|
2339
2356
|
}
|
|
2340
2357
|
else {
|
|
2341
2358
|
response = await this.privateDeleteOrderClientOrderClientOid(this.extend(request, params));
|
|
2359
|
+
//
|
|
2360
|
+
// {
|
|
2361
|
+
// code: '200000',
|
|
2362
|
+
// data: {
|
|
2363
|
+
// cancelledOrderId: '665e580f6660500007aba341',
|
|
2364
|
+
// clientOid: '1234567',
|
|
2365
|
+
// cancelledOcoOrderIds: null
|
|
2366
|
+
// }
|
|
2367
|
+
// }
|
|
2368
|
+
//
|
|
2342
2369
|
}
|
|
2370
|
+
response = this.safeDict(response, 'data');
|
|
2371
|
+
return this.parseOrder(response);
|
|
2343
2372
|
}
|
|
2344
2373
|
else {
|
|
2345
2374
|
request['orderId'] = id;
|
|
2346
2375
|
if (stop) {
|
|
2347
2376
|
response = await this.privateDeleteStopOrderOrderId(this.extend(request, params));
|
|
2377
|
+
//
|
|
2378
|
+
// {
|
|
2379
|
+
// code: '200000',
|
|
2380
|
+
// data: { cancelledOrderIds: [ 'vs8lgpiuaco91qk8003vebu9' ] }
|
|
2381
|
+
// }
|
|
2382
|
+
//
|
|
2348
2383
|
}
|
|
2349
2384
|
else if (hf) {
|
|
2350
2385
|
response = await this.privateDeleteHfOrdersOrderId(this.extend(request, params));
|
|
2386
|
+
//
|
|
2387
|
+
// {
|
|
2388
|
+
// "code": "200000",
|
|
2389
|
+
// "data": {
|
|
2390
|
+
// "orderId": "630625dbd9180300014c8d52"
|
|
2391
|
+
// }
|
|
2392
|
+
// }
|
|
2393
|
+
//
|
|
2394
|
+
response = this.safeDict(response, 'data');
|
|
2395
|
+
return this.parseOrder(response);
|
|
2351
2396
|
}
|
|
2352
2397
|
else {
|
|
2353
2398
|
response = await this.privateDeleteOrdersOrderId(this.extend(request, params));
|
|
2399
|
+
//
|
|
2400
|
+
// {
|
|
2401
|
+
// code: '200000',
|
|
2402
|
+
// data: { cancelledOrderIds: [ '665e4fbe28051a0007245c41' ] }
|
|
2403
|
+
// }
|
|
2404
|
+
//
|
|
2354
2405
|
}
|
|
2406
|
+
const data = this.safeDict(response, 'data');
|
|
2407
|
+
const orderIds = this.safeList(data, 'cancelledOrderIds', []);
|
|
2408
|
+
const orderId = this.safeString(orderIds, 0);
|
|
2409
|
+
return this.safeOrder({
|
|
2410
|
+
'info': data,
|
|
2411
|
+
'id': orderId,
|
|
2412
|
+
});
|
|
2355
2413
|
}
|
|
2356
|
-
return response;
|
|
2357
2414
|
}
|
|
2358
2415
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
2359
2416
|
/**
|
|
@@ -2821,7 +2878,7 @@ export default class kucoin extends Exchange {
|
|
|
2821
2878
|
const stopPrice = this.safeNumber(order, 'stopPrice');
|
|
2822
2879
|
return this.safeOrder({
|
|
2823
2880
|
'info': order,
|
|
2824
|
-
'id': this.safeStringN(order, ['id', 'orderId', 'newOrderId']),
|
|
2881
|
+
'id': this.safeStringN(order, ['id', 'orderId', 'newOrderId', 'cancelledOrderId']),
|
|
2825
2882
|
'clientOrderId': this.safeString(order, 'clientOid'),
|
|
2826
2883
|
'symbol': this.safeSymbol(marketId, market, '-'),
|
|
2827
2884
|
'type': this.safeString(order, 'type'),
|
package/js/src/phemex.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
// ----------------------------------------------------------------------------
|
|
8
8
|
import Exchange from './abstract/phemex.js';
|
|
9
|
-
import { ExchangeError, BadSymbol, AuthenticationError, InsufficientFunds, InvalidOrder, ArgumentsRequired, OrderNotFound, BadRequest, PermissionDenied, AccountSuspended, CancelPending, DDoSProtection, DuplicateOrderId, RateLimitExceeded
|
|
9
|
+
import { ExchangeError, BadSymbol, AuthenticationError, InsufficientFunds, InvalidOrder, ArgumentsRequired, OrderNotFound, BadRequest, PermissionDenied, AccountSuspended, CancelPending, DDoSProtection, DuplicateOrderId, RateLimitExceeded } from './base/errors.js';
|
|
10
10
|
import { Precise } from './base/Precise.js';
|
|
11
11
|
import { TICK_SIZE } from './base/functions/number.js';
|
|
12
12
|
import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
|
|
@@ -2957,6 +2957,7 @@ export default class phemex extends Exchange {
|
|
|
2957
2957
|
/**
|
|
2958
2958
|
* @method
|
|
2959
2959
|
* @name phemex#fetchOrder
|
|
2960
|
+
* @see https://phemex-docs.github.io/#query-orders-by-ids
|
|
2960
2961
|
* @description fetches information on an order made by the user
|
|
2961
2962
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
2962
2963
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -2967,9 +2968,6 @@ export default class phemex extends Exchange {
|
|
|
2967
2968
|
}
|
|
2968
2969
|
await this.loadMarkets();
|
|
2969
2970
|
const market = this.market(symbol);
|
|
2970
|
-
if (market['settle'] === 'USDT') {
|
|
2971
|
-
throw new NotSupported(this.id + 'fetchOrder() is not supported yet for USDT settled swap markets'); // https://github.com/phemex/phemex-api-docs/blob/master/Public-Hedged-Perpetual-API.md#query-user-order-by-orderid-or-query-user-order-by-client-order-id
|
|
2972
|
-
}
|
|
2973
2971
|
const request = {
|
|
2974
2972
|
'symbol': market['id'],
|
|
2975
2973
|
};
|
|
@@ -2982,7 +2980,10 @@ export default class phemex extends Exchange {
|
|
|
2982
2980
|
request['orderID'] = id;
|
|
2983
2981
|
}
|
|
2984
2982
|
let response = undefined;
|
|
2985
|
-
if (market['
|
|
2983
|
+
if (market['settle'] === 'USDT') {
|
|
2984
|
+
response = await this.privateGetApiDataGFuturesOrdersByOrderId(this.extend(request, params));
|
|
2985
|
+
}
|
|
2986
|
+
else if (market['spot']) {
|
|
2986
2987
|
response = await this.privateGetSpotOrdersActive(this.extend(request, params));
|
|
2987
2988
|
}
|
|
2988
2989
|
else {
|