ccxt 4.3.13 → 4.3.15
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/LICENSE.txt +1 -1
- package/README.md +3 -3
- package/dist/cjs/ccxt.js +2 -1
- package/dist/cjs/src/base/Exchange.js +14 -6
- package/dist/cjs/src/base/errors.js +8 -1
- package/dist/cjs/src/base/functions/misc.js +2 -2
- package/dist/cjs/src/base/ws/Client.js +2 -1
- package/dist/cjs/src/binance.js +106 -5
- package/dist/cjs/src/bingx.js +1 -0
- package/dist/cjs/src/bybit.js +105 -105
- package/dist/cjs/src/coinbase.js +103 -0
- package/dist/cjs/src/coinex.js +435 -423
- package/dist/cjs/src/cryptocom.js +2 -1
- package/dist/cjs/src/hitbtc.js +1 -0
- package/dist/cjs/src/luno.js +2 -0
- package/dist/cjs/src/okx.js +1 -1
- package/dist/cjs/src/phemex.js +1 -1
- package/dist/cjs/src/pro/hitbtc.js +1 -1
- package/dist/cjs/src/pro/independentreserve.js +3 -3
- package/dist/cjs/src/pro/poloniex.js +3 -3
- package/dist/cjs/src/pro/woo.js +147 -9
- package/js/ccxt.d.ts +3 -3
- package/js/ccxt.js +3 -3
- package/js/src/abstract/luno.d.ts +2 -0
- package/js/src/alpaca.d.ts +1 -1
- package/js/src/base/Exchange.d.ts +5 -5
- package/js/src/base/Exchange.js +14 -6
- package/js/src/base/errorHierarchy.d.ts +1 -0
- package/js/src/base/errorHierarchy.js +1 -0
- package/js/src/base/errors.d.ts +5 -1
- package/js/src/base/errors.js +8 -2
- package/js/src/base/functions/generic.d.ts +1 -1
- package/js/src/base/functions/misc.d.ts +5 -4
- package/js/src/base/functions/misc.js +2 -2
- package/js/src/base/functions/number.d.ts +5 -5
- package/js/src/base/functions/rsa.d.ts +2 -1
- package/js/src/base/functions/totp.d.ts +1 -1
- package/js/src/base/ws/Client.d.ts +8 -7
- package/js/src/base/ws/Client.js +2 -1
- package/js/src/binance.d.ts +14 -1
- package/js/src/binance.js +107 -6
- package/js/src/bingx.d.ts +1 -1
- package/js/src/bingx.js +1 -0
- package/js/src/bybit.js +105 -105
- package/js/src/coinbase.d.ts +5 -1
- package/js/src/coinbase.js +103 -0
- package/js/src/coinex.js +435 -423
- package/js/src/cryptocom.js +2 -1
- package/js/src/hitbtc.js +1 -0
- package/js/src/luno.js +2 -0
- package/js/src/okx.js +1 -1
- package/js/src/phemex.js +1 -1
- package/js/src/pro/hitbtc.js +1 -1
- package/js/src/pro/independentreserve.js +3 -3
- package/js/src/pro/poloniex.js +3 -3
- package/js/src/pro/woo.d.ts +2 -0
- package/js/src/pro/woo.js +147 -9
- package/js/src/upbit.d.ts +1 -1
- package/js/src/woo.d.ts +1 -1
- package/js/src/zonda.d.ts +1 -1
- package/package.json +1 -1
package/js/src/coinex.js
CHANGED
|
@@ -1719,111 +1719,7 @@ export default class coinex extends Exchange {
|
|
|
1719
1719
|
}
|
|
1720
1720
|
parseOrder(order, market = undefined) {
|
|
1721
1721
|
//
|
|
1722
|
-
// Spot and Margin
|
|
1723
|
-
//
|
|
1724
|
-
// {
|
|
1725
|
-
// "account_id": 0,
|
|
1726
|
-
// "amount": "0.0005",
|
|
1727
|
-
// "asset_fee": "0",
|
|
1728
|
-
// "avg_price": "0.00",
|
|
1729
|
-
// "client_id": "",
|
|
1730
|
-
// "create_time": 1651089247,
|
|
1731
|
-
// "deal_amount": "0",
|
|
1732
|
-
// "deal_fee": "0",
|
|
1733
|
-
// "deal_money": "0",
|
|
1734
|
-
// "fee_asset": null,
|
|
1735
|
-
// "fee_discount": "1",
|
|
1736
|
-
// "finished_time": 0,
|
|
1737
|
-
// "id": 74660190839,
|
|
1738
|
-
// "left": "0.0005",
|
|
1739
|
-
// "maker_fee_rate": "0.002",
|
|
1740
|
-
// "market": "BTCUSDT",
|
|
1741
|
-
// "money_fee": "0",
|
|
1742
|
-
// "order_type": "limit",
|
|
1743
|
-
// "price": "31000",
|
|
1744
|
-
// "status": "not_deal",
|
|
1745
|
-
// "stock_fee": "0",
|
|
1746
|
-
// "taker_fee_rate": "0.002",
|
|
1747
|
-
// "type": "buy"
|
|
1748
|
-
// }
|
|
1749
|
-
//
|
|
1750
|
-
// Swap fetchOpenOrders, fetchClosedOrders
|
|
1751
|
-
//
|
|
1752
|
-
// {
|
|
1753
|
-
// "amount": "0.0005",
|
|
1754
|
-
// "client_id": "",
|
|
1755
|
-
// "create_time": 1651030414.088431,
|
|
1756
|
-
// "deal_asset_fee": "0",
|
|
1757
|
-
// "deal_fee": "0.00960069",
|
|
1758
|
-
// "deal_profit": "0.009825",
|
|
1759
|
-
// "deal_stock": "19.20138",
|
|
1760
|
-
// "effect_type": 0,
|
|
1761
|
-
// "fee_asset": "",
|
|
1762
|
-
// "fee_discount": "0",
|
|
1763
|
-
// "left": "0",
|
|
1764
|
-
// "leverage": "3",
|
|
1765
|
-
// "maker_fee": "0",
|
|
1766
|
-
// "market": "BTCUSDT",
|
|
1767
|
-
// "order_id": 18253447431,
|
|
1768
|
-
// "position_id": 0,
|
|
1769
|
-
// "position_type": 1,
|
|
1770
|
-
// "price": "0",
|
|
1771
|
-
// "side": 1,
|
|
1772
|
-
// "source": "web",
|
|
1773
|
-
// "stop_id": 0,
|
|
1774
|
-
// "taker_fee": "0.0005",
|
|
1775
|
-
// "target": 0,
|
|
1776
|
-
// "type": 2,
|
|
1777
|
-
// "update_time": 1651030414.08847,
|
|
1778
|
-
// "user_id": 3620173
|
|
1779
|
-
// }
|
|
1780
|
-
//
|
|
1781
|
-
// Spot and Margin Stop fetchOpenOrders, fetchClosedOrders
|
|
1782
|
-
//
|
|
1783
|
-
// {
|
|
1784
|
-
// "account_id": 0,
|
|
1785
|
-
// "amount": "155",
|
|
1786
|
-
// "client_id": "",
|
|
1787
|
-
// "create_time": 1651089182,
|
|
1788
|
-
// "fee_asset": null,
|
|
1789
|
-
// "fee_discount": "1",
|
|
1790
|
-
// "maker_fee": "0.002",
|
|
1791
|
-
// "market": "BTCUSDT",
|
|
1792
|
-
// "order_id": 74660111965,
|
|
1793
|
-
// "order_type": "market",
|
|
1794
|
-
// "price": "0",
|
|
1795
|
-
// "state": 0,
|
|
1796
|
-
// "stop_price": "31500",
|
|
1797
|
-
// "taker_fee": "0.002",
|
|
1798
|
-
// "type": "buy"
|
|
1799
|
-
// }
|
|
1800
|
-
//
|
|
1801
|
-
// Swap Stop fetchOpenOrders
|
|
1802
|
-
//
|
|
1803
|
-
// {
|
|
1804
|
-
// "amount": "0.0005",
|
|
1805
|
-
// "client_id": "",
|
|
1806
|
-
// "create_time": 1651089147.321691,
|
|
1807
|
-
// "effect_type": 1,
|
|
1808
|
-
// "fee_asset": "",
|
|
1809
|
-
// "fee_discount": "0.00000000000000000000",
|
|
1810
|
-
// "maker_fee": "0.00030",
|
|
1811
|
-
// "market": "BTCUSDT",
|
|
1812
|
-
// "order_id": 18332143848,
|
|
1813
|
-
// "price": "31000.00",
|
|
1814
|
-
// "side": 2,
|
|
1815
|
-
// "source": "api.v1",
|
|
1816
|
-
// "state": 1,
|
|
1817
|
-
// "stop_price": "31500.00",
|
|
1818
|
-
// "stop_type": 1,
|
|
1819
|
-
// "taker_fee": "0.00050",
|
|
1820
|
-
// "target": 0,
|
|
1821
|
-
// "type": 1,
|
|
1822
|
-
// "update_time": 1651089147.321691,
|
|
1823
|
-
// "user_id": 3620173
|
|
1824
|
-
// }
|
|
1825
|
-
//
|
|
1826
|
-
// Spot and Margin createOrder, createOrders, editOrder, cancelOrders, cancelOrder v2
|
|
1722
|
+
// Spot and Margin createOrder, createOrders, editOrder, cancelOrders, cancelOrder, fetchOpenOrders
|
|
1827
1723
|
//
|
|
1828
1724
|
// {
|
|
1829
1725
|
// "amount": "0.0001",
|
|
@@ -1849,13 +1745,37 @@ export default class coinex extends Exchange {
|
|
|
1849
1745
|
// "updated_at": 1714114386250
|
|
1850
1746
|
// }
|
|
1851
1747
|
//
|
|
1852
|
-
// Spot
|
|
1748
|
+
// Spot and Margin fetchClosedOrders
|
|
1749
|
+
//
|
|
1750
|
+
// {
|
|
1751
|
+
// "order_id": 117180532345,
|
|
1752
|
+
// "market": "BTCUSDT",
|
|
1753
|
+
// "market_type": "SPOT",
|
|
1754
|
+
// "side": "sell",
|
|
1755
|
+
// "type": "market",
|
|
1756
|
+
// "ccy": "BTC",
|
|
1757
|
+
// "amount": "0.00015484",
|
|
1758
|
+
// "price": "0",
|
|
1759
|
+
// "client_id": "",
|
|
1760
|
+
// "created_at": 1714116494219,
|
|
1761
|
+
// "updated_at": 0,
|
|
1762
|
+
// "base_fee": "0",
|
|
1763
|
+
// "quote_fee": "0.0199931699632",
|
|
1764
|
+
// "discount_fee": "0",
|
|
1765
|
+
// "maker_fee_rate": "0",
|
|
1766
|
+
// "taker_fee_rate": "0.002",
|
|
1767
|
+
// "unfilled_amount": "0",
|
|
1768
|
+
// "filled_amount": "0.00015484",
|
|
1769
|
+
// "filled_value": "9.9965849816"
|
|
1770
|
+
// }
|
|
1771
|
+
//
|
|
1772
|
+
// Spot, Margin and Swap trigger createOrder, createOrders, editOrder
|
|
1853
1773
|
//
|
|
1854
1774
|
// {
|
|
1855
1775
|
// "stop_id": 117180138153
|
|
1856
1776
|
// }
|
|
1857
1777
|
//
|
|
1858
|
-
// Swap createOrder, createOrders, editOrder, cancelOrders, cancelOrder
|
|
1778
|
+
// Swap createOrder, createOrders, editOrder, cancelOrders, cancelOrder, fetchOpenOrders, fetchClosedOrders
|
|
1859
1779
|
//
|
|
1860
1780
|
// {
|
|
1861
1781
|
// "amount": "0.0001",
|
|
@@ -1880,7 +1800,7 @@ export default class coinex extends Exchange {
|
|
|
1880
1800
|
// "updated_at": 1714116769986
|
|
1881
1801
|
// }
|
|
1882
1802
|
//
|
|
1883
|
-
// Swap stopLossPrice and takeProfitPrice createOrder
|
|
1803
|
+
// Swap stopLossPrice and takeProfitPrice createOrder
|
|
1884
1804
|
//
|
|
1885
1805
|
// {
|
|
1886
1806
|
// "adl_level": 1,
|
|
@@ -1915,25 +1835,7 @@ export default class coinex extends Exchange {
|
|
|
1915
1835
|
// "updated_at": 1714119054559
|
|
1916
1836
|
// }
|
|
1917
1837
|
//
|
|
1918
|
-
// Swap
|
|
1919
|
-
//
|
|
1920
|
-
// {
|
|
1921
|
-
// "amount": "0.0001",
|
|
1922
|
-
// "client_id": "x-167673045-a7d7714c6478acf6",
|
|
1923
|
-
// "created_at": 1714187923820,
|
|
1924
|
-
// "market": "BTCUSDT",
|
|
1925
|
-
// "market_type": "FUTURES",
|
|
1926
|
-
// "price": "61000",
|
|
1927
|
-
// "side": "buy",
|
|
1928
|
-
// "stop_id": 136984426097,
|
|
1929
|
-
// "trigger_direction": "higher",
|
|
1930
|
-
// "trigger_price": "62000",
|
|
1931
|
-
// "trigger_price_type": "latest_price",
|
|
1932
|
-
// "type": "limit",
|
|
1933
|
-
// "updated_at": 1714187974363
|
|
1934
|
-
// }
|
|
1935
|
-
//
|
|
1936
|
-
// Swap fetchOrder v2
|
|
1838
|
+
// Swap fetchOrder
|
|
1937
1839
|
//
|
|
1938
1840
|
// {
|
|
1939
1841
|
// "amount": "0.0001",
|
|
@@ -1959,7 +1861,7 @@ export default class coinex extends Exchange {
|
|
|
1959
1861
|
// "updated_at": 1714460987164
|
|
1960
1862
|
// }
|
|
1961
1863
|
//
|
|
1962
|
-
// Spot and Margin fetchOrder
|
|
1864
|
+
// Spot and Margin fetchOrder
|
|
1963
1865
|
//
|
|
1964
1866
|
// {
|
|
1965
1867
|
// "amount": "0.0001",
|
|
@@ -1986,91 +1888,100 @@ export default class coinex extends Exchange {
|
|
|
1986
1888
|
// "updated_at": 1714461638958
|
|
1987
1889
|
// }
|
|
1988
1890
|
//
|
|
1891
|
+
// Swap trigger fetchOpenOrders, fetchClosedOrders - Spot and Swap trigger cancelOrders, cancelOrder
|
|
1892
|
+
//
|
|
1893
|
+
// {
|
|
1894
|
+
// "amount": "0.0001",
|
|
1895
|
+
// "client_id": "x-167673045-a7d7714c6478acf6",
|
|
1896
|
+
// "created_at": 1714187923820,
|
|
1897
|
+
// "market": "BTCUSDT",
|
|
1898
|
+
// "market_type": "FUTURES",
|
|
1899
|
+
// "price": "61000",
|
|
1900
|
+
// "side": "buy",
|
|
1901
|
+
// "stop_id": 136984426097,
|
|
1902
|
+
// "trigger_direction": "higher",
|
|
1903
|
+
// "trigger_price": "62000",
|
|
1904
|
+
// "trigger_price_type": "latest_price",
|
|
1905
|
+
// "type": "limit",
|
|
1906
|
+
// "updated_at": 1714187974363
|
|
1907
|
+
// }
|
|
1908
|
+
//
|
|
1909
|
+
// Spot and Margin trigger fetchOpenOrders, fetchClosedOrders
|
|
1910
|
+
//
|
|
1911
|
+
// {
|
|
1912
|
+
// "stop_id": 117586439530,
|
|
1913
|
+
// "market": "BTCUSDT",
|
|
1914
|
+
// "market_type": "SPOT",
|
|
1915
|
+
// "ccy": "BTC",
|
|
1916
|
+
// "side": "buy",
|
|
1917
|
+
// "type": "limit",
|
|
1918
|
+
// "amount": "0.0001",
|
|
1919
|
+
// "price": "51000",
|
|
1920
|
+
// "trigger_price": "52000",
|
|
1921
|
+
// "trigger_direction": "higher",
|
|
1922
|
+
// "trigger_price_type": "mark_price",
|
|
1923
|
+
// "client_id": "x-167673045-df61777094c69312",
|
|
1924
|
+
// "created_at": 1714551237335,
|
|
1925
|
+
// "updated_at": 1714551237335
|
|
1926
|
+
// }
|
|
1927
|
+
//
|
|
1989
1928
|
const rawStatus = this.safeString(order, 'status');
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
let update = this.safeTimestamp(order, 'update_time');
|
|
1995
|
-
if (update === undefined) {
|
|
1996
|
-
update = this.safeInteger(order, 'updated_at');
|
|
1929
|
+
const timestamp = this.safeInteger(order, 'created_at');
|
|
1930
|
+
let updatedTimestamp = this.safeInteger(order, 'updated_at');
|
|
1931
|
+
if (updatedTimestamp === 0) {
|
|
1932
|
+
updatedTimestamp = timestamp;
|
|
1997
1933
|
}
|
|
1998
1934
|
const marketId = this.safeString(order, 'market');
|
|
1999
1935
|
const defaultType = this.safeString(this.options, 'defaultType');
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
1936
|
+
let orderType = this.safeStringLower(order, 'market_type', defaultType);
|
|
1937
|
+
if (orderType === 'futures') {
|
|
1938
|
+
orderType = 'swap';
|
|
1939
|
+
}
|
|
1940
|
+
const marketType = (orderType === 'swap') ? 'swap' : 'spot';
|
|
1941
|
+
market = this.safeMarket(marketId, market, undefined, marketType);
|
|
1942
|
+
const feeCurrencyId = this.safeString(order, 'fee_ccy');
|
|
2003
1943
|
let feeCurrency = this.safeCurrencyCode(feeCurrencyId);
|
|
2004
1944
|
if (feeCurrency === undefined) {
|
|
2005
1945
|
feeCurrency = market['quote'];
|
|
2006
1946
|
}
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
let side = undefined;
|
|
2010
|
-
if (rawIntegerSide === 1) {
|
|
2011
|
-
side = 'sell';
|
|
2012
|
-
}
|
|
2013
|
-
else if (rawIntegerSide === 2) {
|
|
1947
|
+
let side = this.safeString(order, 'side');
|
|
1948
|
+
if (side === 'long') {
|
|
2014
1949
|
side = 'buy';
|
|
2015
1950
|
}
|
|
2016
|
-
else if (
|
|
2017
|
-
side =
|
|
2018
|
-
}
|
|
2019
|
-
else {
|
|
2020
|
-
side = this.safeString(order, 'type');
|
|
2021
|
-
}
|
|
2022
|
-
const rawType = this.safeString(order, 'order_type');
|
|
2023
|
-
let type = undefined;
|
|
2024
|
-
if (rawType === undefined) {
|
|
2025
|
-
const typeInteger = this.safeInteger(order, 'type');
|
|
2026
|
-
const typeString = this.safeString(order, 'type');
|
|
2027
|
-
if (typeInteger === 1) {
|
|
2028
|
-
type = 'limit';
|
|
2029
|
-
}
|
|
2030
|
-
else if (typeInteger === 2) {
|
|
2031
|
-
type = 'market';
|
|
2032
|
-
}
|
|
2033
|
-
else if ((typeString === 'limit') || (typeString === 'market')) {
|
|
2034
|
-
type = typeString;
|
|
2035
|
-
}
|
|
2036
|
-
else if (typeString === 'maker_only') {
|
|
2037
|
-
type = 'limit';
|
|
2038
|
-
}
|
|
2039
|
-
}
|
|
2040
|
-
else {
|
|
2041
|
-
type = rawType;
|
|
1951
|
+
else if (side === 'short') {
|
|
1952
|
+
side = 'sell';
|
|
2042
1953
|
}
|
|
2043
1954
|
let clientOrderId = this.safeString(order, 'client_id');
|
|
2044
1955
|
if (clientOrderId === '') {
|
|
2045
1956
|
clientOrderId = undefined;
|
|
2046
1957
|
}
|
|
2047
1958
|
return this.safeOrder({
|
|
2048
|
-
'id': this.safeStringN(order, ['
|
|
1959
|
+
'id': this.safeStringN(order, ['position_id', 'order_id', 'stop_id']),
|
|
2049
1960
|
'clientOrderId': clientOrderId,
|
|
2050
1961
|
'datetime': this.iso8601(timestamp),
|
|
2051
1962
|
'timestamp': timestamp,
|
|
2052
|
-
'lastTradeTimestamp':
|
|
1963
|
+
'lastTradeTimestamp': updatedTimestamp,
|
|
2053
1964
|
'status': this.parseOrderStatus(rawStatus),
|
|
2054
1965
|
'symbol': market['symbol'],
|
|
2055
|
-
'type': type,
|
|
1966
|
+
'type': this.safeString(order, 'type'),
|
|
2056
1967
|
'timeInForce': undefined,
|
|
2057
1968
|
'postOnly': undefined,
|
|
2058
1969
|
'reduceOnly': undefined,
|
|
2059
1970
|
'side': side,
|
|
2060
1971
|
'price': this.safeString(order, 'price'),
|
|
2061
|
-
'stopPrice': this.
|
|
2062
|
-
'triggerPrice': this.
|
|
1972
|
+
'stopPrice': this.safeString(order, 'trigger_price'),
|
|
1973
|
+
'triggerPrice': this.safeString(order, 'trigger_price'),
|
|
2063
1974
|
'takeProfitPrice': this.safeNumber(order, 'take_profit_price'),
|
|
2064
1975
|
'stopLossPrice': this.safeNumber(order, 'stop_loss_price'),
|
|
2065
|
-
'cost': this.
|
|
2066
|
-
'average': this.
|
|
1976
|
+
'cost': this.safeString(order, 'filled_value'),
|
|
1977
|
+
'average': this.safeString(order, 'avg_entry_price'),
|
|
2067
1978
|
'amount': this.safeString(order, 'amount'),
|
|
2068
|
-
'filled': this.
|
|
2069
|
-
'remaining': this.
|
|
1979
|
+
'filled': this.safeString(order, 'filled_amount'),
|
|
1980
|
+
'remaining': this.safeString(order, 'unfilled_amount'),
|
|
2070
1981
|
'trades': undefined,
|
|
2071
1982
|
'fee': {
|
|
2072
1983
|
'currency': feeCurrency,
|
|
2073
|
-
'cost': this.
|
|
1984
|
+
'cost': this.safeString2(order, 'quote_fee', 'fee'),
|
|
2074
1985
|
},
|
|
2075
1986
|
'info': order,
|
|
2076
1987
|
}, market);
|
|
@@ -3325,7 +3236,7 @@ export default class coinex extends Exchange {
|
|
|
3325
3236
|
}
|
|
3326
3237
|
else {
|
|
3327
3238
|
let marginMode = undefined;
|
|
3328
|
-
[marginMode, params] = this.handleMarginModeAndParams('
|
|
3239
|
+
[marginMode, params] = this.handleMarginModeAndParams('cancelAllOrders', params);
|
|
3329
3240
|
if (marginMode !== undefined) {
|
|
3330
3241
|
request['market_type'] = 'MARGIN';
|
|
3331
3242
|
}
|
|
@@ -3429,244 +3340,340 @@ export default class coinex extends Exchange {
|
|
|
3429
3340
|
return this.parseOrder(data, market);
|
|
3430
3341
|
}
|
|
3431
3342
|
async fetchOrdersByStatus(status, symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
3343
|
+
/**
|
|
3344
|
+
* @method
|
|
3345
|
+
* @name coinex#fetchOrdersByStatus
|
|
3346
|
+
* @description fetch a list of orders
|
|
3347
|
+
* @see https://docs.coinex.com/api/v2/spot/order/http/list-finished-order
|
|
3348
|
+
* @see https://docs.coinex.com/api/v2/spot/order/http/list-finished-stop-order
|
|
3349
|
+
* @see https://docs.coinex.com/api/v2/futures/order/http/list-finished-order
|
|
3350
|
+
* @see https://docs.coinex.com/api/v2/futures/order/http/list-finished-stop-order
|
|
3351
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
3352
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
3353
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
3354
|
+
* @param {boolean} [params.trigger] set to true for fetching trigger orders
|
|
3355
|
+
* @param {string} [params.marginMode] 'cross' or 'isolated' for fetching spot margin orders
|
|
3356
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
3357
|
+
*/
|
|
3432
3358
|
await this.loadMarkets();
|
|
3433
|
-
|
|
3434
|
-
const request = {
|
|
3435
|
-
'limit': limit,
|
|
3436
|
-
// 'page': 1, // SPOT
|
|
3437
|
-
// 'offset': 0, // SWAP
|
|
3438
|
-
// 'side': 0, // SWAP, 0: All, 1: Sell, 2: Buy
|
|
3439
|
-
};
|
|
3440
|
-
const stop = this.safeValue(params, 'stop');
|
|
3441
|
-
const side = this.safeInteger(params, 'side');
|
|
3442
|
-
params = this.omit(params, 'stop');
|
|
3359
|
+
const request = {};
|
|
3443
3360
|
let market = undefined;
|
|
3444
3361
|
if (symbol !== undefined) {
|
|
3445
3362
|
market = this.market(symbol);
|
|
3446
3363
|
request['market'] = market['id'];
|
|
3447
3364
|
}
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
let marginMode = undefined;
|
|
3451
|
-
[marginMode, params] = this.handleMarginModeAndParams('fetchOrdersByStatus', params);
|
|
3452
|
-
if (marginMode !== undefined) {
|
|
3453
|
-
if (accountId === undefined) {
|
|
3454
|
-
throw new BadRequest(this.id + ' fetchOpenOrders() and fetchClosedOrders() require an account_id parameter for margin orders');
|
|
3455
|
-
}
|
|
3456
|
-
request['account_id'] = accountId;
|
|
3365
|
+
if (limit !== undefined) {
|
|
3366
|
+
request['limit'] = limit;
|
|
3457
3367
|
}
|
|
3458
|
-
|
|
3368
|
+
const stop = this.safeBool2(params, 'stop', 'trigger');
|
|
3369
|
+
params = this.omit(params, ['stop', 'trigger']);
|
|
3370
|
+
let marketType = undefined;
|
|
3371
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchOrdersByStatus', market, params);
|
|
3459
3372
|
let response = undefined;
|
|
3373
|
+
const isClosed = (status === 'finished') || (status === 'closed');
|
|
3374
|
+
const isOpen = (status === 'pending') || (status === 'open');
|
|
3460
3375
|
if (marketType === 'swap') {
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3376
|
+
request['market_type'] = 'FUTURES';
|
|
3377
|
+
if (isClosed) {
|
|
3378
|
+
if (stop) {
|
|
3379
|
+
response = await this.v2PrivateGetFuturesFinishedStopOrder(this.extend(request, params));
|
|
3380
|
+
//
|
|
3381
|
+
// {
|
|
3382
|
+
// "code": 0,
|
|
3383
|
+
// "data": [
|
|
3384
|
+
// {
|
|
3385
|
+
// "stop_id": 52431158859,
|
|
3386
|
+
// "market": "BTCUSDT",
|
|
3387
|
+
// "market_type": "FUTURES",
|
|
3388
|
+
// "side": "sell",
|
|
3389
|
+
// "type": "market",
|
|
3390
|
+
// "amount": "0.0005",
|
|
3391
|
+
// "price": "20599.64",
|
|
3392
|
+
// "client_id": "",
|
|
3393
|
+
// "created_at": 1667547909856,
|
|
3394
|
+
// "updated_at": 1667547909856,
|
|
3395
|
+
// "trigger_price": "20599.64",
|
|
3396
|
+
// "trigger_price_type": "latest_price",
|
|
3397
|
+
// "trigger_direction": ""
|
|
3398
|
+
// },
|
|
3399
|
+
// ],
|
|
3400
|
+
// "message": "OK",
|
|
3401
|
+
// "pagination": {
|
|
3402
|
+
// "has_next": false
|
|
3403
|
+
// }
|
|
3404
|
+
// }
|
|
3405
|
+
//
|
|
3406
|
+
}
|
|
3407
|
+
else {
|
|
3408
|
+
response = await this.v2PrivateGetFuturesFinishedOrder(this.extend(request, params));
|
|
3409
|
+
//
|
|
3410
|
+
// {
|
|
3411
|
+
// "code": 0,
|
|
3412
|
+
// "data": [
|
|
3413
|
+
// {
|
|
3414
|
+
// "order_id": 136915813578,
|
|
3415
|
+
// "market": "BTCUSDT",
|
|
3416
|
+
// "market_type": "FUTURES",
|
|
3417
|
+
// "side": "sell",
|
|
3418
|
+
// "type": "market",
|
|
3419
|
+
// "amount": "0.0001",
|
|
3420
|
+
// "price": "0",
|
|
3421
|
+
// "client_id": "x-167673045-4f264600c432ac06",
|
|
3422
|
+
// "created_at": 1714119323764,
|
|
3423
|
+
// "updated_at": 1714119323764,
|
|
3424
|
+
// "unfilled_amount": "0",
|
|
3425
|
+
// "filled_amount": "0.0001",
|
|
3426
|
+
// "filled_value": "6.442017",
|
|
3427
|
+
// "fee": "0.003221",
|
|
3428
|
+
// "fee_ccy": "USDT",
|
|
3429
|
+
// "maker_fee_rate": "0",
|
|
3430
|
+
// "taker_fee_rate": "0.0005"
|
|
3431
|
+
// },
|
|
3432
|
+
// ],
|
|
3433
|
+
// "message": "OK",
|
|
3434
|
+
// "pagination": {
|
|
3435
|
+
// "has_next": false
|
|
3436
|
+
// }
|
|
3437
|
+
// }
|
|
3438
|
+
//
|
|
3439
|
+
}
|
|
3473
3440
|
}
|
|
3474
|
-
else {
|
|
3475
|
-
if (
|
|
3476
|
-
response = await this.
|
|
3441
|
+
else if (isOpen) {
|
|
3442
|
+
if (stop) {
|
|
3443
|
+
response = await this.v2PrivateGetFuturesPendingStopOrder(this.extend(request, params));
|
|
3444
|
+
//
|
|
3445
|
+
// {
|
|
3446
|
+
// "code": 0,
|
|
3447
|
+
// "data": [
|
|
3448
|
+
// {
|
|
3449
|
+
// "stop_id": 137481469849,
|
|
3450
|
+
// "market": "BTCUSDT",
|
|
3451
|
+
// "market_type": "FUTURES",
|
|
3452
|
+
// "side": "buy",
|
|
3453
|
+
// "type": "limit",
|
|
3454
|
+
// "amount": "0.0001",
|
|
3455
|
+
// "price": "51000",
|
|
3456
|
+
// "client_id": "x-167673045-2b932341949fa2a1",
|
|
3457
|
+
// "created_at": 1714552257876,
|
|
3458
|
+
// "updated_at": 1714552257876,
|
|
3459
|
+
// "trigger_price": "52000",
|
|
3460
|
+
// "trigger_price_type": "latest_price",
|
|
3461
|
+
// "trigger_direction": "higher"
|
|
3462
|
+
// }
|
|
3463
|
+
// ],
|
|
3464
|
+
// "message": "OK",
|
|
3465
|
+
// "pagination": {
|
|
3466
|
+
// "total": 1,
|
|
3467
|
+
// "has_next": false
|
|
3468
|
+
// }
|
|
3469
|
+
// }
|
|
3470
|
+
//
|
|
3477
3471
|
}
|
|
3478
|
-
else
|
|
3479
|
-
response = await this.
|
|
3472
|
+
else {
|
|
3473
|
+
response = await this.v2PrivateGetFuturesPendingOrder(this.extend(request, params));
|
|
3474
|
+
//
|
|
3475
|
+
// {
|
|
3476
|
+
// "code": 0,
|
|
3477
|
+
// "data": [
|
|
3478
|
+
// {
|
|
3479
|
+
// "order_id": 137480580906,
|
|
3480
|
+
// "market": "BTCUSDT",
|
|
3481
|
+
// "market_type": "FUTURES",
|
|
3482
|
+
// "side": "buy",
|
|
3483
|
+
// "type": "limit",
|
|
3484
|
+
// "amount": "0.0001",
|
|
3485
|
+
// "price": "51000",
|
|
3486
|
+
// "client_id": "",
|
|
3487
|
+
// "created_at": 1714551877569,
|
|
3488
|
+
// "updated_at": 1714551877569,
|
|
3489
|
+
// "unfilled_amount": "0.0001",
|
|
3490
|
+
// "filled_amount": "0",
|
|
3491
|
+
// "filled_value": "0",
|
|
3492
|
+
// "fee": "0",
|
|
3493
|
+
// "fee_ccy": "USDT",
|
|
3494
|
+
// "maker_fee_rate": "0.0003",
|
|
3495
|
+
// "taker_fee_rate": "0.0005",
|
|
3496
|
+
// "last_filled_amount": "0",
|
|
3497
|
+
// "last_filled_price": "0",
|
|
3498
|
+
// "realized_pnl": "0"
|
|
3499
|
+
// }
|
|
3500
|
+
// ],
|
|
3501
|
+
// "message": "OK",
|
|
3502
|
+
// "pagination": {
|
|
3503
|
+
// "total": 1,
|
|
3504
|
+
// "has_next": false
|
|
3505
|
+
// }
|
|
3506
|
+
// }
|
|
3507
|
+
//
|
|
3480
3508
|
}
|
|
3481
3509
|
}
|
|
3482
3510
|
}
|
|
3483
3511
|
else {
|
|
3484
|
-
|
|
3485
|
-
|
|
3512
|
+
let marginMode = undefined;
|
|
3513
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchOrdersByStatus', params);
|
|
3514
|
+
if (marginMode !== undefined) {
|
|
3515
|
+
request['market_type'] = 'MARGIN';
|
|
3516
|
+
}
|
|
3517
|
+
else {
|
|
3518
|
+
request['market_type'] = 'SPOT';
|
|
3519
|
+
}
|
|
3520
|
+
if (isClosed) {
|
|
3486
3521
|
if (stop) {
|
|
3487
|
-
response = await this.
|
|
3522
|
+
response = await this.v2PrivateGetSpotFinishedStopOrder(this.extend(request, params));
|
|
3523
|
+
//
|
|
3524
|
+
// {
|
|
3525
|
+
// "code": 0,
|
|
3526
|
+
// "data": [
|
|
3527
|
+
// {
|
|
3528
|
+
// "stop_id": 117654881420,
|
|
3529
|
+
// "market": "BTCUSDT",
|
|
3530
|
+
// "market_type": "SPOT",
|
|
3531
|
+
// "ccy": "USDT",
|
|
3532
|
+
// "side": "buy",
|
|
3533
|
+
// "type": "market",
|
|
3534
|
+
// "amount": "5.83325524",
|
|
3535
|
+
// "price": "0",
|
|
3536
|
+
// "trigger_price": "57418",
|
|
3537
|
+
// "trigger_direction": "lower",
|
|
3538
|
+
// "trigger_price_type": "mark_price",
|
|
3539
|
+
// "client_id": "",
|
|
3540
|
+
// "created_at": 1714618050597,
|
|
3541
|
+
// "updated_at": 0
|
|
3542
|
+
// }
|
|
3543
|
+
// ],
|
|
3544
|
+
// "message": "OK",
|
|
3545
|
+
// "pagination": {
|
|
3546
|
+
// "has_next": false
|
|
3547
|
+
// }
|
|
3548
|
+
// }
|
|
3549
|
+
//
|
|
3488
3550
|
}
|
|
3489
3551
|
else {
|
|
3490
|
-
response = await this.
|
|
3552
|
+
response = await this.v2PrivateGetSpotFinishedOrder(this.extend(request, params));
|
|
3553
|
+
//
|
|
3554
|
+
// {
|
|
3555
|
+
// "code": 0,
|
|
3556
|
+
// "data": [
|
|
3557
|
+
// {
|
|
3558
|
+
// "order_id": 117180532345,
|
|
3559
|
+
// "market": "BTCUSDT",
|
|
3560
|
+
// "market_type": "SPOT",
|
|
3561
|
+
// "side": "sell",
|
|
3562
|
+
// "type": "market",
|
|
3563
|
+
// "ccy": "BTC",
|
|
3564
|
+
// "amount": "0.00015484",
|
|
3565
|
+
// "price": "0",
|
|
3566
|
+
// "client_id": "",
|
|
3567
|
+
// "created_at": 1714116494219,
|
|
3568
|
+
// "updated_at": 0,
|
|
3569
|
+
// "base_fee": "0",
|
|
3570
|
+
// "quote_fee": "0.0199931699632",
|
|
3571
|
+
// "discount_fee": "0",
|
|
3572
|
+
// "maker_fee_rate": "0",
|
|
3573
|
+
// "taker_fee_rate": "0.002",
|
|
3574
|
+
// "unfilled_amount": "0",
|
|
3575
|
+
// "filled_amount": "0.00015484",
|
|
3576
|
+
// "filled_value": "9.9965849816"
|
|
3577
|
+
// },
|
|
3578
|
+
// ],
|
|
3579
|
+
// "message": "OK",
|
|
3580
|
+
// "pagination": {
|
|
3581
|
+
// "has_next": false
|
|
3582
|
+
// }
|
|
3583
|
+
// }
|
|
3584
|
+
//
|
|
3491
3585
|
}
|
|
3492
3586
|
}
|
|
3493
3587
|
else if (status === 'pending') {
|
|
3494
3588
|
if (stop) {
|
|
3495
|
-
response = await this.
|
|
3589
|
+
response = await this.v2PrivateGetSpotPendingStopOrder(this.extend(request, params));
|
|
3590
|
+
//
|
|
3591
|
+
// {
|
|
3592
|
+
// "code": 0,
|
|
3593
|
+
// "data": [
|
|
3594
|
+
// {
|
|
3595
|
+
// "stop_id": 117586439530,
|
|
3596
|
+
// "market": "BTCUSDT",
|
|
3597
|
+
// "market_type": "SPOT",
|
|
3598
|
+
// "ccy": "BTC",
|
|
3599
|
+
// "side": "buy",
|
|
3600
|
+
// "type": "limit",
|
|
3601
|
+
// "amount": "0.0001",
|
|
3602
|
+
// "price": "51000",
|
|
3603
|
+
// "trigger_price": "52000",
|
|
3604
|
+
// "trigger_direction": "higher",
|
|
3605
|
+
// "trigger_price_type": "mark_price",
|
|
3606
|
+
// "client_id": "x-167673045-df61777094c69312",
|
|
3607
|
+
// "created_at": 1714551237335,
|
|
3608
|
+
// "updated_at": 1714551237335
|
|
3609
|
+
// }
|
|
3610
|
+
// ],
|
|
3611
|
+
// "message": "OK",
|
|
3612
|
+
// "pagination": {
|
|
3613
|
+
// "total": 1,
|
|
3614
|
+
// "has_next": false
|
|
3615
|
+
// }
|
|
3616
|
+
// }
|
|
3617
|
+
//
|
|
3496
3618
|
}
|
|
3497
3619
|
else {
|
|
3498
|
-
response = await this.
|
|
3620
|
+
response = await this.v2PrivateGetSpotPendingOrder(this.extend(request, params));
|
|
3621
|
+
//
|
|
3622
|
+
// {
|
|
3623
|
+
// "code": 0,
|
|
3624
|
+
// "data": [
|
|
3625
|
+
// {
|
|
3626
|
+
// "order_id": 117585921297,
|
|
3627
|
+
// "market": "BTCUSDT",
|
|
3628
|
+
// "market_type": "SPOT",
|
|
3629
|
+
// "side": "buy",
|
|
3630
|
+
// "type": "limit",
|
|
3631
|
+
// "ccy": "BTC",
|
|
3632
|
+
// "amount": "0.00011793",
|
|
3633
|
+
// "price": "52000",
|
|
3634
|
+
// "client_id": "",
|
|
3635
|
+
// "created_at": 1714550707486,
|
|
3636
|
+
// "updated_at": 1714550707486,
|
|
3637
|
+
// "base_fee": "0",
|
|
3638
|
+
// "quote_fee": "0",
|
|
3639
|
+
// "discount_fee": "0",
|
|
3640
|
+
// "maker_fee_rate": "0.002",
|
|
3641
|
+
// "taker_fee_rate": "0.002",
|
|
3642
|
+
// "last_fill_amount": "0",
|
|
3643
|
+
// "last_fill_price": "0",
|
|
3644
|
+
// "unfilled_amount": "0.00011793",
|
|
3645
|
+
// "filled_amount": "0",
|
|
3646
|
+
// "filled_value": "0"
|
|
3647
|
+
// }
|
|
3648
|
+
// ],
|
|
3649
|
+
// "message": "OK",
|
|
3650
|
+
// "pagination": {
|
|
3651
|
+
// "total": 1,
|
|
3652
|
+
// "has_next": false
|
|
3653
|
+
// }
|
|
3654
|
+
// }
|
|
3655
|
+
//
|
|
3499
3656
|
}
|
|
3500
3657
|
}
|
|
3501
3658
|
}
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
//
|
|
3505
|
-
// {
|
|
3506
|
-
// "code": 0,
|
|
3507
|
-
// "data": {
|
|
3508
|
-
// "count": 1,
|
|
3509
|
-
// "curr_page": 1,
|
|
3510
|
-
// "data": [
|
|
3511
|
-
// {
|
|
3512
|
-
// "account_id": 0,
|
|
3513
|
-
// "amount": "0.0005",
|
|
3514
|
-
// "asset_fee": "0",
|
|
3515
|
-
// "avg_price": "0.00",
|
|
3516
|
-
// "client_id": "",
|
|
3517
|
-
// "create_time": 1651089247,
|
|
3518
|
-
// "deal_amount": "0",
|
|
3519
|
-
// "deal_fee": "0",
|
|
3520
|
-
// "deal_money": "0",
|
|
3521
|
-
// "fee_asset": null,
|
|
3522
|
-
// "fee_discount": "1",
|
|
3523
|
-
// "finished_time": 0,
|
|
3524
|
-
// "id": 74660190839,
|
|
3525
|
-
// "left": "0.0005",
|
|
3526
|
-
// "maker_fee_rate": "0.002",
|
|
3527
|
-
// "market": "BTCUSDT",
|
|
3528
|
-
// "money_fee": "0",
|
|
3529
|
-
// "order_type": "limit",
|
|
3530
|
-
// "price": "31000",
|
|
3531
|
-
// "status": "not_deal",
|
|
3532
|
-
// "stock_fee": "0",
|
|
3533
|
-
// "taker_fee_rate": "0.002",
|
|
3534
|
-
// "type": "buy"
|
|
3535
|
-
// }
|
|
3536
|
-
// ],
|
|
3537
|
-
// "has_next": false,
|
|
3538
|
-
// "total": 1
|
|
3539
|
-
// },
|
|
3540
|
-
// "message": "Success"
|
|
3541
|
-
// }
|
|
3542
|
-
//
|
|
3543
|
-
// Swap
|
|
3544
|
-
//
|
|
3545
|
-
// {
|
|
3546
|
-
// "code": 0,
|
|
3547
|
-
// "data": {
|
|
3548
|
-
// "limit": 100,
|
|
3549
|
-
// "offset": 0,
|
|
3550
|
-
// "records": [
|
|
3551
|
-
// {
|
|
3552
|
-
// "amount": "0.0005",
|
|
3553
|
-
// "client_id": "",
|
|
3554
|
-
// "create_time": 1651030414.088431,
|
|
3555
|
-
// "deal_asset_fee": "0",
|
|
3556
|
-
// "deal_fee": "0.00960069",
|
|
3557
|
-
// "deal_profit": "0.009825",
|
|
3558
|
-
// "deal_stock": "19.20138",
|
|
3559
|
-
// "effect_type": 0,
|
|
3560
|
-
// "fee_asset": "",
|
|
3561
|
-
// "fee_discount": "0",
|
|
3562
|
-
// "left": "0",
|
|
3563
|
-
// "leverage": "3",
|
|
3564
|
-
// "maker_fee": "0",
|
|
3565
|
-
// "market": "BTCUSDT",
|
|
3566
|
-
// "order_id": 18253447431,
|
|
3567
|
-
// "position_id": 0,
|
|
3568
|
-
// "position_type": 1,
|
|
3569
|
-
// "price": "0",
|
|
3570
|
-
// "side": 1,
|
|
3571
|
-
// "source": "web",
|
|
3572
|
-
// "stop_id": 0,
|
|
3573
|
-
// "taker_fee": "0.0005",
|
|
3574
|
-
// "target": 0,
|
|
3575
|
-
// "type": 2,
|
|
3576
|
-
// "update_time": 1651030414.08847,
|
|
3577
|
-
// "user_id": 3620173
|
|
3578
|
-
// },
|
|
3579
|
-
// ]
|
|
3580
|
-
// },
|
|
3581
|
-
// "message": "OK"
|
|
3582
|
-
// }
|
|
3583
|
-
//
|
|
3584
|
-
// Spot and Margin Stop
|
|
3585
|
-
//
|
|
3586
|
-
// {
|
|
3587
|
-
// "code": 0,
|
|
3588
|
-
// "data": {
|
|
3589
|
-
// "count": 1,
|
|
3590
|
-
// "curr_page": 1,
|
|
3591
|
-
// "data": [
|
|
3592
|
-
// {
|
|
3593
|
-
// "account_id": 0,
|
|
3594
|
-
// "amount": "155",
|
|
3595
|
-
// "client_id": "",
|
|
3596
|
-
// "create_time": 1651089182,
|
|
3597
|
-
// "fee_asset": null,
|
|
3598
|
-
// "fee_discount": "1",
|
|
3599
|
-
// "maker_fee": "0.002",
|
|
3600
|
-
// "market": "BTCUSDT",
|
|
3601
|
-
// "order_id": 74660111965,
|
|
3602
|
-
// "order_type": "market",
|
|
3603
|
-
// "price": "0",
|
|
3604
|
-
// "state": 0,
|
|
3605
|
-
// "stop_price": "31500",
|
|
3606
|
-
// "taker_fee": "0.002",
|
|
3607
|
-
// "type": "buy"
|
|
3608
|
-
// }
|
|
3609
|
-
// ],
|
|
3610
|
-
// "has_next": false,
|
|
3611
|
-
// "total": 0
|
|
3612
|
-
// },
|
|
3613
|
-
// "message": "Success"
|
|
3614
|
-
// }
|
|
3615
|
-
//
|
|
3616
|
-
// Swap Stop
|
|
3617
|
-
//
|
|
3618
|
-
// {
|
|
3619
|
-
// "code": 0,
|
|
3620
|
-
// "data": {
|
|
3621
|
-
// "limit": 100,
|
|
3622
|
-
// "offset": 0,
|
|
3623
|
-
// "records": [
|
|
3624
|
-
// {
|
|
3625
|
-
// "amount": "0.0005",
|
|
3626
|
-
// "client_id": "",
|
|
3627
|
-
// "create_time": 1651089147.321691,
|
|
3628
|
-
// "effect_type": 1,
|
|
3629
|
-
// "fee_asset": "",
|
|
3630
|
-
// "fee_discount": "0.00000000000000000000",
|
|
3631
|
-
// "maker_fee": "0.00030",
|
|
3632
|
-
// "market": "BTCUSDT",
|
|
3633
|
-
// "order_id": 18332143848,
|
|
3634
|
-
// "price": "31000.00",
|
|
3635
|
-
// "side": 2,
|
|
3636
|
-
// "source": "api.v1",
|
|
3637
|
-
// "state": 1,
|
|
3638
|
-
// "stop_price": "31500.00",
|
|
3639
|
-
// "stop_type": 1,
|
|
3640
|
-
// "taker_fee": "0.00050",
|
|
3641
|
-
// "target": 0,
|
|
3642
|
-
// "type": 1,
|
|
3643
|
-
// "update_time": 1651089147.321691,
|
|
3644
|
-
// "user_id": 3620173
|
|
3645
|
-
// }
|
|
3646
|
-
// ],
|
|
3647
|
-
// "total": 1
|
|
3648
|
-
// },
|
|
3649
|
-
// "message": "OK"
|
|
3650
|
-
// }
|
|
3651
|
-
//
|
|
3652
|
-
const tradeRequest = (marketType === 'swap') ? 'records' : 'data';
|
|
3653
|
-
const data = this.safeValue(response, 'data');
|
|
3654
|
-
const orders = this.safeList(data, tradeRequest, []);
|
|
3655
|
-
return this.parseOrders(orders, market, since, limit);
|
|
3659
|
+
const data = this.safeList(response, 'data', []);
|
|
3660
|
+
return this.parseOrders(data, market, since, limit);
|
|
3656
3661
|
}
|
|
3657
3662
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
3658
3663
|
/**
|
|
3659
3664
|
* @method
|
|
3660
3665
|
* @name coinex#fetchOpenOrders
|
|
3661
3666
|
* @description fetch all unfilled currently open orders
|
|
3662
|
-
* @see https://
|
|
3663
|
-
* @see https://
|
|
3664
|
-
* @see https://
|
|
3665
|
-
* @see https://
|
|
3667
|
+
* @see https://docs.coinex.com/api/v2/spot/order/http/list-pending-order
|
|
3668
|
+
* @see https://docs.coinex.com/api/v2/spot/order/http/list-pending-stop-order
|
|
3669
|
+
* @see https://docs.coinex.com/api/v2/futures/order/http/list-pending-order
|
|
3670
|
+
* @see https://docs.coinex.com/api/v2/futures/order/http/list-pending-stop-order
|
|
3666
3671
|
* @param {string} symbol unified market symbol
|
|
3667
3672
|
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
3668
|
-
* @param {int} [limit] the maximum number of
|
|
3673
|
+
* @param {int} [limit] the maximum number of open order structures to retrieve
|
|
3669
3674
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3675
|
+
* @param {boolean} [params.trigger] set to true for fetching trigger orders
|
|
3676
|
+
* @param {string} [params.marginMode] 'cross' or 'isolated' for fetching spot margin orders
|
|
3670
3677
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
3671
3678
|
*/
|
|
3672
3679
|
return await this.fetchOrdersByStatus('pending', symbol, since, limit, params);
|
|
@@ -3676,13 +3683,15 @@ export default class coinex extends Exchange {
|
|
|
3676
3683
|
* @method
|
|
3677
3684
|
* @name coinex#fetchClosedOrders
|
|
3678
3685
|
* @description fetches information on multiple closed orders made by the user
|
|
3679
|
-
* @see https://
|
|
3680
|
-
* @see https://
|
|
3681
|
-
* @see https://
|
|
3686
|
+
* @see https://docs.coinex.com/api/v2/spot/order/http/list-finished-order
|
|
3687
|
+
* @see https://docs.coinex.com/api/v2/spot/order/http/list-finished-stop-order
|
|
3688
|
+
* @see https://docs.coinex.com/api/v2/futures/order/http/list-finished-order
|
|
3689
|
+
* @see https://docs.coinex.com/api/v2/futures/order/http/list-finished-stop-order
|
|
3682
3690
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
3683
3691
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
3684
3692
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
3685
|
-
* @param {
|
|
3693
|
+
* @param {boolean} [params.trigger] set to true for fetching trigger orders
|
|
3694
|
+
* @param {string} [params.marginMode] 'cross' or 'isolated' for fetching spot margin orders
|
|
3686
3695
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
3687
3696
|
*/
|
|
3688
3697
|
return await this.fetchOrdersByStatus('finished', symbol, since, limit, params);
|
|
@@ -3692,31 +3701,34 @@ export default class coinex extends Exchange {
|
|
|
3692
3701
|
* @method
|
|
3693
3702
|
* @name coinex#createDepositAddress
|
|
3694
3703
|
* @description create a currency deposit address
|
|
3695
|
-
* @see https://
|
|
3704
|
+
* @see https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/update-deposit-address
|
|
3696
3705
|
* @param {string} code unified currency code of the currency for the deposit address
|
|
3697
3706
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3707
|
+
* @param {string} [params.network] the blockchain network to create a deposit address on
|
|
3698
3708
|
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
3699
3709
|
*/
|
|
3700
3710
|
await this.loadMarkets();
|
|
3701
3711
|
const currency = this.currency(code);
|
|
3712
|
+
const network = this.safeString2(params, 'chain', 'network');
|
|
3713
|
+
if (network === undefined) {
|
|
3714
|
+
throw new ArgumentsRequired(this.id + ' createDepositAddress() requires a network parameter');
|
|
3715
|
+
}
|
|
3716
|
+
params = this.omit(params, 'network');
|
|
3702
3717
|
const request = {
|
|
3703
|
-
'
|
|
3718
|
+
'ccy': currency['id'],
|
|
3719
|
+
'chain': this.networkCodeToId(network, currency['code']),
|
|
3704
3720
|
};
|
|
3705
|
-
|
|
3706
|
-
const network = this.safeString(params, 'network');
|
|
3707
|
-
params = this.omit(params, 'network');
|
|
3708
|
-
request['smart_contract_name'] = network;
|
|
3709
|
-
}
|
|
3710
|
-
const response = await this.v1PrivatePutBalanceDepositAddressCoinType(this.extend(request, params));
|
|
3721
|
+
const response = await this.v2PrivatePostAssetsRenewalDepositAddress(this.extend(request, params));
|
|
3711
3722
|
//
|
|
3712
3723
|
// {
|
|
3713
3724
|
// "code": 0,
|
|
3714
3725
|
// "data": {
|
|
3715
|
-
// "
|
|
3716
|
-
// "
|
|
3726
|
+
// "address": "0x321bd6479355142334f45653ad5d8b76105a1234",
|
|
3727
|
+
// "memo": ""
|
|
3717
3728
|
// },
|
|
3718
|
-
// "message": "
|
|
3729
|
+
// "message": "OK"
|
|
3719
3730
|
// }
|
|
3731
|
+
//
|
|
3720
3732
|
const data = this.safeDict(response, 'data', {});
|
|
3721
3733
|
return this.parseDepositAddress(data, currency);
|
|
3722
3734
|
}
|
|
@@ -3725,18 +3737,16 @@ export default class coinex extends Exchange {
|
|
|
3725
3737
|
* @method
|
|
3726
3738
|
* @name coinex#fetchDepositAddress
|
|
3727
3739
|
* @description fetch the deposit address for a currency associated with this account
|
|
3728
|
-
* @see https://
|
|
3740
|
+
* @see https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/get-deposit-address
|
|
3729
3741
|
* @param {string} code unified currency code
|
|
3730
3742
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3743
|
+
* @param {string} [params.network] the blockchain network to create a deposit address on
|
|
3731
3744
|
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
3732
3745
|
*/
|
|
3733
3746
|
await this.loadMarkets();
|
|
3734
3747
|
const currency = this.currency(code);
|
|
3735
|
-
const
|
|
3736
|
-
|
|
3737
|
-
};
|
|
3738
|
-
const networks = this.safeValue(currency, 'networks', {});
|
|
3739
|
-
const network = this.safeString(params, 'network');
|
|
3748
|
+
const networks = this.safeDict(currency, 'networks', {});
|
|
3749
|
+
const network = this.safeString2(params, 'network', 'chain');
|
|
3740
3750
|
params = this.omit(params, 'network');
|
|
3741
3751
|
const networksKeys = Object.keys(networks);
|
|
3742
3752
|
const numOfNetworks = networksKeys.length;
|
|
@@ -3748,24 +3758,24 @@ export default class coinex extends Exchange {
|
|
|
3748
3758
|
throw new ExchangeError(this.id + ' fetchDepositAddress() ' + network + ' network not supported for ' + code);
|
|
3749
3759
|
}
|
|
3750
3760
|
}
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
|
|
3761
|
+
const request = {
|
|
3762
|
+
'ccy': currency['id'],
|
|
3763
|
+
'chain': network,
|
|
3764
|
+
};
|
|
3765
|
+
const response = await this.v2PrivateGetAssetsDepositAddress(this.extend(request, params));
|
|
3755
3766
|
//
|
|
3756
|
-
//
|
|
3757
|
-
//
|
|
3758
|
-
//
|
|
3759
|
-
//
|
|
3760
|
-
//
|
|
3761
|
-
//
|
|
3762
|
-
//
|
|
3763
|
-
//
|
|
3764
|
-
// }
|
|
3767
|
+
// {
|
|
3768
|
+
// "code": 0,
|
|
3769
|
+
// "data": {
|
|
3770
|
+
// "address": "0x321bd6479355142334f45653ad5d8b76105a1234",
|
|
3771
|
+
// "memo": ""
|
|
3772
|
+
// },
|
|
3773
|
+
// "message": "OK"
|
|
3774
|
+
// }
|
|
3765
3775
|
//
|
|
3766
|
-
const data = this.
|
|
3776
|
+
const data = this.safeDict(response, 'data', {});
|
|
3767
3777
|
const depositAddress = this.parseDepositAddress(data, currency);
|
|
3768
|
-
const options = this.
|
|
3778
|
+
const options = this.safeDict(this.options, 'fetchDepositAddress', {});
|
|
3769
3779
|
const fillResponseFromRequest = this.safeBool(options, 'fillResponseFromRequest', true);
|
|
3770
3780
|
if (fillResponseFromRequest) {
|
|
3771
3781
|
depositAddress['network'] = this.safeNetworkCode(network, currency);
|
|
@@ -3791,11 +3801,11 @@ export default class coinex extends Exchange {
|
|
|
3791
3801
|
parseDepositAddress(depositAddress, currency = undefined) {
|
|
3792
3802
|
//
|
|
3793
3803
|
// {
|
|
3794
|
-
// "
|
|
3795
|
-
// "
|
|
3804
|
+
// "address": "1P1JqozxioQwaqPwgMAQdNDYNyaVSqgARq",
|
|
3805
|
+
// "memo": ""
|
|
3796
3806
|
// }
|
|
3797
3807
|
//
|
|
3798
|
-
const coinAddress = this.safeString(depositAddress, '
|
|
3808
|
+
const coinAddress = this.safeString(depositAddress, 'address');
|
|
3799
3809
|
const parts = coinAddress.split(':');
|
|
3800
3810
|
let address = undefined;
|
|
3801
3811
|
let tag = undefined;
|
|
@@ -6115,6 +6125,8 @@ export default class coinex extends Exchange {
|
|
|
6115
6125
|
preparedString += nonce + this.secret;
|
|
6116
6126
|
const signature = this.hash(this.encode(preparedString), sha256);
|
|
6117
6127
|
headers = {
|
|
6128
|
+
'Content-Type': 'application/json; charset=utf-8',
|
|
6129
|
+
'Accept': 'application/json',
|
|
6118
6130
|
'X-COINEX-KEY': this.apiKey,
|
|
6119
6131
|
'X-COINEX-SIGN': signature,
|
|
6120
6132
|
'X-COINEX-TIMESTAMP': nonce,
|