ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.1__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 (529) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +8 -8
  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 +8 -8
  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 +8 -8
  68. ccxt/async_support/afratether.py +10 -10
  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 +32 -38
  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 +32 -27
  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 +34 -30
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +15 -14
  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 +30 -36
  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 +29 -24
  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 +32 -28
  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 +13 -12
  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.3.dist-info → ccxt_ir-4.5.1.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.1.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/WHEEL +1 -1
  437. ccxt/__test__.py +0 -7
  438. ccxt/abstract/ace.py +0 -15
  439. ccxt/abstract/bitbay.py +0 -53
  440. ccxt/abstract/bitcoincom.py +0 -115
  441. ccxt/abstract/bitfinex2.py +0 -139
  442. ccxt/abstract/bitpanda.py +0 -35
  443. ccxt/abstract/bl3p.py +0 -19
  444. ccxt/abstract/coinlist.py +0 -54
  445. ccxt/abstract/currencycom.py +0 -68
  446. ccxt/abstract/hitbtc3.py +0 -115
  447. ccxt/abstract/idex.py +0 -26
  448. ccxt/abstract/kuna.py +0 -182
  449. ccxt/abstract/lykke.py +0 -29
  450. ccxt/abstract/poloniexfutures.py +0 -48
  451. ccxt/abstract/wazirx.py +0 -30
  452. ccxt/ace.py +0 -1012
  453. ccxt/async_support/ace.py +0 -1012
  454. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  455. ccxt/async_support/base/ws/fast_client.py +0 -96
  456. ccxt/async_support/bitbay.py +0 -17
  457. ccxt/async_support/bitcoincom.py +0 -17
  458. ccxt/async_support/bitfinex2.py +0 -3552
  459. ccxt/async_support/bitpanda.py +0 -16
  460. ccxt/async_support/bl3p.py +0 -485
  461. ccxt/async_support/coinlist.py +0 -2243
  462. ccxt/async_support/currencycom.py +0 -1950
  463. ccxt/async_support/hitbtc3.py +0 -16
  464. ccxt/async_support/idex.py +0 -1766
  465. ccxt/async_support/kuna.py +0 -1841
  466. ccxt/async_support/lykke.py +0 -1270
  467. ccxt/async_support/poloniexfutures.py +0 -1717
  468. ccxt/async_support/wazirx.py +0 -1224
  469. ccxt/bitbay.py +0 -17
  470. ccxt/bitcoincom.py +0 -17
  471. ccxt/bitfinex2.py +0 -3552
  472. ccxt/bitpanda.py +0 -16
  473. ccxt/bl3p.py +0 -485
  474. ccxt/coinlist.py +0 -2243
  475. ccxt/currencycom.py +0 -1950
  476. ccxt/hitbtc3.py +0 -16
  477. ccxt/idex.py +0 -1766
  478. ccxt/kuna.py +0 -1841
  479. ccxt/lykke.py +0 -1270
  480. ccxt/poloniexfutures.py +0 -1717
  481. ccxt/pro/bitcoincom.py +0 -34
  482. ccxt/pro/bitfinex2.py +0 -1083
  483. ccxt/pro/bitpanda.py +0 -15
  484. ccxt/pro/currencycom.py +0 -536
  485. ccxt/pro/idex.py +0 -672
  486. ccxt/pro/poloniexfutures.py +0 -990
  487. ccxt/pro/wazirx.py +0 -749
  488. ccxt/test/base/__init__.py +0 -29
  489. ccxt/test/base/test_account.py +0 -26
  490. ccxt/test/base/test_balance.py +0 -56
  491. ccxt/test/base/test_borrow_interest.py +0 -35
  492. ccxt/test/base/test_borrow_rate.py +0 -32
  493. ccxt/test/base/test_calculate_fee.py +0 -51
  494. ccxt/test/base/test_crypto.py +0 -127
  495. ccxt/test/base/test_currency.py +0 -76
  496. ccxt/test/base/test_datetime.py +0 -109
  497. ccxt/test/base/test_decimal_to_precision.py +0 -392
  498. ccxt/test/base/test_deep_extend.py +0 -68
  499. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  500. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  501. ccxt/test/base/test_funding_rate_history.py +0 -29
  502. ccxt/test/base/test_last_price.py +0 -31
  503. ccxt/test/base/test_ledger_entry.py +0 -45
  504. ccxt/test/base/test_ledger_item.py +0 -48
  505. ccxt/test/base/test_leverage_tier.py +0 -33
  506. ccxt/test/base/test_liquidation.py +0 -50
  507. ccxt/test/base/test_margin_mode.py +0 -24
  508. ccxt/test/base/test_margin_modification.py +0 -35
  509. ccxt/test/base/test_market.py +0 -193
  510. ccxt/test/base/test_number.py +0 -411
  511. ccxt/test/base/test_ohlcv.py +0 -33
  512. ccxt/test/base/test_open_interest.py +0 -32
  513. ccxt/test/base/test_order.py +0 -64
  514. ccxt/test/base/test_order_book.py +0 -69
  515. ccxt/test/base/test_position.py +0 -60
  516. ccxt/test/base/test_shared_methods.py +0 -353
  517. ccxt/test/base/test_status.py +0 -24
  518. ccxt/test/base/test_throttle.py +0 -126
  519. ccxt/test/base/test_ticker.py +0 -92
  520. ccxt/test/base/test_trade.py +0 -47
  521. ccxt/test/base/test_trading_fee.py +0 -26
  522. ccxt/test/base/test_transaction.py +0 -39
  523. ccxt/test/test_async.py +0 -1649
  524. ccxt/test/test_sync.py +0 -1648
  525. ccxt/wazirx.py +0 -1224
  526. ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
  527. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  528. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/top_level.txt +0 -0
