ccxt 4.3.11 → 4.3.13

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 (82) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/ccxt.js +1 -1
  3. package/dist/cjs/src/base/Exchange.js +15 -0
  4. package/dist/cjs/src/bigone.js +22 -22
  5. package/dist/cjs/src/binance.js +5 -5
  6. package/dist/cjs/src/bingx.js +2 -2
  7. package/dist/cjs/src/bitget.js +7 -4
  8. package/dist/cjs/src/bitmart.js +3 -8
  9. package/dist/cjs/src/bitmex.js +2 -2
  10. package/dist/cjs/src/bybit.js +82 -71
  11. package/dist/cjs/src/coinbase.js +8 -8
  12. package/dist/cjs/src/coinbaseinternational.js +2 -2
  13. package/dist/cjs/src/coinex.js +513 -449
  14. package/dist/cjs/src/coinlist.js +12 -12
  15. package/dist/cjs/src/coinmetro.js +2 -2
  16. package/dist/cjs/src/cryptocom.js +16 -16
  17. package/dist/cjs/src/gate.js +2 -2
  18. package/dist/cjs/src/hitbtc.js +3 -3
  19. package/dist/cjs/src/htx.js +3 -7
  20. package/dist/cjs/src/indodax.js +2 -2
  21. package/dist/cjs/src/kraken.js +3 -1
  22. package/dist/cjs/src/kucoin.js +4 -4
  23. package/dist/cjs/src/kucoinfutures.js +6 -6
  24. package/dist/cjs/src/mexc.js +5 -5
  25. package/dist/cjs/src/okx.js +6 -6
  26. package/dist/cjs/src/poloniexfutures.js +4 -4
  27. package/dist/cjs/src/pro/bitget.js +140 -89
  28. package/dist/cjs/src/pro/bybit.js +196 -11
  29. package/dist/cjs/src/pro/coinbase.js +107 -29
  30. package/dist/cjs/src/pro/mexc.js +21 -1
  31. package/dist/cjs/src/probit.js +2 -2
  32. package/dist/cjs/src/whitebit.js +76 -1
  33. package/dist/cjs/src/woo.js +2 -2
  34. package/js/ccxt.d.ts +1 -1
  35. package/js/ccxt.js +1 -1
  36. package/js/src/abstract/bybit.d.ts +1 -0
  37. package/js/src/base/Exchange.d.ts +10 -6
  38. package/js/src/base/Exchange.js +15 -0
  39. package/js/src/base/types.d.ts +17 -2
  40. package/js/src/bigone.js +22 -22
  41. package/js/src/binance.d.ts +2 -9
  42. package/js/src/binance.js +5 -5
  43. package/js/src/bingx.js +2 -2
  44. package/js/src/bitget.d.ts +4 -31
  45. package/js/src/bitget.js +7 -4
  46. package/js/src/bitmart.d.ts +4 -24
  47. package/js/src/bitmart.js +3 -8
  48. package/js/src/bitmex.js +2 -2
  49. package/js/src/bybit.d.ts +7 -9
  50. package/js/src/bybit.js +82 -71
  51. package/js/src/coinbase.js +8 -8
  52. package/js/src/coinbaseinternational.js +2 -2
  53. package/js/src/coinex.d.ts +4 -24
  54. package/js/src/coinex.js +513 -449
  55. package/js/src/coinlist.js +12 -12
  56. package/js/src/coinmetro.js +2 -2
  57. package/js/src/cryptocom.js +16 -16
  58. package/js/src/digifinex.d.ts +3 -10
  59. package/js/src/gate.js +2 -2
  60. package/js/src/hitbtc.js +3 -3
  61. package/js/src/htx.d.ts +3 -13
  62. package/js/src/htx.js +3 -7
  63. package/js/src/indodax.js +2 -2
  64. package/js/src/kraken.js +3 -1
  65. package/js/src/kucoin.js +4 -4
  66. package/js/src/kucoinfutures.js +6 -6
  67. package/js/src/mexc.js +5 -5
  68. package/js/src/okx.d.ts +3 -10
  69. package/js/src/okx.js +6 -6
  70. package/js/src/poloniexfutures.js +4 -4
  71. package/js/src/pro/bitget.js +140 -89
  72. package/js/src/pro/bybit.d.ts +5 -1
  73. package/js/src/pro/bybit.js +196 -11
  74. package/js/src/pro/coinbase.d.ts +4 -0
  75. package/js/src/pro/coinbase.js +107 -29
  76. package/js/src/pro/mexc.js +21 -1
  77. package/js/src/probit.js +2 -2
  78. package/js/src/whitebit.d.ts +1 -0
  79. package/js/src/whitebit.js +76 -1
  80. package/js/src/woo.js +2 -2
  81. package/package.json +6 -5
  82. package/dist/cjs/src/flowbtc.js +0 -35
package/js/src/coinex.js CHANGED
@@ -1718,121 +1718,6 @@ export default class coinex extends Exchange {
1718
1718
  return this.safeString(statuses, status, status);
1719
1719
  }
