ccxt-ir 4.3.46.0.2__py2.py3-none-any.whl → 4.5.0__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 (528) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +9 -9
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +7 -7
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +10 -10
  68. ccxt/async_support/afratether.py +9 -9
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +31 -37
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +25 -24
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +29 -35
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +22 -21
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +28 -25
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +12 -11
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/abstract/ace.py +0 -15
  438. ccxt/abstract/bitbay.py +0 -53
  439. ccxt/abstract/bitcoincom.py +0 -115
  440. ccxt/abstract/bitfinex2.py +0 -139
  441. ccxt/abstract/bitpanda.py +0 -35
  442. ccxt/abstract/bl3p.py +0 -19
  443. ccxt/abstract/coinlist.py +0 -54
  444. ccxt/abstract/currencycom.py +0 -68
  445. ccxt/abstract/hitbtc3.py +0 -115
  446. ccxt/abstract/idex.py +0 -26
  447. ccxt/abstract/kuna.py +0 -182
  448. ccxt/abstract/lykke.py +0 -29
  449. ccxt/abstract/poloniexfutures.py +0 -48
  450. ccxt/abstract/wazirx.py +0 -30
  451. ccxt/ace.py +0 -1012
  452. ccxt/async_support/ace.py +0 -1012
  453. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  454. ccxt/async_support/base/ws/fast_client.py +0 -96
  455. ccxt/async_support/bitbay.py +0 -17
  456. ccxt/async_support/bitcoincom.py +0 -17
  457. ccxt/async_support/bitfinex2.py +0 -3552
  458. ccxt/async_support/bitpanda.py +0 -16
  459. ccxt/async_support/bl3p.py +0 -485
  460. ccxt/async_support/coinlist.py +0 -2243
  461. ccxt/async_support/currencycom.py +0 -1950
  462. ccxt/async_support/hitbtc3.py +0 -16
  463. ccxt/async_support/idex.py +0 -1766
  464. ccxt/async_support/kuna.py +0 -1841
  465. ccxt/async_support/lykke.py +0 -1270
  466. ccxt/async_support/poloniexfutures.py +0 -1717
  467. ccxt/async_support/wazirx.py +0 -1224
  468. ccxt/bitbay.py +0 -17
  469. ccxt/bitcoincom.py +0 -17
  470. ccxt/bitfinex2.py +0 -3552
  471. ccxt/bitpanda.py +0 -16
  472. ccxt/bl3p.py +0 -485
  473. ccxt/coinlist.py +0 -2243
  474. ccxt/currencycom.py +0 -1950
  475. ccxt/hitbtc3.py +0 -16
  476. ccxt/idex.py +0 -1766
  477. ccxt/kuna.py +0 -1841
  478. ccxt/lykke.py +0 -1270
  479. ccxt/poloniexfutures.py +0 -1717
  480. ccxt/pro/bitcoincom.py +0 -34
  481. ccxt/pro/bitfinex2.py +0 -1083
  482. ccxt/pro/bitpanda.py +0 -15
  483. ccxt/pro/currencycom.py +0 -536
  484. ccxt/pro/idex.py +0 -672
  485. ccxt/pro/poloniexfutures.py +0 -990
  486. ccxt/pro/wazirx.py +0 -749
  487. ccxt/test/base/__init__.py +0 -29
  488. ccxt/test/base/test_account.py +0 -26
  489. ccxt/test/base/test_balance.py +0 -56
  490. ccxt/test/base/test_borrow_interest.py +0 -35
  491. ccxt/test/base/test_borrow_rate.py +0 -32
  492. ccxt/test/base/test_calculate_fee.py +0 -51
  493. ccxt/test/base/test_crypto.py +0 -127
  494. ccxt/test/base/test_currency.py +0 -76
  495. ccxt/test/base/test_datetime.py +0 -109
  496. ccxt/test/base/test_decimal_to_precision.py +0 -392
  497. ccxt/test/base/test_deep_extend.py +0 -68
  498. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  499. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  500. ccxt/test/base/test_funding_rate_history.py +0 -29
  501. ccxt/test/base/test_last_price.py +0 -31
  502. ccxt/test/base/test_ledger_entry.py +0 -45
  503. ccxt/test/base/test_ledger_item.py +0 -48
  504. ccxt/test/base/test_leverage_tier.py +0 -33
  505. ccxt/test/base/test_liquidation.py +0 -50
  506. ccxt/test/base/test_margin_mode.py +0 -24
  507. ccxt/test/base/test_margin_modification.py +0 -35
  508. ccxt/test/base/test_market.py +0 -193
  509. ccxt/test/base/test_number.py +0 -411
  510. ccxt/test/base/test_ohlcv.py +0 -33
  511. ccxt/test/base/test_open_interest.py +0 -32
  512. ccxt/test/base/test_order.py +0 -64
  513. ccxt/test/base/test_order_book.py +0 -69
  514. ccxt/test/base/test_position.py +0 -60
  515. ccxt/test/base/test_shared_methods.py +0 -353
  516. ccxt/test/base/test_status.py +0 -24
  517. ccxt/test/base/test_throttle.py +0 -126
  518. ccxt/test/base/test_ticker.py +0 -92
  519. ccxt/test/base/test_trade.py +0 -47
  520. ccxt/test/base/test_trading_fee.py +0 -26
  521. ccxt/test/base/test_transaction.py +0 -39
  522. ccxt/test/test_async.py +0 -1649
  523. ccxt/test/test_sync.py +0 -1648
  524. ccxt/wazirx.py +0 -1224
  525. ccxt_ir-4.3.46.0.2.dist-info/RECORD +0 -772
  526. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  527. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  528. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/bitvavo.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.bitvavo import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
