ccxt 4.3.58 → 4.3.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +4 -2
- package/dist/cjs/src/base/Exchange.js +4 -4
- package/dist/cjs/src/base/errors.js +22 -22
- package/dist/cjs/src/bingx.js +52 -7
- package/dist/cjs/src/bitmart.js +1 -0
- package/dist/cjs/src/btcbox.js +149 -7
- package/dist/cjs/src/bybit.js +2 -2
- package/dist/cjs/src/deribit.js +15 -1
- package/dist/cjs/src/digifinex.js +32 -7
- package/dist/cjs/src/gate.js +15 -15
- package/dist/cjs/src/htx.js +7 -7
- package/dist/cjs/src/hyperliquid.js +107 -1
- package/dist/cjs/src/mexc.js +11 -11
- package/dist/cjs/src/pro/binance.js +11 -13
- package/dist/cjs/src/pro/bingx.js +11 -8
- package/dist/cjs/src/pro/xt.js +1108 -0
- package/dist/cjs/src/upbit.js +148 -49
- package/dist/cjs/src/xt.js +72 -7
- package/js/ccxt.d.ts +6 -3
- package/js/ccxt.js +5 -3
- package/js/src/abstract/bitmart.d.ts +1 -0
- package/js/src/abstract/btcbox.d.ts +1 -0
- package/js/src/abstract/upbit.d.ts +3 -0
- package/js/src/abstract/xt.d.ts +1 -0
- package/js/src/base/Exchange.d.ts +3 -3
- package/js/src/base/Exchange.js +5 -5
- package/js/src/base/errorHierarchy.d.ts +5 -5
- package/js/src/base/errorHierarchy.js +5 -5
- package/js/src/base/errors.d.ts +15 -15
- package/js/src/base/errors.js +22 -22
- package/js/src/bingx.js +52 -7
- package/js/src/bitmart.js +1 -0
- package/js/src/btcbox.d.ts +4 -1
- package/js/src/btcbox.js +149 -7
- package/js/src/bybit.js +2 -2
- package/js/src/deribit.d.ts +1 -1
- package/js/src/deribit.js +15 -1
- package/js/src/digifinex.d.ts +3 -2
- package/js/src/digifinex.js +32 -7
- package/js/src/gate.js +15 -15
- package/js/src/htx.js +7 -7
- package/js/src/hyperliquid.d.ts +3 -1
- package/js/src/hyperliquid.js +107 -1
- package/js/src/mexc.js +11 -11
- package/js/src/pro/binance.js +11 -13
- package/js/src/pro/bingx.js +11 -8
- package/js/src/pro/bitmart.d.ts +3 -3
- package/js/src/pro/bitopro.d.ts +2 -2
- package/js/src/pro/coincheck.d.ts +2 -2
- package/js/src/pro/coinone.d.ts +2 -2
- package/js/src/pro/hyperliquid.d.ts +2 -2
- package/js/src/pro/xt.d.ts +31 -0
- package/js/src/pro/xt.js +1109 -0
- package/js/src/upbit.d.ts +0 -1
- package/js/src/upbit.js +148 -49
- package/js/src/xt.js +72 -7
- package/package.json +1 -1
package/js/src/upbit.d.ts
CHANGED
|
@@ -62,7 +62,6 @@ export default class upbit extends Exchange {
|
|
|
62
62
|
parseTransaction(transaction: Dict, currency?: Currency): Transaction;
|
|
63
63
|
parseOrderStatus(status: Str): string;
|
|
64
64
|
parseOrder(order: Dict, market?: Market): Order;
|
|
65
|
-
fetchOrdersByState(state: any, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
66
65
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
67
66
|
fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
68
67
|
fetchCanceledOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
package/js/src/upbit.js
CHANGED
|
@@ -130,6 +130,9 @@ export default class upbit extends Exchange {
|
|
|
130
130
|
'orders/chance',
|
|
131
131
|
'order',
|
|
132
132
|
'orders',
|
|
133
|
+
'orders/closed',
|
|
134
|
+
'orders/open',
|
|
135
|
+
'orders/uuids',
|
|
133
136
|
'withdraws',
|
|
134
137
|
'withdraw',
|
|
135
138
|
'withdraws/chance',
|
|
@@ -1463,6 +1466,28 @@ export default class upbit extends Exchange {
|
|
|
1463
1466
|
// ],
|
|
1464
1467
|
// }
|
|
1465
1468
|
//
|
|
1469
|
+
// fetchOpenOrders, fetchClosedOrders, fetchCanceledOrders
|
|
1470
|
+
//
|
|
1471
|
+
// {
|
|
1472
|
+
// "uuid": "637fd66-d019-4d77-bee6-8e0cff28edd9",
|
|
1473
|
+
// "side": "ask",
|
|
1474
|
+
// "ord_type": "limit",
|
|
1475
|
+
// "price": "1.5",
|
|
1476
|
+
// "state": "wait",
|
|
1477
|
+
// "market": "SGD-XRP",
|
|
1478
|
+
// "created_at": "2024-06-05T09:37:10Z",
|
|
1479
|
+
// "volume": "10",
|
|
1480
|
+
// "remaining_volume": "10",
|
|
1481
|
+
// "reserved_fee": "0",
|
|
1482
|
+
// "remaining_fee": "0",
|
|
1483
|
+
// "paid_fee": "0",
|
|
1484
|
+
// "locked": "10",
|
|
1485
|
+
// "executed_volume": "0",
|
|
1486
|
+
// "executed_funds": "0",
|
|
1487
|
+
// "trades_count": 0,
|
|
1488
|
+
// "time_in_force": "ioc"
|
|
1489
|
+
// }
|
|
1490
|
+
//
|
|
1466
1491
|
const id = this.safeString(order, 'uuid');
|
|
1467
1492
|
let side = this.safeString(order, 'side');
|
|
1468
1493
|
if (side === 'bid') {
|
|
@@ -1533,7 +1558,7 @@ export default class upbit extends Exchange {
|
|
|
1533
1558
|
'lastTradeTimestamp': lastTradeTimestamp,
|
|
1534
1559
|
'symbol': market['symbol'],
|
|
1535
1560
|
'type': type,
|
|
1536
|
-
'timeInForce':
|
|
1561
|
+
'timeInForce': this.safeStringUpper(order, 'time_in_force'),
|
|
1537
1562
|
'postOnly': undefined,
|
|
1538
1563
|
'side': side,
|
|
1539
1564
|
'price': price,
|
|
@@ -1549,84 +1574,163 @@ export default class upbit extends Exchange {
|
|
|
1549
1574
|
'trades': trades,
|
|
1550
1575
|
});
|
|
1551
1576
|
}
|
|
1552
|
-
async
|
|
1577
|
+
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1578
|
+
/**
|
|
1579
|
+
* @method
|
|
1580
|
+
* @name upbit#fetchOpenOrders
|
|
1581
|
+
* @description fetch all unfilled currently open orders
|
|
1582
|
+
* @see https://global-docs.upbit.com/reference/open-order
|
|
1583
|
+
* @param {string} symbol unified market symbol
|
|
1584
|
+
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
1585
|
+
* @param {int} [limit] the maximum number of open order structures to retrieve
|
|
1586
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1587
|
+
* @param {string} [params.state] default is 'wait', set to 'watch' for stop limit orders
|
|
1588
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1589
|
+
*/
|
|
1553
1590
|
await this.loadMarkets();
|
|
1554
|
-
const request = {
|
|
1555
|
-
// 'market': this.marketId (symbol),
|
|
1556
|
-
'state': state,
|
|
1557
|
-
// 'page': 1,
|
|
1558
|
-
// 'order_by': 'asc',
|
|
1559
|
-
};
|
|
1591
|
+
const request = {};
|
|
1560
1592
|
let market = undefined;
|
|
1561
1593
|
if (symbol !== undefined) {
|
|
1562
1594
|
market = this.market(symbol);
|
|
1563
1595
|
request['market'] = market['id'];
|
|
1564
1596
|
}
|
|
1565
|
-
|
|
1597
|
+
if (limit !== undefined) {
|
|
1598
|
+
request['limit'] = limit;
|
|
1599
|
+
}
|
|
1600
|
+
const response = await this.privateGetOrdersOpen(this.extend(request, params));
|
|
1566
1601
|
//
|
|
1567
1602
|
// [
|
|
1568
1603
|
// {
|
|
1569
|
-
// "uuid": "
|
|
1570
|
-
// "side": "
|
|
1604
|
+
// "uuid": "637fd66-d019-4d77-bee6-8e0cff28edd9",
|
|
1605
|
+
// "side": "ask",
|
|
1571
1606
|
// "ord_type": "limit",
|
|
1572
|
-
// "price": "
|
|
1573
|
-
// "state": "
|
|
1574
|
-
// "market": "
|
|
1575
|
-
// "created_at": "
|
|
1576
|
-
// "volume": "
|
|
1577
|
-
// "remaining_volume": "
|
|
1578
|
-
// "reserved_fee": "
|
|
1579
|
-
// "remaining_fee": "
|
|
1580
|
-
// "paid_fee": "
|
|
1581
|
-
// "locked": "
|
|
1582
|
-
// "executed_volume": "
|
|
1583
|
-
// "
|
|
1584
|
-
//
|
|
1607
|
+
// "price": "1.5",
|
|
1608
|
+
// "state": "wait",
|
|
1609
|
+
// "market": "SGD-XRP",
|
|
1610
|
+
// "created_at": "2024-06-05T09:37:10Z",
|
|
1611
|
+
// "volume": "10",
|
|
1612
|
+
// "remaining_volume": "10",
|
|
1613
|
+
// "reserved_fee": "0",
|
|
1614
|
+
// "remaining_fee": "0",
|
|
1615
|
+
// "paid_fee": "0",
|
|
1616
|
+
// "locked": "10",
|
|
1617
|
+
// "executed_volume": "0",
|
|
1618
|
+
// "executed_funds": "0",
|
|
1619
|
+
// "trades_count": 0
|
|
1620
|
+
// }
|
|
1585
1621
|
// ]
|
|
1586
1622
|
//
|
|
1587
1623
|
return this.parseOrders(response, market, since, limit);
|
|
1588
1624
|
}
|
|
1589
|
-
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1590
|
-
/**
|
|
1591
|
-
* @method
|
|
1592
|
-
* @name upbit#fetchOpenOrders
|
|
1593
|
-
* @see https://docs.upbit.com/reference/%EC%A3%BC%EB%AC%B8-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%A1%B0%ED%9A%8C
|
|
1594
|
-
* @description fetch all unfilled currently open orders
|
|
1595
|
-
* @param {string} symbol unified market symbol
|
|
1596
|
-
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
1597
|
-
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
1598
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1599
|
-
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1600
|
-
*/
|
|
1601
|
-
return await this.fetchOrdersByState('wait', symbol, since, limit, params);
|
|
1602
|
-
}
|
|
1603
1625
|
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1604
1626
|
/**
|
|
1605
1627
|
* @method
|
|
1606
1628
|
* @name upbit#fetchClosedOrders
|
|
1607
|
-
* @see https://docs.upbit.com/reference/%EC%A3%BC%EB%AC%B8-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%A1%B0%ED%9A%8C
|
|
1608
1629
|
* @description fetches information on multiple closed orders made by the user
|
|
1630
|
+
* @see https://global-docs.upbit.com/reference/closed-order
|
|
1609
1631
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
1610
1632
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
1611
1633
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
1612
1634
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1635
|
+
* @param {int} [params.until] timestamp in ms of the latest order
|
|
1613
1636
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1614
1637
|
*/
|
|
1615
|
-
|
|
1638
|
+
await this.loadMarkets();
|
|
1639
|
+
let request = {
|
|
1640
|
+
'state': 'done',
|
|
1641
|
+
};
|
|
1642
|
+
let market = undefined;
|
|
1643
|
+
if (symbol !== undefined) {
|
|
1644
|
+
market = this.market(symbol);
|
|
1645
|
+
request['market'] = market['id'];
|
|
1646
|
+
}
|
|
1647
|
+
if (since !== undefined) {
|
|
1648
|
+
request['start_time'] = since;
|
|
1649
|
+
}
|
|
1650
|
+
if (limit !== undefined) {
|
|
1651
|
+
request['limit'] = limit;
|
|
1652
|
+
}
|
|
1653
|
+
[request, params] = this.handleUntilOption('end_time', request, params);
|
|
1654
|
+
const response = await this.privateGetOrdersClosed(this.extend(request, params));
|
|
1655
|
+
//
|
|
1656
|
+
// [
|
|
1657
|
+
// {
|
|
1658
|
+
// "uuid": "637fd66-d019-4d77-bee6-8e0cff28edd9",
|
|
1659
|
+
// "side": "ask",
|
|
1660
|
+
// "ord_type": "limit",
|
|
1661
|
+
// "price": "1.5",
|
|
1662
|
+
// "state": "done",
|
|
1663
|
+
// "market": "SGD-XRP",
|
|
1664
|
+
// "created_at": "2024-06-05T09:37:10Z",
|
|
1665
|
+
// "volume": "10",
|
|
1666
|
+
// "remaining_volume": "10",
|
|
1667
|
+
// "reserved_fee": "0",
|
|
1668
|
+
// "remaining_fee": "0",
|
|
1669
|
+
// "paid_fee": "0",
|
|
1670
|
+
// "locked": "10",
|
|
1671
|
+
// "executed_volume": "0",
|
|
1672
|
+
// "executed_funds": "0",
|
|
1673
|
+
// "trades_count": 0,
|
|
1674
|
+
// "time_in_force": "ioc"
|
|
1675
|
+
// }
|
|
1676
|
+
// ]
|
|
1677
|
+
//
|
|
1678
|
+
return this.parseOrders(response, market, since, limit);
|
|
1616
1679
|
}
|
|
1617
1680
|
async fetchCanceledOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1618
1681
|
/**
|
|
1619
1682
|
* @method
|
|
1620
1683
|
* @name upbit#fetchCanceledOrders
|
|
1621
|
-
* @see https://docs.upbit.com/reference/%EC%A3%BC%EB%AC%B8-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%A1%B0%ED%9A%8C
|
|
1622
1684
|
* @description fetches information on multiple canceled orders made by the user
|
|
1685
|
+
* @see https://global-docs.upbit.com/reference/closed-order
|
|
1623
1686
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
1624
1687
|
* @param {int} [since] timestamp in ms of the earliest order, default is undefined
|
|
1625
1688
|
* @param {int} [limit] max number of orders to return, default is undefined
|
|
1626
1689
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1690
|
+
* @param {int} [params.until] timestamp in ms of the latest order
|
|
1627
1691
|
* @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1628
1692
|
*/
|
|
1629
|
-
|
|
1693
|
+
await this.loadMarkets();
|
|
1694
|
+
let request = {
|
|
1695
|
+
'state': 'cancel',
|
|
1696
|
+
};
|
|
1697
|
+
let market = undefined;
|
|
1698
|
+
if (symbol !== undefined) {
|
|
1699
|
+
market = this.market(symbol);
|
|
1700
|
+
request['market'] = market['id'];
|
|
1701
|
+
}
|
|
1702
|
+
if (since !== undefined) {
|
|
1703
|
+
request['start_time'] = since;
|
|
1704
|
+
}
|
|
1705
|
+
if (limit !== undefined) {
|
|
1706
|
+
request['limit'] = limit;
|
|
1707
|
+
}
|
|
1708
|
+
[request, params] = this.handleUntilOption('end_time', request, params);
|
|
1709
|
+
const response = await this.privateGetOrdersClosed(this.extend(request, params));
|
|
1710
|
+
//
|
|
1711
|
+
// [
|
|
1712
|
+
// {
|
|
1713
|
+
// "uuid": "637fd66-d019-4d77-bee6-8e0cff28edd9",
|
|
1714
|
+
// "side": "ask",
|
|
1715
|
+
// "ord_type": "limit",
|
|
1716
|
+
// "price": "1.5",
|
|
1717
|
+
// "state": "cancel",
|
|
1718
|
+
// "market": "SGD-XRP",
|
|
1719
|
+
// "created_at": "2024-06-05T09:37:10Z",
|
|
1720
|
+
// "volume": "10",
|
|
1721
|
+
// "remaining_volume": "10",
|
|
1722
|
+
// "reserved_fee": "0",
|
|
1723
|
+
// "remaining_fee": "0",
|
|
1724
|
+
// "paid_fee": "0",
|
|
1725
|
+
// "locked": "10",
|
|
1726
|
+
// "executed_volume": "0",
|
|
1727
|
+
// "executed_funds": "0",
|
|
1728
|
+
// "trades_count": 0,
|
|
1729
|
+
// "time_in_force": "ioc"
|
|
1730
|
+
// }
|
|
1731
|
+
// ]
|
|
1732
|
+
//
|
|
1733
|
+
return this.parseOrders(response, market, since, limit);
|
|
1630
1734
|
}
|
|
1631
1735
|
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
1632
1736
|
/**
|
|
@@ -1898,14 +2002,9 @@ export default class upbit extends Exchange {
|
|
|
1898
2002
|
if ((method !== 'GET') && (method !== 'DELETE')) {
|
|
1899
2003
|
body = this.json(params);
|
|
1900
2004
|
headers['Content-Type'] = 'application/json';
|
|
1901
|
-
if (hasQuery) {
|
|
1902
|
-
auth = this.urlencode(query);
|
|
1903
|
-
}
|
|
1904
2005
|
}
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
auth = this.urlencode(this.keysort(query));
|
|
1908
|
-
}
|
|
2006
|
+
if (hasQuery) {
|
|
2007
|
+
auth = this.urlencode(query);
|
|
1909
2008
|
}
|
|
1910
2009
|
if (auth !== undefined) {
|
|
1911
2010
|
const hash = this.hash(this.encode(auth), sha512);
|
package/js/src/xt.js
CHANGED
|
@@ -24,7 +24,7 @@ export default class xt extends Exchange {
|
|
|
24
24
|
'rateLimit': 100,
|
|
25
25
|
'version': 'v4',
|
|
26
26
|
'certified': false,
|
|
27
|
-
'pro':
|
|
27
|
+
'pro': true,
|
|
28
28
|
'has': {
|
|
29
29
|
'CORS': false,
|
|
30
30
|
'spot': true,
|
|
@@ -219,6 +219,7 @@ export default class xt extends Exchange {
|
|
|
219
219
|
'withdraw': 1,
|
|
220
220
|
'balance/transfer': 1,
|
|
221
221
|
'balance/account/transfer': 1,
|
|
222
|
+
'ws-token': 1,
|
|
222
223
|
},
|
|
223
224
|
'delete': {
|
|
224
225
|
'batch-order': 1,
|
|
@@ -1460,9 +1461,13 @@ export default class xt extends Exchange {
|
|
|
1460
1461
|
const orderBook = this.safeValue(response, 'result', {});
|
|
1461
1462
|
const timestamp = this.safeInteger2(orderBook, 'timestamp', 't');
|
|
1462
1463
|
if (market['spot']) {
|
|
1463
|
-
|
|
1464
|
+
const ob = this.parseOrderBook(orderBook, symbol, timestamp);
|
|
1465
|
+
ob['nonce'] = this.safeInteger(orderBook, 'lastUpdateId');
|
|
1466
|
+
return ob;
|
|
1464
1467
|
}
|
|
1465
|
-
|
|
1468
|
+
const swapOb = this.parseOrderBook(orderBook, symbol, timestamp, 'b', 'a');
|
|
1469
|
+
swapOb['nonce'] = this.safeInteger2(orderBook, 'u', 'lastUpdateId');
|
|
1470
|
+
return swapOb;
|
|
1466
1471
|
}
|
|
1467
1472
|
async fetchTicker(symbol, params = {}) {
|
|
1468
1473
|
/**
|
|
@@ -1722,8 +1727,9 @@ export default class xt extends Exchange {
|
|
|
1722
1727
|
//
|
|
1723
1728
|
const marketId = this.safeString(ticker, 's');
|
|
1724
1729
|
let marketType = (market !== undefined) ? market['type'] : undefined;
|
|
1730
|
+
const hasSpotKeys = ('cv' in ticker) || ('aq' in ticker);
|
|
1725
1731
|
if (marketType === undefined) {
|
|
1726
|
-
marketType =
|
|
1732
|
+
marketType = hasSpotKeys ? 'spot' : 'contract';
|
|
1727
1733
|
}
|
|
1728
1734
|
market = this.safeMarket(marketId, market, '_', marketType);
|
|
1729
1735
|
const symbol = market['symbol'];
|
|
@@ -1950,6 +1956,29 @@ export default class xt extends Exchange {
|
|
|
1950
1956
|
// "b": true
|
|
1951
1957
|
// }
|
|
1952
1958
|
//
|
|
1959
|
+
// spot: watchMyTrades
|
|
1960
|
+
//
|
|
1961
|
+
// {
|
|
1962
|
+
// "s": "btc_usdt", // symbol
|
|
1963
|
+
// "t": 1656043204763, // time
|
|
1964
|
+
// "i": "6316559590087251233", // tradeId
|
|
1965
|
+
// "oi": "6216559590087220004", // orderId
|
|
1966
|
+
// "p": "30000", // trade price
|
|
1967
|
+
// "q": "3", // qty quantity
|
|
1968
|
+
// "v": "90000" // volume trade amount
|
|
1969
|
+
// }
|
|
1970
|
+
//
|
|
1971
|
+
// spot: watchTrades
|
|
1972
|
+
//
|
|
1973
|
+
// {
|
|
1974
|
+
// s: 'btc_usdt',
|
|
1975
|
+
// i: '228825383103928709',
|
|
1976
|
+
// t: 1684258222702,
|
|
1977
|
+
// p: '27003.65',
|
|
1978
|
+
// q: '0.000796',
|
|
1979
|
+
// b: true
|
|
1980
|
+
// }
|
|
1981
|
+
//
|
|
1953
1982
|
// swap and future: fetchTrades
|
|
1954
1983
|
//
|
|
1955
1984
|
// {
|
|
@@ -1994,10 +2023,39 @@ export default class xt extends Exchange {
|
|
|
1994
2023
|
// "takerMaker": "TAKER"
|
|
1995
2024
|
// }
|
|
1996
2025
|
//
|
|
2026
|
+
// contract watchMyTrades
|
|
2027
|
+
//
|
|
2028
|
+
// {
|
|
2029
|
+
// "symbol": 'btc_usdt',
|
|
2030
|
+
// "orderSide": 'SELL',
|
|
2031
|
+
// "positionSide": 'LONG',
|
|
2032
|
+
// "orderId": '231485367663419328',
|
|
2033
|
+
// "price": '27152.7',
|
|
2034
|
+
// "quantity": '33',
|
|
2035
|
+
// "marginUnfrozen": '2.85318000',
|
|
2036
|
+
// "timestamp": 1684892412565
|
|
2037
|
+
// }
|
|
2038
|
+
//
|
|
2039
|
+
// watchMyTrades (ws, swap)
|
|
2040
|
+
//
|
|
2041
|
+
// {
|
|
2042
|
+
// 'fee': '0.04080840',
|
|
2043
|
+
// 'isMaker': False,
|
|
2044
|
+
// 'marginUnfrozen': '0.75711984',
|
|
2045
|
+
// 'orderId': '376172779053188416',
|
|
2046
|
+
// 'orderSide': 'BUY',
|
|
2047
|
+
// 'positionSide': 'LONG',
|
|
2048
|
+
// 'price': '3400.70',
|
|
2049
|
+
// 'quantity': '2',
|
|
2050
|
+
// 'symbol': 'eth_usdt',
|
|
2051
|
+
// 'timestamp': 1719388579622
|
|
2052
|
+
// }
|
|
2053
|
+
//
|
|
1997
2054
|
const marketId = this.safeString2(trade, 's', 'symbol');
|
|
1998
2055
|
let marketType = (market !== undefined) ? market['type'] : undefined;
|
|
2056
|
+
const hasSpotKeys = ('b' in trade) || ('bizType' in trade) || ('oi' in trade);
|
|
1999
2057
|
if (marketType === undefined) {
|
|
2000
|
-
marketType =
|
|
2058
|
+
marketType = hasSpotKeys ? 'spot' : 'contract';
|
|
2001
2059
|
}
|
|
2002
2060
|
market = this.safeMarket(marketId, market, '_', marketType);
|
|
2003
2061
|
const bidOrAsk = this.safeString(trade, 'm');
|
|
@@ -2006,10 +2064,17 @@ export default class xt extends Exchange {
|
|
|
2006
2064
|
side = (bidOrAsk === 'BID') ? 'buy' : 'sell';
|
|
2007
2065
|
}
|
|
2008
2066
|
const buyerMaker = this.safeValue(trade, 'b');
|
|
2067
|
+
if (buyerMaker !== undefined) {
|
|
2068
|
+
side = 'buy';
|
|
2069
|
+
}
|
|
2009
2070
|
let takerOrMaker = this.safeStringLower(trade, 'takerMaker');
|
|
2010
2071
|
if (buyerMaker !== undefined) {
|
|
2011
2072
|
takerOrMaker = buyerMaker ? 'maker' : 'taker';
|
|
2012
2073
|
}
|
|
2074
|
+
const isMaker = this.safeBool(trade, 'isMaker');
|
|
2075
|
+
if (isMaker !== undefined) {
|
|
2076
|
+
takerOrMaker = isMaker ? 'maker' : 'taker';
|
|
2077
|
+
}
|
|
2013
2078
|
const timestamp = this.safeIntegerN(trade, ['t', 'time', 'timestamp']);
|
|
2014
2079
|
const quantity = this.safeString2(trade, 'q', 'quantity');
|
|
2015
2080
|
let amount = undefined;
|
|
@@ -2030,7 +2095,7 @@ export default class xt extends Exchange {
|
|
|
2030
2095
|
'timestamp': timestamp,
|
|
2031
2096
|
'datetime': this.iso8601(timestamp),
|
|
2032
2097
|
'symbol': market['symbol'],
|
|
2033
|
-
'order': this.
|
|
2098
|
+
'order': this.safeString2(trade, 'orderId', 'oi'),
|
|
2034
2099
|
'type': this.safeStringLower(trade, 'orderType'),
|
|
2035
2100
|
'side': side,
|
|
2036
2101
|
'takerOrMaker': takerOrMaker,
|
|
@@ -4711,7 +4776,7 @@ export default class xt extends Exchange {
|
|
|
4711
4776
|
body['media'] = id;
|
|
4712
4777
|
}
|
|
4713
4778
|
}
|
|
4714
|
-
const isUndefinedBody = ((method === 'GET') || (path === 'order/{orderId}'));
|
|
4779
|
+
const isUndefinedBody = ((method === 'GET') || (path === 'order/{orderId}') || (path === 'ws-token'));
|
|
4715
4780
|
body = isUndefinedBody ? undefined : this.json(body);
|
|
4716
4781
|
let payloadString = undefined;
|
|
4717
4782
|
if ((endpoint === 'spot') || (endpoint === 'user')) {
|
package/package.json
CHANGED