1720
1720
  parseOrder(order, market = undefined) {
1721
- //
1722
- // fetchOrder
1723
- //
1724
- // {
1725
- // "amount": "0.1",
1726
- // "asset_fee": "0.22736197736197736197",
1727
- // "avg_price": "196.85000000000000000000",
1728
- // "create_time": 1537270135,
1729
- // "deal_amount": "0.1",
1730
- // "deal_fee": "0",
1731
- // "deal_money": "19.685",
1732
- // "fee_asset": "CET",
1733
- // "fee_discount": "0.5",
1734
- // "id": 1788259447,
1735
- // "left": "0",
1736
- // "maker_fee_rate": "0",
1737
- // "market": "ETHUSDT",
1738
- // "order_type": "limit",
1739
- // "price": "170.00000000",
1740
- // "status": "done",
1741
- // "taker_fee_rate": "0.0005",
1742
- // "type": "sell",
1743
- // "client_id": "",
1744
- // }
1745
- //
1746
- // Spot and Margin cancelOrder, fetchOrder
1747
- //
1748
- // {
1749
- // "amount":"1.5",
1750
- // "asset_fee":"0",
1751
- // "avg_price":"0.14208538",
1752
- // "client_id":"",
1753
- // "create_time":1650993819,
1754
- // "deal_amount":"10.55703267",
1755
- // "deal_fee":"0.0029999999971787292",
1756
- // "deal_money":"1.4999999985893646",
1757
- // "fee_asset":null,
1758
- // "fee_discount":"1",
1759
- // "finished_time":null,
1760
- // "id":74556296907,
1761
- // "left":"0.0000000014106354",
1762
- // "maker_fee_rate":"0",
1763
- // "market":"DOGEUSDT",
1764
- // "money_fee":"0.0029999999971787292",
1765
- // "order_type":"market",
1766
- // "price":"0",
1767
- // "status":"done",
1768
- // "stock_fee":"0",
1769
- // "taker_fee_rate":"0.002",
1770
- // "type":"buy"
1771
- // "client_id": "",
1772
- // }
1773
- //
1774
- // Swap cancelOrder, fetchOrder
1775
- //
1776
- // {
1777
- // "amount": "0.0005",
1778
- // "client_id": "",
1779
- // "create_time": 1651004578.618224,
1780
- // "deal_asset_fee": "0.00000000000000000000",
1781
- // "deal_fee": "0.00000000000000000000",
1782
- // "deal_profit": "0.00000000000000000000",
1783
- // "deal_stock": "0.00000000000000000000",
1784
- // "effect_type": 1,
1785
- // "fee_asset": "",
1786
- // "fee_discount": "0.00000000000000000000",
1787
- // "last_deal_amount": "0.00000000000000000000",
1788
- // "last_deal_id": 0,
1789
- // "last_deal_price": "0.00000000000000000000",
1790
- // "last_deal_role": 0,
1791
- // "last_deal_time": 0,
1792
- // "last_deal_type": 0,
1793
- // "left": "0.0005",
1794
- // "leverage": "3",
1795
- // "maker_fee": "0.00030",
1796
- // "market": "BTCUSDT",
1797
- // "order_id": 18221659097,
1798
- // "position_id": 0,
1799
- // "position_type": 1,
1800
- // "price": "30000.00",
1801
- // "side": 2,
1802
- // "source": "api.v1",
1803
- // "stop_id": 0,
1804
- // "taker_fee": "0.00050",
1805
- // "target": 0,
1806
- // "type": 1,
1807
- // "update_time": 1651004578.618224,
1808
- // "user_id": 3620173
1809
- // }
1810
- //
1811
- // Swap Stop cancelOrder, fetchOrder
1812
- //
1813
- // {
1814
- // "amount": "0.0005",
1815
- // "client_id": "",
1816
- // "create_time": 1651034023.008771,
1817
- // "effect_type": 1,
1818
- // "fee_asset": "",
1819
- // "fee_discount": "0.00000000000000000000",
1820
- // "maker_fee": "0.00030",
1821
- // "market": "BTCUSDT",
1822
- // "order_id": 18256915101,
1823
- // "price": "31000.00",
1824
- // "side": 2,
1825
- // "source": "api.v1",
1826
- // "state": 1,
1827
- // "stop_price": "31500.00",
1828
- // "stop_type": 1,
1829
- // "taker_fee": "0.00050",
1830
- // "target": 0,
1831
- // "type": 1,
1832
- // "update_time": 1651034397.193624,
1833
- // "user_id": 3620173
1834
- // }
1835
- //
1836
1721
  //
1837
1722
  // Spot and Margin fetchOpenOrders, fetchClosedOrders
1838
1723
  //
@@ -1938,7 +1823,7 @@ export default class coinex extends Exchange {
1938
1823
  // "user_id": 3620173
1939
1824
  // }
1940
1825
  //
1941
- // Spot and Margin createOrder, createOrders, cancelOrders v2
1826
+ // Spot and Margin createOrder, createOrders, editOrder, cancelOrders, cancelOrder v2
1942
1827
  //
1943
1828
  // {
1944
1829
  // "amount": "0.0001",
@@ -1964,13 +1849,13 @@ export default class coinex extends Exchange {
1964
1849
  // "updated_at": 1714114386250
1965
1850
  // }
1966
1851
  //
1967
- // Spot, Margin and Swap trigger createOrder, createOrders v2
1852
+ // Spot, Margin and Swap trigger createOrder, createOrders, editOrder v2
1968
1853
  //
1969
1854
  // {
1970
1855
  // "stop_id": 117180138153
1971
1856
  // }
1972
1857
  //
1973
- // Swap createOrder, createOrders, cancelOrders v2
1858
+ // Swap createOrder, createOrders, editOrder, cancelOrders, cancelOrder v2
1974
1859
  //
1975
1860
  // {
1976
1861
  // "amount": "0.0001",
@@ -2030,7 +1915,7 @@ export default class coinex extends Exchange {
2030
1915
  // "updated_at": 1714119054559
2031
1916
  // }
2032
1917
  //
2033
- // Swap and Spot stop cancelOrders v2
1918
+ // Swap and Spot stop cancelOrders, cancelOrder v2
2034
1919
  //
2035
1920
  // {
2036
1921
  // "amount": "0.0001",
@@ -2048,6 +1933,59 @@ export default class coinex extends Exchange {
2048
1933
  // "updated_at": 1714187974363
2049
1934
  // }
2050
1935
  //
1936
+ // Swap fetchOrder v2
1937
+ //
1938
+ // {
1939
+ // "amount": "0.0001",
1940
+ // "client_id": "x-167673045-da5f31dcd478a829",
1941
+ // "created_at": 1714460987164,
1942
+ // "fee": "0",
1943
+ // "fee_ccy": "USDT",
1944
+ // "filled_amount": "0",
1945
+ // "filled_value": "0",
1946
+ // "last_filled_amount": "0",
1947
+ // "last_filled_price": "0",
1948
+ // "maker_fee_rate": "0.0003",
1949
+ // "market": "BTCUSDT",
1950
+ // "market_type": "FUTURES",
1951
+ // "order_id": 137319868771,
1952
+ // "price": "61000",
1953
+ // "realized_pnl": "0",
1954
+ // "side": "buy",
1955
+ // "status": "open",
1956
+ // "taker_fee_rate": "0.0005",
1957
+ // "type": "limit",
1958
+ // "unfilled_amount": "0.0001",
1959
+ // "updated_at": 1714460987164
1960
+ // }
1961
+ //
1962
+ // Spot and Margin fetchOrder v2
1963
+ //
1964
+ // {
1965
+ // "amount": "0.0001",
1966
+ // "base_fee": "0",
1967
+ // "ccy": "BTC",
1968
+ // "client_id": "x-167673045-da918d6724e3af81",
1969
+ // "created_at": 1714461638958,
1970
+ // "discount_fee": "0",
1971
+ // "filled_amount": "0",
1972
+ // "filled_value": "0",
1973
+ // "last_fill_amount": "0",
1974
+ // "last_fill_price": "0",
1975
+ // "maker_fee_rate": "0.002",
1976
+ // "market": "BTCUSDT",
1977
+ // "market_type": "SPOT",
1978
+ // "order_id": 117492012985,
1979
+ // "price": "61000",
1980
+ // "quote_fee": "0",
1981
+ // "side": "buy",
1982
+ // "status": "open",
1983
+ // "taker_fee_rate": "0.002",
1984
+ // "type": "limit",
1985
+ // "unfilled_amount": "0.0001",
1986
+ // "updated_at": 1714461638958
1987
+ // }
1988
+ //
2051
1989
  const rawStatus = this.safeString(order, 'status');
2052
1990
  let timestamp = this.safeTimestamp(order, 'create_time');
2053
1991
  if (timestamp === undefined) {
@@ -2734,7 +2672,7 @@ export default class coinex extends Exchange {
2734
2672
  * @param {string[]} ids order ids
2735
2673
  * @param {string} symbol unified market symbol
2736
2674
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2737
- * @param {boolean} [params.stop] set to true for canceling stop orders
2675
+ * @param {boolean} [params.trigger] set to true for canceling stop orders
2738
2676
  * @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2739
2677
  */
2740
2678
  if (symbol === undefined) {
@@ -2908,9 +2846,12 @@ export default class coinex extends Exchange {
2908
2846
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
2909
2847
  /**
2910
2848
  * @method
2911
- * @name okx#editOrder
2849
+ * @name coinex#editOrder
2912
2850
  * @description edit a trade order
2913
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade022_modify_order
2851
+ * @see https://docs.coinex.com/api/v2/spot/order/http/edit-order
2852
+ * @see https://docs.coinex.com/api/v2/spot/order/http/edit-stop-order
2853
+ * @see https://docs.coinex.com/api/v2/futures/order/http/edit-order
2854
+ * @see https://docs.coinex.com/api/v2/futures/order/http/edit-stop-order
2914
2855
  * @param {string} id order id
2915
2856
  * @param {string} symbol unified symbol of the market to create an order in
2916
2857
  * @param {string} type 'market' or 'limit'
@@ -2918,6 +2859,7 @@ export default class coinex extends Exchange {
2918
2859
  * @param {float} amount how much of the currency you want to trade in units of the base currency
2919
2860
  * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
2920
2861
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2862
+ * @param {float} [params.triggerPrice] the price to trigger stop orders
2921
2863
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2922
2864
  */
2923
2865
  if (symbol === undefined) {
@@ -2925,12 +2867,8 @@ export default class coinex extends Exchange {
2925
2867
  }
2926
2868
  await this.loadMarkets();
2927
2869
  const market = this.market(symbol);
2928
- if (!market['spot']) {
2929
- throw new NotSupported(this.id + ' editOrder() does not support ' + market['type'] + ' orders, only spot orders are accepted');
2930
- }
2931
2870
  const request = {
2932
2871
  'market': market['id'],
2933
- 'id': parseInt(id),
2934
2872
  };
2935
2873
  if (amount !== undefined) {
2936
2874
  request['amount'] = this.amountToPrecision(symbol, amount);
@@ -2938,38 +2876,118 @@ export default class coinex extends Exchange {
2938
2876
  if (price !== undefined) {
2939
2877
  request['price'] = this.priceToPrecision(symbol, price);
2940
2878
  }
2941
- const response = await this.v1PrivatePostOrderModify(this.extend(request, params));
2942
- //
2943
- // {
2944
- // "code": 0,
2945
- // "data": {
2946
- // "id": 35436205,
2947
- // "create_time": 1636080705,
2948
- // "finished_time": null,
2949
- // "amount": "0.30000000",
2950
- // "price": " 56000",
2951
- // "deal_amount": "0.24721428",
2952
- // "deal_money": "13843.9996800000000000",
2953
- // "deal_fee": "0",
2954
- // "stock_fee": "0",
2955
- // "money_fee": "0",
2956
- // " asset_fee": "8.721719798400000000000000",
2957
- // "fee_asset": "CET",
2958
- // "fee_discount": "0.70",
2959
- // "avg_price": "56000",
2960
- // "market": "BTCUSDT",
2961
- // "left": "0.05278572 ",
2962
- // "maker_fee_rate": "0.0018",
2963
- // "taker_fee_rate": "0.0018",
2964
- // "order_type": "limit",
2965
- // "type": "buy",
2966
- // "status": "cancel",
2967
- // "client_id ": "abcd222",
2968
- // "source_id": "1234"
2969
- // },
2970
- // "message": "Success"
2971
- // }
2972
- //
2879
+ let response = undefined;
2880
+ const triggerPrice = this.safeStringN(params, ['stopPrice', 'triggerPrice', 'trigger_price']);
2881
+ params = this.omit(params, ['stopPrice', 'triggerPrice']);
2882
+ const isTriggerOrder = triggerPrice !== undefined;
2883
+ if (isTriggerOrder) {
2884
+ request['trigger_price'] = this.priceToPrecision(symbol, triggerPrice);
2885
+ request['stop_id'] = this.parseToNumeric(id);
2886
+ }
2887
+ else {
2888
+ request['order_id'] = this.parseToNumeric(id);
2889
+ }
2890
+ let marginMode = undefined;
2891
+ [marginMode, params] = this.handleMarginModeAndParams('editOrder', params);
2892
+ if (market['spot']) {
2893
+ if (marginMode !== undefined) {
2894
+ request['market_type'] = 'MARGIN';
2895
+ }
2896
+ else {
2897
+ request['market_type'] = 'SPOT';
2898
+ }
2899
+ if (isTriggerOrder) {
2900
+ response = await this.v2PrivatePostSpotModifyStopOrder(this.extend(request, params));
2901
+ //
2902
+ // {
2903
+ // "code": 0,
2904
+ // "data": {
2905
+ // "stop_id": 117337235167
2906
+ // },
2907
+ // "message": "OK"
2908
+ // }
2909
+ //
2910
+ }
2911
+ else {
2912
+ response = await this.v2PrivatePostSpotModifyOrder(this.extend(request, params));
2913
+ //
2914
+ // {
2915
+ // "code": 0,
2916
+ // "data": {
2917
+ // "amount": "0.0001",
2918
+ // "base_fee": "0",
2919
+ // "ccy": "BTC",
2920
+ // "client_id": "x-167673045-87eb2bebf42882d8",
2921
+ // "created_at": 1714290302047,
2922
+ // "discount_fee": "0",
2923
+ // "filled_amount": "0",
2924
+ // "filled_value": "0",
2925
+ // "last_fill_amount": "0",
2926
+ // "last_fill_price": "0",
2927
+ // "maker_fee_rate": "0.002",
2928
+ // "market": "BTCUSDT",
2929
+ // "market_type": "SPOT",
2930
+ // "order_id": 117336922195,
2931
+ // "price": "61000",
2932
+ // "quote_fee": "0",
2933
+ // "side": "buy",
2934
+ // "status": "open",
2935
+ // "taker_fee_rate": "0.002",
2936
+ // "type": "limit",
2937
+ // "unfilled_amount": "0.0001",
2938
+ // "updated_at": 1714290191141
2939
+ // },
2940
+ // "message": "OK"
2941
+ // }
2942
+ //
2943
+ }
2944
+ }
2945
+ else {
2946
+ request['market_type'] = 'FUTURES';
2947
+ if (isTriggerOrder) {
2948
+ response = await this.v2PrivatePostFuturesModifyStopOrder(this.extend(request, params));
2949
+ //
2950
+ // {
2951
+ // "code": 0,
2952
+ // "data": {
2953
+ // "stop_id": 137091875605
2954
+ // },
2955
+ // "message": "OK"
2956
+ // }
2957
+ //
2958
+ }
2959
+ else {
2960
+ response = await this.v2PrivatePostFuturesModifyOrder(this.extend(request, params));
2961
+ //
2962
+ // {
2963
+ // "code": 0,
2964
+ // "data": {
2965
+ // "amount": "0.0001",
2966
+ // "client_id": "x-167673045-3f2d09191462b207",
2967
+ // "created_at": 1714290927630,
2968
+ // "fee": "0",
2969
+ // "fee_ccy": "USDT",
2970
+ // "filled_amount": "0",
2971
+ // "filled_value": "0",
2972
+ // "last_filled_amount": "0",
2973
+ // "last_filled_price": "0",
2974
+ // "maker_fee_rate": "0.0003",
2975
+ // "market": "BTCUSDT",
2976
+ // "market_type": "FUTURES",
2977
+ // "order_id": 137091566717,
2978
+ // "price": "61000",
2979
+ // "realized_pnl": "0",
2980
+ // "side": "buy",
2981
+ // "taker_fee_rate": "0.0005",
2982
+ // "type": "limit",
2983
+ // "unfilled_amount": "0.0001",
2984
+ // "updated_at": 1714290927630
2985
+ // },
2986
+ // "message": "OK"
2987
+ // }
2988
+ //
2989
+ }
2990
+ }
2973
2991
  const data = this.safeDict(response, 'data', {});
2974
2992
  return this.parseOrder(data, market);
2975
2993
  }
@@ -2978,189 +2996,303 @@ export default class coinex extends Exchange {
2978
2996
  * @method
2979
2997
  * @name coinex#cancelOrder
2980
2998
  * @description cancels an open order
2981
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade018_cancle_stop_pending_order
2982
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade015_cancel_order
2983
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade024_cancel_order_by_client_id
2984
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade025_cancel_stop_order_by_client_id
2985
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http023_cancel_stop_order
2986
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http021_cancel_order
2987
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http042_cancel_order_by_client_id
2988
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http043_cancel_stop_order_by_client_id
2999
+ * @see https://docs.coinex.com/api/v2/spot/order/http/cancel-order
3000
+ * @see https://docs.coinex.com/api/v2/spot/order/http/cancel-stop-order
3001
+ * @see https://docs.coinex.com/api/v2/spot/order/http/cancel-order-by-client-id
3002
+ * @see https://docs.coinex.com/api/v2/spot/order/http/cancel-stop-order-by-client-id
3003
+ * @see https://docs.coinex.com/api/v2/futures/order/http/cancel-order
3004
+ * @see https://docs.coinex.com/api/v2/futures/order/http/cancel-stop-order
3005
+ * @see https://docs.coinex.com/api/v2/futures/order/http/cancel-order-by-client-id
3006
+ * @see https://docs.coinex.com/api/v2/futures/order/http/cancel-stop-order-by-client-id
2989
3007
  * @param {string} id order id
2990
3008
  * @param {string} symbol unified symbol of the market the order was made in
2991
3009
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2992
3010
  * @param {string} [params.clientOrderId] client order id, defaults to id if not passed
2993
- * @param {boolean} [params.stop] if stop order = true, default = false
2994
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3011
+ * @param {boolean} [params.trigger] set to true for canceling a trigger order
3012
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
2995
3013
  */
2996
3014
  if (symbol === undefined) {
2997
3015
  throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
2998
3016
  }
2999
3017
  await this.loadMarkets();
3000
3018
  const market = this.market(symbol);
3001
- const stop = this.safeValue(params, 'stop');
3019
+ const isTriggerOrder = this.safeBool2(params, 'stop', 'trigger');
3002
3020
  const swap = market['swap'];
3003
3021
  const request = {
3004
3022
  'market': market['id'],
3005
3023
  };
3006
- const accountId = this.safeInteger(params, 'account_id');
3007
3024
  let marginMode = undefined;
3008
3025
  [marginMode, params] = this.handleMarginModeAndParams('cancelOrder', params);
3009
- const clientOrderId = this.safeString2(params, 'client_id', 'clientOrderId');
3010
- if (marginMode !== undefined) {
3011
- if (accountId === undefined) {
3012
- throw new BadRequest(this.id + ' cancelOrder() requires an account_id parameter for margin orders');
3026
+ if (swap) {
3027
+ request['market_type'] = 'FUTURES';
3028
+ }
3029
+ else {
3030
+ if (marginMode !== undefined) {
3031
+ request['market_type'] = 'MARGIN';
3032
+ }
3033
+ else {
3034
+ request['market_type'] = 'SPOT';
3013
3035
  }
3014
- request['account_id'] = accountId;
3015
3036
  }
3016
- const query = this.omit(params, ['stop', 'account_id', 'clientOrderId']);
3037
+ const clientOrderId = this.safeString2(params, 'client_id', 'clientOrderId');
3038
+ params = this.omit(params, ['stop', 'trigger', 'clientOrderId']);
3017
3039
  let response = undefined;
3018
3040
  if (clientOrderId !== undefined) {
3019
3041
  request['client_id'] = clientOrderId;
3020
- if (stop) {
3042
+ if (isTriggerOrder) {
3021
3043
  if (swap) {
3022
- response = await this.v1PerpetualPrivatePostOrderCancelStopByClientId(this.extend(request, query));
3044
+ response = await this.v2PrivatePostFuturesCancelStopOrderByClientId(this.extend(request, params));
3045
+ // {
3046
+ // "code": 0,
3047
+ // "data": [
3048
+ // {
3049
+ // "code": 0,
3050
+ // "data": {
3051
+ // "amount": "0.0001",
3052
+ // "client_id": "client01",
3053
+ // "created_at": 1714368624473,
3054
+ // "market": "BTCUSDT",
3055
+ // "market_type": "FUTURES",
3056
+ // "price": "61000",
3057
+ // "side": "buy",
3058
+ // "stop_id": 137175823891,
3059
+ // "trigger_direction": "higher",
3060
+ // "trigger_price": "61500",
3061
+ // "trigger_price_type": "latest_price",
3062
+ // "type": "limit",
3063
+ // "updated_at": 1714368661444
3064
+ // },
3065
+ // "message": ""
3066
+ // }
3067
+ // ],
3068
+ // "message": "OK"
3069
+ // }
3023
3070
  }
3024
3071
  else {
3025
- response = await this.v1PrivateDeleteOrderStopPendingByClientId(this.extend(request, query));
3072
+ response = await this.v2PrivatePostSpotCancelStopOrderByClientId(this.extend(request, params));
3073
+ // {
3074
+ // "code" :0,
3075
+ // "data": [
3076
+ // {
3077
+ // "code": 0,
3078
+ // "data": {
3079
+ // "amount": "0.0001",
3080
+ // "ccy": "BTC",
3081
+ // "client_id": "client01",
3082
+ // "created_at": 1714366950279,
3083
+ // "market": "BTCUSDT",
3084
+ // "market_type": "SPOT",
3085
+ // "price": "61000",
3086
+ // "side": "buy",
3087
+ // "stop_id": 117402512706,
3088
+ // "trigger_direction": "higher",
3089
+ // "trigger_price": "61500",
3090
+ // "trigger_price_type": "mark_price",
3091
+ // "type": "limit",
3092
+ // "updated_at": 1714366950279
3093
+ // },
3094
+ // "message": "OK"
3095
+ // }
3096
+ // ],
3097
+ // "message": "OK"
3098
+ // }
3026
3099
  }
3027
3100
  }
3028
3101
  else {
3029
3102
  if (swap) {
3030
- response = await this.v1PerpetualPrivatePostOrderCancelByClientId(this.extend(request, query));
3103
+ response = await this.v2PrivatePostFuturesCancelOrderByClientId(this.extend(request, params));
3104
+ // {
3105
+ // "code": 0,
3106
+ // "data": [
3107
+ // {
3108
+ // "code": 0,
3109
+ // "data": {
3110
+ // "amount": "0.0001",
3111
+ // "client_id": "x-167673045-bf60e24bb437a3df",
3112
+ // "created_at": 1714368416437,
3113
+ // "fee": "0",
3114
+ // "fee_ccy": "USDT",
3115
+ // "filled_amount": "0",
3116
+ // "filled_value": "0",
3117
+ // "last_filled_amount": "0",
3118
+ // "last_filled_price": "0",
3119
+ // "maker_fee_rate": "0.0003",
3120
+ // "market": "BTCUSDT",
3121
+ // "market_type": "FUTURES",
3122
+ // "order_id": 137175616437,
3123
+ // "price": "61000",
3124
+ // "realized_pnl": "0",
3125
+ // "side": "buy",
3126
+ // "taker_fee_rate": "0.0005",
3127
+ // "type": "limit",
3128
+ // "unfilled_amount": "0.0001",
3129
+ // "updated_at": 1714368507174
3130
+ // },
3131
+ // "message": ""
3132
+ // }
3133
+ // ],
3134
+ // "message": "OK"
3135
+ // }
3031
3136
  }
3032
3137
  else {
3033
- response = await this.v1PrivateDeleteOrderPendingByClientId(this.extend(request, query));
3138
+ response = await this.v2PrivatePostSpotCancelOrderByClientId(this.extend(request, params));
3139
+ // {
3140
+ // "code": 0,
3141
+ // "data": [
3142
+ // {
3143
+ // "code": 0,
3144
+ // "data": {
3145
+ // "amount": "0.0001",
3146
+ // "base_fee": "0",
3147
+ // "ccy": "BTC",
3148
+ // "client_id": "x-167673045-d49eaca5f412afc8",
3149
+ // "created_at": 1714366502807,
3150
+ // "discount_fee": "0",
3151
+ // "filled_amount": "0",
3152
+ // "filled_value": "0",
3153
+ // "last_fill_amount": "0",
3154
+ // "last_fill_price": "0",
3155
+ // "maker_fee_rate": "0.002",
3156
+ // "market": "BTCUSDT",
3157
+ // "market_type": "SPOT",
3158
+ // "order_id": 117402157490,
3159
+ // "price": "61000",
3160
+ // "quote_fee": "0",
3161
+ // "side": "buy",
3162
+ // "taker_fee_rate": "0.002",
3163
+ // "type": "limit",
3164
+ // "unfilled_amount": "0.0001",
3165
+ // "updated_at": 1714366502807
3166
+ // },
3167
+ // "message": "OK"
3168
+ // }
3169
+ // ],
3170
+ // "message": "OK"
3171
+ // }
3034
3172
  }
3035
3173
  }
3036
3174
  }
3037
3175
  else {
3038
- const idRequest = swap ? 'order_id' : 'id';
3039
- request[idRequest] = id;
3040
- if (stop) {
3176
+ if (isTriggerOrder) {
3177
+ request['stop_id'] = this.parseToNumeric(id);
3041
3178
  if (swap) {
3042
- response = await this.v1PerpetualPrivatePostOrderCancelStop(this.extend(request, query));
3179
+ response = await this.v2PrivatePostFuturesCancelStopOrder(this.extend(request, params));
3180
+ // {
3181
+ // "code": 0,
3182
+ // "data": {
3183
+ // "amount": "0.0001",
3184
+ // "ccy": "BTC",
3185
+ // "client_id": "x-167673045-f21ecfd7542abf1f",
3186
+ // "created_at": 1714366177334,
3187
+ // "market": "BTCUSDT",
3188
+ // "market_type": "SPOT",
3189
+ // "price": "61000",
3190
+ // "side": "buy",
3191
+ // "stop_id": 117401897954,
3192
+ // "trigger_direction": "higher",
3193
+ // "trigger_price": "61500",
3194
+ // "trigger_price_type": "mark_price",
3195
+ // "type": "limit",
3196
+ // "updated_at": 1714366177334
3197
+ // },
3198
+ // "message": "OK"
3199
+ // }
3043
3200
  }
3044
3201
  else {
3045
- response = await this.v1PrivateDeleteOrderStopPendingId(this.extend(request, query));
3202
+ response = await this.v2PrivatePostSpotCancelStopOrder(this.extend(request, params));
3203
+ // {
3204
+ // "code": 0,
3205
+ // "data": {
3206
+ // "amount": "0.0001",
3207
+ // "ccy": "BTC",
3208
+ // "client_id": "x-167673045-f21ecfd7542abf1f",
3209
+ // "created_at": 1714366177334,
3210
+ // "market": "BTCUSDT",
3211
+ // "market_type": "SPOT",
3212
+ // "price": "61000",
3213
+ // "side": "buy",
3214
+ // "stop_id": 117401897954,
3215
+ // "trigger_direction": "higher",
3216
+ // "trigger_price": "61500",
3217
+ // "trigger_price_type": "mark_price",
3218
+ // "type": "limit",
3219
+ // "updated_at": 1714366177334
3220
+ // },
3221
+ // "message": "OK"
3222
+ // }
3046
3223
  }
3047
3224
  }
3048
3225
  else {
3226
+ request['order_id'] = this.parseToNumeric(id);
3049
3227
  if (swap) {
3050
- response = await this.v1PerpetualPrivatePostOrderCancel(this.extend(request, query));
3228
+ response = await this.v2PrivatePostFuturesCancelOrder(this.extend(request, params));
3229
+ // {
3230
+ // "code": 0,
3231
+ // "data": {
3232
+ // "amount": "0.0001",
3233
+ // "client_id": "x-167673045-7f14381c74a98a85",
3234
+ // "created_at": 1714367342024,
3235
+ // "fee": "0",
3236
+ // "fee_ccy": "USDT",
3237
+ // "filled_amount": "0",
3238
+ // "filled_value": "0",
3239
+ // "last_filled_amount": "0",
3240
+ // "last_filled_price": "0",
3241
+ // "maker_fee_rate": "0.0003",
3242
+ // "market": "BTCUSDT",
3243
+ // "market_type": "FUTURES",
3244
+ // "order_id": 137174472136,
3245
+ // "price": "61000",
3246
+ // "realized_pnl": "0",
3247
+ // "side": "buy",
3248
+ // "taker_fee_rate": "0.0005",
3249
+ // "type": "limit",
3250
+ // "unfilled_amount": "0.0001",
3251
+ // "updated_at": 1714367515978
3252
+ // },
3253
+ // "message": "OK"
3254
+ // }
3051
3255
  }
3052
3256
  else {
3053
- response = await this.v1PrivateDeleteOrderPending(this.extend(request, query));
3257
+ response = await this.v2PrivatePostSpotCancelOrder(this.extend(request, params));
3258
+ // {
3259
+ // "code": 0,
3260
+ // "data": {
3261
+ // "amount": "0.0001",
3262
+ // "base_fee": "0",
3263
+ // "ccy": "BTC",
3264
+ // "client_id": "x-167673045-86fbe37b54a2aea3",
3265
+ // "created_at": 1714365277437,
3266
+ // "discount_fee": "0",
3267
+ // "filled_amount": "0",
3268
+ // "filled_value": "0",
3269
+ // "last_fill_amount": "0",
3270
+ // "last_fill_price": "0",
3271
+ // "maker_fee_rate": "0.002",
3272
+ // "market": "BTCUSDT",
3273
+ // "market_type": "SPOT",
3274
+ // "order_id": 117401168172,
3275
+ // "price": "61000",
3276
+ // "quote_fee": "0",
3277
+ // "side": "buy",
3278
+ // "taker_fee_rate": "0.002",
3279
+ // "type": "limit",
3280
+ // "unfilled_amount": "0.0001",
3281
+ // "updated_at": 1714365277437
3282
+ // },
3283
+ // "message": "OK"
3284
+ // }
3054
3285
  }
3055
3286
  }
3056
3287
  }
3057
- //
3058
- // Spot and Margin
3059
- //
3060
- // {
3061
- // "code": 0,
3062
- // "data": {
3063
- // "amount": "0.0005",
3064
- // "asset_fee": "0",
3065
- // "avg_price": "0.00",
3066
- // "client_id": "",
3067
- // "create_time": 1650951627,
3068
- // "deal_amount": "0",
3069
- // "deal_fee": "0",
3070
- // "deal_money": "0",
3071
- // "fee_asset": null,
3072
- // "fee_discount": "1",
3073
- // "finished_time": null,
3074
- // "id": 74510932594,
3075
- // "left": "0.0005",
3076
- // "maker_fee_rate": "0.002",
3077
- // "market": "BTCUSDT",
3078
- // "money_fee": "0",
3079
- // "order_type": "limit",
3080
- // "price": "30000",
3081
- // "status": "not_deal",
3082
- // "stock_fee": "0",
3083
- // "taker_fee_rate": "0.002",
3084
- // "type": "buy"
3085
- // },
3086
- // "message": "Success"
3087
- // }
3088
- //
3089
- // Swap
3090
- //
3091
- // {
3092
- // "code": 0,
3093
- // "data": {
3094
- // "amount": "0.0005",
3095
- // "client_id": "",
3096
- // "create_time": 1651004578.618224,
3097
- // "deal_asset_fee": "0.00000000000000000000",
3098
- // "deal_fee": "0.00000000000000000000",
3099
- // "deal_profit": "0.00000000000000000000",
3100
- // "deal_stock": "0.00000000000000000000",
3101
- // "effect_type": 1,
3102
- // "fee_asset": "",
3103
- // "fee_discount": "0.00000000000000000000",
3104
- // "last_deal_amount": "0.00000000000000000000",
3105
- // "last_deal_id": 0,
3106
- // "last_deal_price": "0.00000000000000000000",
3107
- // "last_deal_role": 0,
3108
- // "last_deal_time": 0,
3109
- // "last_deal_type": 0,
3110
- // "left": "0.0005",
3111
- // "leverage": "3",
3112
- // "maker_fee": "0.00030",
3113
- // "market": "BTCUSDT",
3114
- // "order_id": 18221659097,
3115
- // "position_id": 0,
3116
- // "position_type": 1,
3117
- // "price": "30000.00",
3118
- // "side": 2,
3119
- // "source": "api.v1",
3120
- // "stop_id": 0,
3121
- // "taker_fee": "0.00050",
3122
- // "target": 0,
3123
- // "type": 1,
3124
- // "update_time": 1651004578.618224,
3125
- // "user_id": 3620173
3126
- // },
3127
- // "message": "OK"
3128
- // }
3129
- //
3130
- // Swap Stop
3131
- //
3132
- // {
3133
- // "code": 0,
3134
- // "data": {
3135
- // "amount": "0.0005",
3136
- // "client_id": "",
3137
- // "create_time": 1651034023.008771,
3138
- // "effect_type": 1,
3139
- // "fee_asset": "",
3140
- // "fee_discount": "0.00000000000000000000",
3141
- // "maker_fee": "0.00030",
3142
- // "market": "BTCUSDT",
3143
- // "order_id": 18256915101,
3144
- // "price": "31000.00",
3145
- // "side": 2,
3146
- // "source": "api.v1",
3147
- // "state": 1,
3148
- // "stop_price": "31500.00",
3149
- // "stop_type": 1,
3150
- // "taker_fee": "0.00050",
3151
- // "target": 0,
3152
- // "type": 1,
3153
- // "update_time": 1651034397.193624,
3154
- // "user_id": 3620173
3155
- // },
3156
- // "message":"OK"
3157
- // }
3158
- //
3159
- // Spot and Margin Stop
3160
- //
3161
- // {"code":0,"data":{},"message":"Success"}
3162
- //
3163
- const data = this.safeDict(response, 'data');
3288
+ let data = undefined;
3289
+ if (clientOrderId !== undefined) {
3290
+ const rows = this.safeList(response, 'data', []);
3291
+ data = this.safeDict(rows[0], 'data', {});
3292
+ }
3293
+ else {
3294
+ data = this.safeDict(response, 'data', {});
3295
+ }
3164
3296
  return this.parseOrder(data, market);
3165
3297
  }
3166
3298
  async cancelAllOrders(symbol = undefined, params = {}) {
@@ -3168,12 +3300,11 @@ export default class coinex extends Exchange {
3168
3300
  * @method
3169
3301
  * @name coinex#cancelAllOrders
3170
3302
  * @description cancel all open orders in a market
3171
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade018_cancle_stop_pending_order
3172
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade015_cancel_order
3173
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http024_cancel_stop_all
3174
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http022_cancel_all
3303
+ * @see https://docs.coinex.com/api/v2/spot/order/http/cancel-all-order
3304
+ * @see https://docs.coinex.com/api/v2/futures/order/http/cancel-all-order
3175
3305
  * @param {string} symbol unified market symbol of the market to cancel orders in
3176
3306
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3307
+ * @param {string} [params.marginMode] 'cross' or 'isolated' for canceling spot margin orders
3177
3308
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
3178
3309
  */
3179
3310
  if (symbol === undefined) {
@@ -3181,43 +3312,31 @@ export default class coinex extends Exchange {
3181
3312
  }
3182
3313
  await this.loadMarkets();
3183
3314
  const market = this.market(symbol);
3184
- const marketId = market['id'];
3185
- const accountId = this.safeInteger(params, 'account_id', 0);
3186
3315
  const request = {
3187
- 'market': marketId,
3188
- // 'account_id': accountId, // SPOT, main account ID: 0, margin account ID: See < Inquire Margin Account Market Info >, future account ID: See < Inquire Future Account Market Info >
3189
- // 'side': 0, // SWAP, 0: All, 1: Sell, 2: Buy
3316
+ 'market': market['id'],
3190
3317
  };
3191
- const swap = market['swap'];
3192
- const stop = this.safeValue(params, 'stop');
3193
- params = this.omit(params, ['stop', 'account_id']);
3194
3318
  let response = undefined;
3195
- if (swap) {
3196
- if (stop) {
3197
- response = await this.v1PerpetualPrivatePostOrderCancelStopAll(this.extend(request, params));
3198
- }
3199
- else {
3200
- response = await this.v1PerpetualPrivatePostOrderCancelAll(this.extend(request, params));
3201
- }
3319
+ if (market['swap']) {
3320
+ request['market_type'] = 'FUTURES';
3321
+ response = await this.v2PrivatePostFuturesCancelAllOrder(this.extend(request, params));
3322
+ //
3323
+ // {"code":0,"data":{},"message":"OK"}
3324
+ //
3202
3325
  }
3203
3326
  else {
3204
- request['account_id'] = accountId;
3205
- if (stop) {
3206
- response = await this.v1PrivateDeleteOrderStopPending(this.extend(request, params));
3327
+ let marginMode = undefined;
3328
+ [marginMode, params] = this.handleMarginModeAndParams('fetchOrdersByStatus', params);
3329
+ if (marginMode !== undefined) {
3330
+ request['market_type'] = 'MARGIN';
3207
3331
  }
3208
3332
  else {
3209
- response = await this.v1PrivateDeleteOrderPending(this.extend(request, params));
3333
+ request['market_type'] = 'SPOT';
3210
3334
  }
3335
+ response = await this.v2PrivatePostSpotCancelAllOrder(this.extend(request, params));
3336
+ //
3337
+ // {"code":0,"data":{},"message":"OK"}
3338
+ //
3211
3339
  }
3212
- //
3213
- // Spot and Margin
3214
- //
3215
- // {"code": 0, "data": null, "message": "Success"}
3216
- //
3217
- // Swap
3218
- //
3219
- // {"code": 0, "data": {"status":"success"}, "message": "OK"}
3220
- //
3221
3340
  return response;
3222
3341
  }
3223
3342
  async fetchOrder(id, symbol = undefined, params = {}) {
@@ -3225,9 +3344,8 @@ export default class coinex extends Exchange {
3225
3344
  * @method
3226
3345
  * @name coinex#fetchOrder
3227
3346
  * @description fetches information on an order made by the user
3228
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http028_stop_status
3229
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http026_order_status
3230
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade007_order_status
3347
+ * @see https://docs.coinex.com/api/v2/spot/order/http/get-order-status
3348
+ * @see https://docs.coinex.com/api/v2/futures/order/http/get-order-status
3231
3349
  * @param {string} symbol unified symbol of the market the order was made in
3232
3350
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3233
3351
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -3237,127 +3355,77 @@ export default class coinex extends Exchange {
3237
3355
  }
3238
3356
  await this.loadMarkets();
3239
3357
  const market = this.market(symbol);
3240
- const swap = market['swap'];
3241
- const stop = this.safeValue(params, 'stop');
3242
- params = this.omit(params, 'stop');
3243
3358
  const request = {
3244
3359
  'market': market['id'],
3245
- // 'id': id, // SPOT
3246
- // 'order_id': id, // SWAP
3360
+ 'order_id': this.parseToNumeric(id),
3247
3361
  };
3248
- const idRequest = swap ? 'order_id' : 'id';
3249
- request[idRequest] = id;
3250
3362
  let response = undefined;
3251
- if (swap) {
3252
- if (stop) {
3253
- response = await this.v1PerpetualPrivateGetOrderStopStatus(this.extend(request, params));
3254
- }
3255
- else {
3256
- response = await this.v1PerpetualPrivateGetOrderStatus(this.extend(request, params));
3257
- }
3363
+ if (market['swap']) {
3364
+ response = await this.v2PrivateGetFuturesOrderStatus(this.extend(request, params));
3365
+ //
3366
+ // {
3367
+ // "code": 0,
3368
+ // "data": {
3369
+ // "amount": "0.0001",
3370
+ // "client_id": "x-167673045-da5f31dcd478a829",
3371
+ // "created_at": 1714460987164,
3372
+ // "fee": "0",
3373
+ // "fee_ccy": "USDT",
3374
+ // "filled_amount": "0",
3375
+ // "filled_value": "0",
3376
+ // "last_filled_amount": "0",
3377
+ // "last_filled_price": "0",
3378
+ // "maker_fee_rate": "0.0003",
3379
+ // "market": "BTCUSDT",
3380
+ // "market_type": "FUTURES",
3381
+ // "order_id": 137319868771,
3382
+ // "price": "61000",
3383
+ // "realized_pnl": "0",
3384
+ // "side": "buy",
3385
+ // "status": "open",
3386
+ // "taker_fee_rate": "0.0005",
3387
+ // "type": "limit",
3388
+ // "unfilled_amount": "0.0001",
3389
+ // "updated_at": 1714460987164
3390
+ // },
3391
+ // "message": "OK"
3392
+ // }
3393
+ //
3258
3394
  }
3259
3395
  else {
3260
- response = await this.v1PrivateGetOrderStatus(this.extend(request, params));
3396
+ response = await this.v2PrivateGetSpotOrderStatus(this.extend(request, params));
3397
+ //
3398
+ // {
3399
+ // "code": 0,
3400
+ // "data": {
3401
+ // "amount": "0.0001",
3402
+ // "base_fee": "0",
3403
+ // "ccy": "BTC",
3404
+ // "client_id": "x-167673045-da918d6724e3af81",
3405
+ // "created_at": 1714461638958,
3406
+ // "discount_fee": "0",
3407
+ // "filled_amount": "0",
3408
+ // "filled_value": "0",
3409
+ // "last_fill_amount": "0",
3410
+ // "last_fill_price": "0",
3411
+ // "maker_fee_rate": "0.002",
3412
+ // "market": "BTCUSDT",
3413
+ // "market_type": "SPOT",
3414
+ // "order_id": 117492012985,
3415
+ // "price": "61000",
3416
+ // "quote_fee": "0",
3417
+ // "side": "buy",
3418
+ // "status": "open",
3419
+ // "taker_fee_rate": "0.002",
3420
+ // "type": "limit",
3421
+ // "unfilled_amount": "0.0001",
3422
+ // "updated_at": 1714461638958
3423
+ // },
3424
+ // "message": "OK"
3425
+ // }
3426
+ //
3261
3427
  }
3262
- //
3263
- // Spot
3264
- //
3265
- // {
3266
- // "code": 0,
3267
- // "data": {
3268
- // "amount": "0.1",
3269
- // "asset_fee": "0.22736197736197736197",
3270
- // "avg_price": "196.85000000000000000000",
3271
- // "create_time": 1537270135,
3272
- // "deal_amount": "0.1",
3273
- // "deal_fee": "0",
3274
- // "deal_money": "19.685",
3275
- // "fee_asset": "CET",
3276
- // "fee_discount": "0.5",
3277
- // "id": 1788259447,
3278
- // "left": "0",
3279
- // "maker_fee_rate": "0",
3280
- // "market": "ETHUSDT",
3281
- // "order_type": "limit",
3282
- // "price": "170.00000000",
3283
- // "status": "done",
3284
- // "taker_fee_rate": "0.0005",
3285
- // "type": "sell",
3286
- // },
3287
- // "message": "Ok"
3288
- // }
3289
- //
3290
- // Swap
3291
- //
3292
- // {
3293
- // "code": 0,
3294
- // "data": {
3295
- // "amount": "0.0005",
3296
- // "client_id": "",
3297
- // "create_time": 1651004578.618224,
3298
- // "deal_asset_fee": "0.00000000000000000000",
3299
- // "deal_fee": "0.00000000000000000000",
3300
- // "deal_profit": "0.00000000000000000000",
3301
- // "deal_stock": "0.00000000000000000000",
3302
- // "effect_type": 1,
3303
- // "fee_asset": "",
3304
- // "fee_discount": "0.00000000000000000000",
3305
- // "last_deal_amount": "0.00000000000000000000",
3306
- // "last_deal_id": 0,
3307
- // "last_deal_price": "0.00000000000000000000",
3308
- // "last_deal_role": 0,
3309
- // "last_deal_time": 0,
3310
- // "last_deal_type": 0,
3311
- // "left": "0.0005",
3312
- // "leverage": "3",
3313
- // "maker_fee": "0.00030",
3314
- // "market": "BTCUSDT",
3315
- // "order_id": 18221659097,
3316
- // "position_id": 0,
3317
- // "position_type": 1,
3318
- // "price": "30000.00",
3319
- // "side": 2,
3320
- // "source": "api.v1",
3321
- // "stop_id": 0,
3322
- // "taker_fee": "0.00050",
3323
- // "target": 0,
3324
- // "type": 1,
3325
- // "update_time": 1651004578.618224,
3326
- // "user_id": 3620173
3327
- // },
3328
- // "message": "OK"
3329
- // }
3330
- //
3331
- // Swap Stop
3332
- //
3333
- // {
3334
- // "code": 0,
3335
- // "data": {
3336
- // "amount": "0.0005",
3337
- // "client_id": "",
3338
- // "create_time": 1651034023.008771,
3339
- // "effect_type": 1,
3340
- // "fee_asset": "",
3341
- // "fee_discount": "0.00000000000000000000",
3342
- // "maker_fee": "0.00030",
3343
- // "market": "BTCUSDT",
3344
- // "order_id": 18256915101,
3345
- // "price": "31000.00",
3346
- // "side": 2,
3347
- // "source": "api.v1",
3348
- // "state": 1,
3349
- // "stop_price": "31500.00",
3350
- // "stop_type": 1,
3351
- // "taker_fee": "0.00050",
3352
- // "target": 0,
3353
- // "type": 1,
3354
- // "update_time": 1651034397.193624,
3355
- // "user_id": 3620173
3356
- // },
3357
- // "message":"OK"
3358
- // }
3359
- //
3360
- const data = this.safeDict(response, 'data');
3428
+ const data = this.safeDict(response, 'data', {});
3361
3429
  return this.parseOrder(data, market);
3362
3430
  }
3363
3431
  async fetchOrdersByStatus(status, symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -5514,11 +5582,7 @@ export default class coinex extends Exchange {
5514
5582
  // }
5515
5583
  //
5516
5584
  const data = this.safeValue(response, 'data', []);
5517
- const rates = [];
5518
- for (let i = 0; i < data.length; i++) {
5519
- rates.push(this.parseIsolatedBorrowRate(data[i]));
5520
- }
5521
- return rates;
5585
+ return this.parseIsolatedBorrowRates(data);
5522
5586
  }
5523
5587
  async fetchBorrowInterest(code = undefined, symbol = undefined, since = undefined, limit = undefined, params = {}) {
5524
5588
  await this.loadMarkets();