9
+ from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -31,7 +31,7 @@ from ccxt.base.precise import Precise
31
31
 
32
32
  class bitvavo(Exchange, ImplicitAPI):
33
33
 
34
- def describe(self):
34
+ def describe(self) -> Any:
35
35
  return self.deep_extend(super(bitvavo, self).describe(), {
36
36
  'id': 'bitvavo',
37
37
  'name': 'Bitvavo',
@@ -48,42 +48,72 @@ class bitvavo(Exchange, ImplicitAPI):
48
48
  'future': False,
49
49
  'option': False,
50
50
  'addMargin': False,
51
+ 'borrowCrossMargin': False,
52
+ 'borrowIsolatedMargin': False,
53
+ 'borrowMargin': False,
51
54
  'cancelAllOrders': True,
52
55
  'cancelOrder': True,
53
56
  'closeAllPositions': False,
54
57
  'closePosition': False,
55
58
  'createOrder': True,
59
+ 'createOrderWithTakeProfitAndStopLoss': False,
60
+ 'createOrderWithTakeProfitAndStopLossWs': False,
61
+ 'createPostOnlyOrder': False,
56
62
  'createReduceOnlyOrder': False,
57
63
  'createStopLimitOrder': True,
58
64
  'createStopMarketOrder': True,
59
65
  'createStopOrder': True,
60
66
  'editOrder': True,
61
67
  'fetchBalance': True,
68
+ 'fetchBorrowInterest': False,
69
+ 'fetchBorrowRate': False,
62
70
  'fetchBorrowRateHistories': False,
63
71
  'fetchBorrowRateHistory': False,
72
+ 'fetchBorrowRates': False,
73
+ 'fetchBorrowRatesPerSymbol': False,
64
74
  'fetchCrossBorrowRate': False,
65
75
  'fetchCrossBorrowRates': False,
66
76
  'fetchCurrencies': True,
67
77
  'fetchDepositAddress': True,
78
+ 'fetchDepositAddresses': False,
79
+ 'fetchDepositAddressesByNetwork': False,
68
80
  'fetchDeposits': True,
69
81
  'fetchDepositWithdrawFee': 'emulated',
70
82
  'fetchDepositWithdrawFees': True,
71
83
  'fetchFundingHistory': False,
84
+ 'fetchFundingInterval': False,
85
+ 'fetchFundingIntervals': False,
72
86
  'fetchFundingRate': False,
73
87
  'fetchFundingRateHistory': False,
74
88
  'fetchFundingRates': False,
89
+ 'fetchGreeks': False,
75
90
  'fetchIndexOHLCV': False,
76
91
  'fetchIsolatedBorrowRate': False,
77
92
  'fetchIsolatedBorrowRates': False,
93
+ 'fetchIsolatedPositions': False,
78
94
  'fetchLeverage': False,
95
+ 'fetchLeverages': False,
79
96
  'fetchLeverageTiers': False,
97
+ 'fetchLiquidations': False,
98
+ 'fetchLongShortRatio': False,
99
+ 'fetchLongShortRatioHistory': False,
100
+ 'fetchMarginAdjustmentHistory': False,
80
101
  'fetchMarginMode': False,
102
+ 'fetchMarginModes': False,
103
+ 'fetchMarketLeverageTiers': False,
81
104
  'fetchMarkets': True,
82
105
  'fetchMarkOHLCV': False,
106
+ 'fetchMarkPrices': False,
107
+ 'fetchMyLiquidations': False,
108
+ 'fetchMySettlementHistory': False,
83
109
  'fetchMyTrades': True,
84
110
  'fetchOHLCV': True,
111
+ 'fetchOpenInterest': False,
85
112
  'fetchOpenInterestHistory': False,
113
+ 'fetchOpenInterests': False,
86
114
  'fetchOpenOrders': True,
115
+ 'fetchOption': False,
116
+ 'fetchOptionChain': False,
87
117
  'fetchOrder': True,
88
118
  'fetchOrderBook': True,
89
119
  'fetchOrders': True,
@@ -95,6 +125,7 @@ class bitvavo(Exchange, ImplicitAPI):
95
125
  'fetchPositionsHistory': False,
96
126
  'fetchPositionsRisk': False,
97
127
  'fetchPremiumIndexOHLCV': False,
128
+ 'fetchSettlementHistory': False,
98
129
  'fetchTicker': True,
99
130
  'fetchTickers': True,
100
131
  'fetchTime': True,
@@ -103,9 +134,14 @@ class bitvavo(Exchange, ImplicitAPI):
103
134
  'fetchTradingFees': True,
104
135
  'fetchTransfer': False,
105
136
  'fetchTransfers': False,
137
+ 'fetchVolatilityHistory': False,
106
138
  'fetchWithdrawals': True,
107
139
  'reduceMargin': False,
140
+ 'repayCrossMargin': False,
141
+ 'repayIsolatedMargin': False,
142
+ 'repayMargin': False,
108
143
  'setLeverage': False,
144
+ 'setMargin': False,
109
145
  'setMarginMode': False,
110
146
  'setPositionMode': False,
111
147
  'transfer': False,
@@ -125,7 +161,7 @@ class bitvavo(Exchange, ImplicitAPI):
125
161
  '1d': '1d',
126
162
  },
127
163
  'urls': {
128
- 'logo': 'https://user-images.githubusercontent.com/1294454/169202626-bd130fc5-fcf9-41bb-8d97-6093225c73cd.jpg',
164
+ 'logo': 'https://github.com/user-attachments/assets/d213155c-8c71-4701-9bd5-45351febc2a8',
129
165
  'api': {
130
166
  'public': 'https://api.bitvavo.com',
131
167
  'private': 'https://api.bitvavo.com',
@@ -210,6 +246,75 @@ class bitvavo(Exchange, ImplicitAPI):
210
246
  'apiKey': True,
211
247
  'secret': True,
212
248
  },
249
+ 'features': {
250
+ 'spot': {
251
+ 'sandbox': False,
252
+ 'createOrder': {
253
+ 'marginMode': False,
254
+ 'triggerPrice': True,
255
+ 'triggerPriceType': None,
256
+ 'triggerDirection': None,
257
+ 'stopLossPrice': True,
258
+ 'takeProfitPrice': True,
259
+ 'attachedStopLossTakeProfit': None,
260
+ 'timeInForce': {
261
+ 'IOC': True,
262
+ 'FOK': True,
263
+ 'PO': True,
264
+ 'GTD': False,
265
+ },
266
+ 'hedged': False,
267
+ 'trailing': False,
268
+ 'leverage': False,
269
+ 'marketBuyRequiresPrice': False,
270
+ 'marketBuyByCost': True,
271
+ 'selfTradePrevention': True, # todo implement
272
+ 'iceberg': False,
273
+ },
274
+ 'createOrders': None,
275
+ 'fetchMyTrades': {
276
+ 'marginMode': False,
277
+ 'limit': 1000,
278
+ 'daysBack': 100000,
279
+ 'untilDays': 100000,
280
+ 'symbolRequired': True,
281
+ },
282
+ 'fetchOrder': {
283
+ 'marginMode': False,
284
+ 'trigger': False,
285
+ 'trailing': False,
286
+ 'symbolRequired': True,
287
+ },
288
+ 'fetchOpenOrders': {
289
+ 'marginMode': False,
290
+ 'limit': None,
291
+ 'trigger': False,
292
+ 'trailing': False,
293
+ 'symbolRequired': True,
294
+ },
295
+ 'fetchOrders': {
296
+ 'marginMode': True,
297
+ 'limit': 1000,
298
+ 'daysBack': 100000,
299
+ 'untilDays': 100000,
300
+ 'trigger': False,
301
+ 'trailing': False,
302
+ 'symbolRequired': True,
303
+ },
304
+ 'fetchClosedOrders': None,
305
+ 'fetchOHLCV': {
306
+ 'limit': 1440,
307
+ },
308
+ },
309
+ 'swap': {
310
+ 'linear': None,
311
+ 'inverse': None,
312
+ },
313
+ 'future': {
314
+ 'linear': None,
315
+ 'inverse': None,
316
+ },
317
+ },
213
318
  'exceptions': {
214
319
  'exact': {
215
320
  '101': ExchangeError, # Unknown error. Operation may or may not have succeeded.
@@ -284,11 +389,14 @@ class bitvavo(Exchange, ImplicitAPI):
284
389
  },
285
390
  },
286
391
  'options': {
392
+ 'currencyToPrecisionRoundingMode': TRUNCATE,
287
393
  'BITVAVO-ACCESS-WINDOW': 10000, # default 10 sec
288
394
  'networks': {
289
395
  'ERC20': 'ETH',
290
396
  'TRC20': 'TRX',
291
397
  },
398
+ 'operatorId': None, # self will be required soon for order-related endpoints
399
+ 'fiatCurrencies': ['EUR'], # only fiat atm
292
400
  },
293
401
  'precisionMode': SIGNIFICANT_DIGITS,
294
402
  'commonCurrencies': {
@@ -296,9 +404,6 @@ class bitvavo(Exchange, ImplicitAPI):
296
404
  },
297
405
  })
