ccxt 4.4.45__py2.py3-none-any.whl → 4.4.47__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.
- ccxt/__init__.py +1 -1
- ccxt/abstract/binance.py +1 -0
- ccxt/abstract/binancecoinm.py +1 -0
- ccxt/abstract/binanceus.py +1 -0
- ccxt/abstract/binanceusdm.py +1 -0
- ccxt/abstract/bybit.py +1 -0
- ccxt/ace.py +58 -0
- ccxt/alpaca.py +80 -0
- ccxt/ascendex.py +110 -3
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ace.py +58 -0
- ccxt/async_support/alpaca.py +80 -0
- ccxt/async_support/ascendex.py +110 -3
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/bigone.py +113 -4
- ccxt/async_support/binance.py +4 -5
- ccxt/async_support/binanceus.py +10 -0
- ccxt/async_support/bingx.py +1 -2
- ccxt/async_support/bit2c.py +56 -0
- ccxt/async_support/bitbank.py +58 -0
- ccxt/async_support/bitbns.py +60 -0
- ccxt/async_support/bitfinex.py +2 -3
- ccxt/async_support/bitfinex1.py +8 -0
- ccxt/async_support/bitflyer.py +71 -0
- ccxt/async_support/bitget.py +103 -40
- ccxt/async_support/bithumb.py +54 -0
- ccxt/async_support/bitmex.py +1 -2
- ccxt/async_support/bitopro.py +74 -0
- ccxt/async_support/bitrue.py +97 -17
- ccxt/async_support/bitso.py +59 -0
- ccxt/async_support/bitteam.py +73 -0
- ccxt/async_support/bitvavo.py +70 -2
- ccxt/async_support/bl3p.py +42 -0
- ccxt/async_support/blockchaincom.py +66 -2
- ccxt/async_support/blofin.py +87 -1
- ccxt/async_support/btcalpha.py +73 -0
- ccxt/async_support/btcbox.py +58 -0
- ccxt/async_support/btcmarkets.py +73 -0
- ccxt/async_support/btcturk.py +61 -0
- ccxt/async_support/bybit.py +87 -39
- ccxt/async_support/cex.py +57 -0
- ccxt/async_support/coinbase.py +1 -1
- ccxt/async_support/coinbaseexchange.py +76 -0
- ccxt/async_support/coinex.py +1 -2
- ccxt/async_support/delta.py +10 -6
- ccxt/async_support/gate.py +3 -4
- ccxt/async_support/hashkey.py +1 -2
- ccxt/async_support/hollaex.py +1 -1
- ccxt/async_support/htx.py +2 -4
- ccxt/async_support/hyperliquid.py +6 -7
- ccxt/async_support/krakenfutures.py +2 -0
- ccxt/async_support/lbank.py +1 -2
- ccxt/async_support/mexc.py +1 -0
- ccxt/async_support/okx.py +13 -9
- ccxt/async_support/onetrading.py +18 -3
- ccxt/async_support/oxfun.py +1 -2
- ccxt/async_support/whitebit.py +2 -2
- ccxt/async_support/woo.py +1 -2
- ccxt/async_support/woofipro.py +1 -2
- ccxt/base/errors.py +6 -0
- ccxt/base/exchange.py +16 -14
- ccxt/bigone.py +113 -4
- ccxt/binance.py +4 -5
- ccxt/binanceus.py +10 -0
- ccxt/bingx.py +1 -2
- ccxt/bit2c.py +56 -0
- ccxt/bitbank.py +58 -0
- ccxt/bitbns.py +60 -0
- ccxt/bitfinex.py +2 -3
- ccxt/bitfinex1.py +8 -0
- ccxt/bitflyer.py +71 -0
- ccxt/bitget.py +103 -40
- ccxt/bithumb.py +54 -0
- ccxt/bitmex.py +1 -2
- ccxt/bitopro.py +74 -0
- ccxt/bitrue.py +97 -17
- ccxt/bitso.py +59 -0
- ccxt/bitteam.py +73 -0
- ccxt/bitvavo.py +70 -2
- ccxt/bl3p.py +42 -0
- ccxt/blockchaincom.py +66 -2
- ccxt/blofin.py +87 -1
- ccxt/btcalpha.py +73 -0
- ccxt/btcbox.py +58 -0
- ccxt/btcmarkets.py +73 -0
- ccxt/btcturk.py +61 -0
- ccxt/bybit.py +87 -39
- ccxt/cex.py +57 -0
- ccxt/coinbase.py +1 -1
- ccxt/coinbaseexchange.py +76 -0
- ccxt/coinex.py +1 -2
- ccxt/delta.py +10 -6
- ccxt/gate.py +3 -4
- ccxt/hashkey.py +1 -2
- ccxt/hollaex.py +1 -1
- ccxt/htx.py +2 -4
- ccxt/hyperliquid.py +6 -7
- ccxt/krakenfutures.py +2 -0
- ccxt/lbank.py +1 -2
- ccxt/mexc.py +1 -0
- ccxt/okx.py +13 -9
- ccxt/onetrading.py +18 -3
- ccxt/oxfun.py +1 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bingx.py +3 -5
- ccxt/pro/bitget.py +2 -4
- ccxt/pro/coinex.py +1 -1
- ccxt/pro/xt.py +1 -1
- ccxt/test/tests_async.py +2 -0
- ccxt/test/tests_sync.py +2 -0
- ccxt/whitebit.py +2 -2
- ccxt/woo.py +1 -2
- ccxt/woofipro.py +1 -2
- {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/METADATA +4 -5
- {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/RECORD +118 -118
- {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/WHEEL +0 -0
- {ccxt-4.4.45.dist-info → ccxt-4.4.47.dist-info}/top_level.txt +0 -0
ccxt/async_support/bitget.py
CHANGED
@@ -1445,16 +1445,102 @@ class bitget(Exchange, ImplicitAPI):
|
|
1445
1445
|
},
|
1446
1446
|
'sandboxMode': False,
|
1447
1447
|
'networks': {
|
1448
|
+
# 'TRX': 'TRX', # different code for mainnet
|
1448
1449
|
'TRC20': 'TRC20',
|
1450
|
+
# 'ETH': 'ETH', # different code for mainnet
|
1449
1451
|
'ERC20': 'ERC20',
|
1450
1452
|
'BEP20': 'BSC',
|
1451
|
-
'
|
1452
|
-
'
|
1453
|
-
'
|
1453
|
+
# 'BEP20': 'BEP20', # different for BEP20
|
1454
|
+
'BSC': 'BEP20',
|
1455
|
+
'ATOM': 'ATOM',
|
1456
|
+
'ACA': 'AcalaToken',
|
1454
1457
|
'APT': 'Aptos',
|
1458
|
+
'ARBONE': 'ArbitrumOne',
|
1459
|
+
'ARBNOVA': 'ArbitrumNova',
|
1460
|
+
'AVAXC': 'C-Chain',
|
1461
|
+
'AVAXX': 'X-Chain',
|
1462
|
+
'AR': 'Arweave',
|
1463
|
+
'BCH': 'BCH',
|
1464
|
+
'BCHA': 'BCHA',
|
1465
|
+
'BITCI': 'BITCI',
|
1466
|
+
'BTC': 'BTC',
|
1467
|
+
'CELO': 'CELO',
|
1468
|
+
'CSPR': 'CSPR',
|
1469
|
+
'ADA': 'Cardano',
|
1470
|
+
'CHZ': 'ChilizChain',
|
1471
|
+
'CRC20': 'CronosChain',
|
1472
|
+
'DOGE': 'DOGE',
|
1473
|
+
'DOT': 'DOT',
|
1474
|
+
'EOS': 'EOS',
|
1475
|
+
'ETHF': 'ETHFAIR',
|
1476
|
+
'ETHW': 'ETHW',
|
1477
|
+
'ETC': 'ETC',
|
1478
|
+
'EGLD': 'Elrond',
|
1479
|
+
'FIL': 'FIL',
|
1480
|
+
'FIO': 'FIO',
|
1481
|
+
'FTM': 'Fantom',
|
1482
|
+
'HRC20': 'HECO',
|
1483
|
+
'ONE': 'Harmony',
|
1484
|
+
'HNT': 'Helium',
|
1485
|
+
'ICP': 'ICP',
|
1486
|
+
'IOTX': 'IoTeX',
|
1487
|
+
'KARDIA': 'KAI',
|
1488
|
+
'KAVA': 'KAVA',
|
1489
|
+
'KDA': 'KDA',
|
1490
|
+
'KLAY': 'Klaytn',
|
1491
|
+
'KSM': 'Kusama',
|
1492
|
+
'LAT': 'LAT',
|
1493
|
+
'LTC': 'LTC',
|
1494
|
+
'MINA': 'MINA',
|
1495
|
+
'MOVR': 'MOVR',
|
1496
|
+
'METIS': 'MetisToken',
|
1497
|
+
'GLMR': 'Moonbeam',
|
1498
|
+
'NEAR': 'NEARProtocol',
|
1499
|
+
'NULS': 'NULS',
|
1500
|
+
'OASYS': 'OASYS',
|
1501
|
+
'OASIS': 'ROSE',
|
1502
|
+
'OMNI': 'OMNI',
|
1503
|
+
'ONT': 'Ontology',
|
1504
|
+
'OPTIMISM': 'Optimism',
|
1505
|
+
'OSMO': 'Osmosis',
|
1506
|
+
'POKT': 'PocketNetwork',
|
1455
1507
|
'MATIC': 'Polygon',
|
1508
|
+
'QTUM': 'QTUM',
|
1509
|
+
'REEF': 'REEF',
|
1510
|
+
'SOL': 'SOL',
|
1511
|
+
'SYS': 'SYS', # SyscoinNEVM is different
|
1512
|
+
'SXP': 'Solar',
|
1513
|
+
'XYM': 'Symbol',
|
1514
|
+
'TON': 'TON',
|
1515
|
+
'TT': 'TT',
|
1516
|
+
'TLOS': 'Telos',
|
1517
|
+
'THETA': 'ThetaToken',
|
1518
|
+
'VITE': 'VITE',
|
1519
|
+
'WAVES': 'WAVES',
|
1520
|
+
'WAX': 'WAXP',
|
1521
|
+
'WEMIX': 'WEMIXMainnet',
|
1522
|
+
'XDC': 'XDCNetworkXDC',
|
1523
|
+
'XRP': 'XRP',
|
1524
|
+
'FET': 'FETCH',
|
1525
|
+
'NEM': 'NEM',
|
1526
|
+
'REI': 'REINetwork',
|
1527
|
+
'ZIL': 'ZIL',
|
1528
|
+
'ABBC': 'ABBCCoin',
|
1529
|
+
'RSK': 'RSK',
|
1530
|
+
'AZERO': 'AZERO',
|
1531
|
+
'TRC10': 'TRC10',
|
1532
|
+
'JUNO': 'JUNO',
|
1533
|
+
# undetected: USDSP, more info at https://www.bitget.com/v1/spot/public/coinChainList
|
1534
|
+
# todo: uncomment below after unification
|
1535
|
+
# 'TERRACLASSIC': 'Terra', # tbd, that network id is also assigned to TERRANEW network
|
1536
|
+
# 'CUBENETWORK': 'CUBE',
|
1537
|
+
# 'CADUCEUS': 'CMP',
|
1538
|
+
# 'CONFLUX': 'CFX', # CFXeSpace is different
|
1539
|
+
# 'CERE': 'CERE',
|
1540
|
+
# 'CANTO': 'CANTO',
|
1541
|
+
'ZKSYNC': 'zkSyncEra',
|
1542
|
+
'STARKNET': 'Starknet',
|
1456
1543
|
'VIC': 'VICTION',
|
1457
|
-
'AVAXC': 'C-Chain',
|
1458
1544
|
},
|
1459
1545
|
'networksById': {
|
1460
1546
|
},
|
@@ -2304,13 +2390,13 @@ class bitget(Exchange, ImplicitAPI):
|
|
2304
2390
|
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
2305
2391
|
"""
|
2306
2392
|
self.check_address(address)
|
2307
|
-
|
2308
|
-
params = self.
|
2309
|
-
if
|
2310
|
-
raise ArgumentsRequired(self.id + ' withdraw() requires a
|
2393
|
+
networkCode = None
|
2394
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
2395
|
+
if networkCode is None:
|
2396
|
+
raise ArgumentsRequired(self.id + ' withdraw() requires a "network" parameter')
|
2311
2397
|
await self.load_markets()
|
2312
2398
|
currency = self.currency(code)
|
2313
|
-
networkId = self.network_code_to_id(
|
2399
|
+
networkId = self.network_code_to_id(networkCode)
|
2314
2400
|
request: dict = {
|
2315
2401
|
'coin': currency['id'],
|
2316
2402
|
'address': address,
|
@@ -2333,27 +2419,8 @@ class bitget(Exchange, ImplicitAPI):
|
|
2333
2419
|
# }
|
2334
2420
|
#
|
2335
2421
|
data = self.safe_value(response, 'data', {})
|
2336
|
-
result
|
2337
|
-
|
2338
|
-
'info': response,
|
2339
|
-
'txid': None,
|
2340
|
-
'timestamp': None,
|
2341
|
-
'datetime': None,
|
2342
|
-
'network': None,
|
2343
|
-
'addressFrom': None,
|
2344
|
-
'address': None,
|
2345
|
-
'addressTo': None,
|
2346
|
-
'amount': None,
|
2347
|
-
'type': 'withdrawal',
|
2348
|
-
'currency': None,
|
2349
|
-
'status': None,
|
2350
|
-
'updated': None,
|
2351
|
-
'tagFrom': None,
|
2352
|
-
'tag': None,
|
2353
|
-
'tagTo': None,
|
2354
|
-
'comment': None,
|
2355
|
-
'fee': None,
|
2356
|
-
}
|
2422
|
+
result = self.parse_transaction(data, currency)
|
2423
|
+
result['type'] = 'withdrawal'
|
2357
2424
|
withdrawOptions = self.safe_value(self.options, 'withdraw', {})
|
2358
2425
|
fillResponseFromRequest = self.safe_bool(withdrawOptions, 'fillResponseFromRequest', True)
|
2359
2426
|
if fillResponseFromRequest:
|
@@ -2364,7 +2431,7 @@ class bitget(Exchange, ImplicitAPI):
|
|
2364
2431
|
result['tag'] = tag
|
2365
2432
|
result['address'] = address
|
2366
2433
|
result['addressTo'] = address
|
2367
|
-
result['network'] =
|
2434
|
+
result['network'] = networkCode
|
2368
2435
|
return result
|
2369
2436
|
|
2370
2437
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
@@ -2526,17 +2593,14 @@ class bitget(Exchange, ImplicitAPI):
|
|
2526
2593
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
2527
2594
|
"""
|
2528
2595
|
await self.load_markets()
|
2529
|
-
networkCode =
|
2530
|
-
params = self.
|
2531
|
-
networkId = None
|
2532
|
-
if networkCode is not None:
|
2533
|
-
networkId = self.network_code_to_id(networkCode, code)
|
2596
|
+
networkCode = None
|
2597
|
+
networkCode, params = self.handle_network_code_and_params(params)
|
2534
2598
|
currency = self.currency(code)
|
2535
2599
|
request: dict = {
|
2536
2600
|
'coin': currency['id'],
|
2537
2601
|
}
|
2538
|
-
if
|
2539
|
-
request['chain'] =
|
2602
|
+
if networkCode is not None:
|
2603
|
+
request['chain'] = self.network_code_to_id(networkCode, code)
|
2540
2604
|
response = await self.privateSpotGetV2SpotWalletDepositAddress(self.extend(request, params))
|
2541
2605
|
#
|
2542
2606
|
# {
|
@@ -6616,8 +6680,7 @@ class bitget(Exchange, ImplicitAPI):
|
|
6616
6680
|
# }
|
6617
6681
|
symbols = self.market_symbols(symbols)
|
6618
6682
|
data = self.safe_list(response, 'data', [])
|
6619
|
-
|
6620
|
-
return self.filter_by_array(result, 'symbol', symbols)
|
6683
|
+
return self.parse_funding_rates(data, symbols)
|
6621
6684
|
|
6622
6685
|
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
6623
6686
|
#
|
ccxt/async_support/bithumb.py
CHANGED
@@ -142,6 +142,60 @@ class bithumb(Exchange, ImplicitAPI):
|
|
142
142
|
},
|
143
143
|
},
|
144
144
|
'precisionMode': SIGNIFICANT_DIGITS,
|
145
|
+
# todo: update to v2 apis
|
146
|
+
'features': {
|
147
|
+
'spot': {
|
148
|
+
'sandbox': False,
|
149
|
+
'createOrder': {
|
150
|
+
'marginMode': False,
|
151
|
+
'triggerPrice': False,
|
152
|
+
'triggerPriceType': None,
|
153
|
+
'triggerDirection': False,
|
154
|
+
'stopLossPrice': False,
|
155
|
+
'takeProfitPrice': False,
|
156
|
+
'attachedStopLossTakeProfit': None,
|
157
|
+
'timeInForce': {
|
158
|
+
'IOC': False,
|
159
|
+
'FOK': False,
|
160
|
+
'PO': False,
|
161
|
+
'GTD': False,
|
162
|
+
},
|
163
|
+
'hedged': False,
|
164
|
+
'trailing': False,
|
165
|
+
'leverage': False,
|
166
|
+
'marketBuyRequiresPrice': False,
|
167
|
+
'marketBuyByCost': False,
|
168
|
+
'selfTradePrevention': False,
|
169
|
+
'iceberg': False,
|
170
|
+
},
|
171
|
+
'createOrders': None,
|
172
|
+
'fetchMyTrades': None,
|
173
|
+
'fetchOrder': {
|
174
|
+
'marginMode': False,
|
175
|
+
'trigger': False,
|
176
|
+
'trailing': False,
|
177
|
+
},
|
178
|
+
'fetchOpenOrders': {
|
179
|
+
'marginMode': False,
|
180
|
+
'limit': 1000,
|
181
|
+
'trigger': False,
|
182
|
+
'trailing': False,
|
183
|
+
},
|
184
|
+
'fetchOrders': None,
|
185
|
+
'fetchClosedOrders': None,
|
186
|
+
'fetchOHLCV': {
|
187
|
+
'limit': 1000,
|
188
|
+
},
|
189
|
+
},
|
190
|
+
'swap': {
|
191
|
+
'linear': None,
|
192
|
+
'inverse': None,
|
193
|
+
},
|
194
|
+
'future': {
|
195
|
+
'linear': None,
|
196
|
+
'inverse': None,
|
197
|
+
},
|
198
|
+
},
|
145
199
|
'exceptions': {
|
146
200
|
'Bad Request(SSL)': BadRequest,
|
147
201
|
'Bad Request(Bad Method)': BadRequest,
|
ccxt/async_support/bitmex.py
CHANGED
@@ -2502,8 +2502,7 @@ class bitmex(Exchange, ImplicitAPI):
|
|
2502
2502
|
if swap:
|
2503
2503
|
filteredResponse.append(item)
|
2504
2504
|
symbols = self.market_symbols(symbols)
|
2505
|
-
|
2506
|
-
return self.filter_by_array(result, 'symbol', symbols)
|
2505
|
+
return self.parse_funding_rates(filteredResponse, symbols)
|
2507
2506
|
|
2508
2507
|
def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
|
2509
2508
|
# see response sample under "fetchMarkets" because same endpoint is being used here
|
ccxt/async_support/bitopro.py
CHANGED
@@ -208,6 +208,80 @@ class bitopro(Exchange, ImplicitAPI):
|
|
208
208
|
'BSC': 'BSC',
|
209
209
|
},
|
210
210
|
},
|
211
|
+
'features': {
|
212
|
+
'spot': {
|
213
|
+
'sandbox': False,
|
214
|
+
'createOrder': {
|
215
|
+
'marginMode': False,
|
216
|
+
'triggerPrice': True,
|
217
|
+
'triggerPriceType': None,
|
218
|
+
'triggerDirection': True, # todo implement
|
219
|
+
'stopLossPrice': False,
|
220
|
+
'takeProfitPrice': False,
|
221
|
+
'attachedStopLossTakeProfit': None,
|
222
|
+
'timeInForce': {
|
223
|
+
'IOC': False,
|
224
|
+
'FOK': False,
|
225
|
+
'PO': True,
|
226
|
+
'GTD': False,
|
227
|
+
},
|
228
|
+
'hedged': False,
|
229
|
+
'trailing': False,
|
230
|
+
'leverage': False,
|
231
|
+
'marketBuyRequiresPrice': False,
|
232
|
+
'marketBuyByCost': False,
|
233
|
+
'selfTradePrevention': False,
|
234
|
+
'iceberg': False,
|
235
|
+
},
|
236
|
+
'createOrders': None,
|
237
|
+
'fetchMyTrades': {
|
238
|
+
'marginMode': False,
|
239
|
+
'limit': 1000,
|
240
|
+
'daysBack': 100000,
|
241
|
+
'untilDays': 100000,
|
242
|
+
},
|
243
|
+
'fetchOrder': {
|
244
|
+
'marginMode': False,
|
245
|
+
'trigger': False,
|
246
|
+
'trailing': False,
|
247
|
+
},
|
248
|
+
# todo: implement through fetchOrders
|
249
|
+
'fetchOpenOrders': {
|
250
|
+
'marginMode': False,
|
251
|
+
'limit': None,
|
252
|
+
'trigger': False,
|
253
|
+
'trailing': False,
|
254
|
+
},
|
255
|
+
'fetchOrders': {
|
256
|
+
'marginMode': False,
|
257
|
+
'limit': 1000,
|
258
|
+
'daysBack': 100000,
|
259
|
+
'untilDays': 100000,
|
260
|
+
'trigger': False,
|
261
|
+
'trailing': False,
|
262
|
+
},
|
263
|
+
'fetchClosedOrders': {
|
264
|
+
'marginMode': False,
|
265
|
+
'limit': 1000,
|
266
|
+
'daysBack': 100000,
|
267
|
+
'daysBackCanceled': 1,
|
268
|
+
'untilDays': 10000,
|
269
|
+
'trigger': False,
|
270
|
+
'trailing': False,
|
271
|
+
},
|
272
|
+
'fetchOHLCV': {
|
273
|
+
'limit': 1000,
|
274
|
+
},
|
275
|
+
},
|
276
|
+
'swap': {
|
277
|
+
'linear': None,
|
278
|
+
'inverse': None,
|
279
|
+
},
|
280
|
+
'future': {
|
281
|
+
'linear': None,
|
282
|
+
'inverse': None,
|
283
|
+
},
|
284
|
+
},
|
211
285
|
'precisionMode': TICK_SIZE,
|
212
286
|
'exceptions': {
|
213
287
|
'exact': {
|
ccxt/async_support/bitrue.py
CHANGED
@@ -460,7 +460,92 @@ class bitrue(Exchange, ImplicitAPI):
|
|
460
460
|
'MIM': 'MIM Swarm',
|
461
461
|
},
|
462
462
|
'precisionMode': TICK_SIZE,
|
463
|
-
|
463
|
+
'features': {
|
464
|
+
'default': {
|
465
|
+
'sandbox': False,
|
466
|
+
'createOrder': {
|
467
|
+
'marginMode': False,
|
468
|
+
'triggerPrice': True,
|
469
|
+
'triggerPriceType': None,
|
470
|
+
'triggerDirection': None,
|
471
|
+
'stopLossPrice': False, # todo
|
472
|
+
'takeProfitPrice': False, # todo
|
473
|
+
'attachedStopLossTakeProfit': None,
|
474
|
+
'timeInForce': {
|
475
|
+
'IOC': True,
|
476
|
+
'FOK': True,
|
477
|
+
'PO': True,
|
478
|
+
'GTD': False,
|
479
|
+
},
|
480
|
+
'hedged': False,
|
481
|
+
'trailing': False,
|
482
|
+
'leverage': False,
|
483
|
+
'marketBuyRequiresPrice': True, # todo revise
|
484
|
+
'marketBuyByCost': True,
|
485
|
+
'selfTradePrevention': False,
|
486
|
+
'iceberg': True, # todo implement
|
487
|
+
},
|
488
|
+
'createOrders': None,
|
489
|
+
'fetchMyTrades': {
|
490
|
+
'marginMode': False,
|
491
|
+
'limit': 1000,
|
492
|
+
'daysBack': 100000,
|
493
|
+
'untilDays': 100000,
|
494
|
+
},
|
495
|
+
'fetchOrder': {
|
496
|
+
'marginMode': False,
|
497
|
+
'trigger': False,
|
498
|
+
'trailing': False,
|
499
|
+
},
|
500
|
+
'fetchOpenOrders': {
|
501
|
+
'marginMode': False,
|
502
|
+
'limit': None,
|
503
|
+
'trigger': False,
|
504
|
+
'trailing': False,
|
505
|
+
},
|
506
|
+
'fetchOrders': None,
|
507
|
+
'fetchClosedOrders': {
|
508
|
+
'marginMode': False,
|
509
|
+
'limit': 1000,
|
510
|
+
'daysBack': 90,
|
511
|
+
'daysBackCanceled': 1,
|
512
|
+
'untilDays': 90,
|
513
|
+
'trigger': False,
|
514
|
+
'trailing': False,
|
515
|
+
},
|
516
|
+
'fetchOHLCV': {
|
517
|
+
'limit': 1440,
|
518
|
+
},
|
519
|
+
},
|
520
|
+
'spot': {
|
521
|
+
'extends': 'default',
|
522
|
+
},
|
523
|
+
'forDerivatives': {
|
524
|
+
'extends': 'default',
|
525
|
+
'createOrder': {
|
526
|
+
'marginMode': True,
|
527
|
+
'leverage': True,
|
528
|
+
'marketBuyRequiresPrice': False,
|
529
|
+
'marketBuyByCost': False,
|
530
|
+
},
|
531
|
+
'fetchOHLCV': {
|
532
|
+
'limit': 300,
|
533
|
+
},
|
534
|
+
'fetchClosedOrders': None,
|
535
|
+
},
|
536
|
+
'swap': {
|
537
|
+
'linear': {
|
538
|
+
'extends': 'forDerivatives',
|
539
|
+
},
|
540
|
+
'inverse': {
|
541
|
+
'extends': 'forDerivatives',
|
542
|
+
},
|
543
|
+
},
|
544
|
+
'future': {
|
545
|
+
'linear': None,
|
546
|
+
'inverse': None,
|
547
|
+
},
|
548
|
+
},
|
464
549
|
'exceptions': {
|
465
550
|
'exact': {
|
466
551
|
'System is under maintenance.': OnMaintenance, # {"code":1,"msg":"System is under maintenance."}
|
@@ -1289,9 +1374,8 @@ class bitrue(Exchange, ImplicitAPI):
|
|
1289
1374
|
"""
|
1290
1375
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
1291
1376
|
|
1292
|
-
https://
|
1293
|
-
https://www.bitrue.com/
|
1294
|
-
https://www.bitrue.com/api_docs_includes_file/delivery.html#kline-candlestick-data
|
1377
|
+
https://www.bitrue.com/api_docs_includes_file/spot/index.html#kline-data
|
1378
|
+
https://www.bitrue.com/api_docs_includes_file/futures/index.html#kline-candlestick-data
|
1295
1379
|
|
1296
1380
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
1297
1381
|
:param str timeframe: the length of time each candle represents
|
@@ -1826,9 +1910,8 @@ class bitrue(Exchange, ImplicitAPI):
|
|
1826
1910
|
"""
|
1827
1911
|
create a trade order
|
1828
1912
|
|
1829
|
-
https://
|
1830
|
-
https://www.bitrue.com/
|
1831
|
-
https://www.bitrue.com/api_docs_includes_file/delivery.html#new-order-trade-hmac-sha256
|
1913
|
+
https://www.bitrue.com/api_docs_includes_file/spot/index.html#new-order-trade
|
1914
|
+
https://www.bitrue.com/api_docs_includes_file/futures/index.html#new-order-trade-hmac-sha256
|
1832
1915
|
|
1833
1916
|
:param str symbol: unified symbol of the market to create an order in
|
1834
1917
|
:param str type: 'market' or 'limit'
|
@@ -1950,9 +2033,8 @@ class bitrue(Exchange, ImplicitAPI):
|
|
1950
2033
|
"""
|
1951
2034
|
fetches information on an order made by the user
|
1952
2035
|
|
1953
|
-
https://
|
1954
|
-
https://www.bitrue.com/
|
1955
|
-
https://www.bitrue.com/api_docs_includes_file/delivery.html#query-order-user_data-hmac-sha256
|
2036
|
+
https://www.bitrue.com/api_docs_includes_file/spot/index.html#query-order-user_data
|
2037
|
+
https://www.bitrue.com/api_docs_includes_file/futures/index.html#query-order-user_data-hmac-sha256
|
1956
2038
|
|
1957
2039
|
:param str id: the order id
|
1958
2040
|
:param str symbol: unified symbol of the market the order was made in
|
@@ -2038,7 +2120,7 @@ class bitrue(Exchange, ImplicitAPI):
|
|
2038
2120
|
"""
|
2039
2121
|
fetches information on multiple closed orders made by the user
|
2040
2122
|
|
2041
|
-
https://
|
2123
|
+
https://www.bitrue.com/api_docs_includes_file/spot/index.html#all-orders-user_data
|
2042
2124
|
|
2043
2125
|
:param str symbol: unified market symbol of the market orders were made in
|
2044
2126
|
:param int [since]: the earliest time in ms to fetch orders for
|
@@ -2092,9 +2174,8 @@ class bitrue(Exchange, ImplicitAPI):
|
|
2092
2174
|
"""
|
2093
2175
|
fetch all unfilled currently open orders
|
2094
2176
|
|
2095
|
-
https://
|
2096
|
-
https://www.bitrue.com/
|
2097
|
-
https://www.bitrue.com/api_docs_includes_file/delivery.html#current-all-open-orders-user_data-hmac-sha256
|
2177
|
+
https://www.bitrue.com/api_docs_includes_file/spot/index.html#current-open-orders-user_data
|
2178
|
+
https://www.bitrue.com/api_docs_includes_file/futures/index.html#cancel-all-open-orders-trade-hmac-sha256
|
2098
2179
|
|
2099
2180
|
:param str symbol: unified market symbol
|
2100
2181
|
:param int [since]: the earliest time in ms to fetch open orders for
|
@@ -2276,9 +2357,8 @@ class bitrue(Exchange, ImplicitAPI):
|
|
2276
2357
|
"""
|
2277
2358
|
fetch all trades made by the user
|
2278
2359
|
|
2279
|
-
https://
|
2280
|
-
https://www.bitrue.com/
|
2281
|
-
https://www.bitrue.com/api_docs_includes_file/delivery.html#account-trade-list-user_data-hmac-sha256
|
2360
|
+
https://www.bitrue.com/api_docs_includes_file/spot/index.html#account-trade-list-user_data
|
2361
|
+
https://www.bitrue.com/api_docs_includes_file/futures/index.html#account-trade-list-user_data-hmac-sha256
|
2282
2362
|
|
2283
2363
|
:param str symbol: unified market symbol
|
2284
2364
|
:param int [since]: the earliest time in ms to fetch trades for
|
ccxt/async_support/bitso.py
CHANGED
@@ -195,6 +195,65 @@ class bitso(Exchange, ImplicitAPI):
|
|
195
195
|
],
|
196
196
|
},
|
197
197
|
},
|
198
|
+
'features': {
|
199
|
+
'spot': {
|
200
|
+
'sandbox': False,
|
201
|
+
'createOrder': {
|
202
|
+
'marginMode': False,
|
203
|
+
'triggerPrice': True, # todo implementation
|
204
|
+
'triggerPriceType': None,
|
205
|
+
'triggerDirection': None,
|
206
|
+
'stopLossPrice': False, # todo
|
207
|
+
'takeProfitPrice': False, # todo
|
208
|
+
'attachedStopLossTakeProfit': None,
|
209
|
+
# todo: implementation for TIF
|
210
|
+
'timeInForce': {
|
211
|
+
'IOC': True,
|
212
|
+
'FOK': True,
|
213
|
+
'PO': True,
|
214
|
+
'GTD': False,
|
215
|
+
},
|
216
|
+
'hedged': False,
|
217
|
+
'trailing': False,
|
218
|
+
'leverage': False,
|
219
|
+
'marketBuyRequiresPrice': False,
|
220
|
+
'marketBuyByCost': False,
|
221
|
+
'selfTradePrevention': False,
|
222
|
+
'iceberg': False,
|
223
|
+
},
|
224
|
+
'createOrders': None,
|
225
|
+
'fetchMyTrades': {
|
226
|
+
'marginMode': False,
|
227
|
+
'limit': 100,
|
228
|
+
'daysBack': None,
|
229
|
+
'untilDays': None,
|
230
|
+
},
|
231
|
+
'fetchOrder': {
|
232
|
+
'marginMode': False,
|
233
|
+
'trigger': False,
|
234
|
+
'trailing': False,
|
235
|
+
},
|
236
|
+
'fetchOpenOrders': {
|
237
|
+
'marginMode': False,
|
238
|
+
'limit': 500,
|
239
|
+
'trigger': False,
|
240
|
+
'trailing': False,
|
241
|
+
},
|
242
|
+
'fetchOrders': None,
|
243
|
+
'fetchClosedOrders': None,
|
244
|
+
'fetchOHLCV': {
|
245
|
+
'limit': 300,
|
246
|
+
},
|
247
|
+
},
|
248
|
+
'swap': {
|
249
|
+
'linear': None,
|
250
|
+
'inverse': None,
|
251
|
+
},
|
252
|
+
'future': {
|
253
|
+
'linear': None,
|
254
|
+
'inverse': None,
|
255
|
+
},
|
256
|
+
},
|
198
257
|
'exceptions': {
|
199
258
|
'0201': AuthenticationError, # Invalid Nonce or Invalid Credentials
|
200
259
|
'104': InvalidNonce, # Cannot perform request - nonce must be higher than 1520307203724237
|
ccxt/async_support/bitteam.py
CHANGED
@@ -227,6 +227,79 @@ class bitteam(Exchange, ImplicitAPI):
|
|
227
227
|
'BUSD': True,
|
228
228
|
},
|
229
229
|
},
|
230
|
+
'features': {
|
231
|
+
'spot': {
|
232
|
+
'sandbox': False,
|
233
|
+
'createOrder': {
|
234
|
+
'marginMode': False,
|
235
|
+
'triggerPrice': False,
|
236
|
+
'triggerPriceType': None,
|
237
|
+
'triggerDirection': None,
|
238
|
+
'stopLossPrice': False,
|
239
|
+
'takeProfitPrice': False,
|
240
|
+
'attachedStopLossTakeProfit': None,
|
241
|
+
'timeInForce': {
|
242
|
+
'IOC': False,
|
243
|
+
'FOK': False,
|
244
|
+
'PO': False,
|
245
|
+
'GTD': False,
|
246
|
+
},
|
247
|
+
'hedged': False,
|
248
|
+
'trailing': False,
|
249
|
+
'leverage': False,
|
250
|
+
'marketBuyRequiresPrice': False,
|
251
|
+
'marketBuyByCost': False,
|
252
|
+
'selfTradePrevention': False,
|
253
|
+
'iceberg': False,
|
254
|
+
},
|
255
|
+
'createOrders': None,
|
256
|
+
'fetchMyTrades': {
|
257
|
+
'marginMode': False,
|
258
|
+
'limit': 100,
|
259
|
+
'daysBack': 100000,
|
260
|
+
'untilDays': 100000,
|
261
|
+
},
|
262
|
+
'fetchOrder': {
|
263
|
+
'marginMode': False,
|
264
|
+
'trigger': False,
|
265
|
+
'trailing': False,
|
266
|
+
},
|
267
|
+
'fetchOpenOrders': {
|
268
|
+
'marginMode': False,
|
269
|
+
'limit': 100,
|
270
|
+
'trigger': False,
|
271
|
+
'trailing': False,
|
272
|
+
},
|
273
|
+
'fetchOrders': {
|
274
|
+
'marginMode': True,
|
275
|
+
'limit': 100,
|
276
|
+
'daysBack': None,
|
277
|
+
'untilDays': None,
|
278
|
+
'trigger': False,
|
279
|
+
'trailing': False,
|
280
|
+
},
|
281
|
+
'fetchClosedOrders': {
|
282
|
+
'marginMode': False,
|
283
|
+
'limit': 100,
|
284
|
+
'daysBack': None,
|
285
|
+
'daysBackCanceled': None,
|
286
|
+
'untilDays': None,
|
287
|
+
'trigger': False,
|
288
|
+
'trailing': False,
|
289
|
+
},
|
290
|
+
'fetchOHLCV': {
|
291
|
+
'limit': 1000,
|
292
|
+
},
|
293
|
+
},
|
294
|
+
'swap': {
|
295
|
+
'linear': None,
|
296
|
+
'inverse': None,
|
297
|
+
},
|
298
|
+
'future': {
|
299
|
+
'linear': None,
|
300
|
+
'inverse': None,
|
301
|
+
},
|
302
|
+
},
|
230
303
|
'exceptions': {
|
231
304
|
'exact': {
|
232
305
|
'400002': BadSymbol, # {"ok":false,"code":400002,"message":"An order cannot be created on a deactivated pair"}
|