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
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.oxfun import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
- from ccxt.base.types import Account, Balances, Bool, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
10
+ from ccxt.base.types import Account, Any, Balances, Bool, Currencies, Currency, DepositAddress, Int, LeverageTier, LeverageTiers, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, Transaction, TransferEntry
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -25,12 +25,11 @@ from ccxt.base.errors import NetworkError
25
25
  from ccxt.base.errors import RateLimitExceeded
26
26
  from ccxt.base.errors import RequestTimeout
27
27
  from ccxt.base.decimal_to_precision import TICK_SIZE
28
- from ccxt.base.precise import Precise
29
28
 
30
29
 
31
30
  class oxfun(Exchange, ImplicitAPI):
32
31
 
33
- def describe(self):
32
+ def describe(self) -> Any:
34
33
  return self.deep_extend(super(oxfun, self).describe(), {
35
34
  'id': 'oxfun',
36
35
  'name': 'OXFUN',
@@ -77,14 +76,14 @@ class oxfun(Exchange, ImplicitAPI):
77
76
  'fetchCrossBorrowRates': False,
78
77
  'fetchCurrencies': True,
79
78
  'fetchDeposit': False,
80
- 'fetchDepositAddress': False,
79
+ 'fetchDepositAddress': True,
81
80
  'fetchDepositAddresses': False,
82
81
  'fetchDepositAddressesByNetwork': False,
83
82
  'fetchDeposits': True,
84
83
  'fetchDepositWithdrawFee': False,
85
84
  'fetchDepositWithdrawFees': False,
86
85
  'fetchFundingHistory': True,
87
- 'fetchFundingRate': False,
86
+ 'fetchFundingRate': True,
88
87
  'fetchFundingRateHistory': True,
89
88
  'fetchFundingRates': True,
90
89
  'fetchIndexOHLCV': False,
@@ -94,7 +93,7 @@ class oxfun(Exchange, ImplicitAPI):
94
93
  'fetchLedger': False,
95
94
  'fetchLeverage': False,
96
95
  'fetchLeverageTiers': True,
97
- 'fetchMarketLeverageTiers': False,
96
+ 'fetchMarketLeverageTiers': 'emulated',
98
97
  'fetchMarkets': True,
99
98
  'fetchMarkOHLCV': False,
100
99
  'fetchMyTrades': True,
@@ -133,6 +132,7 @@ class oxfun(Exchange, ImplicitAPI):
133
132
  'reduceMargin': False,
134
133
  'repayCrossMargin': False,
135
134
  'repayIsolatedMargin': False,
135
+ 'sandbox': True,
136
136
  'setLeverage': False,
137
137
  'setMargin': False,
138
138
  'setMarginMode': False,
@@ -259,6 +259,74 @@ class oxfun(Exchange, ImplicitAPI):
259
259
  'Optimism': 'OPTIMISM',
260
260
  },
261
261
  },
