ccxt 4.4.46__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 +95 -2
- 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 +95 -2
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/bigone.py +113 -4
- ccxt/async_support/binance.py +3 -4
- 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 +1 -2
- 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 +7 -3
- 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 +1 -2
- ccxt/async_support/gate.py +3 -3
- 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 +4 -4
- ccxt/async_support/krakenfutures.py +2 -0
- ccxt/async_support/lbank.py +1 -2
- ccxt/async_support/okx.py +13 -9
- 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 +3 -4
- 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 +1 -2
- 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 +7 -3
- ccxt/cex.py +57 -0
- ccxt/coinbase.py +1 -1
- ccxt/coinbaseexchange.py +76 -0
- ccxt/coinex.py +1 -2
- ccxt/delta.py +1 -2
- ccxt/gate.py +3 -3
- ccxt/hashkey.py +1 -2
- ccxt/hollaex.py +1 -1
- ccxt/htx.py +2 -4
- ccxt/hyperliquid.py +4 -4
- ccxt/krakenfutures.py +2 -0
- ccxt/lbank.py +1 -2
- ccxt/okx.py +13 -9
- 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/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.46.dist-info → ccxt-4.4.47.dist-info}/METADATA +4 -5
- {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/RECORD +113 -113
- {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/WHEEL +0 -0
- {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/top_level.txt +0 -0
ccxt/bitvavo.py
CHANGED
@@ -212,6 +212,71 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
212
212
|
'apiKey': True,
|
213
213
|
'secret': True,
|
214
214
|
},
|
215
|
+
'features': {
|
216
|
+
'spot': {
|
217
|
+
'sandbox': False,
|
218
|
+
'createOrder': {
|
219
|
+
'marginMode': False,
|
220
|
+
'triggerPrice': True,
|
221
|
+
'triggerPriceType': None,
|
222
|
+
'triggerDirection': None,
|
223
|
+
'stopLossPrice': True,
|
224
|
+
'takeProfitPrice': True,
|
225
|
+
'attachedStopLossTakeProfit': None,
|
226
|
+
'timeInForce': {
|
227
|
+
'IOC': True,
|
228
|
+
'FOK': True,
|
229
|
+
'PO': True,
|
230
|
+
'GTD': False,
|
231
|
+
},
|
232
|
+
'hedged': False,
|
233
|
+
'trailing': False,
|
234
|
+
'leverage': False,
|
235
|
+
'marketBuyRequiresPrice': False,
|
236
|
+
'marketBuyByCost': True,
|
237
|
+
'selfTradePrevention': True, # todo implement
|
238
|
+
'iceberg': False,
|
239
|
+
},
|
240
|
+
'createOrders': None,
|
241
|
+
'fetchMyTrades': {
|
242
|
+
'marginMode': False,
|
243
|
+
'limit': 1000,
|
244
|
+
'daysBack': 100000,
|
245
|
+
'untilDays': 100000,
|
246
|
+
},
|
247
|
+
'fetchOrder': {
|
248
|
+
'marginMode': False,
|
249
|
+
'trigger': False,
|
250
|
+
'trailing': False,
|
251
|
+
},
|
252
|
+
'fetchOpenOrders': {
|
253
|
+
'marginMode': False,
|
254
|
+
'limit': None,
|
255
|
+
'trigger': False,
|
256
|
+
'trailing': False,
|
257
|
+
},
|
258
|
+
'fetchOrders': {
|
259
|
+
'marginMode': True,
|
260
|
+
'limit': 1000,
|
261
|
+
'daysBack': 100000,
|
262
|
+
'untilDays': 100000,
|
263
|
+
'trigger': False,
|
264
|
+
'trailing': False,
|
265
|
+
},
|
266
|
+
'fetchClosedOrders': None,
|
267
|
+
'fetchOHLCV': {
|
268
|
+
'limit': 1440,
|
269
|
+
},
|
270
|
+
},
|
271
|
+
'swap': {
|
272
|
+
'linear': None,
|
273
|
+
'inverse': None,
|
274
|
+
},
|
275
|
+
'future': {
|
276
|
+
'linear': None,
|
277
|
+
'inverse': None,
|
278
|
+
},
|
279
|
+
},
|
215
280
|
'exceptions': {
|
216
281
|
'exact': {
|
217
282
|
'101': ExchangeError, # Unknown error. Operation may or may not have succeeded.
|
@@ -1103,7 +1168,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1103
1168
|
"""
|
1104
1169
|
create a trade order
|
1105
1170
|
|
1106
|
-
https://docs.bitvavo.com/#tag/
|
1171
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/post
|
1107
1172
|
|
1108
1173
|
:param str symbol: unified symbol of the market to create an order in
|
1109
1174
|
:param str type: 'market' or 'limit'
|
@@ -1416,6 +1481,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1416
1481
|
|
1417
1482
|
def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
1418
1483
|
"""
|
1484
|
+
|
1485
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1ordersOpen/get
|
1486
|
+
|
1419
1487
|
fetch all unfilled currently open orders
|
1420
1488
|
:param str symbol: unified market symbol
|
1421
1489
|
:param int [since]: the earliest time in ms to fetch open orders for
|
@@ -1608,7 +1676,7 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
1608
1676
|
def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
|
1609
1677
|
"""
|
1610
1678
|
|
1611
|
-
https://docs.bitvavo.com/#tag/
|
1679
|
+
https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1trades/get
|
1612
1680
|
|
1613
1681
|
fetch all trades made by the user
|
1614
1682
|
:param str symbol: unified market symbol
|
ccxt/bl3p.py
CHANGED
@@ -121,6 +121,48 @@ class bl3p(Exchange, ImplicitAPI):
|
|
121
121
|
'markets': {
|
122
122
|
'BTC/EUR': self.safe_market_structure({'id': 'BTCEUR', 'symbol': 'BTC/EUR', 'base': 'BTC', 'quote': 'EUR', 'baseId': 'BTC', 'quoteId': 'EUR', 'maker': 0.0025, 'taker': 0.0025, 'type': 'spot', 'spot': True}),
|
123
123
|
},
|
124
|
+
'features': {
|
125
|
+
'spot': {
|
126
|
+
'sandbox': False,
|
127
|
+
'createOrder': {
|
128
|
+
'marginMode': False,
|
129
|
+
'triggerPrice': False,
|
130
|
+
'triggerPriceType': None,
|
131
|
+
'triggerDirection': False,
|
132
|
+
'stopLossPrice': False,
|
133
|
+
'takeProfitPrice': False,
|
134
|
+
'attachedStopLossTakeProfit': None,
|
135
|
+
'timeInForce': {
|
136
|
+
'IOC': False,
|
137
|
+
'FOK': False,
|
138
|
+
'PO': False,
|
139
|
+
'GTD': False,
|
140
|
+
},
|
141
|
+
'hedged': False,
|
142
|
+
'leverage': False,
|
143
|
+
'marketBuyRequiresPrice': False,
|
144
|
+
'marketBuyByCost': False,
|
145
|
+
'selfTradePrevention': False,
|
146
|
+
'trailing': False,
|
147
|
+
'iceberg': False,
|
148
|
+
},
|
149
|
+
'createOrders': None,
|
150
|
+
'fetchMyTrades': None,
|
151
|
+
'fetchOrder': None,
|
152
|
+
'fetchOpenOrders': None,
|
153
|
+
'fetchOrders': None,
|
154
|
+
'fetchClosedOrders': None,
|
155
|
+
'fetchOHLCV': None,
|
156
|
+
},
|
157
|
+
'swap': {
|
158
|
+
'linear': None,
|
159
|
+
'inverse': None,
|
160
|
+
},
|
161
|
+
'future': {
|
162
|
+
'linear': None,
|
163
|
+
'inverse': None,
|
164
|
+
},
|
165
|
+
},
|
124
166
|
'precisionMode': TICK_SIZE,
|
125
167
|
})
|
126
168
|
|
ccxt/blockchaincom.py
CHANGED
@@ -219,6 +219,70 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
219
219
|
# 'DIGITALGOLD': 'DGLD',
|
220
220
|
},
|
221
221
|
},
|
222
|
+
'features': {
|
223
|
+
'spot': {
|
224
|
+
'sandbox': False,
|
225
|
+
'createOrder': {
|
226
|
+
'marginMode': False,
|
227
|
+
'triggerPrice': True,
|
228
|
+
'triggerPriceType': None,
|
229
|
+
'triggerDirection': False,
|
230
|
+
'stopLossPrice': False, # todo
|
231
|
+
'takeProfitPrice': False, # todo
|
232
|
+
'attachedStopLossTakeProfit': None,
|
233
|
+
'timeInForce': {
|
234
|
+
'IOC': True,
|
235
|
+
'FOK': True,
|
236
|
+
'PO': False,
|
237
|
+
'GTD': True, # todo implementation
|
238
|
+
},
|
239
|
+
'hedged': False,
|
240
|
+
'leverage': False,
|
241
|
+
'marketBuyRequiresPrice': False,
|
242
|
+
'marketBuyByCost': False,
|
243
|
+
'selfTradePrevention': False,
|
244
|
+
'trailing': False,
|
245
|
+
'iceberg': False,
|
246
|
+
},
|
247
|
+
'createOrders': None,
|
248
|
+
'fetchMyTrades': {
|
249
|
+
'marginMode': False,
|
250
|
+
'limit': 1000,
|
251
|
+
'daysBack': 100000, # todo implementation
|
252
|
+
'untilDays': 100000, # todo implementation
|
253
|
+
},
|
254
|
+
'fetchOrder': {
|
255
|
+
'marginMode': False,
|
256
|
+
'trigger': False,
|
257
|
+
'trailing': False,
|
258
|
+
},
|
259
|
+
'fetchOpenOrders': {
|
260
|
+
'marginMode': False,
|
261
|
+
'limit': 1000,
|
262
|
+
'trigger': False,
|
263
|
+
'trailing': False,
|
264
|
+
},
|
265
|
+
'fetchOrders': None, # todo implement
|
266
|
+
'fetchClosedOrders': {
|
267
|
+
'marginMode': False,
|
268
|
+
'limit': 1000,
|
269
|
+
'daysBack': 100000,
|
270
|
+
'daysBackCanceled': 1,
|
271
|
+
'untilDays': 100000,
|
272
|
+
'trigger': False,
|
273
|
+
'trailing': False,
|
274
|
+
},
|
275
|
+
'fetchOHLCV': None, # todo webapi
|
276
|
+
},
|
277
|
+
'swap': {
|
278
|
+
'linear': None,
|
279
|
+
'inverse': None,
|
280
|
+
},
|
281
|
+
'future': {
|
282
|
+
'linear': None,
|
283
|
+
'inverse': None,
|
284
|
+
},
|
285
|
+
},
|
222
286
|
'precisionMode': TICK_SIZE,
|
223
287
|
'exceptions': {
|
224
288
|
'exact': {
|
@@ -567,8 +631,8 @@ class blockchaincom(Exchange, ImplicitAPI):
|
|
567
631
|
'orderQty': self.amount_to_precision(symbol, amount),
|
568
632
|
'clOrdId': clientOrderId,
|
569
633
|
}
|
570
|
-
triggerPrice = self.
|
571
|
-
params = self.omit(params, ['stopPx', 'stopPrice'])
|
634
|
+
triggerPrice = self.safe_value_n(params, ['triggerPrice', 'stopPx', 'stopPrice'])
|
635
|
+
params = self.omit(params, ['triggerPrice', 'stopPx', 'stopPrice'])
|
572
636
|
if uppercaseOrderType == 'STOP' or uppercaseOrderType == 'STOPLIMIT':
|
573
637
|
if triggerPrice is None:
|
574
638
|
raise ArgumentsRequired(self.id + ' createOrder() requires a stopPx or triggerPrice param for a ' + uppercaseOrderType + ' order')
|
ccxt/blofin.py
CHANGED
@@ -251,6 +251,93 @@ class blofin(Exchange, ImplicitAPI):
|
|
251
251
|
'secret': True,
|
252
252
|
'password': True,
|
253
253
|
},
|
254
|
+
'features': {
|
255
|
+
'default': {
|
256
|
+
'sandbox': False,
|
257
|
+
'createOrder': {
|
258
|
+
'timeInForce': {
|
259
|
+
'IOC': True,
|
260
|
+
'FOK': True,
|
261
|
+
'PO': True,
|
262
|
+
'GTD': False,
|
263
|
+
},
|
264
|
+
'leverage': False,
|
265
|
+
'marketBuyRequiresPrice': False,
|
266
|
+
'marketBuyByCost': False,
|
267
|
+
'selfTradePrevention': False,
|
268
|
+
'trailing': False,
|
269
|
+
'iceberg': False,
|
270
|
+
},
|
271
|
+
'createOrders': {
|
272
|
+
'max': 10,
|
273
|
+
},
|
274
|
+
'fetchMyTrades': {
|
275
|
+
'marginMode': False,
|
276
|
+
'limit': 100,
|
277
|
+
'daysBack': 100000,
|
278
|
+
'untilDays': 100000,
|
279
|
+
},
|
280
|
+
'fetchOrder': None,
|
281
|
+
'fetchOpenOrders': {
|
282
|
+
'marginMode': False,
|
283
|
+
'limit': 100,
|
284
|
+
'trigger': True,
|
285
|
+
'trailing': False,
|
286
|
+
},
|
287
|
+
'fetchOrders': None,
|
288
|
+
'fetchClosedOrders': {
|
289
|
+
'marginMode': False,
|
290
|
+
'limit': 1000,
|
291
|
+
'daysBack': 100000,
|
292
|
+
'daysBackCanceled': 1,
|
293
|
+
'untilDays': 100000,
|
294
|
+
'trigger': True,
|
295
|
+
'trailing': False,
|
296
|
+
},
|
297
|
+
'fetchOHLCV': {
|
298
|
+
'max': 1440,
|
299
|
+
},
|
300
|
+
},
|
301
|
+
'spot': {
|
302
|
+
'extends': 'default',
|
303
|
+
'createOrder': {
|
304
|
+
'marginMode': False,
|
305
|
+
'triggerPrice': False,
|
306
|
+
'triggerPriceType': None,
|
307
|
+
'triggerDirection': False,
|
308
|
+
'stopLossPrice': False,
|
309
|
+
'takeProfitPrice': False,
|
310
|
+
'attachedStopLossTakeProfit': None,
|
311
|
+
'hedged': False,
|
312
|
+
},
|
313
|
+
},
|
314
|
+
'forDerivatives': {
|
315
|
+
'extends': 'default',
|
316
|
+
'createOrder': {
|
317
|
+
'marginMode': True,
|
318
|
+
'triggerPrice': False, # todo
|
319
|
+
'triggerPriceType': None,
|
320
|
+
'triggerDirection': False,
|
321
|
+
'stopLossPrice': True,
|
322
|
+
'takeProfitPrice': True,
|
323
|
+
'attachedStopLossTakeProfit': {
|
324
|
+
'triggerPriceType': None,
|
325
|
+
'limit': True,
|
326
|
+
},
|
327
|
+
'hedged': True,
|
328
|
+
},
|
329
|
+
},
|
330
|
+
'swap': {
|
331
|
+
'linear': {
|
332
|
+
'extends': 'forDerivatives',
|
333
|
+
},
|
334
|
+
'inverse': None,
|
335
|
+
},
|
336
|
+
'future': {
|
337
|
+
'linear': None,
|
338
|
+
'inverse': None,
|
339
|
+
},
|
340
|
+
},
|
254
341
|
'exceptions': {
|
255
342
|
'exact': {
|
256
343
|
'400': BadRequest, # Body can not be empty
|
@@ -322,7 +409,6 @@ class blofin(Exchange, ImplicitAPI):
|
|
322
409
|
'earn': 'earn',
|
323
410
|
'spot': 'spot',
|
324
411
|
},
|
325
|
-
'sandboxMode': False,
|
326
412
|
'defaultNetwork': 'ERC20',
|
327
413
|
'defaultNetworks': {
|
328
414
|
'ETH': 'ERC20',
|
ccxt/btcalpha.py
CHANGED
@@ -150,6 +150,79 @@ class btcalpha(Exchange, ImplicitAPI):
|
|
150
150
|
'commonCurrencies': {
|
151
151
|
'CBC': 'Cashbery',
|
152
152
|
},
|
153
|
+
'features': {
|
154
|
+
'spot': {
|
155
|
+
'sandbox': False,
|
156
|
+
'createOrder': {
|
157
|
+
'marginMode': False,
|
158
|
+
'triggerPrice': False,
|
159
|
+
'triggerPriceType': None,
|
160
|
+
'triggerDirection': False,
|
161
|
+
'stopLossPrice': False,
|
162
|
+
'takeProfitPrice': False,
|
163
|
+
'attachedStopLossTakeProfit': None,
|
164
|
+
'timeInForce': {
|
165
|
+
'IOC': False,
|
166
|
+
'FOK': False,
|
167
|
+
'PO': False,
|
168
|
+
'GTD': False,
|
169
|
+
},
|
170
|
+
'hedged': False,
|
171
|
+
'leverage': False,
|
172
|
+
'marketBuyRequiresPrice': False,
|
173
|
+
'marketBuyByCost': False,
|
174
|
+
'selfTradePrevention': False,
|
175
|
+
'trailing': False,
|
176
|
+
'iceberg': False,
|
177
|
+
},
|
178
|
+
'createOrders': None,
|
179
|
+
'fetchMyTrades': {
|
180
|
+
'marginMode': False,
|
181
|
+
'limit': 100,
|
182
|
+
'daysBack': None,
|
183
|
+
'untilDays': None,
|
184
|
+
},
|
185
|
+
'fetchOrder': {
|
186
|
+
'marginMode': False,
|
187
|
+
'trigger': False,
|
188
|
+
'trailing': False,
|
189
|
+
},
|
190
|
+
'fetchOpenOrders': {
|
191
|
+
'marginMode': False,
|
192
|
+
'limit': 2000,
|
193
|
+
'trigger': False,
|
194
|
+
'trailing': False,
|
195
|
+
},
|
196
|
+
'fetchOrders': {
|
197
|
+
'marginMode': False,
|
198
|
+
'limit': 2000,
|
199
|
+
'daysBack': None,
|
200
|
+
'untilDays': None,
|
201
|
+
'trigger': False,
|
202
|
+
'trailing': False,
|
203
|
+
},
|
204
|
+
'fetchClosedOrders': {
|
205
|
+
'marginMode': False,
|
206
|
+
'limit': 2000,
|
207
|
+
'daysBack': None,
|
208
|
+
'daysBackCanceled': None,
|
209
|
+
'untilDays': None,
|
210
|
+
'trigger': False,
|
211
|
+
'trailing': False,
|
212
|
+
},
|
213
|
+
'fetchOHLCV': {
|
214
|
+
'max': 720,
|
215
|
+
},
|
216
|
+
},
|
217
|
+
'swap': {
|
218
|
+
'linear': None,
|
219
|
+
'inverse': None,
|
220
|
+
},
|
221
|
+
'future': {
|
222
|
+
'linear': None,
|
223
|
+
'inverse': None,
|
224
|
+
},
|
225
|
+
},
|
153
226
|
'precisionMode': TICK_SIZE,
|
154
227
|
'exceptions': {
|
155
228
|
'exact': {},
|
ccxt/btcbox.py
CHANGED
@@ -116,6 +116,64 @@ class btcbox(Exchange, ImplicitAPI):
|
|
116
116
|
],
|
117
117
|
},
|
118
118
|
},
|
119
|
+
'features': {
|
120
|
+
'spot': {
|
121
|
+
'sandbox': False,
|
122
|
+
'createOrder': {
|
123
|
+
'marginMode': False,
|
124
|
+
'triggerPrice': False,
|
125
|
+
'triggerPriceType': None,
|
126
|
+
'triggerDirection': False,
|
127
|
+
'stopLossPrice': False,
|
128
|
+
'takeProfitPrice': False,
|
129
|
+
'attachedStopLossTakeProfit': None,
|
130
|
+
'timeInForce': {
|
131
|
+
'IOC': False,
|
132
|
+
'FOK': False,
|
133
|
+
'PO': False,
|
134
|
+
'GTD': False,
|
135
|
+
},
|
136
|
+
'hedged': False,
|
137
|
+
'leverage': False,
|
138
|
+
'marketBuyRequiresPrice': False,
|
139
|
+
'marketBuyByCost': False,
|
140
|
+
'selfTradePrevention': False,
|
141
|
+
'trailing': False,
|
142
|
+
'iceberg': False,
|
143
|
+
},
|
144
|
+
'createOrders': None,
|
145
|
+
'fetchMyTrades': None,
|
146
|
+
'fetchOrder': {
|
147
|
+
'marginMode': False,
|
148
|
+
'trigger': False,
|
149
|
+
'trailing': False,
|
150
|
+
},
|
151
|
+
'fetchOpenOrders': {
|
152
|
+
'marginMode': False,
|
153
|
+
'limit': 100,
|
154
|
+
'trigger': False,
|
155
|
+
'trailing': False,
|
156
|
+
},
|
157
|
+
'fetchOrders': {
|
158
|
+
'marginMode': False,
|
159
|
+
'limit': 100,
|
160
|
+
'daysBack': None,
|
161
|
+
'untilDays': None,
|
162
|
+
'trigger': False,
|
163
|
+
'trailing': False,
|
164
|
+
},
|
165
|
+
'fetchClosedOrders': None,
|
166
|
+
'fetchOHLCV': None,
|
167
|
+
},
|
168
|
+
'swap': {
|
169
|
+
'linear': None,
|
170
|
+
'inverse': None,
|
171
|
+
},
|
172
|
+
'future': {
|
173
|
+
'linear': None,
|
174
|
+
'inverse': None,
|
175
|
+
},
|
176
|
+
},
|
119
177
|
'precisionMode': TICK_SIZE,
|
120
178
|
'exceptions': {
|
121
179
|
'104': AuthenticationError,
|
ccxt/btcmarkets.py
CHANGED
@@ -159,6 +159,79 @@ class btcmarkets(Exchange, ImplicitAPI):
|
|
159
159
|
'1h': '1h',
|
160
160
|
'1d': '1d',
|
161
161
|
},
|
162
|
+
'features': {
|
163
|
+
'spot': {
|
164
|
+
'sandbox': False,
|
165
|
+
'createOrder': {
|
166
|
+
'marginMode': False,
|
167
|
+
'triggerPrice': True, # todo: check
|
168
|
+
'triggerPriceType': None,
|
169
|
+
'triggerDirection': False,
|
170
|
+
'stopLossPrice': False,
|
171
|
+
'takeProfitPrice': False,
|
172
|
+
'attachedStopLossTakeProfit': None,
|
173
|
+
'timeInForce': {
|
174
|
+
'IOC': True,
|
175
|
+
'FOK': True,
|
176
|
+
'PO': True,
|
177
|
+
'GTD': False,
|
178
|
+
},
|
179
|
+
'hedged': False,
|
180
|
+
'leverage': False,
|
181
|
+
'marketBuyRequiresPrice': False,
|
182
|
+
'marketBuyByCost': False,
|
183
|
+
'selfTradePrevention': True, # todo: check
|
184
|
+
'trailing': False,
|
185
|
+
'iceberg': False,
|
186
|
+
},
|
187
|
+
'createOrders': None,
|
188
|
+
'fetchMyTrades': {
|
189
|
+
'marginMode': False,
|
190
|
+
'limit': 100,
|
191
|
+
'daysBack': 100000,
|
192
|
+
'untilDays': 100000,
|
193
|
+
},
|
194
|
+
'fetchOrder': {
|
195
|
+
'marginMode': False,
|
196
|
+
'trigger': False,
|
197
|
+
'trailing': False,
|
198
|
+
},
|
199
|
+
'fetchOpenOrders': {
|
200
|
+
'marginMode': False,
|
201
|
+
'limit': 100,
|
202
|
+
'trigger': False,
|
203
|
+
'trailing': False,
|
204
|
+
},
|
205
|
+
'fetchOrders': {
|
206
|
+
'marginMode': False,
|
207
|
+
'limit': 100,
|
208
|
+
'daysBack': 100000,
|
209
|
+
'untilDays': 100000,
|
210
|
+
'trigger': False,
|
211
|
+
'trailing': False,
|
212
|
+
},
|
213
|
+
'fetchClosedOrders': {
|
214
|
+
'marginMode': False,
|
215
|
+
'limit': 100,
|
216
|
+
'daysBack': 100000,
|
217
|
+
'daysBackCanceled': 1,
|
218
|
+
'untilDays': 100000,
|
219
|
+
'trigger': False,
|
220
|
+
'trailing': False,
|
221
|
+
},
|
222
|
+
'fetchOHLCV': {
|
223
|
+
'limit': 1000,
|
224
|
+
},
|
225
|
+
},
|
226
|
+
'swap': {
|
227
|
+
'linear': None,
|
228
|
+
'inverse': None,
|
229
|
+
},
|
230
|
+
'future': {
|
231
|
+
'linear': None,
|
232
|
+
'inverse': None,
|
233
|
+
},
|
234
|
+
},
|
162
235
|
'precisionMode': TICK_SIZE,
|
163
236
|
'exceptions': {
|
164
237
|
'exact': {
|
ccxt/btcturk.py
CHANGED
@@ -136,6 +136,67 @@ class btcturk(Exchange, ImplicitAPI):
|
|
136
136
|
},
|
137
137
|
},
|
138
138
|
},
|
139
|
+
'features': {
|
140
|
+
'spot': {
|
141
|
+
'sandbox': False,
|
142
|
+
'createOrder': {
|
143
|
+
'marginMode': False,
|
144
|
+
'triggerPrice': True,
|
145
|
+
'triggerPriceType': None,
|
146
|
+
'triggerDirection': False,
|
147
|
+
'stopLossPrice': False,
|
148
|
+
'takeProfitPrice': False,
|
149
|
+
'attachedStopLossTakeProfit': None,
|
150
|
+
'timeInForce': {
|
151
|
+
'IOC': False,
|
152
|
+
'FOK': False,
|
153
|
+
'PO': False,
|
154
|
+
'GTD': False,
|
155
|
+
},
|
156
|
+
'hedged': False,
|
157
|
+
'leverage': False,
|
158
|
+
'marketBuyRequiresPrice': False,
|
159
|
+
'marketBuyByCost': False,
|
160
|
+
'selfTradePrevention': False,
|
161
|
+
'trailing': False,
|
162
|
+
'iceberg': False,
|
163
|
+
},
|
164
|
+
'createOrders': None,
|
165
|
+
'fetchMyTrades': {
|
166
|
+
'marginMode': False,
|
167
|
+
'limit': 100,
|
168
|
+
'daysBack': 100000,
|
169
|
+
'untilDays': 30,
|
170
|
+
},
|
171
|
+
'fetchOrder': None,
|
172
|
+
'fetchOpenOrders': {
|
173
|
+
'marginMode': False,
|
174
|
+
'limit': None,
|
175
|
+
'trigger': False,
|
176
|
+
'trailing': False,
|
177
|
+
},
|
178
|
+
'fetchOrders': {
|
179
|
+
'marginMode': False,
|
180
|
+
'limit': 1000,
|
181
|
+
'daysBack': 100000,
|
182
|
+
'untilDays': 30,
|
183
|
+
'trigger': False,
|
184
|
+
'trailing': False,
|
185
|
+
},
|
186
|
+
'fetchClosedOrders': None,
|
187
|
+
'fetchOHLCV': {
|
188
|
+
'limit': None,
|
189
|
+
},
|
190
|
+
},
|
191
|
+
'swap': {
|
192
|
+
'linear': None,
|
193
|
+
'inverse': None,
|
194
|
+
},
|
195
|
+
'future': {
|
196
|
+
'linear': None,
|
197
|
+
'inverse': None,
|
198
|
+
},
|
199
|
+
},
|
139
200
|
'fees': {
|
140
201
|
'trading': {
|
141
202
|
'maker': self.parse_number('0.0005'),
|
ccxt/bybit.py
CHANGED
@@ -355,6 +355,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
355
355
|
'v5/account/contract-transaction-log': 1,
|
356
356
|
'v5/account/smp-group': 1,
|
357
357
|
'v5/account/mmp-state': 5,
|
358
|
+
'v5/account/withdrawal': 5,
|
358
359
|
# asset
|
359
360
|
'v5/asset/exchange/query-coin-list': 0.5, # 100/s => cost = 50 / 100 = 0.5
|
360
361
|
'v5/asset/exchange/convert-result-query': 0.5, # 100/s => cost = 50 / 100 = 0.5
|
@@ -2699,8 +2700,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
2699
2700
|
timestamp = self.safe_integer(response, 'time')
|
2700
2701
|
for i in range(0, len(tickerList)):
|
2701
2702
|
tickerList[i]['timestamp'] = timestamp # will be removed inside the parser
|
2702
|
-
|
2703
|
-
return self.filter_by_array(result, 'symbol', symbols)
|
2703
|
+
return self.parse_funding_rates(tickerList, symbols)
|
2704
2704
|
|
2705
2705
|
def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
2706
2706
|
"""
|
@@ -3209,7 +3209,11 @@ class bybit(Exchange, ImplicitAPI):
|
|
3209
3209
|
if (loan is not None) and (interest is not None):
|
3210
3210
|
account['debt'] = Precise.string_add(loan, interest)
|
3211
3211
|
account['total'] = self.safe_string(coinEntry, 'walletBalance')
|
3212
|
-
|
3212
|
+
free = self.safe_string_2(coinEntry, 'availableToWithdraw', 'free')
|
3213
|
+
if free is not None:
|
3214
|
+
account['free'] = free
|
3215
|
+
else:
|
3216
|
+
account['used'] = self.safe_string(coinEntry, 'locked')
|
3213
3217
|
# account['used'] = self.safe_string(coinEntry, 'locked')
|
3214
3218
|
currencyId = self.safe_string(coinEntry, 'coin')
|
3215
3219
|
code = self.safe_currency_code(currencyId)
|