ccxt-ir 4.3.46.0.3__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 (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 +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 +8 -8
  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.3.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.3.dist-info → ccxt_ir-4.5.0.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.0.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/pro/okxus.py ADDED
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+
6
+ from ccxt.pro.okx import okx
7
+ from ccxt.base.types import Any
8
+
9
+
10
+ class okxus(okx):
11
+
12
+ def describe(self) -> Any:
13
+ return self.deep_extend(super(okxus, self).describe(), {
14
+ 'id': 'okxus',
15
+ 'name': 'OKX(US)',
16
+ 'hostname': 'us.okx.com',
17
+ 'urls': {
18
+ 'api': {
19
+ 'rest': 'https://{hostname}',
20
+ 'ws': 'wss://wsus.okx.com:8443/ws/v5',
21
+ },
22
+ 'www': 'https://app.okx.com',
23
+ 'doc': 'https://app.okx.com/docs-v5/en/#overview',
24
+ 'fees': 'https://app.okx.com/pages/products/fees.html',
25
+ 'referral': {
26
+ 'url': 'https://www.app.okx.com/join/CCXT2023',
27
+ 'discount': 0.2,
28
+ },
29
+ 'test': {
30
+ 'ws': 'wss://wsuspap.okx.com:8443/ws/v5',
31
+ },
32
+ },
33
+ 'has': {
34
+ 'swap': False,
35
+ 'future': False,
36
+ 'option': False,
37
+ },
38
+ })
ccxt/pro/onetrading.py CHANGED
@@ -5,16 +5,17 @@
5
5
 
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCacheBySymbolById, ArrayCacheByTimestamp
8
- from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade
8
+ from ccxt.base.types import Any, Balances, Bool, Int, Order, OrderBook, Str, Strings, Ticker, Tickers, 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
  from ccxt.base.errors import NotSupported
13
+ from ccxt.base.precise import Precise
13
14
 
14
15
 
15
16
  class onetrading(ccxt.async_support.onetrading):
16
17
 
17
- def describe(self):
18
+ def describe(self) -> Any:
18
19
  return self.deep_extend(super(onetrading, self).describe(), {
19
20
  'has': {
20
21
  'ws': True,
@@ -22,6 +23,7 @@ class onetrading(ccxt.async_support.onetrading):
22
23
  'watchTicker': True,
23
24
  'watchTickers': True,
24
25
  'watchTrades': False,
26
+ 'watchTradesForSymbols': False,
25
27
  'watchMyTrades': True,
26
28
  'watchOrders': True,
27
29
  'watchOrderBook': True,
@@ -81,7 +83,9 @@ class onetrading(ccxt.async_support.onetrading):
81
83
 
82
84
  async def watch_balance(self, params={}) -> Balances:
83
85
  """
84
- :see: https://developers.bitpanda.com/exchange/#account-history-channel
86
+
87
+ https://developers.bitpanda.com/exchange/#account-history-channel
88
+
85
89
  watch balance and get the amount of funds available for trading or funds locked in orders
86
90
  :param dict [params]: extra parameters specific to the exchange API endpoint
87
91
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -138,7 +142,9 @@ class onetrading(ccxt.async_support.onetrading):
138
142
 
139
143
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
140
144
  """
141
- :see: https://developers.bitpanda.com/exchange/#market-ticker-channel
145
+
146
+ https://developers.bitpanda.com/exchange/#market-ticker-channel
147
+
142
148
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
143
149
  :param str symbol: unified symbol of the market to fetch the ticker for
144
150
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -162,7 +168,9 @@ class onetrading(ccxt.async_support.onetrading):
162
168
 
163
169
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
164
170
  """
165
- :see: https://developers.bitpanda.com/exchange/#market-ticker-channel
171
+
172
+ https://developers.bitpanda.com/exchange/#market-ticker-channel
173
+
166
174
  watches price tickers, a statistical calculation with the information for all markets or those specified.
167
175
  :param str symbols: unified symbols of the markets to fetch the ticker for
168
176
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -254,7 +262,9 @@ class onetrading(ccxt.async_support.onetrading):
254
262
 
255
263
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
256
264
  """
257
- :see: https://developers.bitpanda.com/exchange/#account-history-channel
265
+
266
+ https://developers.bitpanda.com/exchange/#account-history-channel
267
+
258
268
  get the list of trades associated with the user
259
269
  :param str symbol: unified symbol of the market to fetch trades for. Use 'any' to watch all trades
260
270
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -293,7 +303,9 @@ class onetrading(ccxt.async_support.onetrading):
293
303
 
294
304
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
295
305
  """
296
- :see: https://developers.bitpanda.com/exchange/#market-ticker-channel
306
+
307
+ https://developers.bitpanda.com/exchange/#market-ticker-channel
308
+
297
309
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
298
310
  :param str symbol: unified symbol of the market to fetch the order book for
299
311
  :param int [limit]: the maximum amount of order book entries to return
@@ -399,7 +411,9 @@ class onetrading(ccxt.async_support.onetrading):
399
411
 
400
412
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
401
413
  """
402
- :see: https://developers.bitpanda.com/exchange/#account-history-channel
414
+
415
+ https://developers.bitpanda.com/exchange/#account-history-channel
416
+
403
417
  watches information on multiple orders made by the user
404
418
  :param str symbol: unified market symbol of the market orders were made in
405
419
  :param int [since]: the earliest time in ms to fetch orders for
@@ -934,9 +948,9 @@ class onetrading(ccxt.async_support.onetrading):
934
948
  previousOrderArray = self.filter_by_array(self.orders, 'id', orderId, False)
935
949
  previousOrder = self.safe_value(previousOrderArray, 0, {})
936
950
  symbol = previousOrder['symbol']
937
- filled = self.safe_number(update, 'filled_amount')
951
+ filled = self.safe_string(update, 'filled_amount')
938
952
  status = self.parse_ws_order_status(updateType)
939
- if updateType == 'ORDER_CLOSED' and filled == 0:
953
+ if updateType == 'ORDER_CLOSED' and Precise.string_eq(filled, '0'):
940
954
  status = 'canceled'
941
955
  orderObject: dict = {
942
956
  'id': orderId,
@@ -963,7 +977,8 @@ class onetrading(ccxt.async_support.onetrading):
963
977
  if updateType == 'TRADE_SETTLED':
964
978
  parsed = self.parse_trade(update)
965
979
  symbol = self.safe_string(parsed, 'symbol', '')
966
- self.myTrades.append(parsed)
980
+ myTrades = self.myTrades
981
+ myTrades.append(parsed)
967
982
  client.resolve(self.myTrades, 'myTrades:' + symbol)
968
983
  client.resolve(self.myTrades, 'myTrades')
969
984
 
@@ -994,7 +1009,9 @@ class onetrading(ccxt.async_support.onetrading):
994
1009
 
995
1010
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
996
1011
  """
997
- :see: https://developers.bitpanda.com/exchange/#candlesticks-channel
1012
+
1013
+ https://developers.bitpanda.com/exchange/#candlesticks-channel
1014
+
998
1015
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
999
1016
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1000
1017
  :param str timeframe: the length of time each candle represents
@@ -1149,7 +1166,7 @@ class onetrading(ccxt.async_support.onetrading):
1149
1166
  #
1150
1167
  return message
1151
1168
 
1152
- def handle_error_message(self, client: Client, message):
1169
+ def handle_error_message(self, client: Client, message) -> Bool:
1153
1170
  #
1154
1171
  # {
1155
1172
  # "error": "MALFORMED_JSON",
ccxt/pro/oxfun.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, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade
9
+ from ccxt.base.types import Any, Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, 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 AuthenticationError
@@ -16,7 +16,7 @@ from ccxt.base.errors import BadRequest
16
16
 
17
17
  class oxfun(ccxt.async_support.oxfun):
18
18
 
19
- def describe(self):
19
+ def describe(self) -> Any:
20
20
  return self.deep_extend(super(oxfun, self).describe(), {
21
21
  'has': {
22
22
  'ws': True,
@@ -30,6 +30,7 @@ class oxfun(ccxt.async_support.oxfun):
30
30
  'watchMyTrades': False,
31
31
  'watchTicker': True,
32
32
  'watchTickers': True,
33
+ 'watchBidsAsks': True,
33
34
  'watchBalance': True,
34
35
  'createOrderWs': True,
35
36
  'editOrderWs': True,
@@ -77,21 +78,25 @@ class oxfun(ccxt.async_support.oxfun):
77
78
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
78
79
  """
79
80
  watches information on multiple trades made in a market
80
- :see: https://docs.ox.fun/?json#trade
81
+
82
+ https://docs.ox.fun/?json#trade
83
+
81
84
  :param str symbol: unified market symbol of the market trades were made in
82
85
  :param int [since]: the earliest time in ms to fetch orders for
83
86
  :param int [limit]: the maximum number of trade structures to retrieve
84
87
  :param dict [params]: extra parameters specific to the exchange API endpoint
85
88
  :param int|str [params.tag]: If given it will be echoed in the reply and the max size of tag is 32
86
- :returns dict[]: a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
89
+ :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
87
90
  """
88
91
  return await self.watch_trades_for_symbols([symbol], since, limit, params)
89
92
 
90
93
  async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
91
94
  """
92
95
  get the list of most recent trades for a particular symbol
93
- :see: https://docs.ox.fun/?json#trade
94
- :param str symbol: unified symbol of the market to fetch trades for
96
+
97
+ https://docs.ox.fun/?json#trade
98
+
99
+ :param str[] symbols:
95
100
  :param int [since]: timestamp in ms of the earliest trade to fetch
96
101
  :param int [limit]: the maximum amount of trades to fetch
97
102
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -180,7 +185,9 @@ class oxfun(ccxt.async_support.oxfun):
180
185
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
181
186
  """
182
187
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
183
- :see: https://docs.ox.fun/?json#candles
188
+
189
+ https://docs.ox.fun/?json#candles
190
+
184
191
  :param str symbol: unified symbol of the market to fetch OHLCV data for
185
192
  :param str timeframe: the length of time each candle represents
186
193
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -208,7 +215,9 @@ class oxfun(ccxt.async_support.oxfun):
208
215
  async def watch_ohlcv_for_symbols(self, symbolsAndTimeframes: List[List[str]], since: Int = None, limit: Int = None, params={}):
209
216
  """
210
217
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
211
- :see: https://docs.ox.fun/?json#candles
218
+
219
+ https://docs.ox.fun/?json#candles
220
+
212
221
  :param str[][] symbolsAndTimeframes: array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
213
222
  :param int [since]: timestamp in ms of the earliest candle to fetch
214
223
  :param int [limit]: the maximum amount of candles to fetch
@@ -309,8 +318,10 @@ class oxfun(ccxt.async_support.oxfun):
309
318
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
310
319
  """
311
320
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
312
- :see: https://docs.ox.fun/?json#fixed-size-order-book
313
- :see: https://docs.ox.fun/?json#full-order-book
321
+
322
+ https://docs.ox.fun/?json#fixed-size-order-book
323
+ https://docs.ox.fun/?json#full-order-book
324
+
314
325
  :param str symbol: unified symbol of the market to fetch the order book for
315
326
  :param int [limit]: the maximum amount of order book entries to return
316
327
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -321,8 +332,10 @@ class oxfun(ccxt.async_support.oxfun):
321
332
  async def watch_order_book_for_symbols(self, symbols: List[str], limit: Int = None, params={}) -> OrderBook:
322
333
  """
323
334
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
324
- :see: https://docs.ox.fun/?json#fixed-size-order-book
325
- :see: https://docs.ox.fun/?json#full-order-book
335
+
336
+ https://docs.ox.fun/?json#fixed-size-order-book
337
+ https://docs.ox.fun/?json#full-order-book
338
+
326
339
  :param str[] symbols: unified array of symbols
327
340
  :param int [limit]: the maximum amount of order book entries to return
328
341
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -392,7 +405,9 @@ class oxfun(ccxt.async_support.oxfun):
392
405
 
393
406
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
394
407
  """
395
- :see: https://docs.ox.fun/?json#ticker
408
+
409
+ https://docs.ox.fun/?json#ticker
410
+
396
411
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
397
412
  :param str symbol: unified symbol of the market to fetch the ticker for
398
413
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -404,7 +419,9 @@ class oxfun(ccxt.async_support.oxfun):
404
419
 
405
420
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
406
421
  """
407
- :see: https://docs.ox.fun/?json#ticker
422
+
423
+ https://docs.ox.fun/?json#ticker
424
+
408
425
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
409
426
  :param str[] [symbols]: unified symbol of the market to fetch the ticker for
410
427
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -466,9 +483,80 @@ class oxfun(ccxt.async_support.oxfun):
466
483
  self.tickers[symbol] = ticker
467
484
  client.resolve(ticker, messageHash)
468
485
 
486
+ async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
487
+ """
488
+
489
+ https://docs.ox.fun/?json#best-bid-ask
490
+
491
+ watches best bid & ask for symbols
492
+ :param str[] symbols: unified symbol of the market to fetch the ticker for
493
+ :param dict [params]: extra parameters specific to the exchange API endpoint
494
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
495
+ """
496
+ await self.load_markets()
497
+ symbols = self.market_symbols(symbols, None, False)
498
+ messageHashes = []
499
+ args = []
500
+ for i in range(0, len(symbols)):
501
+ market = self.market(symbols[i])
502
+ args.append('bestBidAsk:' + market['id'])
503
+ messageHashes.append('bidask:' + market['symbol'])
504
+ newTickers = await self.subscribe_multiple(messageHashes, args, params)
505
+ if self.newUpdates:
506
+ tickers: dict = {}
507
+ tickers[newTickers['symbol']] = newTickers
508
+ return tickers
509
+ return self.filter_by_array(self.bidsasks, 'symbol', symbols)
510
+
511
+ def handle_bid_ask(self, client: Client, message):
512
+ #
513
+ # {
514
+ # "table": "bestBidAsk",
515
+ # "data": {
516
+ # "ask": [
517
+ # 19045.0,
518
+ # 1.0
519
+ # ],
520
+ # "checksum": 3790706311,
521
+ # "marketCode": "BTC-USD-SWAP-LIN",
522
+ # "bid": [
523
+ # 19015.0,
524
+ # 1.0
525
+ # ],
526
+ # "timestamp": "1665456882928"
527
+ # }
528
+ # }
529
+ #
530
+ data = self.safe_dict(message, 'data', {})
531
+ parsedTicker = self.parse_ws_bid_ask(data)
532
+ symbol = parsedTicker['symbol']
533
+ self.bidsasks[symbol] = parsedTicker
534
+ messageHash = 'bidask:' + symbol
535
+ client.resolve(parsedTicker, messageHash)
536
+
537
+ def parse_ws_bid_ask(self, ticker, market=None):
538
+ marketId = self.safe_string(ticker, 'marketCode')
539
+ market = self.safe_market(marketId, market)
540
+ symbol = self.safe_string(market, 'symbol')
541
+ timestamp = self.safe_integer(ticker, 'timestamp')
542
+ ask = self.safe_list(ticker, 'ask', [])
543
+ bid = self.safe_list(ticker, 'bid', [])
544
+ return self.safe_ticker({
545
+ 'symbol': symbol,
546
+ 'timestamp': timestamp,
547
+ 'datetime': self.iso8601(timestamp),
548
+ 'ask': self.safe_number(ask, 0),
549
+ 'askVolume': self.safe_number(ask, 1),
550
+ 'bid': self.safe_number(bid, 0),
551
+ 'bidVolume': self.safe_number(bid, 1),
552
+ 'info': ticker,
553
+ }, market)
554
+
469
555
  async def watch_balance(self, params={}) -> Balances:
470
556
  """
471
- :see: https://docs.ox.fun/?json#balance-channel
557
+
558
+ https://docs.ox.fun/?json#balance-channel
559
+
472
560
  watch balance and get the amount of funds available for trading or funds locked in orders
473
561
  :param dict [params]: extra parameters specific to the exchange API endpoint
474
562
  :param int|str [params.tag]: If given it will be echoed in the reply and the max size of tag is 32
@@ -526,9 +614,13 @@ class oxfun(ccxt.async_support.oxfun):
526
614
 
527
615
  async def watch_positions(self, symbols: Strings = None, since: Int = None, limit: Int = None, params={}) -> List[Position]:
528
616
  """
529
- :see: https://docs.ox.fun/?json#position-channel
617
+
618
+ https://docs.ox.fun/?json#position-channel
619
+
530
620
  watch all open positions
531
621
  :param str[]|None symbols: list of unified market symbols
622
+ @param since
623
+ @param limit
532
624
  :param dict params: extra parameters specific to the exchange API endpoint
533
625
  :param int|str [params.tag]: If given it will be echoed in the reply and the max size of tag is 32
534
626
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/en/latest/manual.html#position-structure>`
@@ -637,7 +729,9 @@ class oxfun(ccxt.async_support.oxfun):
637
729
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
638
730
  """
639
731
  watches information on multiple orders made by the user
640
- :see: https://docs.ox.fun/?json#order-channel
732
+
733
+ https://docs.ox.fun/?json#order-channel
734
+
641
735
  :param str symbol: unified market symbol of the market orders were made in
642
736
  :param int [since]: the earliest time in ms to fetch orders for
643
737
  :param int [limit]: the maximum number of order structures to retrieve
@@ -709,13 +803,15 @@ class oxfun(ccxt.async_support.oxfun):
709
803
 
710
804
  async def create_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
711
805
  """
712
- :see: https://docs.ox.fun/?json#order-commands
806
+
807
+ https://docs.ox.fun/?json#order-commands
808
+
713
809
  create a trade order
714
810
  :param str symbol: unified symbol of the market to create an order in
715
811
  :param str type: 'market', 'limit', 'STOP_LIMIT' or 'STOP_MARKET'
716
812
  :param str side: 'buy' or 'sell'
717
813
  :param float amount: how much of currency you want to trade in units of base currency
718
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
814
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
719
815
  :param dict [params]: extra parameters specific to the exchange API endpoint
720
816
  :param int [params.clientOrderId]: a unique id for the order
721
817
  :param int [params.timestamp]: in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected.
@@ -748,16 +844,18 @@ class oxfun(ccxt.async_support.oxfun):
748
844
  async def edit_order_ws(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}) -> Order:
749
845
  """
750
846
  edit a trade order
751
- :see: https://docs.ox.fun/?json#modify-order
847
+
848
+ https://docs.ox.fun/?json#modify-order
849
+
752
850
  :param str id: order id
753
851
  :param str symbol: unified symbol of the market to create an order in
754
852
  :param str type: 'market' or 'limit'
755
853
  :param str side: 'buy' or 'sell'
756
854
  :param float amount: how much of the currency you want to trade in units of the base currency
757
- :param float|None [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
855
+ :param float|None [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
856
+ :param dict [params]: extra parameters specific to the exchange API endpoint
758
857
  :param int [params.timestamp]: in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected.
759
858
  :param int [params.recvWindow]: in milliseconds. If an order reaches the matching engine and the current timestamp exceeds timestamp + recvWindow, then the order will be rejected. If timestamp is provided without recvWindow, then a default recvWindow of 1000ms is used.
760
- :param dict [params]: extra parameters specific to the exchange API endpoint
761
859
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
762
860
  """
763
861
  await self.load_markets()
@@ -814,14 +912,16 @@ class oxfun(ccxt.async_support.oxfun):
814
912
  method = self.safe_string(message, 'event')
815
913
  stringMsg = self.json(message)
816
914
  code = self.safe_integer(message, 'code')
817
- self.handle_errors(code, None, client.url, method, None, stringMsg, message, None, None)
915
+ self.handle_errors(code, '', client.url, method, {}, stringMsg, message, {}, {})
818
916
  data = self.safe_value(message, 'data', {})
819
917
  order = self.parse_order(data)
820
918
  client.resolve(order, messageHash)
821
919
 
822
920
  async def cancel_order_ws(self, id: str, symbol: Str = None, params={}) -> Order:
823
921
  """
824
- :see: https://docs.ox.fun/?json#cancel-order
922
+
923
+ https://docs.ox.fun/?json#cancel-order
924
+
825
925
  cancels an open order
826
926
  :param str id: order id
827
927
  :param str symbol: unified market symbol, default is None
@@ -847,14 +947,16 @@ class oxfun(ccxt.async_support.oxfun):
847
947
 
848
948
  async def cancel_orders_ws(self, ids: List[str], symbol: Str = None, params={}):
849
949
  """
850
- :see: https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-mass-cancel-order
950
+
951
+ https://www.okx.com/docs-v5/en/#order-book-trading-trade-ws-mass-cancel-order
952
+
851
953
  cancel multiple orders
852
954
  :param str[] ids: order ids
853
955
  :param str symbol: unified market symbol, default is None
854
956
  :param dict [params]: extra parameters specific to the exchange API endpoint
855
957
  :returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
856
958
  """
857
- idsLength = len(ids)
959
+ idsLength: number = len(ids)
858
960
  if idsLength > 20:
859
961
  raise BadRequest(self.id + ' cancelOrdersWs() accepts up to 20 ids at a time')
860
962
  if symbol is None:
@@ -914,7 +1016,7 @@ class oxfun(ccxt.async_support.oxfun):
914
1016
  if messageHash in client.subscriptions:
915
1017
  del client.subscriptions[messageHash]
916
1018
 
917
- def ping(self, client):
1019
+ def ping(self, client: Client):
918
1020
  return 'ping'
919
1021
 
920
1022
  def handle_pong(self, client: Client, message):
@@ -943,6 +1045,8 @@ class oxfun(ccxt.async_support.oxfun):
943
1045
  self.handle_positions(client, message)
944
1046
  if table.find('order') > -1:
945
1047
  self.handle_orders(client, message)
1048
+ if table == 'bestBidAsk':
1049
+ self.handle_bid_ask(client, message)
946
1050
  else:
947
1051
  if event == 'login':
948
1052
  self.handle_authentication_message(client, message)