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.
Files changed (113) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/binance.py +1 -0
  3. ccxt/abstract/binancecoinm.py +1 -0
  4. ccxt/abstract/binanceus.py +1 -0
  5. ccxt/abstract/binanceusdm.py +1 -0
  6. ccxt/abstract/bybit.py +1 -0
  7. ccxt/ace.py +58 -0
  8. ccxt/alpaca.py +80 -0
  9. ccxt/ascendex.py +95 -2
  10. ccxt/async_support/__init__.py +1 -1
  11. ccxt/async_support/ace.py +58 -0
  12. ccxt/async_support/alpaca.py +80 -0
  13. ccxt/async_support/ascendex.py +95 -2
  14. ccxt/async_support/base/exchange.py +1 -1
  15. ccxt/async_support/bigone.py +113 -4
  16. ccxt/async_support/binance.py +3 -4
  17. ccxt/async_support/binanceus.py +10 -0
  18. ccxt/async_support/bingx.py +1 -2
  19. ccxt/async_support/bit2c.py +56 -0
  20. ccxt/async_support/bitbank.py +58 -0
  21. ccxt/async_support/bitbns.py +60 -0
  22. ccxt/async_support/bitfinex.py +2 -3
  23. ccxt/async_support/bitfinex1.py +8 -0
  24. ccxt/async_support/bitflyer.py +71 -0
  25. ccxt/async_support/bitget.py +1 -2
  26. ccxt/async_support/bithumb.py +54 -0
  27. ccxt/async_support/bitmex.py +1 -2
  28. ccxt/async_support/bitopro.py +74 -0
  29. ccxt/async_support/bitrue.py +97 -17
  30. ccxt/async_support/bitso.py +59 -0
  31. ccxt/async_support/bitteam.py +73 -0
  32. ccxt/async_support/bitvavo.py +70 -2
  33. ccxt/async_support/bl3p.py +42 -0
  34. ccxt/async_support/blockchaincom.py +66 -2
  35. ccxt/async_support/blofin.py +87 -1
  36. ccxt/async_support/btcalpha.py +73 -0
  37. ccxt/async_support/btcbox.py +58 -0
  38. ccxt/async_support/btcmarkets.py +73 -0
  39. ccxt/async_support/btcturk.py +61 -0
  40. ccxt/async_support/bybit.py +7 -3
  41. ccxt/async_support/cex.py +57 -0
  42. ccxt/async_support/coinbase.py +1 -1
  43. ccxt/async_support/coinbaseexchange.py +76 -0
  44. ccxt/async_support/coinex.py +1 -2
  45. ccxt/async_support/delta.py +1 -2
  46. ccxt/async_support/gate.py +3 -3
  47. ccxt/async_support/hashkey.py +1 -2
  48. ccxt/async_support/hollaex.py +1 -1
  49. ccxt/async_support/htx.py +2 -4
  50. ccxt/async_support/hyperliquid.py +4 -4
  51. ccxt/async_support/krakenfutures.py +2 -0
  52. ccxt/async_support/lbank.py +1 -2
  53. ccxt/async_support/okx.py +13 -9
  54. ccxt/async_support/oxfun.py +1 -2
  55. ccxt/async_support/whitebit.py +2 -2
  56. ccxt/async_support/woo.py +1 -2
  57. ccxt/async_support/woofipro.py +1 -2
  58. ccxt/base/errors.py +6 -0
  59. ccxt/base/exchange.py +16 -14
  60. ccxt/bigone.py +113 -4
  61. ccxt/binance.py +3 -4
  62. ccxt/binanceus.py +10 -0
  63. ccxt/bingx.py +1 -2
  64. ccxt/bit2c.py +56 -0
  65. ccxt/bitbank.py +58 -0
  66. ccxt/bitbns.py +60 -0
  67. ccxt/bitfinex.py +2 -3
  68. ccxt/bitfinex1.py +8 -0
  69. ccxt/bitflyer.py +71 -0
  70. ccxt/bitget.py +1 -2
  71. ccxt/bithumb.py +54 -0
  72. ccxt/bitmex.py +1 -2
  73. ccxt/bitopro.py +74 -0
  74. ccxt/bitrue.py +97 -17
  75. ccxt/bitso.py +59 -0
  76. ccxt/bitteam.py +73 -0
  77. ccxt/bitvavo.py +70 -2
  78. ccxt/bl3p.py +42 -0
  79. ccxt/blockchaincom.py +66 -2
  80. ccxt/blofin.py +87 -1
  81. ccxt/btcalpha.py +73 -0
  82. ccxt/btcbox.py +58 -0
  83. ccxt/btcmarkets.py +73 -0
  84. ccxt/btcturk.py +61 -0
  85. ccxt/bybit.py +7 -3
  86. ccxt/cex.py +57 -0
  87. ccxt/coinbase.py +1 -1
  88. ccxt/coinbaseexchange.py +76 -0
  89. ccxt/coinex.py +1 -2
  90. ccxt/delta.py +1 -2
  91. ccxt/gate.py +3 -3
  92. ccxt/hashkey.py +1 -2
  93. ccxt/hollaex.py +1 -1
  94. ccxt/htx.py +2 -4
  95. ccxt/hyperliquid.py +4 -4
  96. ccxt/krakenfutures.py +2 -0
  97. ccxt/lbank.py +1 -2
  98. ccxt/okx.py +13 -9
  99. ccxt/oxfun.py +1 -2
  100. ccxt/pro/__init__.py +1 -1
  101. ccxt/pro/bingx.py +3 -5
  102. ccxt/pro/bitget.py +2 -4
  103. ccxt/pro/xt.py +1 -1
  104. ccxt/test/tests_async.py +2 -0
  105. ccxt/test/tests_sync.py +2 -0
  106. ccxt/whitebit.py +2 -2
  107. ccxt/woo.py +1 -2
  108. ccxt/woofipro.py +1 -2
  109. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/METADATA +4 -5
  110. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/RECORD +113 -113
  111. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/LICENSE.txt +0 -0
  112. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/WHEEL +0 -0
  113. {ccxt-4.4.46.dist-info → ccxt-4.4.47.dist-info}/top_level.txt +0 -0