298
406
 
299
- def currency_to_precision(self, code, fee, networkCode=None):
300
- return self.decimal_to_precision(fee, 0, self.currencies[code]['precision'], DECIMAL_PLACES)
301
-
302
407
  def amount_to_precision(self, symbol, amount):
303
408
  # https://docs.bitfinex.com/docs/introduction#amount-precision
304
409
  # The amount field allows up to 8 decimals.
@@ -313,7 +418,7 @@ class bitvavo(Exchange, ImplicitAPI):
313
418
  # Prices submit with a precision larger than 5 will be cut by the API.
314
419
  return self.decimal_to_precision(price, TRUNCATE, 8, DECIMAL_PLACES)
315
420
 
316
- def fetch_time(self, params={}):
421
+ def fetch_time(self, params={}) -> Int:
317
422
  """
318
423
  fetches the current integer timestamp in milliseconds from the exchange server
319
424
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -327,7 +432,9 @@ class bitvavo(Exchange, ImplicitAPI):
327
432
 
328
433
  def fetch_markets(self, params={}) -> List[Market]:
329
434
  """
330
- :see: https://docs.bitvavo.com/#tag/General/paths/~1markets/get
435
+
436
+ https://docs.bitvavo.com/#tag/General/paths/~1markets/get
437
+
331
438
  retrieves data on all markets for bitvavo
