ccxt 4.2.38 → 4.2.39

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.
Files changed (106) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.js +425 -105
  3. package/dist/ccxt.browser.min.js +3 -3
  4. package/dist/cjs/ccxt.js +1 -1
  5. package/dist/cjs/src/base/Exchange.js +14 -2
  6. package/dist/cjs/src/binance.js +156 -35
  7. package/dist/cjs/src/bitget.js +1 -1
  8. package/dist/cjs/src/bitso.js +18 -2
  9. package/dist/cjs/src/bitstamp.js +24 -2
  10. package/dist/cjs/src/bl3p.js +6 -0
  11. package/dist/cjs/src/blockchaincom.js +21 -0
  12. package/dist/cjs/src/btcalpha.js +9 -0
  13. package/dist/cjs/src/btcbox.js +9 -0
  14. package/dist/cjs/src/btcmarkets.js +19 -0
  15. package/dist/cjs/src/coinbase.js +13 -2
  16. package/dist/cjs/src/krakenfutures.js +7 -14
  17. package/dist/cjs/src/luno.js +1 -1
  18. package/dist/cjs/src/okx.js +2 -2
  19. package/dist/cjs/src/poloniexfutures.js +11 -5
  20. package/dist/cjs/src/pro/bitmart.js +110 -35
  21. package/dist/cjs/src/pro/mexc.js +1 -1
  22. package/dist/cjs/src/wavesexchange.js +1 -1
  23. package/dist/cjs/src/woo.js +1 -1
  24. package/js/ccxt.d.ts +1 -1
  25. package/js/ccxt.js +1 -1
  26. package/js/src/abstract/coinbase.d.ts +1 -0
  27. package/js/src/abstract/okx.d.ts +1 -0
  28. package/js/src/ascendex.d.ts +2 -2
  29. package/js/src/base/Exchange.d.ts +4 -0
  30. package/js/src/base/Exchange.js +14 -2
  31. package/js/src/base/types.d.ts +2 -0
  32. package/js/src/bigone.d.ts +2 -2
  33. package/js/src/binance.d.ts +8 -8
  34. package/js/src/binance.js +156 -35
  35. package/js/src/bingx.d.ts +5 -5
  36. package/js/src/bitfinex.d.ts +3 -3
  37. package/js/src/bitfinex2.d.ts +2 -2
  38. package/js/src/bitget.d.ts +5 -5
  39. package/js/src/bitget.js +1 -1
  40. package/js/src/bitmart.d.ts +2 -2
  41. package/js/src/bitmex.d.ts +2 -2
  42. package/js/src/bitrue.d.ts +2 -2
  43. package/js/src/bitso.d.ts +1 -1
  44. package/js/src/bitso.js +18 -2
  45. package/js/src/bitstamp.d.ts +1 -1
  46. package/js/src/bitstamp.js +24 -2
  47. package/js/src/bitvavo.d.ts +1 -1
  48. package/js/src/bl3p.js +6 -0
  49. package/js/src/blockchaincom.js +21 -0
  50. package/js/src/blofin.d.ts +2 -2
  51. package/js/src/btcalpha.js +9 -0
  52. package/js/src/btcbox.js +9 -0
  53. package/js/src/btcmarkets.js +19 -0
  54. package/js/src/bybit.d.ts +7 -7
  55. package/js/src/cex.d.ts +1 -1
  56. package/js/src/coinbase.d.ts +2 -2
  57. package/js/src/coinbase.js +13 -2
  58. package/js/src/coinex.d.ts +4 -4
  59. package/js/src/coinlist.d.ts +2 -2
  60. package/js/src/coinone.d.ts +1 -1
  61. package/js/src/delta.d.ts +2 -2
  62. package/js/src/deribit.d.ts +3 -3
  63. package/js/src/digifinex.d.ts +3 -3
  64. package/js/src/exmo.d.ts +2 -2
  65. package/js/src/gate.d.ts +6 -6
  66. package/js/src/hitbtc.d.ts +2 -2
  67. package/js/src/hollaex.d.ts +1 -1
  68. package/js/src/htx.d.ts +3 -3
  69. package/js/src/huobijp.d.ts +1 -1
  70. package/js/src/kraken.d.ts +2 -2
  71. package/js/src/krakenfutures.d.ts +2 -2
  72. package/js/src/krakenfutures.js +7 -14
  73. package/js/src/kucoin.d.ts +5 -5
  74. package/js/src/kucoinfutures.d.ts +2 -2
  75. package/js/src/latoken.d.ts +1 -1
  76. package/js/src/lbank.d.ts +2 -2
  77. package/js/src/luno.d.ts +1 -1
  78. package/js/src/luno.js +1 -1
  79. package/js/src/mexc.d.ts +4 -4
  80. package/js/src/ndax.d.ts +1 -1
  81. package/js/src/novadax.d.ts +1 -1
  82. package/js/src/okcoin.d.ts +2 -2
  83. package/js/src/okx.d.ts +7 -7
  84. package/js/src/okx.js +2 -2
  85. package/js/src/paymium.d.ts +2 -2
  86. package/js/src/phemex.d.ts +4 -4
  87. package/js/src/poloniex.d.ts +2 -2
  88. package/js/src/poloniexfutures.d.ts +2 -2
  89. package/js/src/poloniexfutures.js +11 -5
  90. package/js/src/pro/bitmart.d.ts +2 -0
  91. package/js/src/pro/bitmart.js +110 -35
  92. package/js/src/pro/bitvavo.d.ts +1 -1
  93. package/js/src/pro/cex.d.ts +2 -2
  94. package/js/src/pro/coinbase.d.ts +2 -2
  95. package/js/src/pro/coinex.d.ts +1 -1
  96. package/js/src/pro/lbank.d.ts +1 -1
  97. package/js/src/pro/mexc.js +1 -1
  98. package/js/src/probit.d.ts +1 -1
  99. package/js/src/timex.d.ts +1 -1
  100. package/js/src/upbit.d.ts +1 -1
  101. package/js/src/wavesexchange.js +1 -1
  102. package/js/src/whitebit.d.ts +2 -2
  103. package/js/src/woo.d.ts +3 -3
  104. package/js/src/woo.js +1 -1
  105. package/js/src/zonda.d.ts +3 -3
  106. package/package.json +2 -2