@@ -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': {
@@ -460,7 +460,92 @@ class bitrue(Exchange, ImplicitAPI):
460
460
  'MIM': 'MIM Swarm',
461
461
  },
462
462
  'precisionMode': TICK_SIZE,
463
- # https://binance-docs.github.io/apidocs/spot/en/#error-codes-2
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://github.com/Bitrue-exchange/Spot-official-api-docs#kline-data
1293
- https://www.bitrue.com/api-docs#kline-candlestick-data
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://github.com/Bitrue-exchange/Spot-official-api-docs#recent-trades-list
1830
- https://www.bitrue.com/api-docs#new-order-trade-hmac-sha256
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://github.com/Bitrue-exchange/Spot-official-api-docs#query-order-user_data
1954
- https://www.bitrue.com/api-docs#query-order-user_data-hmac-sha256
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://github.com/Bitrue-exchange/Spot-official-api-docs#all-orders-user_data
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://github.com/Bitrue-exchange/Spot-official-api-docs#current-open-orders-user_data
2096
- https://www.bitrue.com/api-docs#current-all-open-orders-user_data-hmac-sha256
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://github.com/Bitrue-exchange/Spot-official-api-docs#account-trade-list-user_data
2280
- https://www.bitrue.com/api-docs#account-trade-list-user_data-hmac-sha256
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
@@ -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
@@ -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"}
@@ -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/Orders/paths/~1order/post
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
  async 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
  async 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/Trades/paths/~1trades/get
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
@@ -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
 
@@ -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.safe_value_2(params, 'stopPx', 'stopPrice')
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')