332
439
  :param dict [params]: extra parameters specific to the exchange API endpoint
333
440
  :returns dict[]: an array of objects representing market data
@@ -419,7 +526,9 @@ class bitvavo(Exchange, ImplicitAPI):
419
526
 
420
527
  def fetch_currencies(self, params={}) -> Currencies:
421
528
  """
422
- :see: https://docs.bitvavo.com/#tag/General/paths/~1assets/get
529
+
530
+ https://docs.bitvavo.com/#tag/General/paths/~1assets/get
531
+
423
532
  fetches all available currencies on an exchange
424
533
  :param dict [params]: extra parameters specific to the exchange API endpoint
425
534
  :returns dict: an associative dictionary of currencies
@@ -458,9 +567,9 @@ class bitvavo(Exchange, ImplicitAPI):
458
567
  # },
459
568
  # ]
460
569
  #
461
- return self.parse_currencies(response)
570
+ return self.parse_currencies_custom(response)
462
571
 
463
- def parse_currencies(self, currencies):
572
+ def parse_currencies_custom(self, currencies):
464
573
  #
465
574
  # [
466
575
  # {
@@ -494,24 +603,24 @@ class bitvavo(Exchange, ImplicitAPI):
494
603
  # },
495
604
  # ]
496
605
  #
606
+ fiatCurrencies = self.safe_list(self.options, 'fiatCurrencies', [])
497
607
  result: dict = {}
498
608
  for i in range(0, len(currencies)):
499
609
  currency = currencies[i]
500
610
  id = self.safe_string(currency, 'symbol')
501
611
  code = self.safe_currency_code(id)
612
+ isFiat = self.in_array(code, fiatCurrencies)
502
613
  networks: dict = {}
503
- networksArray = self.safe_value(currency, 'networks', [])
504
- networksLength = len(networksArray)
505
- isOneNetwork = (networksLength == 1)
506
- deposit = (self.safe_value(currency, 'depositStatus') == 'OK')
507
- withdrawal = (self.safe_value(currency, 'withdrawalStatus') == 'OK')
614
+ networksArray = self.safe_list(currency, 'networks', [])
615
+ deposit = self.safe_string(currency, 'depositStatus') == 'OK'
616
+ withdrawal = self.safe_string(currency, 'withdrawalStatus') == 'OK'
508
617
  active = deposit and withdrawal
509
618
  withdrawFee = self.safe_number(currency, 'withdrawalFee')
510
619
  precision = self.safe_integer(currency, 'decimals', 8)
511
620
  minWithdraw = self.safe_number(currency, 'withdrawalMinAmount')
512
- # absolutely all of them have 1 network atm - ETH. So, we can reliably assign that inside networks
513
- if isOneNetwork:
514
- networkId = networksArray[0]
621
+ # btw, absolutely all of them have 1 network atm
622
+ for j in range(0, len(networksArray)):
623
+ networkId = networksArray[j]
515
624
  networkCode = self.network_id_to_code(networkId)
516
625
  networks[networkCode] = {
517
626
  'info': currency,
@@ -529,7 +638,7 @@ class bitvavo(Exchange, ImplicitAPI):
529
638
  },
530
639
  },
531
640
  }
532
- result[code] = {
641
+ result[code] = self.safe_currency_structure({
533
642
  'info': currency,
534
643
  'id': id,
535
644
  'code': code,
@@ -540,6 +649,7 @@ class bitvavo(Exchange, ImplicitAPI):
540
649
  'networks': networks,
541
650
  'fee': withdrawFee,
542
651
  'precision': precision,
652
+ 'type': 'fiat' if isFiat else 'crypto',
543
653
  'limits': {
544
654
  'amount': {
545
655
  'min': None,
@@ -554,14 +664,16 @@ class bitvavo(Exchange, ImplicitAPI):
554
664
  'max': None,
555
665
  },
556
666
  },
557
- }
667
+ })
558
668
  # set currencies here to avoid calling publicGetAssets twice
559
- self.currencies = self.deep_extend(self.currencies, result)
669
+ self.currencies = self.map_to_safe_map(self.deep_extend(self.currencies, result))
560
670
  return result
561
671
 
562
672
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
563
673
  """