@@ -87,7 +87,7 @@ export default class ascendex extends Exchange {
87
87
  reduceMargin(symbol: string, amount: any, params?: {}): Promise<any>;
88
88
  addMargin(symbol: string, amount: any, params?: {}): Promise<any>;
89
89
  setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
90
- setMarginMode(marginMode: any, symbol?: Str, params?: {}): Promise<any>;
90
+ setMarginMode(marginMode: string, symbol?: Str, params?: {}): Promise<any>;
91
91
  fetchLeverageTiers(symbols?: Strings, params?: {}): Promise<{}>;
92
92
  parseMarketLeverageTiers(info: any, market?: Market): any[];
93
93
  parseDepositWithdrawFee(fee: any, currency?: Currency): {
@@ -103,7 +103,7 @@ export default class ascendex extends Exchange {
103
103
  networks: {};
104
104
  };
105
105
  fetchDepositWithdrawFees(codes?: Strings, params?: {}): Promise<any>;
106
- transfer(code: string, amount: number, fromAccount: any, toAccount: any, params?: {}): Promise<TransferEntry>;
106
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
107
107
  parseTransfer(transfer: any, currency?: Currency): {
108
108
  info: any;
109
109
  id: any;
@@ -638,6 +638,10 @@ export default class Exchange {
638
638
  withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<Transaction>;
639
639
  createDepositAddress(code: string, params?: {}): Promise<DepositAddressResponse>;
640
640
  setLeverage(leverage: Int, symbol?: string, params?: {}): Promise<{}>;
641
+ fetchLeverage(symbol: string, params?: {}): Promise<{}>;
642
+ setPositionMode(hedged: boolean, symbol?: Str, params?: {}): Promise<{}>;
643
+ setMarginMode(marginMode: string, symbol?: Str, params?: {}): Promise<{}>;
644
+ fetchDepositAddressesByNetwork(code: string, params?: {}): Promise<{}>;
641
645
  fetchOpenInterestHistory(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OpenInterest[]>;
642
646
  fetchOpenInterest(symbol: string, params?: {}): Promise<OpenInterest>;
643
647
  signIn(params?: {}): Promise<{}>;
@@ -1932,6 +1932,18 @@ export default class Exchange {
1932
1932
  async setLeverage(leverage, symbol = undefined, params = {}) {
1933
1933
  throw new NotSupported(this.id + ' setLeverage() is not supported yet');
1934
1934
  }
1935
+ async fetchLeverage(symbol, params = {}) {
1936
+ throw new NotSupported(this.id + ' fetchLeverage() is not supported yet');
1937
+ }
1938
+ async setPositionMode(hedged, symbol = undefined, params = {}) {
1939
+ throw new NotSupported(this.id + ' setPositionMode() is not supported yet');
1940
+ }
1941
+ async setMarginMode(marginMode, symbol = undefined, params = {}) {
1942
+ throw new NotSupported(this.id + ' setMarginMode() is not supported yet');
1943
+ }
1944
+ async fetchDepositAddressesByNetwork(code, params = {}) {
1945
+ throw new NotSupported(this.id + ' fetchDepositAddressesByNetwork() is not supported yet');
1946
+ }
1935
1947
  async fetchOpenInterestHistory(symbol, timeframe = '1h', since = undefined, limit = undefined, params = {}) {
1936
1948
  throw new NotSupported(this.id + ' fetchOpenInterestHistory() is not supported yet');
1937
1949
  }
@@ -3158,11 +3170,11 @@ export default class Exchange {
3158
3170
  * @param {string|undefined} currencyCode unified currency code, but this argument is not required by default, unless there is an exchange (like huobi) that needs an override of the method to be able to pass currencyCode argument additionally
3159
3171
  * @returns {string|undefined} unified network code
3160
3172
  */
3161
- const networkCodesByIds = this.safeValue(this.options, 'networksById', {});
3173
+ const networkCodesByIds = this.safeDict(this.options, 'networksById', {});
3162
3174
  let networkCode = this.safeString(networkCodesByIds, networkId, networkId);
3163
3175
  // replace mainnet network-codes (i.e. ERC20->ETH)
3164
3176
  if (currencyCode !== undefined) {
3165
- const defaultNetworkCodeReplacements = this.safeValue(this.options, 'defaultNetworkCodeReplacements', {});
3177
+ const defaultNetworkCodeReplacements = this.safeDict(this.options, 'defaultNetworkCodeReplacements', {});
3166
3178
  if (currencyCode in defaultNetworkCodeReplacements) {
3167
3179
  const replacementObject = this.safeDict(defaultNetworkCodeReplacements, currencyCode, {});
3168
3180
  networkCode = this.safeString(replacementObject, networkCode, networkCode);
@@ -11,6 +11,8 @@ export declare type SubType = 'linear' | 'inverse' | undefined;
11
11
  export interface Dictionary<T> {
12
12
  [key: string]: T;
13
13
  }
14
+ export declare type Dict = Dictionary<any>;
15
+ export declare type List = Array<any>;
14
16
  /** Request parameters */
15
17
  export interface MinMax {
16
18
  min: Num;
@@ -23,7 +23,7 @@ export default class bigone extends Exchange {
23
23
  fetchBalance(params?: {}): Promise<Balances>;
24
24
  parseType(type: string): string;
25
25
  parseOrder(order: any, market?: Market): Order;
26
- createMarketBuyOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
26
+ createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
27
27
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
28
28
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
29
29
  cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
@@ -51,7 +51,7 @@ export default class bigone extends Exchange {
51
51
  parseTransaction(transaction: any, currency?: Currency): Transaction;
52
52
  fetchDeposits(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
53
53
  fetchWithdrawals(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
54
- transfer(code: string, amount: number, fromAccount: any, toAccount: any, params?: {}): Promise<TransferEntry>;
54
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
55
55
  parseTransfer(transfer: any, currency?: Currency): {
56
56
  info: any;
57
57
  id: any;
@@ -10,7 +10,7 @@ export default class binance extends Exchange {
10
10
  isLinear(type: any, subType?: any): boolean;
11
11
  setSandboxMode(enable: any): void;
12
12
  convertExpireDate(date: any): string;
13
- createExpiredOptionMarket(symbol: any): MarketInterface;
13
+ createExpiredOptionMarket(symbol: string): MarketInterface;
14
14
  market(symbol: any): any;
15
15
  safeMarket(marketId?: any, market?: any, delimiter?: any, marketType?: any): MarketInterface;
16
16
  costToPrecision(symbol: any, cost: any): any;
@@ -51,15 +51,15 @@ export default class binance extends Exchange {
51
51
  editSpotOrder(id: string, symbol: any, type: any, side: any, amount: number, price?: number, params?: {}): Promise<Order>;
52
52
  editSpotOrderRequest(id: string, symbol: any, type: any, side: any, amount: number, price?: number, params?: {}): any;
53
53
  editContractOrder(id: string, symbol: any, type: any, side: any, amount: number, price?: number, params?: {}): Promise<Order>;
54
- editOrder(id: string, symbol: any, type: any, side: any, amount?: any, price?: any, params?: {}): Promise<Order>;
54
+ editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: number, price?: number, params?: {}): Promise<Order>;
55
55
  parseOrderStatus(status: any): string;
56
56
  parseOrder(order: any, market?: Market): Order;
57
57
  createOrders(orders: OrderRequest[], params?: {}): Promise<Order[]>;
58
58
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
59
59
  createOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): any;
60
- createMarketOrderWithCost(symbol: string, side: OrderSide, cost: any, params?: {}): Promise<Order>;
61
- createMarketBuyOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
62
- createMarketSellOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
60
+ createMarketOrderWithCost(symbol: string, side: OrderSide, cost: number, params?: {}): Promise<Order>;
61
+ createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
62
+ createMarketSellOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
63
63
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
64
64
  fetchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
65
65
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
@@ -114,7 +114,7 @@ export default class binance extends Exchange {
114
114
  id: string;
115
115
  amount: number;
116
116
  };
117
- transfer(code: string, amount: number, fromAccount: any, toAccount: any, params?: {}): Promise<TransferEntry>;
117
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
118
118
  fetchTransfers(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
119
119
  fetchDepositAddress(code: string, params?: {}): Promise<{
120
120
  currency: string;
@@ -123,7 +123,7 @@ export default class binance extends Exchange {
123
123
  network: any;
124
124
  info: any;
125
125
  }>;
126
- fetchTransactionFees(codes?: any, params?: {}): Promise<{
126
+ fetchTransactionFees(codes?: string[], params?: {}): Promise<{
127
127
  withdraw: {};
128
128
  deposit: {};
129
129
  info: any;
@@ -261,7 +261,7 @@ export default class binance extends Exchange {
261
261
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").FundingHistory[]>;
262
262
  setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
263
263
  setMarginMode(marginMode: string, symbol?: Str, params?: {}): Promise<any>;
264
- setPositionMode(hedged: any, symbol?: Str, params?: {}): Promise<any>;
264
+ setPositionMode(hedged: boolean, symbol?: Str, params?: {}): Promise<any>;
265
265
  fetchSettlementHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
266
266
  fetchMySettlementHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
267
267
  parseSettlement(settlement: any, market: any): {
package/js/src/binance.js CHANGED
@@ -5051,7 +5051,7 @@ export default class binance extends Exchange {
5051
5051
  // "msg": "Quantity greater than max quantity."
5052
5052
  // }
5053
5053
  //
5054
- // createOrder, fetchOpenOrders: portfolio margin linear swap and future
5054
+ // createOrder, fetchOpenOrders, fetchOrder, cancelOrder: portfolio margin linear swap and future
5055
5055
  //
5056
5056
  // {
5057
5057
  // "symbol": "BTCUSDT",
@@ -5074,7 +5074,7 @@ export default class binance extends Exchange {
5074
5074
  // "status": "NEW"
5075
5075
  // }
5076
5076
  //
5077
- // createOrder, fetchOpenOrders: portfolio margin inverse swap and future
5077
+ // createOrder, fetchOpenOrders, fetchOrder, cancelOrder: portfolio margin inverse swap and future
5078
5078
  //
5079
5079
  // {
5080
5080
  // "symbol": "ETHUSD_PERP",
@@ -5140,7 +5140,7 @@ export default class binance extends Exchange {
5140
5140
  // "priceProtect": false
5141
5141
  // }
5142
5142
  //
5143
- // createOrder, cancelAllOrders: portfolio margin spot margin
5143
+ // createOrder, cancelAllOrders, cancelOrder: portfolio margin spot margin
5144
5144
  //
5145
5145
  // {
5146
5146
  // "clientOrderId": "x-R4BD3S82e9ef29d8346440f0b28b86",
@@ -5159,7 +5159,7 @@ export default class binance extends Exchange {
5159
5159
  // "type": "LIMIT"
5160
5160
  // }
5161
5161
  //
5162
- // fetchOpenOrders: portfolio margin spot margin
5162
+ // fetchOpenOrders, fetchOrder: portfolio margin spot margin
5163
5163
  //
5164
5164
  // {
5165
5165
  // "symbol": "BTCUSDT",
@@ -5184,6 +5184,31 @@ export default class binance extends Exchange {
5184
5184
  // "preventedQuantity": null
5185
5185
  // }
5186
5186
  //
5187
+ // cancelOrder: portfolio margin linear and inverse swap conditional
5188
+ //
5189
+ // {
5190
+ // "strategyId": 3733211,
5191
+ // "newClientStrategyId": "x-xcKtGhcuaf166172ed504cd1bc0396",
5192
+ // "strategyType": "STOP",
5193
+ // "strategyStatus": "CANCELED",
5194
+ // "origQty": "0.010",
5195
+ // "price": "35000.00",
5196
+ // "reduceOnly": false,
5197
+ // "side": "BUY",
5198
+ // "positionSide": "BOTH",
5199
+ // "stopPrice": "50000.00", // ignored with trailing orders
5200
+ // "symbol": "BTCUSDT",
5201
+ // "timeInForce": "GTC",
5202
+ // "activatePrice": null, // only return with trailing orders
5203
+ // "priceRate": null, // only return with trailing orders
5204
+ // "bookTime": 1707270098774,
5205
+ // "updateTime": 1707270119261,
5206
+ // "workingType": "CONTRACT_PRICE",
5207
+ // "priceProtect": false,
5208
+ // "goodTillDate": 0,
5209
+ // "selfTradePreventionMode": "NONE"
5210
+ // }
5211
+ //
5187
5212
  const code = this.safeString(order, 'code');
5188
5213
  if (code !== undefined) {
5189
5214
  // cancelOrders/createOrders might have a partial success
@@ -5794,9 +5819,14 @@ export default class binance extends Exchange {
5794
5819
  * @see https://binance-docs.github.io/apidocs/delivery/en/#query-order-user_data
5795
5820
  * @see https://binance-docs.github.io/apidocs/voptions/en/#query-single-order-trade
5796
5821
  * @see https://binance-docs.github.io/apidocs/spot/en/#query-margin-account-39-s-order-user_data
5822
+ * @see https://binance-docs.github.io/apidocs/pm/en/#query-um-order-user_data
5823
+ * @see https://binance-docs.github.io/apidocs/pm/en/#query-cm-order-user_data
5824
+ * @see https://binance-docs.github.io/apidocs/pm/en/#query-margin-account-order-user_data
5825
+ * @param {string} id the order id
5797
5826
  * @param {string} symbol unified symbol of the market the order was made in
5798
5827
  * @param {object} [params] extra parameters specific to the exchange API endpoint
5799
5828
  * @param {string} [params.marginMode] 'cross' or 'isolated', for spot margin trading
5829
+ * @param {boolean} [params.portfolioMargin] set to true if you would like to fetch an order in a portfolio margin account
5800
5830
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
5801
5831
  */
5802
5832
  if (symbol === undefined) {
@@ -5806,11 +5836,14 @@ export default class binance extends Exchange {
5806
5836
  const market = this.market(symbol);
5807
5837
  const defaultType = this.safeString2(this.options, 'fetchOrder', 'defaultType', 'spot');
5808
5838
  const type = this.safeString(params, 'type', defaultType);
5809
- const [marginMode, query] = this.handleMarginModeAndParams('fetchOrder', params);
5839
+ let marginMode = undefined;
5840
+ [marginMode, params] = this.handleMarginModeAndParams('fetchOrder', params);
5841
+ let isPortfolioMargin = undefined;
5842
+ [isPortfolioMargin, params] = this.handleOptionAndParams2(params, 'fetchOrder', 'papi', 'portfolioMargin', false);
5810
5843
  const request = {
5811
5844
  'symbol': market['id'],
5812
5845
  };
5813
- const clientOrderId = this.safeValue2(params, 'origClientOrderId', 'clientOrderId');
5846
+ const clientOrderId = this.safeString2(params, 'origClientOrderId', 'clientOrderId');
5814
5847
  if (clientOrderId !== undefined) {
5815
5848
  if (market['option']) {
5816
5849
  request['clientOrderId'] = clientOrderId;
@@ -5822,25 +5855,40 @@ export default class binance extends Exchange {
5822
5855
  else {
5823
5856
  request['orderId'] = id;
5824
5857
  }
5825
- const requestParams = this.omit(query, ['type', 'clientOrderId', 'origClientOrderId']);
5858
+ params = this.omit(params, ['type', 'clientOrderId', 'origClientOrderId']);
5826
5859
  let response = undefined;
5827
5860
  if (market['option']) {
5828
- response = await this.eapiPrivateGetOrder(this.extend(request, requestParams));
5861
+ response = await this.eapiPrivateGetOrder(this.extend(request, params));
5829
5862
  }
5830
5863
  else if (market['linear']) {
5831
- response = await this.fapiPrivateGetOrder(this.extend(request, requestParams));
5864
+ if (isPortfolioMargin) {
5865
+ response = await this.papiGetUmOrder(this.extend(request, params));
5866
+ }
5867
+ else {
5868
+ response = await this.fapiPrivateGetOrder(this.extend(request, params));
5869
+ }
5832
5870
  }
5833
5871
  else if (market['inverse']) {
5834
- response = await this.dapiPrivateGetOrder(this.extend(request, requestParams));
5872
+ if (isPortfolioMargin) {
5873
+ response = await this.papiGetCmOrder(this.extend(request, params));
5874
+ }
5875
+ else {
5876
+ response = await this.dapiPrivateGetOrder(this.extend(request, params));
5877
+ }
5835
5878
  }
5836
- else if (type === 'margin' || marginMode !== undefined) {
5837
- if (marginMode === 'isolated') {
5838
- request['isIsolated'] = true;
5879
+ else if ((type === 'margin') || (marginMode !== undefined) || isPortfolioMargin) {
5880
+ if (isPortfolioMargin) {
5881
+ response = await this.papiGetMarginOrder(this.extend(request, params));
5882
+ }
5883
+ else {
5884
+ if (marginMode === 'isolated') {
5885
+ request['isIsolated'] = true;
5886
+ }
5887
+ response = await this.sapiGetMarginOrder(this.extend(request, params));
5839
5888
  }
5840
- response = await this.sapiGetMarginOrder(this.extend(request, requestParams));
5841
5889
  }
5842
5890
  else {
5843
- response = await this.privateGetOrder(this.extend(request, requestParams));
5891
+ response = await this.privateGetOrder(this.extend(request, params));
5844
5892
  }
5845
5893
  return this.parseOrder(response, market);
5846
5894
  }
@@ -6155,9 +6203,16 @@ export default class binance extends Exchange {
6155
6203
  * @see https://binance-docs.github.io/apidocs/delivery/en/#cancel-order-trade
6156
6204
  * @see https://binance-docs.github.io/apidocs/voptions/en/#cancel-option-order-trade
6157
6205
  * @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-cancel-order-trade
6206
+ * @see https://binance-docs.github.io/apidocs/pm/en/#cancel-um-order-trade
6207
+ * @see https://binance-docs.github.io/apidocs/pm/en/#cancel-cm-order-trade
6208
+ * @see https://binance-docs.github.io/apidocs/pm/en/#cancel-um-conditional-order-trade
6209
+ * @see https://binance-docs.github.io/apidocs/pm/en/#cancel-cm-conditional-order-trade
6210
+ * @see https://binance-docs.github.io/apidocs/pm/en/#cancel-margin-account-order-trade
6158
6211
  * @param {string} id order id
6159
6212
  * @param {string} symbol unified symbol of the market the order was made in
6160
6213
  * @param {object} [params] extra parameters specific to the exchange API endpoint
6214
+ * @param {boolean} [params.portfolioMargin] set to true if you would like to cancel an order in a portfolio margin account
6215
+ * @param {boolean} [params.stop] set to true if you would like to cancel a portfolio margin account conditional order
6161
6216
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
6162
6217
  */
6163
6218
  if (symbol === undefined) {
@@ -6167,43 +6222,80 @@ export default class binance extends Exchange {
6167
6222
  const market = this.market(symbol);
6168
6223
  const defaultType = this.safeString2(this.options, 'cancelOrder', 'defaultType', 'spot');
6169
6224
  const type = this.safeString(params, 'type', defaultType);
6170
- const [marginMode, query] = this.handleMarginModeAndParams('cancelOrder', params);
6225
+ let marginMode = undefined;
6226
+ [marginMode, params] = this.handleMarginModeAndParams('cancelOrder', params);
6227
+ let isPortfolioMargin = undefined;
6228
+ [isPortfolioMargin, params] = this.handleOptionAndParams2(params, 'cancelOrder', 'papi', 'portfolioMargin', false);
6229
+ const isConditional = this.safeBool2(params, 'stop', 'conditional');
6171
6230
  const request = {
6172
6231
  'symbol': market['id'],
6173
- // 'orderId': id,
6174
- // 'origClientOrderId': id,
6175
6232
  };
6176
- const clientOrderId = this.safeValue2(params, 'origClientOrderId', 'clientOrderId');
6233
+ const clientOrderId = this.safeStringN(params, ['origClientOrderId', 'clientOrderId', 'newClientStrategyId']);
6177
6234
  if (clientOrderId !== undefined) {
6178
6235
  if (market['option']) {
6179
6236
  request['clientOrderId'] = clientOrderId;
6180
6237
  }
6181
6238
  else {
6182
- request['origClientOrderId'] = clientOrderId;
6239
+ if (isPortfolioMargin && isConditional) {
6240
+ request['newClientStrategyId'] = clientOrderId;
6241
+ }
6242
+ else {
6243
+ request['origClientOrderId'] = clientOrderId;
6244
+ }
6183
6245
  }
6184
6246
  }
6185
6247
  else {
6186
- request['orderId'] = id;
6248
+ if (isPortfolioMargin && isConditional) {
6249
+ request['strategyId'] = id;
6250
+ }
6251
+ else {
6252
+ request['orderId'] = id;
6253
+ }
6187
6254
  }
6188
- const requestParams = this.omit(query, ['type', 'origClientOrderId', 'clientOrderId']);
6255
+ params = this.omit(params, ['type', 'origClientOrderId', 'clientOrderId', 'newClientStrategyId', 'stop', 'conditional']);
6189
6256
  let response = undefined;
6190
6257
  if (market['option']) {
6191
- response = await this.eapiPrivateDeleteOrder(this.extend(request, requestParams));
6258
+ response = await this.eapiPrivateDeleteOrder(this.extend(request, params));
6192
6259
  }
6193
6260
  else if (market['linear']) {
6194
- response = await this.fapiPrivateDeleteOrder(this.extend(request, requestParams));
6261
+ if (isPortfolioMargin) {
6262
+ if (isConditional) {
6263
+ response = await this.papiDeleteUmConditionalOrder(this.extend(request, params));
6264
+ }
6265
+ else {
6266
+ response = await this.papiDeleteUmOrder(this.extend(request, params));
6267
+ }
6268
+ }
6269
+ else {
6270
+ response = await this.fapiPrivateDeleteOrder(this.extend(request, params));
6271
+ }
6195
6272
  }
6196
6273
  else if (market['inverse']) {
6197
- response = await this.dapiPrivateDeleteOrder(this.extend(request, requestParams));
6274
+ if (isPortfolioMargin) {
6275
+ if (isConditional) {
6276
+ response = await this.papiDeleteCmConditionalOrder(this.extend(request, params));
6277
+ }
6278
+ else {
6279
+ response = await this.papiDeleteCmOrder(this.extend(request, params));
6280
+ }
6281
+ }
6282
+ else {
6283
+ response = await this.dapiPrivateDeleteOrder(this.extend(request, params));
6284
+ }
6198
6285
  }
6199
- else if (type === 'margin' || marginMode !== undefined) {
6200
- if (marginMode === 'isolated') {
6201
- request['isIsolated'] = true;
6286
+ else if ((type === 'margin') || (marginMode !== undefined) || isPortfolioMargin) {
6287
+ if (isPortfolioMargin) {
6288
+ response = await this.papiDeleteMarginOrder(this.extend(request, params));
6289
+ }
6290
+ else {
6291
+ if (marginMode === 'isolated') {
6292
+ request['isIsolated'] = true;
6293
+ }
6294
+ response = await this.sapiDeleteMarginOrder(this.extend(request, params));
6202
6295
  }
6203
- response = await this.sapiDeleteMarginOrder(this.extend(request, requestParams));
6204
6296
  }
6205
6297
  else {
6206
- response = await this.privateDeleteOrder(this.extend(request, requestParams));
6298
+ response = await this.privateDeleteOrder(this.extend(request, params));
6207
6299
  }
6208
6300
  return this.parseOrder(response, market);
6209
6301
  }
@@ -9163,9 +9255,12 @@ export default class binance extends Exchange {
9163
9255
  * @description set the level of leverage for a market
9164
9256
  * @see https://binance-docs.github.io/apidocs/futures/en/#change-initial-leverage-trade
9165
9257
  * @see https://binance-docs.github.io/apidocs/delivery/en/#change-initial-leverage-trade
9258
+ * @see https://binance-docs.github.io/apidocs/pm/en/#change-um-initial-leverage-trade
9259
+ * @see https://binance-docs.github.io/apidocs/pm/en/#change-cm-initial-leverage-trade
9166
9260
  * @param {float} leverage the rate of leverage
9167
9261
  * @param {string} symbol unified market symbol
9168
9262
  * @param {object} [params] extra parameters specific to the exchange API endpoint
9263
+ * @param {boolean} [params.portfolioMargin] set to true if you would like to set the leverage for a trading pair in a portfolio margin account
9169
9264
  * @returns {object} response from the exchange
9170
9265
  */
9171
9266
  if (symbol === undefined) {
@@ -9182,12 +9277,24 @@ export default class binance extends Exchange {
9182
9277
  'symbol': market['id'],
9183
9278
  'leverage': leverage,
9184
9279
  };
9280
+ let isPortfolioMargin = undefined;
9281
+ [isPortfolioMargin, params] = this.handleOptionAndParams2(params, 'setLeverage', 'papi', 'portfolioMargin', false);
9185
9282
  let response = undefined;
9186
9283
  if (market['linear']) {
9187
- response = await this.fapiPrivatePostLeverage(this.extend(request, params));
9284
+ if (isPortfolioMargin) {
9285
+ response = await this.papiPostUmLeverage(this.extend(request, params));
9286
+ }
9287
+ else {
9288
+ response = await this.fapiPrivatePostLeverage(this.extend(request, params));
9289
+ }
9188
9290
  }
9189
9291
  else if (market['inverse']) {
9190
- response = await this.dapiPrivatePostLeverage(this.extend(request, params));
9292
+ if (isPortfolioMargin) {
9293
+ response = await this.papiPostCmLeverage(this.extend(request, params));
9294
+ }
9295
+ else {
9296
+ response = await this.dapiPrivatePostLeverage(this.extend(request, params));
9297
+ }
9191
9298
  }
9192
9299
  else {
9193
9300
  throw new NotSupported(this.id + ' setLeverage() supports linear and inverse contracts only');
@@ -9269,9 +9376,12 @@ export default class binance extends Exchange {
9269
9376
  * @description set hedged to true or false for a market
9270
9377
  * @see https://binance-docs.github.io/apidocs/futures/en/#change-position-mode-trade
9271
9378
  * @see https://binance-docs.github.io/apidocs/delivery/en/#change-position-mode-trade
9379
+ * @see https://binance-docs.github.io/apidocs/pm/en/#change-um-position-mode-trade
9380
+ * @see https://binance-docs.github.io/apidocs/pm/en/#change-cm-position-mode-trade
9272
9381
  * @param {bool} hedged set to true to use dualSidePosition
9273
9382
  * @param {string} symbol not used by binance setPositionMode ()
9274
9383
  * @param {object} [params] extra parameters specific to the exchange API endpoint
9384
+ * @param {boolean} [params.portfolioMargin] set to true if you would like to set the position mode for a portfolio margin account
9275
9385
  * @returns {object} response from the exchange
9276
9386
  */
9277
9387
  const defaultType = this.safeString(this.options, 'defaultType', 'future');
@@ -9279,6 +9389,8 @@ export default class binance extends Exchange {
9279
9389
  params = this.omit(params, ['type']);
9280
9390
  let subType = undefined;
9281
9391
  [subType, params] = this.handleSubTypeAndParams('setPositionMode', undefined, params);
9392
+ let isPortfolioMargin = undefined;
9393
+ [isPortfolioMargin, params] = this.handleOptionAndParams2(params, 'setPositionMode', 'papi', 'portfolioMargin', false);
9282
9394
  let dualSidePosition = undefined;
9283
9395
  if (hedged) {
9284
9396
  dualSidePosition = 'true';
@@ -9291,11 +9403,20 @@ export default class binance extends Exchange {
9291
9403
  };
9292
9404
  let response = undefined;
9293
9405
  if (this.isInverse(type, subType)) {
9294
- response = await this.dapiPrivatePostPositionSideDual(this.extend(request, params));
9406
+ if (isPortfolioMargin) {
9407
+ response = await this.papiPostCmPositionSideDual(this.extend(request, params));
9408
+ }
9409
+ else {
9410
+ response = await this.dapiPrivatePostPositionSideDual(this.extend(request, params));
9411
+ }
9295
9412
  }
9296
9413
  else {
9297
- // default to future
9298
- response = await this.fapiPrivatePostPositionSideDual(this.extend(request, params));
9414
+ if (isPortfolioMargin) {
9415
+ response = await this.papiPostUmPositionSideDual(this.extend(request, params));
9416
+ }
9417
+ else {
9418
+ response = await this.fapiPrivatePostPositionSideDual(this.extend(request, params));
9419
+ }
9299
9420
  }
9300
9421
  //
9301
9422
  // {
package/js/src/bingx.d.ts CHANGED
@@ -66,9 +66,9 @@ export default class bingx extends Exchange {
66
66
  parseBalance(response: any): Balances;
67
67
  fetchPositions(symbols?: Strings, params?: {}): Promise<Position[]>;
68
68
  parsePosition(position: any, market?: Market): Position;
69
- createMarketOrderWithCost(symbol: string, side: OrderSide, cost: any, params?: {}): Promise<Order>;
70
- createMarketBuyOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
71
- createMarketSellOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
69
+ createMarketOrderWithCost(symbol: string, side: OrderSide, cost: number, params?: {}): Promise<Order>;
70
+ createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
71
+ createMarketSellOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
72
72
  createOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): any;
73
73
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
74
74
  createOrders(orders: OrderRequest[], params?: {}): Promise<Order[]>;
@@ -81,7 +81,7 @@ export default class bingx extends Exchange {
81
81
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
82
82
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
83
83
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
84
- transfer(code: string, amount: number, fromAccount: any, toAccount: any, params?: {}): Promise<TransferEntry>;
84
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
85
85
  fetchTransfers(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
86
86
  parseTransfer(transfer: any, currency?: Currency): {
87
87
  info: any;
@@ -130,7 +130,7 @@ export default class bingx extends Exchange {
130
130
  parseLiquidation(liquidation: any, market?: Market): import("./base/types.js").Liquidation;
131
131
  closePosition(symbol: string, side?: OrderSide, params?: {}): Promise<Order>;
132
132
  closeAllPositions(params?: {}): Promise<Position[]>;
133
- setPositionMode(hedged: any, symbol?: Str, params?: {}): Promise<any>;
133
+ setPositionMode(hedged: boolean, symbol?: Str, params?: {}): Promise<any>;
134
134
  sign(path: any, section?: string, method?: string, params?: {}, headers?: any, body?: any): {
135
135
  url: any;
136
136
  method: string;
@@ -6,7 +6,7 @@ import type { TransferEntry, Balances, Currency, Int, Market, OHLCV, Order, Orde
6
6
  */
7
7
  export default class bitfinex extends Exchange {
8
8
  describe(): any;
9
- fetchTransactionFees(codes?: any, params?: {}): Promise<{}>;
9
+ fetchTransactionFees(codes?: string[], params?: {}): Promise<{}>;
10
10
  fetchDepositWithdrawFees(codes?: Strings, params?: {}): Promise<any>;
11
11
  parseDepositWithdrawFee(fee: any, currency?: Currency): {
12
12
  withdraw: {
@@ -25,7 +25,7 @@ export default class bitfinex extends Exchange {
25
25
  amountToPrecision(symbol: any, amount: any): any;
26
26
  priceToPrecision(symbol: any, price: any): any;
27
27
  fetchBalance(params?: {}): Promise<Balances>;
28
- transfer(code: string, amount: number, fromAccount: any, toAccount: any, params?: {}): Promise<TransferEntry>;
28
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
29
29
  parseTransfer(transfer: any, currency?: Currency): {
30
30
  info: any;
31
31
  id: any;
@@ -47,7 +47,7 @@ export default class bitfinex extends Exchange {
47
47
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
48
48
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
49
49
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
50
- editOrder(id: string, symbol: any, type: any, side: any, amount?: any, price?: any, params?: {}): Promise<Order>;
50
+ editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: number, price?: number, params?: {}): Promise<Order>;
51
51
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
52
52
  cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
53
53
  parseOrder(order: any, market?: Market): Order;
@@ -22,7 +22,7 @@ export default class bitfinex2 extends Exchange {
22
22
  fetchCurrencies(params?: {}): Promise<{}>;
23
23
  safeNetwork(networkId: any): string;
24
24
  fetchBalance(params?: {}): Promise<Balances>;
25
- transfer(code: string, amount: number, fromAccount: any, toAccount: any, params?: {}): Promise<TransferEntry>;
25
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
26
26
  parseTransfer(transfer: any, currency?: Currency): {
27
27
  id: any;
28
28
  timestamp: number;
@@ -171,5 +171,5 @@ export default class bitfinex2 extends Exchange {
171
171
  status: string;
172
172
  };
173
173
  fetchOrder(id: string, symbol?: string, params?: {}): Promise<Order>;
174
- editOrder(id: string, symbol: any, type: any, side: any, amount?: any, price?: any, params?: {}): Promise<Order>;
174
+ editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: number, price?: number, params?: {}): Promise<Order>;
175
175
  }
@@ -60,11 +60,11 @@ export default class bitget extends Exchange {
60
60
  parseBalance(balance: any): Balances;
61
61
  parseOrderStatus(status: any): string;
62
62
  parseOrder(order: any, market?: Market): Order;
63
- createMarketBuyOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
63
+ createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
64
64
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
65
65
  createOrderRequest(symbol: any, type: any, side: any, amount: number, price?: number, params?: {}): any;
66
66
  createOrders(orders: OrderRequest[], params?: {}): Promise<Order[]>;
67
- editOrder(id: string, symbol: any, type: any, side: any, amount?: any, price?: any, params?: {}): Promise<Order>;
67
+ editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: number, price?: number, params?: {}): Promise<Order>;
68
68
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
69
69
  cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<Order[]>;
70
70
  cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
@@ -159,12 +159,12 @@ export default class bitget extends Exchange {
159
159
  addMargin(symbol: string, amount: any, params?: {}): Promise<any>;
160
160
  fetchLeverage(symbol: string, params?: {}): Promise<any>;
161
161
  setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
162
- setMarginMode(marginMode: any, symbol?: Str, params?: {}): Promise<any>;
163
- setPositionMode(hedged: any, symbol?: Str, params?: {}): Promise<any>;
162
+ setMarginMode(marginMode: string, symbol?: Str, params?: {}): Promise<any>;
163
+ setPositionMode(hedged: boolean, symbol?: Str, params?: {}): Promise<any>;
164
164
  fetchOpenInterest(symbol: string, params?: {}): Promise<import("./base/types.js").OpenInterest>;
165
165
  parseOpenInterest(interest: any, market?: Market): import("./base/types.js").OpenInterest;
166
166
  fetchTransfers(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
167
- transfer(code: string, amount: number, fromAccount: any, toAccount: any, params?: {}): Promise<TransferEntry>;
167
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
168
168
  parseTransfer(transfer: any, currency?: Currency): {
169
169
  info: any;
170
170
  id: string;
package/js/src/bitget.js CHANGED
@@ -4488,7 +4488,7 @@ export default class bitget extends Exchange {
4488
4488
  const takeProfit = this.safeValue(params, 'takeProfit');
4489
4489
  const isStopLoss = stopLoss !== undefined;
4490
4490
  const isTakeProfit = takeProfit !== undefined;
4491
- const trailingTriggerPrice = this.safeString(params, 'trailingTriggerPrice', price);
4491
+ const trailingTriggerPrice = this.safeString(params, 'trailingTriggerPrice', this.numberToString(price));
4492
4492
  const trailingPercent = this.safeString2(params, 'trailingPercent', 'newCallbackRatio');
4493
4493
  const isTrailingPercentOrder = trailingPercent !== undefined;
4494
4494
  if (this.sum(isTriggerOrder, isStopLossOrder, isTakeProfitOrder, isTrailingPercentOrder) > 1) {
@@ -64,7 +64,7 @@ export default class bitmart extends Exchange {
64
64
  parseOrder(order: any, market?: Market): Order;
65
65
  parseOrderSide(side: any): string;
66
66
  parseOrderStatusByType(type: any, status: any): string;
67
- createMarketBuyOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
67
+ createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
68
68
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
69
69
  createSwapOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): any;
70
70
  createSpotOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): any;
@@ -125,7 +125,7 @@ export default class bitmart extends Exchange {
125
125
  info: any;
126
126
  };
127
127
  fetchIsolatedBorrowRates(params?: {}): Promise<any[]>;
128
- transfer(code: string, amount: number, fromAccount: any, toAccount: any, params?: {}): Promise<TransferEntry>;
128
+ transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
129
129
  parseTransferStatus(status: any): string;
130
130
  parseTransferToAccount(type: any): string;
131
131
  parseTransferFromAccount(type: any): string;