262
+ 'features': {
263
+ 'default': {
264
+ 'sandbox': True,
265
+ 'createOrder': {
266
+ 'marginMode': False,
267
+ 'triggerPrice': True,
268
+ 'triggerDirection': False,
269
+ 'triggerPriceType': None,
270
+ 'stopLossPrice': False, # todo
271
+ 'takeProfitPrice': False, # todo
272
+ 'attachedStopLossTakeProfit': None,
273
+ 'timeInForce': {
274
+ 'IOC': True,
275
+ 'FOK': True,
276
+ 'PO': True,
277
+ 'GTD': False,
278
+ },
279
+ 'hedged': False,
280
+ 'trailing': False,
281
+ 'leverage': False,
282
+ 'marketBuyByCost': True,
283
+ 'marketBuyRequiresPrice': False,
284
+ 'selfTradePrevention': True, # todo
285
+ 'iceberg': True, # todo
286
+ },
287
+ 'createOrders': {
288
+ 'max': 10, # todo
289
+ },
290
+ 'fetchMyTrades': {
291
+ 'marginMode': False,
292
+ 'limit': 500,
293
+ 'daysBack': 100000, # todo
294
+ 'untilDays': 7,
295
+ 'symbolRequired': False,
296
+ },
297
+ 'fetchOrder': {
298
+ 'marginMode': False,
299
+ 'trigger': False,
300
+ 'trailing': False,
301
+ 'symbolRequired': False,
302
+ },
303
+ 'fetchOpenOrders': {
304
+ 'marginMode': False,
305
+ 'limit': None,
306
+ 'trigger': False,
307
+ 'trailing': False,
308
+ 'symbolRequired': False,
309
+ },
310
+ 'fetchOrders': None,
311
+ 'fetchClosedOrders': None, # todo?
312
+ 'fetchOHLCV': {
313
+ 'limit': 500,
314
+ },
315
+ },
316
+ 'spot': {
317
+ 'extends': 'default',
318
+ },
319
+ 'swap': {
320
+ 'linear': {
321
+ 'extends': 'default',
322
+ },
323
+ 'inverse': None,
324
+ },
325
+ 'future': {
326
+ 'linear': None,
327
+ 'inverse': None,
328
+ },
329
+ },
262
330
  'exceptions': {
263
331
  'exact': {
264
332
  '-0010': OperationFailed, # {"event":null,"success":false,"message":"Validation failed","code":"0010","data":null} - failed transfer
@@ -332,7 +400,9 @@ class oxfun(Exchange, ImplicitAPI):
332
400
  async def fetch_markets(self, params={}) -> List[Market]:
333
401
  """
334
402
  retrieves data on all markets for bitmex
335
- :see: https://docs.ox.fun/?json#get-v3-markets
403
+
404
+ https://docs.ox.fun/?json#get-v3-markets
405
+
336
406
  :param dict [params]: extra parameters specific to the exchange API endpoint
337
407
  :returns dict[]: an array of objects representing market data
338
408
  """
@@ -505,7 +575,9 @@ class oxfun(Exchange, ImplicitAPI):
505
575
  async def fetch_currencies(self, params={}) -> Currencies:
506
576
  """
507
577
  fetches all available currencies on an exchange
508
- :see: https://docs.ox.fun/?json#get-v3-assets
578
+
579
+ https://docs.ox.fun/?json#get-v3-assets
580
+
509
581
  :param dict [params]: extra parameters specific to the exchange API endpoint
510
582
  :returns dict: an associative dictionary of currencies
511
583
  """
@@ -540,66 +612,7 @@ class oxfun(Exchange, ImplicitAPI):
540
612
  # "minDeposit": "0.00010",
541
613
  # "minWithdrawal": "0.00010"
542
614
  # },
543
- # {
544
- # "network": "Arbitrum",
545
- # "tokenId": "0xba0Dda8762C24dA9487f5FA026a9B64b695A07Ea",
546
- # "transactionPrecision": "18",
547
- # "isWithdrawalFeeChargedToUser": True,
548
- # "canDeposit": True,
549
- # "canWithdraw": True,
550
- # "minDeposit": "0.00010",
551
- # "minWithdrawal": "0.00010"
552
- # },
553
- # {
554
- # "network": "Ethereum",
555
- # "tokenId": "0xba0Dda8762C24dA9487f5FA026a9B64b695A07Ea",
556
- # "transactionPrecision": "18",
557
- # "isWithdrawalFeeChargedToUser": True,
558
- # "canDeposit": True,
559
- # "canWithdraw": True,
560
- # "minDeposit": "0.00010",
561
- # "minWithdrawal": "0.00010"
562
- # },
563
- # {
564
- # "network": "Arbitrum",
565
- # "tokenId": "0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f",
566
- # "transactionPrecision": "18",
567
- # "isWithdrawalFeeChargedToUser": True,
568
- # "canDeposit": True,
569
- # "canWithdraw": False,
570
- # "minDeposit": "0.00010",
571
- # "minWithdrawal": "0.00010"
572
- # },
573
- # {
574
- # "network": "Avalanche",
575
- # "tokenId": "0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f",
576
- # "transactionPrecision": "18",
577
- # "isWithdrawalFeeChargedToUser": True,
578
- # "canDeposit": True,
579
- # "canWithdraw": False,
580
- # "minDeposit": "0.00010",
581
- # "minWithdrawal": "0.00010"
582
- # },
583
- # {
584
- # "network": "Solana",
585
- # "tokenId": "DV3845GEAVXfwpyVGGgWbqBVCtzHdCXNCGfcdboSEuZz",
586
- # "transactionPrecision": "8",
587
- # "isWithdrawalFeeChargedToUser": True,
588
- # "canDeposit": True,
589
- # "canWithdraw": True,
590
- # "minDeposit": "0.00010",
591
- # "minWithdrawal": "0.00010"
592
- # },
593
- # {
594
- # "network": "Ethereum",
595
- # "tokenId": "0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f",
596
- # "transactionPrecision": "18",
597
- # "isWithdrawalFeeChargedToUser": True,
598
- # "canDeposit": True,
599
- # "canWithdraw": False,
600
- # "minDeposit": "0.00010",
601
- # "minWithdrawal": "0.00010"
602
- # }
615
+ # ...
603
616
  # ]
604
617
  # },
605
618
  # {
@@ -649,80 +662,72 @@ class oxfun(Exchange, ImplicitAPI):
649
662
  parts = fullId.split('.')
650
663
  id = parts[0]
651
664
  code = self.safe_currency_code(id)
652
- networks: dict = {}
665
+ if not (code in result):
666
+ result[code] = {
667
+ 'id': id,
668
+ 'code': code,
669
+ 'precision': None,
670
+ 'type': None,
671
+ 'name': None,
672
+ 'active': None,
673
+ 'deposit': None,
674
+ 'withdraw': None,
675
+ 'fee': None,
676
+ 'limits': {
677
+ 'withdraw': {
678
+ 'min': None,
679
+ 'max': None,
680
+ },
681
+ 'deposit': {
682
+ 'min': None,
683
+ 'max': None,
684
+ },
685
+ },
686
+ 'networks': {},
687
+ 'info': [],
688
+ }
653
689
  chains = self.safe_list(currency, 'networkList', [])
654
- currencyMaxPrecision: Str = None
655
- currencyDepositEnabled: Bool = None
656
- currencyWithdrawEnabled: Bool = None
657
690
  for j in range(0, len(chains)):
658
691
  chain = chains[j]
659
692
  networkId = self.safe_string(chain, 'network')
660
693
  networkCode = self.network_id_to_code(networkId)
661
- deposit = self.safe_bool(chain, 'canDeposit')
662
- withdraw = self.safe_bool(chain, 'canWithdraw')
663
- active = (deposit and withdraw)
664
- minDeposit = self.safe_string(chain, 'minDeposit')
665
- minWithdrawal = self.safe_string(chain, 'minWithdrawal')
666
- precision = self.parse_precision(self.safe_string(chain, 'transactionPrecision'))
667
- networks[networkCode] = {
694
+ result[code]['networks'][networkCode] = {
668
695
  'id': networkId,
669
696
  'network': networkCode,
670
697
  'margin': None,
671
- 'deposit': deposit,
672
- 'withdraw': withdraw,
673
- 'active': active,
698
+ 'deposit': self.safe_bool(chain, 'canDeposit'),
699
+ 'withdraw': self.safe_bool(chain, 'canWithdraw'),
700
+ 'active': None,
674
701
  'fee': None,
675
- 'precision': self.parse_number(precision),
702
+ 'precision': self.parse_number(self.parse_precision(self.safe_string(chain, 'transactionPrecision'))),
676
703
  'limits': {
677
704
  'deposit': {
678
- 'min': minDeposit,
705
+ 'min': self.safe_number(chain, 'minDeposit'),
679
706
  'max': None,
680
707
  },
681
708
  'withdraw': {
682
- 'min': minWithdrawal,
709
+ 'min': self.safe_number(chain, 'minWithdrawal'),
683
710
  'max': None,
684
711
  },
685
712
  },
686
713
  'info': chain,
687
714
  }
688
- if (currencyDepositEnabled is None) or deposit:
689
- currencyDepositEnabled = deposit
690
- if (currencyWithdrawEnabled is None) or withdraw:
691
- currencyWithdrawEnabled = withdraw
692
- if (currencyMaxPrecision is None) or Precise.string_gt(currencyMaxPrecision, precision):
693
- currencyMaxPrecision = precision
694
- if code in result:
695
- # checking for specific ids.ARB
696
- networks = self.extend(result[code]['networks'], networks)
697
- result[code] = {
698
- 'id': id,
699
- 'code': code,
700
- 'name': None,
701
- 'type': None,
702
- 'active': None,
703
- 'deposit': currencyDepositEnabled,
704
- 'withdraw': currencyWithdrawEnabled,
705
- 'fee': None,
706
- 'precision': self.parse_number(currencyMaxPrecision),
707
- 'limits': {
708
- 'amount': {
709
- 'min': None,
710
- 'max': None,
711
- },
712
- 'withdraw': {
713
- 'min': None,
714
- 'max': None,
715
- },
716
- },
717
- 'networks': networks,
718
- 'info': currency,
719
- }
715
+ infos = self.safe_list(result[code], 'info', [])
716
+ infos.append(currency)
717
+ result[code]['info'] = infos
718
+ # only after all entries are formed in currencies, restructure each entry
719
+ allKeys = list(result.keys())
720
+ for i in range(0, len(allKeys)):
721
+ code = allKeys[i]
722
+ result[code] = self.safe_currency_structure(result[code]) # self is needed after adding network entry
720
723
  return result
721
724
 
722
725
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
723
726
  """
724
727
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
725
- :see: https://docs.ox.fun/?json#get-v3-tickers
728
+
729
+ https://docs.ox.fun/?json#get-v3-tickers
730
+
726
731
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
727
732
  :param dict [params]: extra parameters specific to the exchange API endpoint
728
733
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -783,7 +788,9 @@ class oxfun(Exchange, ImplicitAPI):
783
788
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
784
789
  """
785
790
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
786
- :see: https://docs.ox.fun/?json#get-v3-tickers
791
+
792
+ https://docs.ox.fun/?json#get-v3-tickers
793
+
787
794
  :param str symbol: unified symbol of the market to fetch the ticker for
788
795
  :param dict [params]: extra parameters specific to the exchange API endpoint
789
796
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -859,13 +866,16 @@ class oxfun(Exchange, ImplicitAPI):
859
866
  'average': None,
860
867
  'baseVolume': self.safe_string(ticker, 'currencyVolume24h'),
861
868
  'quoteVolume': None, # the exchange returns cost in OX
869
+ 'markPrice': self.safe_string(ticker, 'markPrice'),
862
870
  'info': ticker,
863
871
  }, market)
864
872
 
865
873
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
866
874
  """
867
875
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
868
- :see: https://docs.ox.fun/?json#get-v3-candles
876
+
877
+ https://docs.ox.fun/?json#get-v3-candles
878
+
869
879
  :param str symbol: unified symbol of the market to fetch OHLCV data for
870
880
  :param str timeframe: the length of time each candle represents
871
881
  :param int [since]: timestamp in ms of the earliest candle to fetch(default 24 hours ago)
@@ -946,7 +956,9 @@ class oxfun(Exchange, ImplicitAPI):
946
956
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
947
957
  """
948
958
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
949
- :see: https://docs.ox.fun/?json#get-v3-depth
959
+
960
+ https://docs.ox.fun/?json#get-v3-depth
961
+
950
962
  :param str symbol: unified symbol of the market to fetch the order book for
951
963
  :param int [limit]: the maximum amount of order book entries to return(default 5, max 100)
952
964
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -988,10 +1000,12 @@ class oxfun(Exchange, ImplicitAPI):
988
1000
  timestamp = self.safe_integer(data, 'lastUpdatedAt')
989
1001
  return self.parse_order_book(data, market['symbol'], timestamp)
990
1002
 
991
- async def fetch_funding_rates(self, symbols: Strings = None, params={}):
1003
+ async def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
992
1004
  """
993
- :see: https://docs.ox.fun/?json#get-v3-funding-estimates
994
- fetch the current funding rates
1005
+ fetch the current funding rates for multiple markets
1006
+
1007
+ https://docs.ox.fun/?json#get-v3-funding-estimates
1008
+
995
1009
  :param str[] symbols: unified market symbols
996
1010
  :param dict [params]: extra parameters specific to the exchange API endpoint
997
1011
  :returns Order[]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
@@ -1018,17 +1032,35 @@ class oxfun(Exchange, ImplicitAPI):
1018
1032
  # }
1019
1033
  #
1020
1034
  data = self.safe_list(response, 'data', [])
1021
- result = self.parse_funding_rates(data)
1022
- return self.filter_by_array(result, 'symbol', symbols)
1035
+ return self.parse_funding_rates(data, symbols)
1036
+
1037
+ async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
1038
+ """
1039
+ fetch the current funding rates for a symbol
1040
+
1041
+ https://docs.ox.fun/?json#get-v3-funding-estimates
1042
+
1043
+ :param str symbol: unified market symbols
1044
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1045
+ :returns Order[]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
1046
+ """
1047
+ await self.load_markets()
1048
+ request: dict = {
1049
+ 'marketCode': self.market_id(symbol),
1050
+ }
1051
+ response = await self.publicGetV3FundingEstimates(self.extend(request, params))
1052
+ #
1053
+ data = self.safe_list(response, 'data', [])
1054
+ first = self.safe_dict(data, 0, {})
1055
+ return self.parse_funding_rate(first, self.market(symbol))
1023
1056
 
1024
- def parse_funding_rate(self, fundingRate, market: Market = None):
1057
+ def parse_funding_rate(self, fundingRate, market: Market = None) -> FundingRate:
1025
1058
  #
1026
1059
  # {
1027
1060
  # "marketCode": "OX-USD-SWAP-LIN",
1028
1061
  # "fundingAt": "1715515200000",
1029
1062
  # "estFundingRate": "0.000200000"
1030
- # },
1031
- #
1063
+ # }
1032
1064
  #
1033
1065
  symbol = self.safe_string(fundingRate, 'marketCode')
1034
1066
  market = self.market(symbol)
@@ -1051,12 +1083,15 @@ class oxfun(Exchange, ImplicitAPI):
1051
1083
  'previousFundingRate': None,
1052
1084
  'previousFundingTimestamp': None,
1053
1085
  'previousFundingDatetime': None,
1086
+ 'interval': None,
1054
1087
  }
1055
1088
 
1056
1089
  async def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1057
1090
  """
1058
1091
  Fetches the history of funding rates
1059
- :see: https://docs.ox.fun/?json#get-v3-funding-rates
1092
+
1093
+ https://docs.ox.fun/?json#get-v3-funding-rates
1094
+
1060
1095
  :param str symbol: unified symbol of the market to fetch trades for
1061
1096
  :param int [since]: timestamp in ms of the earliest trade to fetch(default 24 hours ago)
1062
1097
  :param int [limit]: the maximum amount of trades to fetch(default 200, max 500)
@@ -1131,7 +1166,9 @@ class oxfun(Exchange, ImplicitAPI):
1131
1166
  async def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1132
1167
  """
1133
1168
  fetches the history of funding payments
1134
- :see: https://docs.ox.fun/?json#get-v3-funding
1169
+
1170
+ https://docs.ox.fun/?json#get-v3-funding
1171
+
1135
1172
  :param str symbol: unified symbol of the market to fetch trades for
1136
1173
  :param int [since]: timestamp in ms of the earliest trade to fetch(default 24 hours ago)
1137
1174
  :param int [limit]: the maximum amount of trades to fetch(default 200, max 500)
@@ -1212,10 +1249,12 @@ class oxfun(Exchange, ImplicitAPI):
1212
1249
  'rate': rate,
1213
1250
  }
1214
1251
 
1215
- async def fetch_leverage_tiers(self, symbols: Strings = None, params={}):
1252
+ async def fetch_leverage_tiers(self, symbols: Strings = None, params={}) -> LeverageTiers:
1216
1253
  """
1217
1254
  retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes, if a market has a leverage tier of 0, then the leverage tiers cannot be obtained for self market
1218
- :see: https://docs.ox.fun/?json#get-v3-leverage-tiers
1255
+
1256
+ https://docs.ox.fun/?json#get-v3-leverage-tiers
1257
+
1219
1258
  :param str[] [symbols]: list of unified market symbols
1220
1259
  :param dict [params]: extra parameters specific to the exchange API endpoint
1221
1260
  :returns dict: a dictionary of `leverage tiers structures <https://docs.ccxt.com/#/?id=leverage-tiers-structure>`, indexed by market symbols
@@ -1266,7 +1305,7 @@ class oxfun(Exchange, ImplicitAPI):
1266
1305
  data = self.safe_list(response, 'data', [])
1267
1306
  return self.parse_leverage_tiers(data, symbols, 'marketCode')
1268
1307
 
1269
- def parse_market_leverage_tiers(self, info, market: Market = None):
1308
+ def parse_market_leverage_tiers(self, info, market: Market = None) -> List[LeverageTier]:
1270
1309
  #
1271
1310
  # {
1272
1311
  # marketCode: 'SOL-USD-SWAP-LIN',
@@ -1291,6 +1330,7 @@ class oxfun(Exchange, ImplicitAPI):
1291
1330
  tier = listOfTiers[j]
1292
1331
  tiers.append({
1293
1332
  'tier': self.safe_number(tier, 'tier'),
1333
+ 'symbol': self.safe_symbol(marketId, market),
1294
1334
  'currency': market['settle'],
1295
1335
  'minNotional': self.safe_number(tier, 'positionFloor'),
1296
1336
  'maxNotional': self.safe_number(tier, 'positionCap'),
@@ -1303,7 +1343,9 @@ class oxfun(Exchange, ImplicitAPI):
1303
1343
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1304
1344
  """
1305
1345
  get the list of most recent trades for a particular symbol
1306
- :see: https://docs.ox.fun/?json#get-v3-exchange-trades
1346
+
1347
+ https://docs.ox.fun/?json#get-v3-exchange-trades
1348
+
1307
1349
  :param str symbol: unified symbol of the market to fetch trades for
1308
1350
  :param int [since]: timestamp in ms of the earliest trade to fetch(default 24 hours ago)
1309
1351
  :param int [limit]: the maximum amount of trades to fetch(default 200, max 500)
@@ -1349,7 +1391,9 @@ class oxfun(Exchange, ImplicitAPI):
1349
1391
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1350
1392
  """
1351
1393
  fetch all trades made by the user
1352
- :see: https://docs.ox.fun/?json#get-v3-trades
1394
+
1395
+ https://docs.ox.fun/?json#get-v3-trades
1396
+
1353
1397
  :param str symbol: unified market symbol
1354
1398
  :param int [since]: the earliest time in ms to fetch trades for
1355
1399
  :param int [limit]: the maximum amount of trades to fetch(default 200, max 500)
@@ -1458,7 +1502,9 @@ class oxfun(Exchange, ImplicitAPI):
1458
1502
  async def fetch_balance(self, params={}) -> Balances:
1459
1503
  """
1460
1504
  query for balance and get the amount of funds available for trading or funds locked in orders
1461
- :see: https://docs.ox.fun/?json#get-v3-balances
1505
+
1506
+ https://docs.ox.fun/?json#get-v3-balances
1507
+
1462
1508
  :param dict [params]: extra parameters specific to the exchange API endpoint
1463
1509
  :param str [params.asset]: currency id, if empty the exchange returns info about all currencies
1464
1510
  :param str [params.subAcc]: Name of sub account. If no subAcc is given, then the response contains only the account linked to the API-Key.
@@ -1549,7 +1595,9 @@ class oxfun(Exchange, ImplicitAPI):
1549
1595
  async def fetch_accounts(self, params={}) -> List[Account]:
1550
1596
  """
1551
1597
  fetch subaccounts associated with a profile
1552
- :see: https://docs.ox.fun/?json#get-v3-account-names
1598
+
1599
+ https://docs.ox.fun/?json#get-v3-account-names
1600
+
1553
1601
  :param dict [params]: extra parameters specific to the exchange API endpoint
1554
1602
  :returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
1555
1603
  """
@@ -1588,7 +1636,9 @@ class oxfun(Exchange, ImplicitAPI):
1588
1636
  async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
1589
1637
  """
1590
1638
  transfer currency internally between wallets on the same account
1591
- :see: https://docs.ox.fun/?json#post-v3-transfer
1639
+
1640
+ https://docs.ox.fun/?json#post-v3-transfer
1641
+
1592
1642
  :param str code: unified currency code
1593
1643
  :param float amount: amount to transfer
1594
1644
  :param str fromAccount: account id to transfer from
@@ -1629,7 +1679,9 @@ class oxfun(Exchange, ImplicitAPI):
1629
1679
  async def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1630
1680
  """
1631
1681
  fetch a history of internal transfers made on an account
1632
- :see: https://docs.ox.fun/?json#get-v3-transfer
1682
+
1683
+ https://docs.ox.fun/?json#get-v3-transfer
1684
+
1633
1685
  :param str code: unified currency code of the currency transferred
1634
1686
  :param int [since]: the earliest time in ms to fetch transfers for(default 24 hours ago)
1635
1687
  :param int [limit]: the maximum number of transfer structures to retrieve(default 50, max 200)
@@ -1709,10 +1761,12 @@ class oxfun(Exchange, ImplicitAPI):
1709
1761
  }
1710
1762
  return self.safe_string(statuses, status, status)
1711
1763
 
1712
- async def fetch_deposit_address(self, code: str, params={}):
1764
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1713
1765
  """
1714
1766
  fetch the deposit address for a currency associated with self account
1715
- :see: https://docs.ox.fun/?json#get-v3-deposit-addresses
1767
+
1768
+ https://docs.ox.fun/?json#get-v3-deposit-addresses
1769
+
1716
1770
  :param str code: unified currency code
1717
1771
  :param dict [params]: extra parameters specific to the exchange API endpoint
1718
1772
  :param str [params.network]: network for fetch deposit address
@@ -1736,24 +1790,26 @@ class oxfun(Exchange, ImplicitAPI):
1736
1790
  data = self.safe_dict(response, 'data', {})
1737
1791
  return self.parse_deposit_address(data, currency)
1738
1792
 
1739
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
1793
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
1740
1794
  #
1741
1795
  # {"address":"0x998dEc76151FB723963Bd8AFD517687b38D33dE8"}
1742
1796
  #
1743
1797
  address = self.safe_string(depositAddress, 'address')
1744
1798
  self.check_address(address)
1745
1799
  return {
1800
+ 'info': depositAddress,
1746
1801
  'currency': currency['code'],
1802
+ 'network': None,
1747
1803
  'address': address,
1748
1804
  'tag': None,
1749
- 'network': None,
1750
- 'info': depositAddress,
1751
1805
  }
1752
1806
 
1753
1807
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1754
1808
  """
1755
1809
  fetch all deposits made to an account
1756
- :see: https://docs.ox.fun/?json#get-v3-deposit
1810
+
1811
+ https://docs.ox.fun/?json#get-v3-deposit
1812
+
1757
1813
  :param str code: unified currency code of the currency transferred
1758
1814
  :param int [since]: the earliest time in ms to fetch transfers for(default 24 hours ago)
1759
1815
  :param int [limit]: the maximum number of transfer structures to retrieve(default 50, max 200)
@@ -1801,7 +1857,9 @@ class oxfun(Exchange, ImplicitAPI):
1801
1857
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1802
1858
  """
1803
1859
  fetch all withdrawals made from an account
1804
- :see: https://docs.ox.fun/?json#get-v3-withdrawal
1860
+
1861
+ https://docs.ox.fun/?json#get-v3-withdrawal
1862
+
1805
1863
  :param str code: unified currency code of the currency transferred
1806
1864
  :param int [since]: the earliest time in ms to fetch transfers for(default 24 hours ago)
1807
1865
  :param int [limit]: the maximum number of transfer structures to retrieve(default 50, max 200)
@@ -1966,19 +2024,21 @@ class oxfun(Exchange, ImplicitAPI):
1966
2024
  }
1967
2025
  return self.safe_string(statuses, status, status)
1968
2026
 
1969
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2027
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
1970
2028
  """
1971
2029
  make a withdrawal
1972
- :see: https://docs.bitflex.com/spot#withdraw
2030
+
2031
+ https://docs.ox.fun/?json#post-v3-withdrawal
2032
+
1973
2033
  :param str code: unified currency code
1974
2034
  :param float amount: the amount to withdraw
1975
2035
  :param str address: the address to withdraw to
1976
2036
  :param str tag:
2037
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1977
2038
  :param str [params.network]: network for withdraw
1978
2039
  :param bool [params.externalFee]: if False, then the fee is taken from the quantity, also with the burn fee for asset SOLO
1979
- :param dict [params]: extra parameters specific to the exchange API endpoint
1980
- *
1981
- * EXCHANGE SPECIFIC PARAMETERS
2040
+
2041
+ EXCHANGE SPECIFIC PARAMETERS
1982
2042
  :param str [params.tfaType]: GOOGLE, or AUTHY_SECRET, or YUBIKEY, for 2FA
1983
2043
  :param str [params.code]: 2FA code
1984
2044
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
@@ -2020,10 +2080,12 @@ class oxfun(Exchange, ImplicitAPI):
2020
2080
  data['type'] = 'withdrawal'
2021
2081
  return self.parse_transaction(data, currency)
2022
2082
 
2023
- async def fetch_positions(self, symbols: Strings = None, params={}):
2083
+ async def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
2024
2084
  """
2025
2085
  fetch all open positions
2026
- :see: https://docs.ox.fun/?json#get-v3-positions
2086
+
2087
+ https://docs.ox.fun/?json#get-v3-positions
2088
+
2027
2089
  :param str[]|None symbols: list of unified market symbols
2028
2090
  :param dict [params]: extra parameters specific to the exchange API endpoint
2029
2091
  :param boolean [params.subAcc]:
@@ -2136,12 +2198,14 @@ class oxfun(Exchange, ImplicitAPI):
2136
2198
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
2137
2199
  """
2138
2200
  create a trade order
2139
- :see: https://docs.ox.fun/?json#post-v3-orders-place
2201
+
2202
+ https://docs.ox.fun/?json#post-v3-orders-place
2203
+
2140
2204
  :param str symbol: unified symbol of the market to create an order in
2141
2205
  :param str type: 'market', 'limit', 'STOP_LIMIT' or 'STOP_MARKET'
2142
2206
  :param str side: 'buy' or 'sell'
2143
2207
  :param float amount: how much of currency you want to trade in units of base currency
2144
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
2208
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
2145
2209
  :param dict [params]: extra parameters specific to the exchange API endpoint
2146
2210
  :param int [params.clientOrderId]: a unique id for the order
2147
2211
  :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.
@@ -2292,7 +2356,9 @@ class oxfun(Exchange, ImplicitAPI):
2292
2356
  async def create_orders(self, orders: List[OrderRequest], params={}) -> List[Order]:
2293
2357
  """
2294
2358
  create a list of trade orders
2295
- :see: https://docs.ox.fun/?json#post-v3-orders-place
2359
+
2360
+ https://docs.ox.fun/?json#post-v3-orders-place
2361
+
2296
2362
  :param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
2297
2363
  :param dict [params]: extra parameters specific to the exchange API endpoint
2298
2364
  :param int [params.timestamp]: *for all orders* in milliseconds. If orders reach the matching engine and the current timestamp exceeds timestamp + recvWindow, then all orders will be rejected.
@@ -2327,7 +2393,7 @@ class oxfun(Exchange, ImplicitAPI):
2327
2393
  :param str type: 'market', 'limit', 'STOP_LIMIT' or 'STOP_MARKET'
2328
2394
  :param str side: 'buy' or 'sell'
2329
2395
  :param float amount: how much of currency you want to trade in units of base currency
2330
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
2396
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
2331
2397
  :param dict [params]: extra parameters specific to the exchange API endpoint
2332
2398
  :param int [params.clientOrderId]: a unique id for the order
2333
2399
  :param float [params.cost]: the quote quantity that can be used alternative for the amount for market buy orders
@@ -2375,7 +2441,9 @@ class oxfun(Exchange, ImplicitAPI):
2375
2441
  async def create_market_buy_order_with_cost(self, symbol: str, cost: float, params={}):
2376
2442
  """
2377
2443
  create a market buy order by providing the symbol and cost
2378
- :see: https://open.big.one/docs/spot_orders.html#create-order
2444
+
2445
+ https://open.big.one/docs/spot_orders.html#create-order
2446
+
2379
2447
  :param str symbol: unified symbol of the market to create an order in
2380
2448
  :param float cost: how much you want to trade in units of the quote currency
2381
2449
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2392,7 +2460,9 @@ class oxfun(Exchange, ImplicitAPI):
2392
2460
 
2393
2461
  async def fetch_order(self, id: str, symbol: Str = None, params={}) -> Order:
2394
2462
  """
2395
- :see: https://docs.ox.fun/?json#get-v3-orders-status
2463
+
2464
+ https://docs.ox.fun/?json#get-v3-orders-status
2465
+
2396
2466
  fetches information on an order made by the user
2397
2467
  :param str id: a unique id for the order
2398
2468
  :param str [symbol]: not used by oxfun fetchOrder
@@ -2434,7 +2504,9 @@ class oxfun(Exchange, ImplicitAPI):
2434
2504
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
2435
2505
  """
2436
2506
  fetch all unfilled currently open orders
2437
- :see: https://docs.ox.fun/?json#get-v3-orders-working
2507
+
2508
+ https://docs.ox.fun/?json#get-v3-orders-working
2509
+
2438
2510
  :param str symbol: unified market symbol
2439
2511
  :param int [since]: the earliest time in ms to fetch open orders for
2440
2512
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -2455,7 +2527,9 @@ class oxfun(Exchange, ImplicitAPI):
2455
2527
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
2456
2528
  """
2457
2529
  cancels an open order
2458
- :see: https://docs.ox.fun/?json#delete-v3-orders-cancel
2530
+
2531
+ https://docs.ox.fun/?json#delete-v3-orders-cancel
2532
+
2459
2533
  :param str id: order id
2460
2534
  :param str symbol: unified symbol of the market the order was made in
2461
2535
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2489,7 +2563,9 @@ class oxfun(Exchange, ImplicitAPI):
2489
2563
  async def cancel_all_orders(self, symbol: Str = None, params={}):
2490
2564
  """
2491
2565
  cancel all open orders
2492
- :see: https://docs.ox.fun/?json#delete-v3-orders-cancel-all
2566
+
2567
+ https://docs.ox.fun/?json#delete-v3-orders-cancel-all
2568
+
2493
2569
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
2494
2570
  :param dict [params]: extra parameters specific to the exchange API endpoint
2495
2571
  :returns dict: response from exchange
@@ -2509,12 +2585,15 @@ class oxfun(Exchange, ImplicitAPI):
2509
2585
  # "data": {"notice": "No working orders found"}
2510
2586
  # }
2511
2587
  #
2512
- return await self.privateDeleteV3OrdersCancelAll(self.extend(request, params))
2588
+ response = await self.privateDeleteV3OrdersCancelAll(self.extend(request, params))
2589
+ return [self.safe_order({'info': response})]
2513
2590
 
2514
2591
  async def cancel_orders(self, ids: List[str], symbol: Str = None, params={}):
2515
2592
  """
2516
2593
  cancel multiple orders
2517
- :see: https://docs.ox.fun/?json#delete-v3-orders-cancel
2594
+
2595
+ https://docs.ox.fun/?json#delete-v3-orders-cancel
2596
+
2518
2597
  :param str[] ids: order ids
2519
2598
  :param str [symbol]: unified market symbol
2520
2599
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2757,7 +2836,7 @@ class oxfun(Exchange, ImplicitAPI):
2757
2836
  'AccessKey': self.apiKey,
2758
2837
  'Timestamp': datetime,
2759
2838
  'Signature': signature,
2760
- 'Nonce': nonce,
2839
+ 'Nonce': str(nonce),
2761
2840
  }
2762
2841
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
2763
2842