ccxt 4.3.42__py2.py3-none-any.whl → 4.3.44__py2.py3-none-any.whl
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.
Potentially problematic release.
This version of ccxt might be problematic. Click here for more details.
- ccxt/__init__.py +3 -1
- ccxt/abstract/coinex.py +2 -1
- ccxt/abstract/xt.py +152 -0
- ccxt/async_support/__init__.py +3 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +163 -42
- ccxt/async_support/btcmarkets.py +31 -2
- ccxt/async_support/coinex.py +103 -103
- ccxt/async_support/lykke.py +10 -2
- ccxt/async_support/ndax.py +5 -1
- ccxt/async_support/phemex.py +4 -4
- ccxt/async_support/poloniexfutures.py +2 -2
- ccxt/async_support/tradeogre.py +10 -4
- ccxt/async_support/wavesexchange.py +2 -2
- ccxt/async_support/wazirx.py +38 -15
- ccxt/async_support/xt.py +4454 -0
- ccxt/async_support/zonda.py +9 -1
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +163 -42
- ccxt/btcmarkets.py +31 -2
- ccxt/coinex.py +103 -103
- ccxt/lykke.py +10 -2
- ccxt/ndax.py +5 -1
- ccxt/phemex.py +4 -4
- ccxt/poloniexfutures.py +2 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitget.py +27 -20
- ccxt/pro/bitmex.py +6 -0
- ccxt/pro/bybit.py +1 -1
- ccxt/pro/mexc.py +1 -1
- ccxt/pro/woo.py +1 -1
- ccxt/test/test_async.py +21 -1
- ccxt/test/test_sync.py +21 -1
- ccxt/tradeogre.py +10 -4
- ccxt/wavesexchange.py +2 -2
- ccxt/wazirx.py +38 -15
- ccxt/xt.py +4453 -0
- ccxt/zonda.py +9 -1
- {ccxt-4.3.42.dist-info → ccxt-4.3.44.dist-info}/METADATA +10 -8
- {ccxt-4.3.42.dist-info → ccxt-4.3.44.dist-info}/RECORD +42 -39
- {ccxt-4.3.42.dist-info → ccxt-4.3.44.dist-info}/WHEEL +0 -0
- {ccxt-4.3.42.dist-info → ccxt-4.3.44.dist-info}/top_level.txt +0 -0
ccxt/phemex.py
CHANGED
@@ -21,7 +21,6 @@ from ccxt.base.errors import InvalidOrder
|
|
21
21
|
from ccxt.base.errors import OrderNotFound
|
22
22
|
from ccxt.base.errors import CancelPending
|
23
23
|
from ccxt.base.errors import DuplicateOrderId
|
24
|
-
from ccxt.base.errors import NotSupported
|
25
24
|
from ccxt.base.errors import DDoSProtection
|
26
25
|
from ccxt.base.errors import RateLimitExceeded
|
27
26
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
@@ -2772,6 +2771,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
2772
2771
|
|
2773
2772
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
2774
2773
|
"""
|
2774
|
+
:see: https://phemex-docs.github.io/#query-orders-by-ids
|
2775
2775
|
fetches information on an order made by the user
|
2776
2776
|
:param str symbol: unified symbol of the market the order was made in
|
2777
2777
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -2781,8 +2781,6 @@ class phemex(Exchange, ImplicitAPI):
|
|
2781
2781
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
|
2782
2782
|
self.load_markets()
|
2783
2783
|
market = self.market(symbol)
|
2784
|
-
if market['settle'] == 'USDT':
|
2785
|
-
raise NotSupported(self.id + 'fetchOrder() is not supported yet for USDT settled swap markets') # https://github.com/phemex/phemex-api-docs/blob/master/Public-Hedged-Perpetual-API.md#query-user-order-by-orderid-or-query-user-order-by-client-order-id
|
2786
2784
|
request: dict = {
|
2787
2785
|
'symbol': market['id'],
|
2788
2786
|
}
|
@@ -2793,7 +2791,9 @@ class phemex(Exchange, ImplicitAPI):
|
|
2793
2791
|
else:
|
2794
2792
|
request['orderID'] = id
|
2795
2793
|
response = None
|
2796
|
-
if market['
|
2794
|
+
if market['settle'] == 'USDT':
|
2795
|
+
response = self.privateGetApiDataGFuturesOrdersByOrderId(self.extend(request, params))
|
2796
|
+
elif market['spot']:
|
2797
2797
|
response = self.privateGetSpotOrdersActive(self.extend(request, params))
|
2798
2798
|
else:
|
2799
2799
|
response = self.privateGetExchangeOrder(self.extend(request, params))
|
ccxt/poloniexfutures.py
CHANGED
@@ -1180,7 +1180,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1180
1180
|
cancelledOrderIdsLength = len(cancelledOrderIds)
|
1181
1181
|
for i in range(0, cancelledOrderIdsLength):
|
1182
1182
|
cancelledOrderId = self.safe_string(cancelledOrderIds, i)
|
1183
|
-
result.append({
|
1183
|
+
result.append(self.safe_order({
|
1184
1184
|
'id': cancelledOrderId,
|
1185
1185
|
'clientOrderId': None,
|
1186
1186
|
'timestamp': None,
|
@@ -1202,7 +1202,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1202
1202
|
'postOnly': None,
|
1203
1203
|
'stopPrice': None,
|
1204
1204
|
'info': response,
|
1205
|
-
})
|
1205
|
+
}))
|
1206
1206
|
return result
|
1207
1207
|
|
1208
1208
|
def fetch_orders_by_status(self, status, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/bitget.py
CHANGED
@@ -1153,23 +1153,30 @@ class bitget(ccxt.async_support.bitget):
|
|
1153
1153
|
# isolated and cross margin
|
1154
1154
|
#
|
1155
1155
|
# {
|
1156
|
-
#
|
1157
|
-
#
|
1158
|
-
#
|
1159
|
-
#
|
1160
|
-
#
|
1161
|
-
#
|
1162
|
-
#
|
1163
|
-
#
|
1164
|
-
#
|
1165
|
-
#
|
1166
|
-
#
|
1167
|
-
#
|
1168
|
-
#
|
1169
|
-
#
|
1170
|
-
#
|
1171
|
-
#
|
1172
|
-
#
|
1156
|
+
# enterPointSource: "web",
|
1157
|
+
# feeDetail: [
|
1158
|
+
# {
|
1159
|
+
# feeCoin: "AAVE",
|
1160
|
+
# deduction: "no",
|
1161
|
+
# totalDeductionFee: "0",
|
1162
|
+
# totalFee: "-0.00010740",
|
1163
|
+
# },
|
1164
|
+
# ],
|
1165
|
+
# force: "gtc",
|
1166
|
+
# orderType: "limit",
|
1167
|
+
# price: "93.170000000",
|
1168
|
+
# fillPrice: "93.170000000",
|
1169
|
+
# baseSize: "0.110600000", # total amount of order
|
1170
|
+
# quoteSize: "10.304602000", # total cost of order(independently if order is filled or pending)
|
1171
|
+
# baseVolume: "0.107400000", # filled amount of order(during order's lifecycle, and not for self specific incoming update)
|
1172
|
+
# fillTotalAmount: "10.006458000", # filled cost of order(during order's lifecycle, and not for self specific incoming update)
|
1173
|
+
# side: "buy",
|
1174
|
+
# status: "partially_filled",
|
1175
|
+
# cTime: "1717875017306",
|
1176
|
+
# clientOid: "b57afe789a06454e9c560a2aab7f7201",
|
1177
|
+
# loanType: "auto-loan",
|
1178
|
+
# orderId: "1183419084588060673",
|
1179
|
+
# }
|
1173
1180
|
#
|
1174
1181
|
isSpot = not ('posMode' in order)
|
1175
1182
|
isMargin = ('loanType' in order)
|
@@ -1210,9 +1217,9 @@ class bitget(ccxt.async_support.bitget):
|
|
1210
1217
|
totalFilled = self.safe_string(order, 'accBaseVolume')
|
1211
1218
|
if isSpot:
|
1212
1219
|
if isMargin:
|
1213
|
-
|
1214
|
-
|
1215
|
-
cost = self.safe_string(order, '
|
1220
|
+
totalAmount = self.safe_string(order, 'baseSize')
|
1221
|
+
totalFilled = self.safe_string(order, 'baseVolume')
|
1222
|
+
cost = self.safe_string(order, 'fillTotalAmount')
|
1216
1223
|
else:
|
1217
1224
|
partialFillAmount = self.safe_string(order, 'baseVolume')
|
1218
1225
|
if partialFillAmount is not None:
|
ccxt/pro/bitmex.py
CHANGED
@@ -1469,11 +1469,15 @@ class bitmex(ccxt.async_support.bitmex):
|
|
1469
1469
|
#
|
1470
1470
|
action = self.safe_string(message, 'action')
|
1471
1471
|
table = self.safe_string(message, 'table')
|
1472
|
+
if table is None:
|
1473
|
+
return # protecting from weird updates
|
1472
1474
|
data = self.safe_value(message, 'data', [])
|
1473
1475
|
# if it's an initial snapshot
|
1474
1476
|
if action == 'partial':
|
1475
1477
|
filter = self.safe_dict(message, 'filter', {})
|
1476
1478
|
marketId = self.safe_value(filter, 'symbol')
|
1479
|
+
if marketId is None:
|
1480
|
+
return # protecting from weird update
|
1477
1481
|
market = self.safe_market(marketId)
|
1478
1482
|
symbol = market['symbol']
|
1479
1483
|
if table == 'orderBookL2':
|
@@ -1501,6 +1505,8 @@ class bitmex(ccxt.async_support.bitmex):
|
|
1501
1505
|
numUpdatesByMarketId: dict = {}
|
1502
1506
|
for i in range(0, len(data)):
|
1503
1507
|
marketId = self.safe_value(data[i], 'symbol')
|
1508
|
+
if marketId is None:
|
1509
|
+
return # protecting from weird update
|
1504
1510
|
if not (marketId in numUpdatesByMarketId):
|
1505
1511
|
numUpdatesByMarketId[marketId] = 0
|
1506
1512
|
numUpdatesByMarketId[marketId] = self.sum(numUpdatesByMarketId, 1)
|
ccxt/pro/bybit.py
CHANGED
ccxt/pro/mexc.py
CHANGED
ccxt/pro/woo.py
CHANGED
ccxt/test/test_async.py
CHANGED
@@ -1274,7 +1274,7 @@ class testMainClass(baseMainTestClass):
|
|
1274
1274
|
# -----------------------------------------------------------------------------
|
1275
1275
|
# --- Init of brokerId tests functions-----------------------------------------
|
1276
1276
|
# -----------------------------------------------------------------------------
|
1277
|
-
promises = [self.test_binance(), self.test_okx(), self.test_cryptocom(), self.test_bybit(), self.test_kucoin(), self.test_kucoinfutures(), self.test_bitget(), self.test_mexc(), self.test_htx(), self.test_woo(), self.test_bitmart(), self.test_coinex(), self.test_bingx(), self.test_phemex(), self.test_blofin(), self.test_hyperliquid(), self.test_coinbaseinternational(), self.test_coinbase_advanced(), self.test_woofi_pro()]
|
1277
|
+
promises = [self.test_binance(), self.test_okx(), self.test_cryptocom(), self.test_bybit(), self.test_kucoin(), self.test_kucoinfutures(), self.test_bitget(), self.test_mexc(), self.test_htx(), self.test_woo(), self.test_bitmart(), self.test_coinex(), self.test_bingx(), self.test_phemex(), self.test_blofin(), self.test_hyperliquid(), self.test_coinbaseinternational(), self.test_coinbase_advanced(), self.test_woofi_pro(), self.test_xt()]
|
1278
1278
|
await asyncio.gather(*promises)
|
1279
1279
|
success_message = '[' + self.lang + '][TEST_SUCCESS] brokerId tests passed.'
|
1280
1280
|
dump('[INFO]' + success_message)
|
@@ -1602,6 +1602,26 @@ class testMainClass(baseMainTestClass):
|
|
1602
1602
|
await close(exchange)
|
1603
1603
|
return True
|
1604
1604
|
|
1605
|
+
async def test_xt(self):
|
1606
|
+
exchange = self.init_offline_exchange('xt')
|
1607
|
+
id = 'CCXT'
|
1608
|
+
spot_order_request = None
|
1609
|
+
try:
|
1610
|
+
await exchange.create_order('BTC/USDT', 'limit', 'buy', 1, 20000)
|
1611
|
+
except Exception as e:
|
1612
|
+
spot_order_request = json_parse(exchange.last_request_body)
|
1613
|
+
spot_media = spot_order_request['media']
|
1614
|
+
assert spot_media == id, 'xt - id: ' + id + ' different from swap tag: ' + spot_media
|
1615
|
+
swap_order_request = None
|
1616
|
+
try:
|
1617
|
+
await exchange.create_order('BTC/USDT:USDT', 'limit', 'buy', 1, 20000)
|
1618
|
+
except Exception as e:
|
1619
|
+
swap_order_request = json_parse(exchange.last_request_body)
|
1620
|
+
swap_media = swap_order_request['clientMedia']
|
1621
|
+
assert swap_media == id, 'xt - id: ' + id + ' different from swap tag: ' + swap_media
|
1622
|
+
await close(exchange)
|
1623
|
+
return True
|
1624
|
+
|
1605
1625
|
# ***** AUTO-TRANSPILER-END *****
|
1606
1626
|
# *******************************
|
1607
1627
|
|
ccxt/test/test_sync.py
CHANGED
@@ -1273,7 +1273,7 @@ class testMainClass(baseMainTestClass):
|
|
1273
1273
|
# -----------------------------------------------------------------------------
|
1274
1274
|
# --- Init of brokerId tests functions-----------------------------------------
|
1275
1275
|
# -----------------------------------------------------------------------------
|
1276
|
-
promises = [self.test_binance(), self.test_okx(), self.test_cryptocom(), self.test_bybit(), self.test_kucoin(), self.test_kucoinfutures(), self.test_bitget(), self.test_mexc(), self.test_htx(), self.test_woo(), self.test_bitmart(), self.test_coinex(), self.test_bingx(), self.test_phemex(), self.test_blofin(), self.test_hyperliquid(), self.test_coinbaseinternational(), self.test_coinbase_advanced(), self.test_woofi_pro()]
|
1276
|
+
promises = [self.test_binance(), self.test_okx(), self.test_cryptocom(), self.test_bybit(), self.test_kucoin(), self.test_kucoinfutures(), self.test_bitget(), self.test_mexc(), self.test_htx(), self.test_woo(), self.test_bitmart(), self.test_coinex(), self.test_bingx(), self.test_phemex(), self.test_blofin(), self.test_hyperliquid(), self.test_coinbaseinternational(), self.test_coinbase_advanced(), self.test_woofi_pro(), self.test_xt()]
|
1277
1277
|
(promises)
|
1278
1278
|
success_message = '[' + self.lang + '][TEST_SUCCESS] brokerId tests passed.'
|
1279
1279
|
dump('[INFO]' + success_message)
|
@@ -1601,6 +1601,26 @@ class testMainClass(baseMainTestClass):
|
|
1601
1601
|
close(exchange)
|
1602
1602
|
return True
|
1603
1603
|
|
1604
|
+
def test_xt(self):
|
1605
|
+
exchange = self.init_offline_exchange('xt')
|
1606
|
+
id = 'CCXT'
|
1607
|
+
spot_order_request = None
|
1608
|
+
try:
|
1609
|
+
exchange.create_order('BTC/USDT', 'limit', 'buy', 1, 20000)
|
1610
|
+
except Exception as e:
|
1611
|
+
spot_order_request = json_parse(exchange.last_request_body)
|
1612
|
+
spot_media = spot_order_request['media']
|
1613
|
+
assert spot_media == id, 'xt - id: ' + id + ' different from swap tag: ' + spot_media
|
1614
|
+
swap_order_request = None
|
1615
|
+
try:
|
1616
|
+
exchange.create_order('BTC/USDT:USDT', 'limit', 'buy', 1, 20000)
|
1617
|
+
except Exception as e:
|
1618
|
+
swap_order_request = json_parse(exchange.last_request_body)
|
1619
|
+
swap_media = swap_order_request['clientMedia']
|
1620
|
+
assert swap_media == id, 'xt - id: ' + id + ' different from swap tag: ' + swap_media
|
1621
|
+
close(exchange)
|
1622
|
+
return True
|
1623
|
+
|
1604
1624
|
# ***** AUTO-TRANSPILER-END *****
|
1605
1625
|
# *******************************
|
1606
1626
|
|
ccxt/tradeogre.py
CHANGED
@@ -9,6 +9,7 @@ from ccxt.base.types import IndexType, Int, Market, Num, Order, OrderSide, Order
|
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
12
|
+
from ccxt.base.errors import ArgumentsRequired
|
12
13
|
from ccxt.base.errors import BadRequest
|
13
14
|
from ccxt.base.errors import InsufficientFunds
|
14
15
|
from ccxt.base.decimal_to_precision import TICK_SIZE
|
@@ -441,7 +442,7 @@ class tradeogre(Exchange, ImplicitAPI):
|
|
441
442
|
"""
|
442
443
|
create a trade order
|
443
444
|
:param str symbol: unified symbol of the market to create an order in
|
444
|
-
:param str type:
|
445
|
+
:param str type: must be 'limit'
|
445
446
|
:param str side: 'buy' or 'sell'
|
446
447
|
:param float amount: how much of currency you want to trade in units of base currency
|
447
448
|
:param float price: the price at which the order is to be fullfilled, in units of the quote currency
|
@@ -450,13 +451,15 @@ class tradeogre(Exchange, ImplicitAPI):
|
|
450
451
|
"""
|
451
452
|
self.load_markets()
|
452
453
|
market = self.market(symbol)
|
454
|
+
if type == 'market':
|
455
|
+
raise BadRequest(self.id + ' createOrder does not support market orders')
|
456
|
+
if price is None:
|
457
|
+
raise ArgumentsRequired(self.id + ' createOrder requires a limit parameter')
|
453
458
|
request: dict = {
|
454
459
|
'market': market['id'],
|
455
460
|
'quantity': self.parse_to_numeric(self.amount_to_precision(symbol, amount)),
|
456
461
|
'price': self.parse_to_numeric(self.price_to_precision(symbol, price)),
|
457
462
|
}
|
458
|
-
if type == 'market':
|
459
|
-
raise BadRequest(self.id + ' createOrder does not support market orders')
|
460
463
|
response = None
|
461
464
|
if side == 'buy':
|
462
465
|
response = self.privatePostOrderBuy(self.extend(request, params))
|
@@ -487,7 +490,10 @@ class tradeogre(Exchange, ImplicitAPI):
|
|
487
490
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
488
491
|
"""
|
489
492
|
self.load_markets()
|
490
|
-
|
493
|
+
response = self.cancel_order('all', symbol, params)
|
494
|
+
return [
|
495
|
+
response,
|
496
|
+
]
|
491
497
|
|
492
498
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
493
499
|
"""
|
ccxt/wavesexchange.py
CHANGED
@@ -1421,7 +1421,7 @@ class wavesexchange(Exchange, ImplicitAPI):
|
|
1421
1421
|
firstMessage = self.safe_value(message, 0)
|
1422
1422
|
firstOrder = self.safe_value(firstMessage, 0)
|
1423
1423
|
returnedId = self.safe_string(firstOrder, 'orderId')
|
1424
|
-
return {
|
1424
|
+
return self.safe_order({
|
1425
1425
|
'info': response,
|
1426
1426
|
'id': returnedId,
|
1427
1427
|
'clientOrderId': None,
|
@@ -1440,7 +1440,7 @@ class wavesexchange(Exchange, ImplicitAPI):
|
|
1440
1440
|
'status': None,
|
1441
1441
|
'fee': None,
|
1442
1442
|
'trades': None,
|
1443
|
-
}
|
1443
|
+
})
|
1444
1444
|
|
1445
1445
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
1446
1446
|
"""
|
ccxt/wazirx.py
CHANGED
@@ -763,7 +763,26 @@ class wazirx(Exchange, ImplicitAPI):
|
|
763
763
|
request: dict = {
|
764
764
|
'symbol': market['id'],
|
765
765
|
}
|
766
|
-
|
766
|
+
response = self.privateDeleteOpenOrders(self.extend(request, params))
|
767
|
+
#
|
768
|
+
# [
|
769
|
+
# {
|
770
|
+
# id: "4565421197",
|
771
|
+
# symbol: "adausdt",
|
772
|
+
# type: "limit",
|
773
|
+
# side: "buy",
|
774
|
+
# status: "wait",
|
775
|
+
# price: "0.41",
|
776
|
+
# origQty: "11.00",
|
777
|
+
# executedQty: "0.00",
|
778
|
+
# avgPrice: "0.00",
|
779
|
+
# createdTime: "1718089507000",
|
780
|
+
# updatedTime: "1718089507000",
|
781
|
+
# clientOrderId: "93d2a838-e272-405d-91e7-3a7bc6d3a003"
|
782
|
+
# }
|
783
|
+
# ]
|
784
|
+
#
|
785
|
+
return self.parse_orders(response)
|
767
786
|
|
768
787
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
769
788
|
"""
|
@@ -831,18 +850,22 @@ class wazirx(Exchange, ImplicitAPI):
|
|
831
850
|
return self.parse_order(response, market)
|
832
851
|
|
833
852
|
def parse_order(self, order: dict, market: Market = None) -> Order:
|
834
|
-
#
|
835
|
-
#
|
836
|
-
#
|
837
|
-
#
|
838
|
-
#
|
839
|
-
#
|
840
|
-
#
|
841
|
-
#
|
842
|
-
#
|
843
|
-
#
|
844
|
-
#
|
845
|
-
#
|
853
|
+
#
|
854
|
+
# {
|
855
|
+
# "id": 1949417813,
|
856
|
+
# "symbol": "ltcusdt",
|
857
|
+
# "type": "limit",
|
858
|
+
# "side": "sell",
|
859
|
+
# "status": "done",
|
860
|
+
# "price": "146.2",
|
861
|
+
# "origQty": "0.05",
|
862
|
+
# "executedQty": "0.05",
|
863
|
+
# "avgPrice": "0.00",
|
864
|
+
# "createdTime": 1641252564000,
|
865
|
+
# "updatedTime": 1641252564000
|
866
|
+
# "clientOrderId": "93d2a838-e272-405d-91e7-3a7bc6d3a003"
|
867
|
+
# }
|
868
|
+
#
|
846
869
|
created = self.safe_integer(order, 'createdTime')
|
847
870
|
updated = self.safe_integer(order, 'updatedTime')
|
848
871
|
marketId = self.safe_string(order, 'symbol')
|
@@ -857,7 +880,7 @@ class wazirx(Exchange, ImplicitAPI):
|
|
857
880
|
return self.safe_order({
|
858
881
|
'info': order,
|
859
882
|
'id': id,
|
860
|
-
'clientOrderId':
|
883
|
+
'clientOrderId': self.safe_string(order, 'clientOrderId'),
|
861
884
|
'timestamp': created,
|
862
885
|
'datetime': self.iso8601(created),
|
863
886
|
'lastTradeTimestamp': updated,
|
@@ -873,7 +896,7 @@ class wazirx(Exchange, ImplicitAPI):
|
|
873
896
|
'remaining': None,
|
874
897
|
'cost': None,
|
875
898
|
'fee': None,
|
876
|
-
'average':
|
899
|
+
'average': self.safe_string(order, 'avgPrice'),
|
877
900
|
'trades': [],
|
878
901
|
}, market)
|
879
902
|
|