ccxt 4.4.48__py2.py3-none-any.whl → 4.4.50__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/alpaca.py +62 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/alpaca.py +62 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +8 -4
- ccxt/async_support/bingx.py +73 -29
- ccxt/async_support/bitget.py +12 -10
- ccxt/async_support/blofin.py +1 -1
- ccxt/async_support/coinex.py +3 -3
- ccxt/async_support/coinsph.py +17 -8
- ccxt/async_support/deribit.py +82 -0
- ccxt/async_support/digifinex.py +125 -10
- ccxt/async_support/ellipx.py +61 -0
- ccxt/async_support/exmo.py +58 -0
- ccxt/async_support/hitbtc.py +99 -0
- ccxt/async_support/hollaex.py +85 -16
- ccxt/async_support/huobijp.py +73 -0
- ccxt/async_support/hyperliquid.py +22 -1
- ccxt/async_support/idex.py +71 -0
- ccxt/async_support/independentreserve.py +64 -0
- ccxt/async_support/indodax.py +61 -0
- ccxt/async_support/kucoin.py +47 -67
- ccxt/async_support/kuna.py +60 -1
- ccxt/async_support/latoken.py +64 -0
- ccxt/async_support/lbank.py +70 -0
- ccxt/async_support/luno.py +73 -0
- ccxt/async_support/lykke.py +64 -0
- ccxt/async_support/mercado.py +65 -0
- ccxt/async_support/mexc.py +4 -3
- ccxt/async_support/myokx.py +10 -0
- ccxt/async_support/ndax.py +71 -0
- ccxt/async_support/novadax.py +74 -0
- ccxt/async_support/oceanex.py +69 -0
- ccxt/async_support/okcoin.py +92 -7
- ccxt/async_support/onetrading.py +66 -0
- ccxt/async_support/oxfun.py +66 -0
- ccxt/async_support/p2b.py +63 -1
- ccxt/async_support/paradex.py +68 -0
- ccxt/async_support/paymium.py +42 -0
- ccxt/async_support/probit.py +68 -1
- ccxt/async_support/timex.py +67 -0
- ccxt/async_support/tokocrypto.py +81 -4
- ccxt/async_support/tradeogre.py +58 -1
- ccxt/async_support/whitebit.py +10 -4
- ccxt/base/exchange.py +62 -1
- ccxt/binance.py +8 -4
- ccxt/bingx.py +73 -29
- ccxt/bitget.py +12 -10
- ccxt/blofin.py +1 -1
- ccxt/coinex.py +3 -3
- ccxt/coinsph.py +17 -8
- ccxt/deribit.py +82 -0
- ccxt/digifinex.py +125 -10
- ccxt/ellipx.py +61 -0
- ccxt/exmo.py +58 -0
- ccxt/hitbtc.py +99 -0
- ccxt/hollaex.py +85 -16
- ccxt/huobijp.py +73 -0
- ccxt/hyperliquid.py +22 -1
- ccxt/idex.py +71 -0
- ccxt/independentreserve.py +64 -0
- ccxt/indodax.py +61 -0
- ccxt/kucoin.py +47 -67
- ccxt/kuna.py +60 -1
- ccxt/latoken.py +64 -0
- ccxt/lbank.py +70 -0
- ccxt/luno.py +73 -0
- ccxt/lykke.py +64 -0
- ccxt/mercado.py +65 -0
- ccxt/mexc.py +4 -3
- ccxt/myokx.py +10 -0
- ccxt/ndax.py +71 -0
- ccxt/novadax.py +74 -0
- ccxt/oceanex.py +69 -0
- ccxt/okcoin.py +92 -7
- ccxt/onetrading.py +66 -0
- ccxt/oxfun.py +66 -0
- ccxt/p2b.py +63 -1
- ccxt/paradex.py +68 -0
- ccxt/paymium.py +42 -0
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitmart.py +5 -0
- ccxt/probit.py +68 -1
- ccxt/timex.py +67 -0
- ccxt/tokocrypto.py +81 -4
- ccxt/tradeogre.py +58 -1
- ccxt/whitebit.py +10 -4
- {ccxt-4.4.48.dist-info → ccxt-4.4.50.dist-info}/METADATA +4 -4
- {ccxt-4.4.48.dist-info → ccxt-4.4.50.dist-info}/RECORD +97 -97
- {ccxt-4.4.48.dist-info → ccxt-4.4.50.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.48.dist-info → ccxt-4.4.50.dist-info}/WHEEL +0 -0
- {ccxt-4.4.48.dist-info → ccxt-4.4.50.dist-info}/top_level.txt +0 -0
ccxt/async_support/okcoin.py
CHANGED
@@ -222,6 +222,83 @@ class okcoin(Exchange, ImplicitAPI):
|
|
222
222
|
},
|
223
223
|
},
|
224
224
|
},
|
225
|
+
'features': {
|
226
|
+
'spot': {
|
227
|
+
'sandbox': False,
|
228
|
+
'createOrder': {
|
229
|
+
'marginMode': True,
|
230
|
+
'triggerPrice': True,
|
231
|
+
'triggerDirection': True, # todo
|
232
|
+
'triggerPriceType': {
|
233
|
+
'last': True,
|
234
|
+
'mark': False,
|
235
|
+
'index': False,
|
236
|
+
},
|
237
|
+
'stopLossPrice': True, # todo revise trigger
|
238
|
+
'takeProfitPrice': True, # todo revise trigger
|
239
|
+
'attachedStopLossTakeProfit': {
|
240
|
+
'triggerPriceType': {
|
241
|
+
'last': True,
|
242
|
+
'mark': False,
|
243
|
+
'index': False,
|
244
|
+
},
|
245
|
+
'price': True,
|
246
|
+
},
|
247
|
+
'timeInForce': {
|
248
|
+
'IOC': True,
|
249
|
+
'FOK': True,
|
250
|
+
'PO': True,
|
251
|
+
'GTD': False,
|
252
|
+
},
|
253
|
+
'hedged': False,
|
254
|
+
'trailing': True, # todo
|
255
|
+
'leverage': False,
|
256
|
+
'marketBuyByCost': True,
|
257
|
+
'marketBuyRequiresPrice': True,
|
258
|
+
'selfTradePrevention': False,
|
259
|
+
'iceberg': True, # todo
|
260
|
+
},
|
261
|
+
'createOrders': None, # todo
|
262
|
+
'fetchMyTrades': {
|
263
|
+
'marginMode': False,
|
264
|
+
'limit': 100,
|
265
|
+
'daysBack': 90,
|
266
|
+
'untilDays': 90, # todo
|
267
|
+
},
|
268
|
+
'fetchOrder': {
|
269
|
+
'marginMode': False,
|
270
|
+
'trigger': True,
|
271
|
+
'trailing': True, # todo
|
272
|
+
},
|
273
|
+
'fetchOpenOrders': {
|
274
|
+
'marginMode': False,
|
275
|
+
'limit': 100,
|
276
|
+
'trigger': True,
|
277
|
+
'trailing': True,
|
278
|
+
},
|
279
|
+
'fetchOrders': None,
|
280
|
+
'fetchClosedOrders': {
|
281
|
+
'marginMode': False,
|
282
|
+
'limit': 100,
|
283
|
+
'daysBack': 90, # todo
|
284
|
+
'daysBackCanceled': 1 / 12, # todo: possible more with history endpoint
|
285
|
+
'untilDays': 90, # todo
|
286
|
+
'trigger': True,
|
287
|
+
'trailing': True,
|
288
|
+
},
|
289
|
+
'fetchOHLCV': {
|
290
|
+
'limit': 100, # 300 is only possible for 'recent' 1440 candles, which does not make much sense
|
291
|
+
},
|
292
|
+
},
|
293
|
+
'swap': {
|
294
|
+
'linear': None,
|
295
|
+
'inverse': None,
|
296
|
+
},
|
297
|
+
'future': {
|
298
|
+
'linear': None,
|
299
|
+
'inverse': None,
|
300
|
+
},
|
301
|
+
},
|
225
302
|
'fees': {
|
226
303
|
'trading': {
|
227
304
|
'taker': 0.002,
|
@@ -630,12 +707,20 @@ class okcoin(Exchange, ImplicitAPI):
|
|
630
707
|
"""
|
631
708
|
response = await self.publicGetPublicTime(params)
|
632
709
|
#
|
633
|
-
#
|
634
|
-
#
|
635
|
-
#
|
636
|
-
#
|
710
|
+
# {
|
711
|
+
# "code": "0",
|
712
|
+
# "data":
|
713
|
+
# [
|
714
|
+
# {
|
715
|
+
# "ts": "1737379360033"
|
716
|
+
# }
|
717
|
+
# ],
|
718
|
+
# "msg": ""
|
719
|
+
# }
|
637
720
|
#
|
638
|
-
|
721
|
+
data = self.safe_list(response, 'data')
|
722
|
+
timestamp = self.safe_dict(data, 0)
|
723
|
+
return self.safe_integer(timestamp, 'ts')
|
639
724
|
|
640
725
|
async def fetch_markets(self, params={}) -> List[Market]:
|
641
726
|
"""
|
@@ -1470,7 +1555,7 @@ class okcoin(Exchange, ImplicitAPI):
|
|
1470
1555
|
if stopLossDefined:
|
1471
1556
|
stopLossTriggerPrice = self.safe_value_n(stopLoss, ['triggerPrice', 'stopPrice', 'slTriggerPx'])
|
1472
1557
|
if stopLossTriggerPrice is None:
|
1473
|
-
raise InvalidOrder(self.id + ' createOrder() requires a trigger price in params["stopLoss"]["triggerPrice"]
|
1558
|
+
raise InvalidOrder(self.id + ' createOrder() requires a trigger price in params["stopLoss"]["triggerPrice"] for a stop loss order')
|
1474
1559
|
request['slTriggerPx'] = self.price_to_precision(symbol, stopLossTriggerPrice)
|
1475
1560
|
stopLossLimitPrice = self.safe_value_n(stopLoss, ['price', 'stopLossPrice', 'slOrdPx'])
|
1476
1561
|
stopLossOrderType = self.safe_string(stopLoss, 'type')
|
@@ -1481,7 +1566,7 @@ class okcoin(Exchange, ImplicitAPI):
|
|
1481
1566
|
raise InvalidOrder(self.id + ' createOrder() params["stopLoss"]["type"] must be either "limit" or "market"')
|
1482
1567
|
elif stopLossLimitOrderType:
|
1483
1568
|
if stopLossLimitPrice is None:
|
1484
|
-
raise InvalidOrder(self.id + ' createOrder() requires a limit price in params["stopLoss"]["price"]
|
1569
|
+
raise InvalidOrder(self.id + ' createOrder() requires a limit price in params["stopLoss"]["price"] for a stop loss limit order')
|
1485
1570
|
else:
|
1486
1571
|
request['slOrdPx'] = self.price_to_precision(symbol, stopLossLimitPrice)
|
1487
1572
|
elif stopLossOrderType == 'market':
|
ccxt/async_support/onetrading.py
CHANGED
@@ -302,6 +302,72 @@ class onetrading(Exchange, ImplicitAPI):
|
|
302
302
|
},
|
303
303
|
'fiat': ['EUR', 'CHF'],
|
304
304
|
},
|
305
|
+
'features': {
|
306
|
+
'spot': {
|
307
|
+
'sandbox': False,
|
308
|
+
'createOrder': {
|
309
|
+
'marginMode': False,
|
310
|
+
'triggerPrice': False,
|
311
|
+
'triggerDirection': False,
|
312
|
+
'triggerPriceType': None,
|
313
|
+
'stopLossPrice': False,
|
314
|
+
'takeProfitPrice': False,
|
315
|
+
'attachedStopLossTakeProfit': None,
|
316
|
+
'timeInForce': {
|
317
|
+
'IOC': True,
|
318
|
+
'FOK': True,
|
319
|
+
'PO': True,
|
320
|
+
'GTD': False,
|
321
|
+
},
|
322
|
+
'hedged': False,
|
323
|
+
'trailing': False,
|
324
|
+
'leverage': False,
|
325
|
+
'marketBuyByCost': False,
|
326
|
+
'marketBuyRequiresPrice': False,
|
327
|
+
'selfTradePrevention': False,
|
328
|
+
'iceberg': False,
|
329
|
+
},
|
330
|
+
'createOrders': None,
|
331
|
+
'fetchMyTrades': {
|
332
|
+
'marginMode': False,
|
333
|
+
'limit': 100,
|
334
|
+
'daysBack': 100000, # todo
|
335
|
+
'untilDays': 100000, # todo
|
336
|
+
},
|
337
|
+
'fetchOrder': {
|
338
|
+
'marginMode': False,
|
339
|
+
'trigger': False,
|
340
|
+
'trailing': False,
|
341
|
+
},
|
342
|
+
'fetchOpenOrders': {
|
343
|
+
'marginMode': False,
|
344
|
+
'limit': 100,
|
345
|
+
'trigger': False,
|
346
|
+
'trailing': False,
|
347
|
+
},
|
348
|
+
'fetchOrders': None, # todo
|
349
|
+
'fetchClosedOrders': {
|
350
|
+
'marginMode': False,
|
351
|
+
'limit': 100,
|
352
|
+
'daysBack': 100000, # todo
|
353
|
+
'daysBackCanceled': 1 / 12, # todo
|
354
|
+
'untilDays': 100000, # todo
|
355
|
+
'trigger': False,
|
356
|
+
'trailing': False,
|
357
|
+
},
|
358
|
+
'fetchOHLCV': {
|
359
|
+
'limit': 5000,
|
360
|
+
},
|
361
|
+
},
|
362
|
+
'swap': {
|
363
|
+
'linear': None,
|
364
|
+
'inverse': None,
|
365
|
+
},
|
366
|
+
'future': {
|
367
|
+
'linear': None,
|
368
|
+
'inverse': None,
|
369
|
+
},
|
370
|
+
},
|
305
371
|
})
|
306
372
|
|
307
373
|
async def fetch_time(self, params={}):
|
ccxt/async_support/oxfun.py
CHANGED
@@ -133,6 +133,7 @@ class oxfun(Exchange, ImplicitAPI):
|
|
133
133
|
'reduceMargin': False,
|
134
134
|
'repayCrossMargin': False,
|
135
135
|
'repayIsolatedMargin': False,
|
136
|
+
'sandbox': True,
|
136
137
|
'setLeverage': False,
|
137
138
|
'setMargin': False,
|
138
139
|
'setMarginMode': False,
|
@@ -259,6 +260,71 @@ class oxfun(Exchange, ImplicitAPI):
|
|
259
260
|
'Optimism': 'OPTIMISM',
|
260
261
|
},
|
261
262
|
},
|
263
|
+
'features': {
|
264
|
+
'default': {
|
265
|
+
'sandbox': True,
|
266
|
+
'createOrder': {
|
267
|
+
'marginMode': False,
|
268
|
+
'triggerPrice': True,
|
269
|
+
'triggerDirection': False,
|
270
|
+
'triggerPriceType': None,
|
271
|
+
'stopLossPrice': False, # todo
|
272
|
+
'takeProfitPrice': False, # todo
|
273
|
+
'attachedStopLossTakeProfit': None,
|
274
|
+
'timeInForce': {
|
275
|
+
'IOC': True,
|
276
|
+
'FOK': True,
|
277
|
+
'PO': True,
|
278
|
+
'GTD': False,
|
279
|
+
},
|
280
|
+
'hedged': False,
|
281
|
+
'trailing': False,
|
282
|
+
'leverage': False,
|
283
|
+
'marketBuyByCost': True,
|
284
|
+
'marketBuyRequiresPrice': False,
|
285
|
+
'selfTradePrevention': True, # todo
|
286
|
+
'iceberg': True, # todo
|
287
|
+
},
|
288
|
+
'createOrders': {
|
289
|
+
'max': 10, # todo
|
290
|
+
},
|
291
|
+
'fetchMyTrades': {
|
292
|
+
'marginMode': False,
|
293
|
+
'limit': 500,
|
294
|
+
'daysBack': 100000, # todo
|
295
|
+
'untilDays': 7,
|
296
|
+
},
|
297
|
+
'fetchOrder': {
|
298
|
+
'marginMode': False,
|
299
|
+
'trigger': False,
|
300
|
+
'trailing': False,
|
301
|
+
},
|
302
|
+
'fetchOpenOrders': {
|
303
|
+
'marginMode': False,
|
304
|
+
'limit': None,
|
305
|
+
'trigger': False,
|
306
|
+
'trailing': False,
|
307
|
+
},
|
308
|
+
'fetchOrders': None,
|
309
|
+
'fetchClosedOrders': None, # todo?
|
310
|
+
'fetchOHLCV': {
|
311
|
+
'limit': 500,
|
312
|
+
},
|
313
|
+
},
|
314
|
+
'spot': {
|
315
|
+
'extends': 'default',
|
316
|
+
},
|
317
|
+
'swap': {
|
318
|
+
'linear': {
|
319
|
+
'extends': 'default',
|
320
|
+
},
|
321
|
+
'inverse': None,
|
322
|
+
},
|
323
|
+
'future': {
|
324
|
+
'linear': None,
|
325
|
+
'inverse': None,
|
326
|
+
},
|
327
|
+
},
|
262
328
|
'exceptions': {
|
263
329
|
'exact': {
|
264
330
|
'-0010': OperationFailed, # {"event":null,"success":false,"message":"Validation failed","code":"0010","data":null} - failed transfer
|
ccxt/async_support/p2b.py
CHANGED
@@ -81,7 +81,7 @@ class p2b(Exchange, ImplicitAPI):
|
|
81
81
|
'fetchOpenOrders': True,
|
82
82
|
'fetchOrderBook': True,
|
83
83
|
'fetchOrderBooks': False,
|
84
|
-
'fetchOrders':
|
84
|
+
'fetchOrders': False,
|
85
85
|
'fetchOrderTrades': True,
|
86
86
|
'fetchPosition': False,
|
87
87
|
'fetchPositionHistory': False,
|
@@ -188,6 +188,68 @@ class p2b(Exchange, ImplicitAPI):
|
|
188
188
|
],
|
189
189
|
},
|
190
190
|
},
|
191
|
+
'features': {
|
192
|
+
'spot': {
|
193
|
+
'sandbox': False,
|
194
|
+
'createOrder': {
|
195
|
+
'marginMode': False,
|
196
|
+
'triggerPrice': False,
|
197
|
+
'triggerDirection': False,
|
198
|
+
'triggerPriceType': None,
|
199
|
+
'stopLossPrice': False,
|
200
|
+
'takeProfitPrice': False,
|
201
|
+
'attachedStopLossTakeProfit': None,
|
202
|
+
'timeInForce': {
|
203
|
+
'IOC': True,
|
204
|
+
'FOK': True,
|
205
|
+
'PO': True,
|
206
|
+
'GTD': False,
|
207
|
+
},
|
208
|
+
'hedged': False,
|
209
|
+
'trailing': False,
|
210
|
+
'leverage': False,
|
211
|
+
'marketBuyByCost': False,
|
212
|
+
'marketBuyRequiresPrice': False,
|
213
|
+
'selfTradePrevention': False,
|
214
|
+
'iceberg': False,
|
215
|
+
},
|
216
|
+
'createOrders': None,
|
217
|
+
'fetchMyTrades': {
|
218
|
+
'marginMode': False,
|
219
|
+
'limit': 100,
|
220
|
+
'daysBack': 100000, # todo
|
221
|
+
'untilDays': 1,
|
222
|
+
},
|
223
|
+
'fetchOrder': None, # todo
|
224
|
+
'fetchOpenOrders': {
|
225
|
+
'marginMode': False,
|
226
|
+
'limit': 100,
|
227
|
+
'trigger': False,
|
228
|
+
'trailing': False,
|
229
|
+
},
|
230
|
+
'fetchOrders': None, # todo
|
231
|
+
'fetchClosedOrders': {
|
232
|
+
'marginMode': False,
|
233
|
+
'limit': 100,
|
234
|
+
'daysBack': 100000, # todo
|
235
|
+
'daysBackCanceled': 1 / 12, # todo
|
236
|
+
'untilDays': 1,
|
237
|
+
'trigger': False,
|
238
|
+
'trailing': False,
|
239
|
+
},
|
240
|
+
'fetchOHLCV': {
|
241
|
+
'limit': 500,
|
242
|
+
},
|
243
|
+
},
|
244
|
+
'swap': {
|
245
|
+
'linear': None,
|
246
|
+
'inverse': None,
|
247
|
+
},
|
248
|
+
'future': {
|
249
|
+
'linear': None,
|
250
|
+
'inverse': None,
|
251
|
+
},
|
252
|
+
},
|
191
253
|
'commonCurrencies': {
|
192
254
|
},
|
193
255
|
'precisionMode': TICK_SIZE,
|
ccxt/async_support/paradex.py
CHANGED
@@ -280,6 +280,74 @@ class paradex(Exchange, ImplicitAPI):
|
|
280
280
|
'paradexAccount': None, # add {"privateKey": A, "publicKey": B, "address": C}
|
281
281
|
'broker': 'CCXT',
|
282
282
|
},
|
283
|
+
'features': {
|
284
|
+
'spot': None,
|
285
|
+
'forSwap': {
|
286
|
+
'sandbox': True,
|
287
|
+
'createOrder': {
|
288
|
+
'marginMode': False,
|
289
|
+
'triggerPrice': True,
|
290
|
+
'triggerDirection': True, # todo
|
291
|
+
'triggerPriceType': None,
|
292
|
+
'stopLossPrice': False, # todo
|
293
|
+
'takeProfitPrice': False, # todo
|
294
|
+
'attachedStopLossTakeProfit': None,
|
295
|
+
'timeInForce': {
|
296
|
+
'IOC': True,
|
297
|
+
'FOK': False,
|
298
|
+
'PO': True,
|
299
|
+
'GTD': False,
|
300
|
+
},
|
301
|
+
'hedged': False,
|
302
|
+
'trailing': False,
|
303
|
+
'leverage': False,
|
304
|
+
'marketBuyByCost': False,
|
305
|
+
'marketBuyRequiresPrice': False,
|
306
|
+
'selfTradePrevention': True, # todo
|
307
|
+
'iceberg': False,
|
308
|
+
},
|
309
|
+
'createOrders': None, # todo
|
310
|
+
'fetchMyTrades': {
|
311
|
+
'marginMode': False,
|
312
|
+
'limit': 100, # todo
|
313
|
+
'daysBack': 100000, # todo
|
314
|
+
'untilDays': 100000, # todo
|
315
|
+
},
|
316
|
+
'fetchOrder': {
|
317
|
+
'marginMode': False,
|
318
|
+
'trigger': False,
|
319
|
+
'trailing': False,
|
320
|
+
},
|
321
|
+
'fetchOpenOrders': {
|
322
|
+
'marginMode': False,
|
323
|
+
'limit': 100, # todo
|
324
|
+
'trigger': False,
|
325
|
+
'trailing': False,
|
326
|
+
},
|
327
|
+
'fetchOrders': {
|
328
|
+
'marginMode': False,
|
329
|
+
'limit': 100,
|
330
|
+
'daysBack': 100000, # todo
|
331
|
+
'untilDays': 100000, # todo
|
332
|
+
'trigger': False,
|
333
|
+
'trailing': False,
|
334
|
+
},
|
335
|
+
'fetchClosedOrders': None, # todo
|
336
|
+
'fetchOHLCV': {
|
337
|
+
'limit': None, # todo by from/to
|
338
|
+
},
|
339
|
+
},
|
340
|
+
'swap': {
|
341
|
+
'linear': {
|
342
|
+
'extends': 'forSwap',
|
343
|
+
},
|
344
|
+
'inverse': None,
|
345
|
+
},
|
346
|
+
'future': {
|
347
|
+
'linear': None,
|
348
|
+
'inverse': None,
|
349
|
+
},
|
350
|
+
},
|
283
351
|
})
|
284
352
|
|
285
353
|
async def fetch_time(self, params={}):
|
ccxt/async_support/paymium.py
CHANGED
@@ -113,6 +113,48 @@ class paymium(Exchange, ImplicitAPI):
|
|
113
113
|
},
|
114
114
|
},
|
115
115
|
'precisionMode': TICK_SIZE,
|
116
|
+
'features': {
|
117
|
+
'spot': {
|
118
|
+
'sandbox': False,
|
119
|
+
'createOrder': {
|
120
|
+
'marginMode': False,
|
121
|
+
'triggerPrice': False,
|
122
|
+
'triggerDirection': False,
|
123
|
+
'triggerPriceType': None,
|
124
|
+
'stopLossPrice': False,
|
125
|
+
'takeProfitPrice': False,
|
126
|
+
'attachedStopLossTakeProfit': None,
|
127
|
+
'timeInForce': {
|
128
|
+
'IOC': False,
|
129
|
+
'FOK': False,
|
130
|
+
'PO': False,
|
131
|
+
'GTD': False,
|
132
|
+
},
|
133
|
+
'hedged': False,
|
134
|
+
'trailing': False,
|
135
|
+
'leverage': False,
|
136
|
+
'marketBuyByCost': True, # todo
|
137
|
+
'marketBuyRequiresPrice': False,
|
138
|
+
'selfTradePrevention': False,
|
139
|
+
'iceberg': False,
|
140
|
+
},
|
141
|
+
'createOrders': None,
|
142
|
+
'fetchMyTrades': None,
|
143
|
+
'fetchOrder': None, # todo
|
144
|
+
'fetchOpenOrders': None, # todo
|
145
|
+
'fetchOrders': None, # todo
|
146
|
+
'fetchClosedOrders': None, # todo
|
147
|
+
'fetchOHLCV': None, # todo
|
148
|
+
},
|
149
|
+
'swap': {
|
150
|
+
'linear': None,
|
151
|
+
'inverse': None,
|
152
|
+
},
|
153
|
+
'future': {
|
154
|
+
'linear': None,
|
155
|
+
'inverse': None,
|
156
|
+
},
|
157
|
+
},
|
116
158
|
})
|
117
159
|
|
118
160
|
def parse_balance(self, response) -> Balances:
|
ccxt/async_support/probit.py
CHANGED
@@ -103,7 +103,7 @@ class probit(Exchange, ImplicitAPI):
|
|
103
103
|
'fetchWithdrawal': False,
|
104
104
|
'fetchWithdrawals': True,
|
105
105
|
'reduceMargin': False,
|
106
|
-
'sandbox':
|
106
|
+
'sandbox': False,
|
107
107
|
'setLeverage': False,
|
108
108
|
'setMarginMode': False,
|
109
109
|
'setPositionMode': False,
|
@@ -185,6 +185,73 @@ class probit(Exchange, ImplicitAPI):
|
|
185
185
|
'taker': self.parse_number('0.002'),
|
186
186
|
},
|
187
187
|
},
|
188
|
+
'features': {
|
189
|
+
'spot': {
|
190
|
+
'sandbox': False,
|
191
|
+
'createOrder': {
|
192
|
+
'marginMode': False,
|
193
|
+
'triggerPrice': False,
|
194
|
+
'triggerDirection': False,
|
195
|
+
'triggerPriceType': None,
|
196
|
+
'stopLossPrice': False,
|
197
|
+
'takeProfitPrice': False,
|
198
|
+
'attachedStopLossTakeProfit': None,
|
199
|
+
# todo
|
200
|
+
'timeInForce': {
|
201
|
+
'IOC': True,
|
202
|
+
'FOK': True,
|
203
|
+
'PO': False,
|
204
|
+
'GTD': False,
|
205
|
+
},
|
206
|
+
'hedged': False,
|
207
|
+
'trailing': False,
|
208
|
+
'leverage': False,
|
209
|
+
'marketBuyByCost': True,
|
210
|
+
'marketBuyRequiresPrice': False,
|
211
|
+
'selfTradePrevention': False,
|
212
|
+
'iceberg': False,
|
213
|
+
},
|
214
|
+
'createOrders': None,
|
215
|
+
'fetchMyTrades': {
|
216
|
+
'marginMode': False,
|
217
|
+
'limit': 1000,
|
218
|
+
'daysBack': 100000, # todo
|
219
|
+
'untilDays': 100000, # todo
|
220
|
+
},
|
221
|
+
'fetchOrder': {
|
222
|
+
'marginMode': False,
|
223
|
+
'trigger': False,
|
224
|
+
'trailing': False,
|
225
|
+
},
|
226
|
+
'fetchOpenOrders': {
|
227
|
+
'marginMode': False,
|
228
|
+
'limit': None,
|
229
|
+
'trigger': False,
|
230
|
+
'trailing': False,
|
231
|
+
},
|
232
|
+
'fetchOrders': None,
|
233
|
+
'fetchClosedOrders': {
|
234
|
+
'marginMode': False,
|
235
|
+
'limit': 1000,
|
236
|
+
'daysBack': 100000, # todo
|
237
|
+
'daysBackCanceled': 1, # todo
|
238
|
+
'untilDays': 90,
|
239
|
+
'trigger': False,
|
240
|
+
'trailing': False,
|
241
|
+
},
|
242
|
+
'fetchOHLCV': {
|
243
|
+
'limit': 4000,
|
244
|
+
},
|
245
|
+
},
|
246
|
+
'swap': {
|
247
|
+
'linear': None,
|
248
|
+
'inverse': None,
|
249
|
+
},
|
250
|
+
'future': {
|
251
|
+
'linear': None,
|
252
|
+
'inverse': None,
|
253
|
+
},
|
254
|
+
},
|
188
255
|
'exceptions': {
|
189
256
|
'exact': {
|
190
257
|
'UNAUTHORIZED': AuthenticationError,
|
ccxt/async_support/timex.py
CHANGED
@@ -281,6 +281,73 @@ class timex(Exchange, ImplicitAPI):
|
|
281
281
|
'defaultSort': 'timestamp,asc',
|
282
282
|
'defaultSortOrders': 'createdAt,asc',
|
283
283
|
},
|
284
|
+
'features': {
|
285
|
+
'spot': {
|
286
|
+
'sandbox': False,
|
287
|
+
'createOrder': {
|
288
|
+
'marginMode': False,
|
289
|
+
'triggerPrice': False,
|
290
|
+
'triggerDirection': False,
|
291
|
+
'triggerPriceType': None,
|
292
|
+
'stopLossPrice': False,
|
293
|
+
'takeProfitPrice': False,
|
294
|
+
'attachedStopLossTakeProfit': None,
|
295
|
+
# todo
|
296
|
+
'timeInForce': {
|
297
|
+
'IOC': True,
|
298
|
+
'FOK': True,
|
299
|
+
'PO': False,
|
300
|
+
'GTD': True,
|
301
|
+
},
|
302
|
+
'hedged': False,
|
303
|
+
'trailing': False,
|
304
|
+
'leverage': False,
|
305
|
+
'marketBuyByCost': False,
|
306
|
+
'marketBuyRequiresPrice': False,
|
307
|
+
'selfTradePrevention': False,
|
308
|
+
'iceberg': False,
|
309
|
+
},
|
310
|
+
'createOrders': None,
|
311
|
+
'fetchMyTrades': {
|
312
|
+
'marginMode': False,
|
313
|
+
'limit': 100, # todo
|
314
|
+
'daysBack': 100000, # todo
|
315
|
+
'untilDays': 100000, # todo
|
316
|
+
},
|
317
|
+
'fetchOrder': {
|
318
|
+
'marginMode': False,
|
319
|
+
'trigger': False,
|
320
|
+
'trailing': False,
|
321
|
+
},
|
322
|
+
'fetchOpenOrders': {
|
323
|
+
'marginMode': False,
|
324
|
+
'limit': 100, # todo
|
325
|
+
'trigger': False,
|
326
|
+
'trailing': False,
|
327
|
+
},
|
328
|
+
'fetchOrders': None, # todo
|
329
|
+
'fetchClosedOrders': {
|
330
|
+
'marginMode': False,
|
331
|
+
'limit': 100, # todo
|
332
|
+
'daysBack': 100000, # todo
|
333
|
+
'daysBackCanceled': 1, # todo
|
334
|
+
'untilDays': 100000, # todo
|
335
|
+
'trigger': False,
|
336
|
+
'trailing': False,
|
337
|
+
},
|
338
|
+
'fetchOHLCV': {
|
339
|
+
'limit': None,
|
340
|
+
},
|
341
|
+
},
|
342
|
+
'swap': {
|
343
|
+
'linear': None,
|
344
|
+
'inverse': None,
|
345
|
+
},
|
346
|
+
'future': {
|
347
|
+
'linear': None,
|
348
|
+
'inverse': None,
|
349
|
+
},
|
350
|
+
},
|
284
351
|
})
|
285
352
|
|
286
353
|
async def fetch_time(self, params={}):
|