564
- :see: https://docs.bitvavo.com/#tag/Market-Data/paths/~1ticker~124h/get
674
+
675
+ https://docs.bitvavo.com/#tag/Market-Data/paths/~1ticker~124h/get
676
+
565
677
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
566
678
  :param str symbol: unified symbol of the market to fetch the ticker for
567
679
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -671,7 +783,9 @@ class bitvavo(Exchange, ImplicitAPI):
671
783
 
672
784
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
673
785
  """
674
- :see: https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1trades/get
786
+
787
+ https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1trades/get
788
+
675
789
  get the list of most recent trades for a particular symbol
676
790
  :param str symbol: unified symbol of the market to fetch trades for
677
791
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -810,7 +924,9 @@ class bitvavo(Exchange, ImplicitAPI):
810
924
 
811
925
  def fetch_trading_fees(self, params={}) -> TradingFees:
812
926
  """
813
- :see: https://docs.bitvavo.com/#tag/Account/paths/~1account/get
927
+
928
+ https://docs.bitvavo.com/#tag/Account/paths/~1account/get
929
+
814
930
  fetch the trading fees for multiple markets
815
931
  :param dict [params]: extra parameters specific to the exchange API endpoint
816
932
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
@@ -856,7 +972,9 @@ class bitvavo(Exchange, ImplicitAPI):
856
972
 
