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/pro/poloniex.py CHANGED
@@ -6,7 +6,7 @@
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheByTimestamp
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Int, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
9
+ from ccxt.base.types import Any, Balances, Bool, Int, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
10
10
  from ccxt.async_support.base.ws.client import Client
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
@@ -18,7 +18,7 @@ from ccxt.base.precise import Precise
18
18
 
19
19
  class poloniex(ccxt.async_support.poloniex):
20
20
 
21
- def describe(self):
21
+ def describe(self) -> Any:
22
22
  return self.deep_extend(super(poloniex, self).describe(), {
23
23
  'has': {
24
24
  'ws': True,
@@ -27,6 +27,7 @@ class poloniex(ccxt.async_support.poloniex):
27
27
  'watchTicker': True,
28
28
  'watchTickers': True,
29
29
  'watchTrades': True,
30
+ 'watchTradesForSymbols': True,
30
31
  'watchBalance': True,
31
32
  'watchStatus': False,
32
33
  'watchOrders': True,
@@ -84,9 +85,11 @@ class poloniex(ccxt.async_support.poloniex):
84
85
 
85
86
  async def authenticate(self, params={}):
86
87
  """
87
- * @ignore
88
+ @ignore
88
89
  authenticates the user to access private web socket channels
89
- :see: https://docs.poloniex.com/#authenticated-channels-market-data-authentication
90
+
91
+ https://api-docs.poloniex.com/spot/websocket/authentication
92
+
90
93
  :returns dict: response from exchange
91
94
  """
92
95
  self.check_required_credentials()
@@ -137,11 +140,12 @@ class poloniex(ccxt.async_support.poloniex):
137
140
 
138
141
  async def subscribe(self, name: str, messageHash: str, isPrivate: bool, symbols: Strings = None, params={}):
139
142
  """
140
- * @ignore
143
+ @ignore
141
144
  Connects to a websocket channel
142
145
  :param str name: name of the channel
146
+ :param str messageHash: unique identifier for the message
143
147
  :param boolean isPrivate: True for the authenticated url, False for the public url
144
- :param str[]|None symbols: CCXT market symbols
148
+ :param str[] [symbols]: CCXT market symbols
145
149
  :param dict [params]: extra parameters specific to the poloniex api
146
150
  :returns dict: data from the websocket stream
147
151
  """
@@ -166,10 +170,9 @@ class poloniex(ccxt.async_support.poloniex):
166
170
 
167
171
  async def trade_request(self, name: str, params={}):
168
172
  """
169
- * @ignore
173
+ @ignore
170
174
  Connects to a websocket channel
171
175
  :param str name: name of the channel
172
- :param str[]|None symbols: CCXT market symbols
173
176
  :param dict [params]: extra parameters specific to the poloniex api
174
177
  :returns dict: data from the websocket stream
175
178
  """
@@ -184,19 +187,21 @@ class poloniex(ccxt.async_support.poloniex):
184
187
 
185
188
  async def create_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
186
189
  """
187
- :see: https://docs.poloniex.com/#authenticated-channels-trade-requests-create-order
190
+
191
+ https://api-docs.poloniex.com/spot/websocket/trade-request#create-order
192
+
188
193
  create a trade order
189
194
  :param str symbol: unified symbol of the market to create an order in
190
195
  :param str type: 'market' or 'limit'
191
196
  :param str side: 'buy' or 'sell'
192
197
  :param float amount: how much of currency you want to trade in units of base currency
193
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
198
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
194
199
  :param dict [params]: extra parameters specific to the poloniex api endpoint
195
200
  :param str [params.timeInForce]: GTC(default), IOC, FOK
196
201
  :param str [params.clientOrderId]: Maximum 64-character length.*
197
202
  :param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
198
- *
199
- * EXCHANGE SPECIFIC PARAMETERS
203
+
204
+ EXCHANGE SPECIFIC PARAMETERS
200
205
  :param str [params.amount]: quote units for the order
201
206
  :param boolean [params.allowBorrow]: allow order to be placed by borrowing funds(Default: False)
202
207
  :param str [params.stpMode]: self-trade prevention, defaults to expire_taker, none: enable self-trade; expire_taker: taker order will be canceled when self-trade happens
@@ -239,11 +244,15 @@ class poloniex(ccxt.async_support.poloniex):
239
244
  request['quantity'] = self.amount_to_precision(market['symbol'], amount)
240
245
  if price is not None:
241
246
  request['price'] = self.price_to_precision(symbol, price)
242
- return await self.trade_request('createOrder', self.extend(request, params))
247
+ orders = await self.trade_request('createOrder', self.extend(request, params))
248
+ order = self.safe_dict(orders, 0)
249
+ return order
243
250
 
244
251
  async def cancel_order_ws(self, id: str, symbol: Str = None, params={}):
245
252
  """
246
- :see: https://docs.poloniex.com/#authenticated-channels-trade-requests-cancel-multiple-orders
253
+
254
+ https://api-docs.poloniex.com/spot/websocket/trade-request#cancel-multiple-orders
255
+
247
256
  cancel multiple orders
248
257
  :param str id: order id
249
258
  :param str [symbol]: unified market symbol
@@ -255,11 +264,15 @@ class poloniex(ccxt.async_support.poloniex):
255
264
  if clientOrderId is not None:
256
265
  clientOrderIds = self.safe_value(params, 'clientOrderId', [])
257
266
  params['clientOrderIds'] = self.array_concat(clientOrderIds, [clientOrderId])
258
- return await self.cancel_orders_ws([id], symbol, params)
267
+ orders = await self.cancel_orders_ws([id], symbol, params)
268
+ order = self.safe_dict(orders, 0)
269
+ return order
259
270
 
260
271
  async def cancel_orders_ws(self, ids: List[str], symbol: Str = None, params={}):
261
272
  """
262
- :see: https://docs.poloniex.com/#authenticated-channels-trade-requests-cancel-multiple-orders
273
+
274
+ https://api-docs.poloniex.com/spot/websocket/trade-request#cancel-multiple-orders
275
+
263
276
  cancel multiple orders
264
277
  :param str[] ids: order ids
265
278
  :param str symbol: unified market symbol, default is None
@@ -276,7 +289,9 @@ class poloniex(ccxt.async_support.poloniex):
276
289
 
277
290
  async def cancel_all_orders_ws(self, symbol: Str = None, params={}):
278
291
  """
279
- :see: https://docs.poloniex.com/#authenticated-channels-trade-requests-cancel-all-orders
292
+
293
+ https://api-docs.poloniex.com/spot/websocket/trade-request#cancel-all-orders
294
+
280
295
  cancel all open orders of a type. Only applicable to Option in Portfolio Margin mode, and MMP privilege is required.
281
296
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
282
297
  :param dict [params]: extra parameters specific to the poloniex api endpoint
@@ -310,7 +325,9 @@ class poloniex(ccxt.async_support.poloniex):
310
325
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
311
326
  """
312
327
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
313
- :see: https://docs.poloniex.com/#public-channels-market-data-candlesticks
328
+
329
+ https://api-docs.poloniex.com/spot/websocket/market-data#candlesticks
330
+
314
331
  :param str symbol: unified symbol of the market to fetch OHLCV data for
315
332
  :param str timeframe: the length of time each candle represents
316
333
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -331,7 +348,9 @@ class poloniex(ccxt.async_support.poloniex):
331
348
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
332
349
  """
333
350
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
334
- :see: https://docs.poloniex.com/#public-channels-market-data-ticker
351
+
352
+ https://api-docs.poloniex.com/spot/websocket/market-data#ticker
353
+
335
354
  :param str symbol: unified symbol of the market to fetch the ticker for
336
355
  :param dict [params]: extra parameters specific to the exchange API endpoint
337
356
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -344,8 +363,10 @@ class poloniex(ccxt.async_support.poloniex):
344
363
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
345
364
  """
346
365
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
347
- :see: https://docs.poloniex.com/#public-channels-market-data-ticker
348
- :param str symbol: unified symbol of the market to fetch the ticker for
366
+
367
+ https://api-docs.poloniex.com/spot/websocket/market-data#ticker
368
+
369
+ :param str[] symbols:
349
370
  :param dict [params]: extra parameters specific to the exchange API endpoint
350
371
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
351
372
  """
@@ -360,25 +381,59 @@ class poloniex(ccxt.async_support.poloniex):
360
381
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
361
382
  """
362
383
  get the list of most recent trades for a particular symbol
363
- :see: https://docs.poloniex.com/#public-channels-market-data-trades
384
+
385
+ https://api-docs.poloniex.com/spot/websocket/market-data#trades
386
+
364
387
  :param str symbol: unified symbol of the market to fetch trades for
365
388
  :param int [since]: timestamp in ms of the earliest trade to fetch
366
389
  :param int [limit]: the maximum amount of trades to fetch
367
390
  :param dict [params]: extra parameters specific to the exchange API endpoint
368
391
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
369
392
  """
393
+ return await self.watch_trades_for_symbols([symbol], since, limit, params)
394
+
395
+ async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
396
+ """
397
+ get the list of most recent trades for a list of symbols
398
+
399
+ https://api-docs.poloniex.com/spot/websocket/market-data#trades
400
+
401
+ :param str[] symbols: unified symbol of the market to fetch trades for
402
+ :param int [since]: timestamp in ms of the earliest trade to fetch
403
+ :param int [limit]: the maximum amount of trades to fetch
404
+ :param dict [params]: extra parameters specific to the exchange API endpoint
405
+ :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
406
+ """
370
407
  await self.load_markets()
371
- symbol = self.symbol(symbol)
408
+ symbols = self.market_symbols(symbols, None, False, True, True)
372
409
  name = 'trades'
373
- trades = await self.subscribe(name, name, False, [symbol], params)
410
+ url = self.urls['api']['ws']['public']
411
+ marketIds = self.market_ids(symbols)
412
+ subscribe: dict = {
413
+ 'event': 'subscribe',
414
+ 'channel': [
415
+ name,
416
+ ],
417
+ 'symbols': marketIds,
418
+ }
419
+ request = self.extend(subscribe, params)
420
+ messageHashes = []
421
+ if symbols is not None:
422
+ for i in range(0, len(symbols)):
423
+ messageHashes.append(name + '::' + symbols[i])
424
+ trades = await self.watch_multiple(url, messageHashes, request, messageHashes)
374
425
  if self.newUpdates:
375
- limit = trades.getLimit(symbol, limit)
426
+ first = self.safe_value(trades, 0)
427
+ tradeSymbol = self.safe_string(first, 'symbol')
428
+ limit = trades.getLimit(tradeSymbol, limit)
376
429
  return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
377
430
 
378
431
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
379
432
  """
380
433
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
381
- :see: https://docs.poloniex.com/#public-channels-market-data-book-level-2
434
+
435
+ https://api-docs.poloniex.com/spot/websocket/market-data#book-level-2
436
+
382
437
  :param str symbol: unified symbol of the market to fetch the order book for
383
438
  :param int [limit]: not used by poloniex watchOrderBook
384
439
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -394,7 +449,9 @@ class poloniex(ccxt.async_support.poloniex):
394
449
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
395
450
  """
396
451
  watches information on multiple orders made by the user
397
- :see: https://docs.poloniex.com/#authenticated-channels-market-data-orders
452
+
453
+ https://api-docs.poloniex.com/spot/websocket/order
454
+
398
455
  :param str symbol: unified market symbol of the market orders were made in
399
456
  :param int [since]: not used by poloniex watchOrders
400
457
  :param int [limit]: not used by poloniex watchOrders
@@ -415,7 +472,9 @@ class poloniex(ccxt.async_support.poloniex):
415
472
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
416
473
  """
417
474
  watches information on multiple trades made by the user using orders stream
418
- :see: https://docs.poloniex.com/#authenticated-channels-market-data-orders
475
+
476
+ https://api-docs.poloniex.com/spot/websocket/order
477
+
419
478
  :param str symbol: unified market symbol of the market orders were made in
420
479
  :param int [since]: not used by poloniex watchMyTrades
421
480
  :param int [limit]: not used by poloniex watchMyTrades
@@ -437,7 +496,9 @@ class poloniex(ccxt.async_support.poloniex):
437
496
  async def watch_balance(self, params={}) -> Balances:
438
497
  """
439
498
  watch balance and get the amount of funds available for trading or funds locked in orders
440
- :see: https://docs.poloniex.com/#authenticated-channels-market-data-balances
499
+
500
+ https://api-docs.poloniex.com/spot/websocket/balance
501
+
441
502
  :param dict [params]: extra parameters specific to the exchange API endpoint
442
503
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
443
504
  """
@@ -1100,20 +1161,14 @@ class poloniex(ccxt.async_support.poloniex):
1100
1161
  if type == 'auth':
1101
1162
  self.handle_authenticate(client, message)
1102
1163
  elif type is None:
1103
- data = self.safe_value(message, 'data')
1104
- item = self.safe_value(data, 0)
1105
- orderId = self.safe_string(item, 'orderId')
1106
- if orderId == '0':
1107
- self.handle_error_message(client, item)
1108
- else:
1109
- self.handle_order_request(client, message)
1164
+ self.handle_order_request(client, message)
1110
1165
  else:
1111
1166
  data = self.safe_value(message, 'data', [])
1112
1167
  dataLength = len(data)
1113
1168
  if dataLength > 0:
1114
1169
  method(client, message)
1115
1170
 
1116
- def handle_error_message(self, client: Client, message):
1171
+ def handle_error_message(self, client: Client, message) -> Bool:
1117
1172
  #
1118
1173
  # {
1119
1174
  # message: 'Invalid channel value ["ordersss"]',
@@ -1131,12 +1186,40 @@ class poloniex(ccxt.async_support.poloniex):
1131
1186
  # "event": "error",
1132
1187
  # "message": "Platform in maintenance mode"
1133
1188
  # }
1189
+ # {
1190
+ # "id":"1722386782048",
1191
+ # "data":[
1192
+ # {
1193
+ # "orderId":0,
1194
+ # "clientOrderId":null,
1195
+ # "message":"available insufficient",
1196
+ # "code":21721
1197
+ # }
1198
+ # ]
1199
+ # }
1134
1200
  #
1201
+ id = self.safe_string(message, 'id')
1135
1202
  event = self.safe_string(message, 'event')
1136
- orderId = self.safe_string(message, 'orderId')
1203
+ data = self.safe_list(message, 'data')
1204
+ first = self.safe_dict(data, 0)
1205
+ orderId = self.safe_string(first, 'orderId')
1137
1206
  if (event == 'error') or (orderId == '0'):
1138
- error = self.safe_string(message, 'message')
1139
- raise ExchangeError(self.id + ' error: ' + self.json(error))
1207
+ try:
1208
+ error = self.safe_string(first, 'message')
1209
+ code = self.safe_string(first, 'code')
1210
+ feedback = self.id + ' ' + self.json(message)
1211
+ self.throw_exactly_matched_exception(self.exceptions['exact'], code, feedback)
1212
+ self.throw_broadly_matched_exception(self.exceptions['broad'], error, feedback)
1213
+ raise ExchangeError(feedback)
1214
+ except Exception as e:
1215
+ if isinstance(e, AuthenticationError):
1216
+ messageHash = 'authenticated'
1217
+ client.reject(e, messageHash)
1218
+ if messageHash in client.subscriptions:
1219
+ del client.subscriptions[messageHash]
1220
+ else:
1221
+ client.reject(e, id)
1222
+ return True
1140
1223
  return False
1141
1224
 
1142
1225
  def handle_authenticate(self, client: Client, message):
@@ -1160,7 +1243,7 @@ class poloniex(ccxt.async_support.poloniex):
1160
1243
  del client.subscriptions[messageHash]
1161
1244
  return message
1162
1245
 
1163
- def ping(self, client):
1246
+ def ping(self, client: Client):
1164
1247
  return {
1165
1248
  'event': 'ping',
1166
1249
  }