ccxt/pro/bitmex.py CHANGED
@@ -6,7 +6,7 @@
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide, ArrayCacheByTimestamp
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Int, Liquidation, Order, OrderBook, Position, Str, Strings, Ticker, Tickers, Trade
9
+ from ccxt.base.types import Any, Balances, Bool, Int, Liquidation, Order, OrderBook, Position, 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
@@ -16,7 +16,7 @@ from ccxt.base.errors import RateLimitExceeded
16
16
 
17
17
  class bitmex(ccxt.async_support.bitmex):
18
18
 
19
- def describe(self):
19
+ def describe(self) -> Any:
20
20
  return self.deep_extend(super(bitmex, self).describe(), {
21
21
  'has': {
22
22
  'ws': True,
@@ -66,6 +66,9 @@ class bitmex(ccxt.async_support.bitmex):
66
66
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
67
67
  """
68
68
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
69
+
70
+ https://www.bitmex.com/app/wsAPI#Subscriptions
71
+
69
72
  :param str symbol: unified symbol of the market to fetch the ticker for
70
73
  :param dict [params]: extra parameters specific to the exchange API endpoint
71
74
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -78,6 +81,9 @@ class bitmex(ccxt.async_support.bitmex):
78
81
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
79
82
  """
80
83
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
84
+
85
+ https://www.bitmex.com/app/wsAPI#Subscriptions
86
+
81
87
  :param str[] symbols: unified symbol of the market to fetch the ticker for
82
88
  :param dict [params]: extra parameters specific to the exchange API endpoint
83
89
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -357,7 +363,9 @@ class bitmex(ccxt.async_support.bitmex):
357
363
  async def watch_liquidations(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Liquidation]:
358
364
  """
359
365
  watch the public liquidations of a trading pair
360
- :see: https://www.bitmex.com/app/wsAPI#Liquidation
366
+
367
+ https://www.bitmex.com/app/wsAPI#Liquidation
368
+
361
369
  :param str symbol: unified CCXT market symbol
362
370
  :param int [since]: the earliest time in ms to fetch liquidations for
363
371
  :param int [limit]: the maximum number of liquidation structures to retrieve
@@ -366,11 +374,13 @@ class bitmex(ccxt.async_support.bitmex):
366
374
  """
367
375
  return self.watch_liquidations_for_symbols([symbol], since, limit, params)
368
376
 
369
- async def watch_liquidations_for_symbols(self, symbols: List[str] = None, since: Int = None, limit: Int = None, params={}) -> List[Liquidation]:
377
+ async def watch_liquidations_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Liquidation]:
370
378
  """
371
379
  watch the public liquidations of a trading pair
372
- :see: https://www.bitmex.com/app/wsAPI#Liquidation
373
- :param str symbol: unified CCXT market symbol
380
+
381
+ https://www.bitmex.com/app/wsAPI#Liquidation
382
+
383
+ :param str[] symbols:
374
384
  :param int [since]: the earliest time in ms to fetch liquidations for
375
385
  :param int [limit]: the maximum number of liquidation structures to retrieve
376
386
  :param dict [params]: exchange specific parameters for the bitmex api endpoint
@@ -449,6 +459,9 @@ class bitmex(ccxt.async_support.bitmex):
449
459
  async def watch_balance(self, params={}) -> Balances:
450
460
  """
451
461
  watch balance and get the amount of funds available for trading or funds locked in orders
462
+
463
+ https://www.bitmex.com/app/wsAPI#Subscriptions
464
+
452
465
  :param dict [params]: extra parameters specific to the exchange API endpoint
453
466
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
454
467
  """
@@ -651,6 +664,9 @@ class bitmex(ccxt.async_support.bitmex):
651
664
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
652
665
  """
653
666
  get the list of most recent trades for a particular symbol
667
+
668
+ https://www.bitmex.com/app/wsAPI#Subscriptions
669
+
654
670
  :param str symbol: unified symbol of the market to fetch trades for
655
671
  :param int [since]: timestamp in ms of the earliest trade to fetch
656
672
  :param int [limit]: the maximum amount of trades to fetch
@@ -697,9 +713,13 @@ class bitmex(ccxt.async_support.bitmex):
697
713
 
698
714
  async def watch_positions(self, symbols: Strings = None, since: Int = None, limit: Int = None, params={}) -> List[Position]:
699
715
  """
700
- :see: https://www.bitmex.com/app/wsAPI
701
716
  watch all open positions
717
+
718
+ https://www.bitmex.com/app/wsAPI#Subscriptions
719
+
702
720
  :param str[]|None symbols: list of unified market symbols
721
+ :param int [since]: the earliest time in ms to watch positions for
722
+ :param int [limit]: the maximum number of positions to retrieve
703
723
  :param dict params: extra parameters specific to the exchange API endpoint
704
724
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/en/latest/manual.html#position-structure>`
705
725
  """
@@ -894,6 +914,9 @@ class bitmex(ccxt.async_support.bitmex):
894
914
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
895
915
  """
896
916
  watches information on multiple orders made by the user
917
+
918
+ https://www.bitmex.com/app/wsAPI#Subscriptions
919
+
897
920
  :param str symbol: unified market symbol of the market orders were made in
898
921
  :param int [since]: the earliest time in ms to fetch orders for
899
922
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1100,11 +1123,14 @@ class bitmex(ccxt.async_support.bitmex):
1100
1123
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1101
1124
  """
1102
1125
  watches information on multiple trades made by the user
1126
+
1127
+ https://www.bitmex.com/app/wsAPI#Subscriptions
1128
+
1103
1129
  :param str symbol: unified market symbol of the market trades were made in
1104
1130
  :param int [since]: the earliest time in ms to fetch trades for
1105
1131
  :param int [limit]: the maximum number of trade structures to retrieve
1106
1132
  :param dict [params]: extra parameters specific to the exchange API endpoint
1107
- :returns dict[]: a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
1133
+ :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1108
1134
  """
1109
1135
  await self.load_markets()
1110
1136
  await self.authenticate()
@@ -1209,6 +1235,9 @@ class bitmex(ccxt.async_support.bitmex):
1209
1235
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
1210
1236
  """
1211
1237
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
1238
+
1239
+ https://www.bitmex.com/app/wsAPI#OrderBookL2
1240
+
1212
1241
  :param str symbol: unified symbol of the market to fetch the order book for
1213
1242
  :param int [limit]: the maximum amount of order book entries to return
1214
1243
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1219,6 +1248,9 @@ class bitmex(ccxt.async_support.bitmex):
1219
1248
  async def watch_order_book_for_symbols(self, symbols: List[str], limit: Int = None, params={}) -> OrderBook:
1220
1249
  """
1221
1250
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
1251
+
1252
+ https://www.bitmex.com/app/wsAPI#OrderBookL2
1253
+
1222
1254
  :param str[] symbols: unified array of symbols
1223
1255
  :param int [limit]: the maximum amount of order book entries to return
1224
1256
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1255,6 +1287,9 @@ class bitmex(ccxt.async_support.bitmex):
1255
1287
  async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1256
1288
  """
1257
1289
  get the list of most recent trades for a list of symbols
1290
+
1291
+ https://www.bitmex.com/app/wsAPI#Subscriptions
1292
+
1258
1293
  :param str[] symbols: unified symbol of the market to fetch trades for
1259
1294
  :param int [since]: timestamp in ms of the earliest trade to fetch
1260
1295
  :param int [limit]: the maximum amount of trades to fetch
@@ -1288,6 +1323,9 @@ class bitmex(ccxt.async_support.bitmex):
1288
1323
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1289
1324
  """
1290
1325
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1326
+
1327
+ https://www.bitmex.com/app/wsAPI#Subscriptions
1328
+
1291
1329
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1292
1330
  :param str timeframe: the length of time each candle represents
1293
1331
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -1558,7 +1596,7 @@ class bitmex(ccxt.async_support.bitmex):
1558
1596
  #
1559
1597
  return message
1560
1598
 
1561
- def handle_error_message(self, client: Client, message):
1599
+ def handle_error_message(self, client: Client, message) -> Bool:
1562
1600
  #
1563
1601
  # generic error format
1564
1602
  #
ccxt/pro/bitopro.py CHANGED
@@ -6,7 +6,7 @@
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Int, Market, OrderBook, Str, Ticker, Trade
9
+ from ccxt.base.types import Any, Balances, Int, Market, OrderBook, Str, Ticker, 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
@@ -14,7 +14,7 @@ from ccxt.base.errors import ExchangeError
14
14
 
15
15
  class bitopro(ccxt.async_support.bitopro):
16
16
 
17
- def describe(self):
17
+ def describe(self) -> Any:
18
18
  return self.deep_extend(super(bitopro, self).describe(), {
19
19
  'has': {
20
20
  'ws': True,
@@ -26,6 +26,7 @@ class bitopro(ccxt.async_support.bitopro):
26
26
  'watchTicker': True,
27
27
  'watchTickers': False,
28
28
  'watchTrades': True,
29
+ 'watchTradesForSymbols': False,
29
30
  },
30
31
  'urls': {
31
32
  'ws': {
@@ -57,7 +58,9 @@ class bitopro(ccxt.async_support.bitopro):
57
58
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
58
59
  """
59
60
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
60
- :see: https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/public/order_book_stream.md
61
+
62
+ https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/public/order_book_stream.md
63
+
61
64
  :param str symbol: unified symbol of the market to fetch the order book for
62
65
  :param int [limit]: the maximum amount of order book entries to return
63
66
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -74,7 +77,7 @@ class bitopro(ccxt.async_support.bitopro):
74
77
  if limit is None:
75
78
  endPart = market['id']
76
79
  else:
77
- endPart = market['id'] + ':' + limit
80
+ endPart = market['id'] + ':' + self.number_to_string(limit)
78
81
  orderbook = await self.watch_public('order-books', messageHash, endPart)
79
82
  return orderbook.limit()
80
83
 
@@ -116,7 +119,9 @@ class bitopro(ccxt.async_support.bitopro):
116
119
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
117
120
  """
118
121
  get the list of most recent trades for a particular symbol
119
- :see: https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/public/trade_stream.md
122
+
123
+ https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/public/trade_stream.md
124
+
120
125
  :param str symbol: unified symbol of the market to fetch trades for
121
126
  :param int [since]: timestamp in ms of the earliest trade to fetch
122
127
  :param int [limit]: the maximum amount of trades to fetch
@@ -171,12 +176,14 @@ class bitopro(ccxt.async_support.bitopro):
171
176
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
172
177
  """
173
178
  watches information on multiple trades made by the user
174
- :see: https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/private/matches_stream.md
179
+
180
+ https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/private/matches_stream.md
181
+
175
182
  :param str symbol: unified market symbol of the market trades were made in
176
183
  :param int [since]: the earliest time in ms to fetch trades for
177
184
  :param int [limit]: the maximum number of trade structures to retrieve
178
185
  :param dict [params]: extra parameters specific to the exchange API endpoint
179
- :returns dict[]: a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
186
+ :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
180
187
  """
181
188
  self.check_required_credentials()
182
189
  await self.load_markets()
@@ -231,7 +238,7 @@ class bitopro(ccxt.async_support.bitopro):
231
238
  client.resolve(trades, messageHash)
232
239
  client.resolve(trades, messageHash + ':' + symbol)
233
240
 
234
- def parse_ws_trade(self, trade, market: Market = None) -> Trade:
241
+ def parse_ws_trade(self, trade: dict, market: Market = None) -> Trade:
235
242
  #
236
243
  # {
237
244
  # "base": "usdt",
@@ -303,7 +310,9 @@ class bitopro(ccxt.async_support.bitopro):
303
310
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
304
311
  """
305
312
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
306
- :see: https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/public/ticker_stream.md
313
+
314
+ https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/public/ticker_stream.md
315
+
307
316
  :param str symbol: unified symbol of the market to fetch the ticker for
308
317
  :param dict [params]: extra parameters specific to the exchange API endpoint
309
318
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -334,15 +343,16 @@ class bitopro(ccxt.async_support.bitopro):
334
343
  # }
335
344
  #
336
345
  marketId = self.safe_string(message, 'pair')
337
- market = self.safe_market(marketId, None, '_')
346
+ # market-ids are lowercase in REST API and uppercase in WS API
347
+ market = self.safe_market(marketId.lower(), None, '_')
338
348
  symbol = market['symbol']
339
349
  event = self.safe_string(message, 'event')
340
350
  messageHash = event + ':' + symbol
341
- result = self.parse_ticker(message)
351
+ result = self.parse_ticker(message, market)
352
+ result['symbol'] = self.safe_string(market, 'symbol') # symbol returned from REST's parseTicker is distorted for WS, so re-set it from market object
342
353
  timestamp = self.safe_integer(message, 'timestamp')
343
- datetime = self.safe_string(message, 'datetime')
344
354
  result['timestamp'] = timestamp
345
- result['datetime'] = datetime
355
+ result['datetime'] = self.iso8601(timestamp) # we shouldn't set "datetime" string provided by server, values are obviously wrong offset from UTC
346
356
  self.tickers[symbol] = result
347
357
  client.resolve(result, messageHash)
348
358
 
@@ -381,7 +391,9 @@ class bitopro(ccxt.async_support.bitopro):
381
391
  async def watch_balance(self, params={}) -> Balances:
382
392
  """
383
393
  watch balance and get the amount of funds available for trading or funds locked in orders
384
- :see: https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/private/user_balance_stream.md
394
+
395
+ https://github.com/bitoex/bitopro-offical-api-docs/blob/master/ws/private/user_balance_stream.md
396
+
385
397
  :param dict [params]: extra parameters specific to the exchange API endpoint
386
398
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
387
399
  """
ccxt/pro/bitrue.py CHANGED
@@ -5,14 +5,14 @@
5
5
 
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCacheBySymbolById
8
- from ccxt.base.types import Balances, Int, Order, OrderBook, Str
8
+ from ccxt.base.types import Any, Balances, Int, Order, OrderBook, Str
9
9
  from ccxt.async_support.base.ws.client import Client
10
10
  from typing import List
11
11
 
12
12
 
13
13
  class bitrue(ccxt.async_support.bitrue):
14
14
 
15
- def describe(self):
15
+ def describe(self) -> Any:
16
16
  return self.deep_extend(super(bitrue, self).describe(), {
17
17
  'has': {
18
18
  'ws': True,
@@ -36,15 +36,17 @@ class bitrue(ccxt.async_support.bitrue):
36
36
  },
37
37
  'api': {
38
38
  'open': {
39
- 'private': {
40
- 'post': {
41
- 'poseidon/api/v1/listenKey': 1,
42
- },
43
- 'put': {
44
- 'poseidon/api/v1/listenKey/{listenKey}': 1,
45
- },
46
- 'delete': {
47
- 'poseidon/api/v1/listenKey/{listenKey}': 1,
39
+ 'v1': {
40
+ 'private': {
41
+ 'post': {
42
+ 'poseidon/api/v1/listenKey': 1,
43
+ },
44
+ 'put': {
45
+ 'poseidon/api/v1/listenKey/{listenKey}': 1,
46
+ },
47
+ 'delete': {
48
+ 'poseidon/api/v1/listenKey/{listenKey}': 1,
49
+ },
48
50
  },
49
51
  },
50
52
  },
@@ -60,7 +62,9 @@ class bitrue(ccxt.async_support.bitrue):
60
62
  async def watch_balance(self, params={}) -> Balances:
61
63
  """
62
64
  watch balance and get the amount of funds available for trading or funds locked in orders
63
- :see: https://github.com/Bitrue-exchange/Spot-official-api-docs#balance-update
65
+
66
+ https://github.com/Bitrue-exchange/Spot-official-api-docs#balance-update
67
+
64
68
  :param dict [params]: extra parameters specific to the exchange API endpoint
65
69
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
66
70
  """
@@ -166,8 +170,10 @@ class bitrue(ccxt.async_support.bitrue):
166
170
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
167
171
  """
168
172
  watches information on user orders
169
- :see: https://github.com/Bitrue-exchange/Spot-official-api-docs#order-update
170
- :param str[] symbols: unified symbols of the market to watch the orders for
173
+
174
+ https://github.com/Bitrue-exchange/Spot-official-api-docs#order-update
175
+
176
+ :param str symbol:
171
177
  :param int [since]: timestamp in ms of the earliest order
172
178
  :param int [limit]: the maximum amount of orders to return
173
179
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -401,13 +407,7 @@ class bitrue(ccxt.async_support.bitrue):
401
407
  async def authenticate(self, params={}):
402
408
  listenKey = self.safe_value(self.options, 'listenKey')
403
409
  if listenKey is None:
404
- response = None
405
- try:
406
- response = await self.openPrivatePostPoseidonApiV1ListenKey(params)
407
- except Exception as error:
408
- self.options['listenKey'] = None
409
- self.options['listenKeyUrl'] = None
410
- return None
410
+ response = await self.openV1PrivatePostPoseidonApiV1ListenKey(params)
411
411
  #
412
412
  # {
413
413
  # "msg": "succ",
@@ -431,7 +431,7 @@ class bitrue(ccxt.async_support.bitrue):
431
431
  'listenKey': listenKey,
432
432
  }
433
433
  try:
434
- await self.openPrivatePutPoseidonApiV1ListenKeyListenKey(self.extend(request, params))
434
+ await self.openV1PrivatePutPoseidonApiV1ListenKeyListenKey(self.extend(request, params))
435
435
  #
436
436
  # ಠ_ಠ
437
437
  # {
ccxt/pro/bitstamp.py CHANGED
@@ -5,22 +5,24 @@
5
5
 
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById
8
- from ccxt.base.types import Int, Order, OrderBook, Str, Trade
8
+ from ccxt.base.types import Any, Bool, Int, Order, OrderBook, Str, Trade
9
9
  from ccxt.async_support.base.ws.client import Client
10
10
  from typing import List
11
11
  from ccxt.base.errors import AuthenticationError
12
12
  from ccxt.base.errors import ArgumentsRequired
13
+ from ccxt.base.precise import Precise
13
14
 
14
15
 
15
16
  class bitstamp(ccxt.async_support.bitstamp):
16
17
 
17
- def describe(self):
18
+ def describe(self) -> Any:
18
19
  return self.deep_extend(super(bitstamp, self).describe(), {
19
20
  'has': {
20
21
  'ws': True,
21
22
  'watchOrderBook': True,
22
23
  'watchOrders': True,
23
24
  'watchTrades': True,
25
+ 'watchTradesForSymbols': False,
24
26
  'watchOHLCV': False,
25
27
  'watchTicker': False,
26
28
  'watchTickers': False,
@@ -295,6 +297,7 @@ class bitstamp(ccxt.async_support.bitstamp):
295
297
  # "price_str":"1000.00"
296
298
  # },
297
299
  # "channel":"private-my_orders_ltcusd-4848701",
300
+ # "event": "order_deleted" # field only present for cancelOrder
298
301
  # }
299
302
  #
300
303
  channel = self.safe_string(message, 'channel')
@@ -306,29 +309,58 @@ class bitstamp(ccxt.async_support.bitstamp):
306
309
  subscription = self.safe_value(client.subscriptions, channel)
307
310
  symbol = self.safe_string(subscription, 'symbol')
308
311
  market = self.market(symbol)
312
+ order['event'] = self.safe_string(message, 'event')
309
313
  parsed = self.parse_ws_order(order, market)
310
314
  stored.append(parsed)
311
315
  client.resolve(self.orders, channel)
312
316
 
313
317
  def parse_ws_order(self, order, market=None):
314
318
  #
315
- # {
316
- # "id":"1463471322288128",
317
- # "id_str":"1463471322288128",
318
- # "order_type":1,
319
- # "datetime":"1646127778",
320
- # "microtimestamp":"1646127777950000",
321
- # "amount":0.05,
322
- # "amount_str":"0.05000000",
323
- # "price":1000,
324
- # "price_str":"1000.00"
319
+ # {
320
+ # "id": "1894876776091648",
321
+ # "id_str": "1894876776091648",
322
+ # "order_type": 0,
323
+ # "order_subtype": 0,
324
+ # "datetime": "1751451375",
325
+ # "microtimestamp": "1751451375070000",
326
+ # "amount": 1.1,
327
+ # "amount_str": "1.10000000",
328
+ # "amount_traded": "0",
329
+ # "amount_at_create": "1.10000000",
330
+ # "price": 10.23,
331
+ # "price_str": "10.23",
332
+ # "is_liquidation": False,
333
+ # "trade_account_id": 0
325
334
  # }
326
335
  #
327
336
  id = self.safe_string(order, 'id_str')
328
- orderType = self.safe_string_lower(order, 'order_type')
337
+ orderTypeRaw = self.safe_string_lower(order, 'order_type')
338
+ side = 'sell' if (orderTypeRaw == '1') else 'buy'
339
+ orderSubTypeRaw = self.safe_string_lower(order, 'order_subtype') # https://www.bitstamp.net/websocket/v2/#:~:text=order_subtype
340
+ orderType: Str = None
341
+ timeInForce: Str = None
342
+ if orderSubTypeRaw == '0':
343
+ orderType = 'limit'
344
+ elif orderSubTypeRaw == '2':
345
+ orderType = 'market'
346
+ elif orderSubTypeRaw == '4':
347
+ orderType = 'limit'
348
+ timeInForce = 'IOC'
349
+ elif orderSubTypeRaw == '6':
350
+ orderType = 'limit'
351
+ timeInForce = 'FOK'
352
+ elif orderSubTypeRaw == '8':
353
+ orderType = 'limit'
354
+ timeInForce = 'GTD'
329
355
  price = self.safe_string(order, 'price_str')
330
356
  amount = self.safe_string(order, 'amount_str')
331
- side = 'sell' if (orderType == '1') else 'buy'
357
+ filled = self.safe_string(order, 'amount_traded')
358
+ event = self.safe_string(order, 'event')
359
+ status = None
360
+ if Precise.string_eq(filled, amount):
361
+ status = 'closed'
362
+ elif event == 'order_deleted':
363
+ status = 'canceled'
332
364
  timestamp = self.safe_timestamp(order, 'datetime')
333
365
  market = self.safe_market(None, market)
334
366
  symbol = market['symbol']
@@ -340,8 +372,8 @@ class bitstamp(ccxt.async_support.bitstamp):
340
372
  'timestamp': timestamp,
341
373
  'datetime': self.iso8601(timestamp),
342
374
  'lastTradeTimestamp': None,
343
- 'type': None,
344
- 'timeInForce': None,
375
+ 'type': orderType,
376
+ 'timeInForce': timeInForce,
345
377
  'postOnly': None,
346
378
  'side': side,
347
379
  'price': price,
@@ -350,9 +382,9 @@ class bitstamp(ccxt.async_support.bitstamp):
350
382
  'amount': amount,
351
383
  'cost': None,
352
384
  'average': None,
353
- 'filled': None,
385
+ 'filled': filled,
354
386
  'remaining': None,
355
- 'status': None,
387
+ 'status': status,
356
388
  'fee': None,
357
389
  'trades': None,
358
390
  }, market)
@@ -416,6 +448,7 @@ class bitstamp(ccxt.async_support.bitstamp):
416
448
  # "price_str":"1000.00"
417
449
  # },
418
450
  # "channel":"private-my_orders_ltcusd-4848701",
451
+ # "event": "order_deleted" # field only present for cancelOrder
419
452
  # }
420
453
  #
421
454
  channel = self.safe_string(message, 'channel')
@@ -431,7 +464,7 @@ class bitstamp(ccxt.async_support.bitstamp):
431
464
  method = methods[key]
432
465
  method(client, message)
433
466
 
434
- def handle_error_message(self, client: Client, message):
467
+ def handle_error_message(self, client: Client, message) -> Bool:
435
468
  # {
436
469
  # "event": "bts:error",
437
470
  # "channel": '',
@@ -443,7 +476,7 @@ class bitstamp(ccxt.async_support.bitstamp):
443
476
  data = self.safe_value(message, 'data', {})
444
477
  code = self.safe_number(data, 'code')
445
478
  self.throw_exactly_matched_exception(self.exceptions['exact'], code, feedback)
446
- return message
479
+ return True
447
480
 
448
481
  def handle_message(self, client: Client, message):
449
482
  if not self.handle_error_message(client, message):
@@ -501,7 +534,7 @@ class bitstamp(ccxt.async_support.bitstamp):
501
534
  #
502
535
  sessionToken = self.safe_string(response, 'token')
503
536
  if sessionToken is not None:
504
- userId = self.safe_number(response, 'user_id')
537
+ userId = self.safe_string(response, 'user_id')
505
538
  validity = self.safe_integer_product(response, 'valid_sec', 1000)
506
539
  self.options['expiresIn'] = self.sum(time, validity)
507
540
  self.options['userId'] = userId
@@ -5,22 +5,23 @@
5
5
 
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheByTimestamp
8
- from ccxt.base.types import Int, OrderBook, Ticker, Trade
8
+ from ccxt.base.types import Any, Bool, Int, OrderBook, Ticker, Trade
9
9
  from ccxt.async_support.base.ws.client import Client
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
 
13
13
 
14
- class huobijp(ccxt.async_support.huobijp):
14
+ class bittrade(ccxt.async_support.bittrade):
15
15
 
16
- def describe(self):
17
- return self.deep_extend(super(huobijp, self).describe(), {
16
+ def describe(self) -> Any:
17
+ return self.deep_extend(super(bittrade, self).describe(), {
18
18
  'has': {
19
19
  'ws': True,
20
20
  'watchOrderBook': True,
21
21
  'watchTickers': False, # for now
22
22
  'watchTicker': True,
23
23
  'watchTrades': True,
24
+ 'watchTradesForSymbols': False,
24
25
  'watchBalance': False, # for now
25
26
  'watchOHLCV': True,
26
27
  },
@@ -520,7 +521,7 @@ class huobijp(ccxt.async_support.huobijp):
520
521
  def handle_ping(self, client: Client, message):
521
522
  self.spawn(self.pong, client, message)
522
523
 
523
- def handle_error_message(self, client: Client, message):
524
+ def handle_error_message(self, client: Client, message) -> Bool:
524
525
  #
525
526
  # {
526
527
  # "ts": 1586323747018,
@@ -555,7 +556,7 @@ class huobijp(ccxt.async_support.huobijp):
555
556
  #
556
557
  # ________________________
557
558
  #
558
- # sometimes huobijp responds with half of a JSON response like
559
+ # sometimes bittrade responds with half of a JSON response like
559
560
  #
560
561
  # " {"ch":"market.ethbtc.m "
561
562
  #