857
973
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
858
974
  """
859
- :see: https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1book/get
975
+
976
+ https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1book/get
977
+
860
978
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
861
979
  :param str symbol: unified symbol of the market to fetch the order book for
862
980
  :param int [limit]: the maximum amount of order book entries to return
@@ -936,7 +1054,9 @@ class bitvavo(Exchange, ImplicitAPI):
936
1054
 
937
1055
  def fetch_ohlcv(self, symbol: Str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
938
1056
  """
939
- :see: https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1candles/get
1057
+
1058
+ https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1candles/get
1059
+
940
1060
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
941
1061
  :param str symbol: unified symbol of the market to fetch OHLCV data for
942
1062
  :param str timeframe: the length of time each candle represents
@@ -982,7 +1102,9 @@ class bitvavo(Exchange, ImplicitAPI):
982
1102
 
983
1103
  def fetch_balance(self, params={}) -> Balances:
984
1104
  """
985
- :see: https://docs.bitvavo.com/#tag/Account/paths/~1balance/get
1105
+
1106
+ https://docs.bitvavo.com/#tag/Account/paths/~1balance/get
1107
+
986
1108
  query for balance and get the amount of funds available for trading or funds locked in orders
987
1109
  :param dict [params]: extra parameters specific to the exchange API endpoint
988
1110
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -1000,7 +1122,7 @@ class bitvavo(Exchange, ImplicitAPI):
1000
1122
  #
1001
1123
  return self.parse_balance(response)
1002
1124
 
1003
- def fetch_deposit_address(self, code: str, params={}):
1125
+ def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1004
1126
  """
1005
1127
  fetch the deposit address for a currency associated with self account
1006
1128
  :param str code: unified currency code
@@ -1023,11 +1145,11 @@ class bitvavo(Exchange, ImplicitAPI):
1023
1145
  tag = self.safe_string(response, 'paymentId')
1024
1146
  self.check_address(address)
1025
1147
  return {
1148
+ 'info': response,
1026
1149
  'currency': code,
1150
+ 'network': None,
1027
1151
  'address': address,
1028
1152
  'tag': tag,
1029
- 'network': None,
1030
- 'info': response,
1031
1153
  }
1032
1154
 
1033
1155
  def create_order_request(self, symbol: Str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
@@ -1081,20 +1203,28 @@ class bitvavo(Exchange, ImplicitAPI):
1081
1203
  request['timeInForce'] = timeInForce
1082
1204
  if postOnly:
1083
1205
  request['postOnly'] = True
1206
+ operatorId = None
1207
+ operatorId, params = self.handle_option_and_params(params, 'createOrder', 'operatorId')
1208
+ if operatorId is not None:
1209
+ request['operatorId'] = self.parse_to_int(operatorId)
1210
+ else:
1211
+ raise ArgumentsRequired(self.id + ' createOrder() requires an operatorId in params or options, eg: exchange.options[\'operatorId\'] = 1234567890')
1084
1212
  return self.extend(request, params)
1085
1213
 
1086
1214
  def create_order(self, symbol: Str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1087
1215
  """
1088
1216
  create a trade order
1089
- :see: https://docs.bitvavo.com/#tag/Orders/paths/~1order/post
1217
+
1218
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/post
1219
+
1090
1220
  :param str symbol: unified symbol of the market to create an order in
1091
1221
  :param str type: 'market' or 'limit'
1092
1222
  :param str side: 'buy' or 'sell'
1093
1223
  :param float amount: how much of currency you want to trade in units of base currency
1094
- :param float price: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1224
+ :param float price: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1095
1225
  :param dict [params]: extra parameters specific to the bitvavo api endpoint
1096
1226
  :param str [params.timeInForce]: "GTC", "IOC", or "PO"
1097
- :param float [params.stopPrice]: The price at which a trigger order is triggered at
1227
+ :param float [params.stopPrice]: Alias for triggerPrice
1098
1228
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
1099
1229
  :param bool [params.postOnly]: If True, the order will only be posted to the order book and not executed immediately
1100
1230
  :param float [params.stopLossPrice]: The price at which a stop loss order is triggered at
@@ -1172,19 +1302,27 @@ class bitvavo(Exchange, ImplicitAPI):
1172
1302
  clientOrderId = self.safe_string(params, 'clientOrderId')
1173
1303
  if clientOrderId is None:
1174
1304
  request['orderId'] = id
1305
+ operatorId = None
1306
+ operatorId, params = self.handle_option_and_params(params, 'editOrder', 'operatorId')
1307
+ if operatorId is not None:
1308
+ request['operatorId'] = self.parse_to_int(operatorId)
1309
+ else:
1310
+ raise ArgumentsRequired(self.id + ' editOrder() requires an operatorId in params or options, eg: exchange.options[\'operatorId\'] = 1234567890')
1175
1311
  request['market'] = market['id']
1176
1312
  return request
1177
1313
 
1178
1314
  def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
1179
1315
  """
1180
1316
  edit a trade order
1181
- :see: https://docs.bitvavo.com/#tag/Orders/paths/~1order/put
1317
+
1318
+ https://docs.bitvavo.com/#tag/Orders/paths/~1order/put
1319
+
1182
1320
  :param str id: cancel order id
1183
1321
  :param str symbol: unified symbol of the market to create an order in
1184
1322
  :param str type: 'market' or 'limit'
1185
1323
  :param str side: 'buy' or 'sell'
1186
1324
  :param float [amount]: how much of currency you want to trade in units of base currency
1187
- :param float [price]: the price at which the order is to be fullfilled, in units of the base currency, ignored in market orders
1325
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1188
1326
  :param dict [params]: extra parameters specific to the bitvavo api endpoint
1189
1327
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1190
1328
  """
@@ -1204,13 +1342,23 @@ class bitvavo(Exchange, ImplicitAPI):
1204
1342
  clientOrderId = self.safe_string(params, 'clientOrderId')
1205
1343
  if clientOrderId is None:
1206
1344
  request['orderId'] = id
1345
+ operatorId = None
1346
+ operatorId, params = self.handle_option_and_params(params, 'cancelOrder', 'operatorId')
1347
+ if operatorId is not None:
1348
+ request['operatorId'] = self.parse_to_int(operatorId)
1349
+ else:
1350
+ raise ArgumentsRequired(self.id + ' cancelOrder() requires an operatorId in params or options, eg: exchange.options[\'operatorId\'] = 1234567890')
1207
1351
  return self.extend(request, params)
1208
1352
 
1209
1353
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1210
1354
  """
1211
- :see: https://docs.bitvavo.com/#tag/Orders/paths/~1order/delete
1355
+
1356
+ https://docs.bitvavo.com/#tag/Orders/paths/~1order/delete
1357
+
1212
1358
  cancels an open order
1213
- :see: https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/delete
1359
+
1360
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/delete
1361
+
1214
1362
  :param str id: order id
1215
1363
  :param str symbol: unified symbol of the market the order was made in
1216
1364
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1229,7 +1377,9 @@ class bitvavo(Exchange, ImplicitAPI):
1229
1377
 
1230
1378
  def cancel_all_orders(self, symbol: Str = None, params={}):
1231
1379
  """
1232
- :see: https://docs.bitvavo.com/#tag/Orders/paths/~1orders/delete
1380
+
1381
+ https://docs.bitvavo.com/#tag/Orders/paths/~1orders/delete
1382
+
1233
1383
  cancel all open orders
1234
1384
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
1235
1385
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1254,7 +1404,10 @@ class bitvavo(Exchange, ImplicitAPI):
1254
1404
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1255
1405
  """
1256
1406
  fetches information on an order made by the user
1257
- :see: https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/get
1407
+
1408
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/get
1409
+
1410
+ :param str id: the order id
1258
1411
  :param str symbol: unified symbol of the market the order was made in
1259
1412
  :param dict [params]: extra parameters specific to the exchange API endpoint
1260
1413
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1325,7 +1478,9 @@ class bitvavo(Exchange, ImplicitAPI):
1325
1478
 
1326
1479
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1327
1480
  """
1328
- :see: https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1orders/get
1481
+
1482
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1orders/get
1483
+
1329
1484
  fetches information on multiple orders made by the user
1330
1485
  :param str symbol: unified market symbol of the market orders were made in
1331
1486
  :param int [since]: the earliest time in ms to fetch orders for
@@ -1385,6 +1540,9 @@ class bitvavo(Exchange, ImplicitAPI):
1385
1540
 
1386
1541
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1387
1542
  """
1543
+
1544
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1ordersOpen/get
1545
+
1388
1546
  fetch all unfilled currently open orders
1389
1547
  :param str symbol: unified market symbol
1390
1548
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -1533,7 +1691,6 @@ class bitvavo(Exchange, ImplicitAPI):
1533
1691
  timeInForce = self.safe_string(order, 'timeInForce')
1534
1692
  postOnly = self.safe_value(order, 'postOnly')
1535
1693
  # https://github.com/ccxt/ccxt/issues/8489
1536
- stopPrice = self.safe_number(order, 'triggerPrice')
1537
1694
  return self.safe_order({
1538
1695
  'info': order,
1539
1696
  'id': id,
@@ -1547,8 +1704,7 @@ class bitvavo(Exchange, ImplicitAPI):
1547
1704
  'postOnly': postOnly,
1548
1705
  'side': side,
1549
1706
  'price': price,
1550
- 'stopPrice': stopPrice,
1551
- 'triggerPrice': stopPrice,
1707
+ 'triggerPrice': self.safe_number(order, 'triggerPrice'),
1552
1708
  'amount': amount,
1553
1709
  'cost': cost,
1554
1710
  'average': None,
@@ -1578,7 +1734,9 @@ class bitvavo(Exchange, ImplicitAPI):
1578
1734
 
1579
1735
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1580
1736
  """
1581
- :see: https://docs.bitvavo.com/#tag/Trades/paths/~1trades/get
1737
+
1738
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1trades/get
1739
+
1582
1740
  fetch all trades made by the user
1583
1741
  :param str symbol: unified market symbol
1584
1742
  :param int [since]: the earliest time in ms to fetch trades for
@@ -1630,7 +1788,7 @@ class bitvavo(Exchange, ImplicitAPI):
1630
1788
  request['paymentId'] = tag
1631
1789
  return self.extend(request, params)
1632
1790
 
1633
- def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
1791
+ def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
1634
1792
  """
1635
1793
  make a withdrawal
1636
1794
  :param str code: unified currency code
@@ -1674,7 +1832,9 @@ class bitvavo(Exchange, ImplicitAPI):
1674
1832
 
1675
1833
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1676
1834
  """
1677
- :see: https://docs.bitvavo.com/#tag/Account/paths/~1withdrawalHistory/get
1835
+
1836
+ https://docs.bitvavo.com/#tag/Account/paths/~1withdrawalHistory/get
1837
+
1678
1838
  fetch all withdrawals made from an account
1679
1839
  :param str code: unified currency code
1680
1840
  :param int [since]: the earliest time in ms to fetch withdrawals for
@@ -1723,7 +1883,9 @@ class bitvavo(Exchange, ImplicitAPI):
1723
1883
 
1724
1884
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1725
1885
  """
1726
- :see: https://docs.bitvavo.com/#tag/Account/paths/~1depositHistory/get
1886
+
1887
+ https://docs.bitvavo.com/#tag/Account/paths/~1depositHistory/get
1888
+
1727
1889
  fetch all deposits made to an account
1728
1890
  :param str code: unified currency code
1729
1891
  :param int [since]: the earliest time in ms to fetch deposits for
@@ -1888,7 +2050,9 @@ class bitvavo(Exchange, ImplicitAPI):
1888
2050
  def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
1889
2051
  """
1890
2052
  fetch deposit and withdraw fees
1891
- :see: https://docs.bitvavo.com/#tag/General/paths/~1assets/get
2053
+
2054
+ https://docs.bitvavo.com/#tag/General/paths/~1assets/get
2055
+
1892
2056
  :param str[]|None codes: list of unified currency codes
1893
2057
  :param dict [params]: extra parameters specific to the exchange API endpoint
1894
2058
  :returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`