ccxt-ir 4.3.46.0.2__py2.py3-none-any.whl → 4.5.0__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +9 -9
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +7 -7
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +10 -10
  68. ccxt/async_support/afratether.py +9 -9
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +31 -37
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +25 -24
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +29 -35
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +22 -21
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +28 -25
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +12 -11
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/abstract/ace.py +0 -15
  438. ccxt/abstract/bitbay.py +0 -53
  439. ccxt/abstract/bitcoincom.py +0 -115
  440. ccxt/abstract/bitfinex2.py +0 -139
  441. ccxt/abstract/bitpanda.py +0 -35
  442. ccxt/abstract/bl3p.py +0 -19
  443. ccxt/abstract/coinlist.py +0 -54
  444. ccxt/abstract/currencycom.py +0 -68
  445. ccxt/abstract/hitbtc3.py +0 -115
  446. ccxt/abstract/idex.py +0 -26
  447. ccxt/abstract/kuna.py +0 -182
  448. ccxt/abstract/lykke.py +0 -29
  449. ccxt/abstract/poloniexfutures.py +0 -48
  450. ccxt/abstract/wazirx.py +0 -30
  451. ccxt/ace.py +0 -1012
  452. ccxt/async_support/ace.py +0 -1012
  453. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  454. ccxt/async_support/base/ws/fast_client.py +0 -96
  455. ccxt/async_support/bitbay.py +0 -17
  456. ccxt/async_support/bitcoincom.py +0 -17
  457. ccxt/async_support/bitfinex2.py +0 -3552
  458. ccxt/async_support/bitpanda.py +0 -16
  459. ccxt/async_support/bl3p.py +0 -485
  460. ccxt/async_support/coinlist.py +0 -2243
  461. ccxt/async_support/currencycom.py +0 -1950
  462. ccxt/async_support/hitbtc3.py +0 -16
  463. ccxt/async_support/idex.py +0 -1766
  464. ccxt/async_support/kuna.py +0 -1841
  465. ccxt/async_support/lykke.py +0 -1270
  466. ccxt/async_support/poloniexfutures.py +0 -1717
  467. ccxt/async_support/wazirx.py +0 -1224
  468. ccxt/bitbay.py +0 -17
  469. ccxt/bitcoincom.py +0 -17
  470. ccxt/bitfinex2.py +0 -3552
  471. ccxt/bitpanda.py +0 -16
  472. ccxt/bl3p.py +0 -485
  473. ccxt/coinlist.py +0 -2243
  474. ccxt/currencycom.py +0 -1950
  475. ccxt/hitbtc3.py +0 -16
  476. ccxt/idex.py +0 -1766
  477. ccxt/kuna.py +0 -1841
  478. ccxt/lykke.py +0 -1270
  479. ccxt/poloniexfutures.py +0 -1717
  480. ccxt/pro/bitcoincom.py +0 -34
  481. ccxt/pro/bitfinex2.py +0 -1083
  482. ccxt/pro/bitpanda.py +0 -15
  483. ccxt/pro/currencycom.py +0 -536
  484. ccxt/pro/idex.py +0 -672
  485. ccxt/pro/poloniexfutures.py +0 -990
  486. ccxt/pro/wazirx.py +0 -749
  487. ccxt/test/base/__init__.py +0 -29
  488. ccxt/test/base/test_account.py +0 -26
  489. ccxt/test/base/test_balance.py +0 -56
  490. ccxt/test/base/test_borrow_interest.py +0 -35
  491. ccxt/test/base/test_borrow_rate.py +0 -32
  492. ccxt/test/base/test_calculate_fee.py +0 -51
  493. ccxt/test/base/test_crypto.py +0 -127
  494. ccxt/test/base/test_currency.py +0 -76
  495. ccxt/test/base/test_datetime.py +0 -109
  496. ccxt/test/base/test_decimal_to_precision.py +0 -392
  497. ccxt/test/base/test_deep_extend.py +0 -68
  498. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  499. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  500. ccxt/test/base/test_funding_rate_history.py +0 -29
  501. ccxt/test/base/test_last_price.py +0 -31
  502. ccxt/test/base/test_ledger_entry.py +0 -45
  503. ccxt/test/base/test_ledger_item.py +0 -48
  504. ccxt/test/base/test_leverage_tier.py +0 -33
  505. ccxt/test/base/test_liquidation.py +0 -50
  506. ccxt/test/base/test_margin_mode.py +0 -24
  507. ccxt/test/base/test_margin_modification.py +0 -35
  508. ccxt/test/base/test_market.py +0 -193
  509. ccxt/test/base/test_number.py +0 -411
  510. ccxt/test/base/test_ohlcv.py +0 -33
  511. ccxt/test/base/test_open_interest.py +0 -32
  512. ccxt/test/base/test_order.py +0 -64
  513. ccxt/test/base/test_order_book.py +0 -69
  514. ccxt/test/base/test_position.py +0 -60
  515. ccxt/test/base/test_shared_methods.py +0 -353
  516. ccxt/test/base/test_status.py +0 -24
  517. ccxt/test/base/test_throttle.py +0 -126
  518. ccxt/test/base/test_ticker.py +0 -92
  519. ccxt/test/base/test_trade.py +0 -47
  520. ccxt/test/base/test_trading_fee.py +0 -26
  521. ccxt/test/base/test_transaction.py +0 -39
  522. ccxt/test/test_async.py +0 -1649
  523. ccxt/test/test_sync.py +0 -1648
  524. ccxt/wazirx.py +0 -1224
  525. ccxt_ir-4.3.46.0.2.dist-info/RECORD +0 -772
  526. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  527. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  528. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bigone import ImplicitAPI
8
8
  import asyncio
9
- from ccxt.base.types import Balances, Bool, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
9
+ from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -24,13 +24,13 @@ from ccxt.base.precise import Precise
24
24
 
25
25
  class bigone(Exchange, ImplicitAPI):
26
26
 
27
- def describe(self):
27
+ def describe(self) -> Any:
28
28
  return self.deep_extend(super(bigone, self).describe(), {
29
29
  'id': 'bigone',
30
30
  'name': 'BigONE',
31
31
  'countries': ['CN'],
32
32
  'version': 'v3',
33
- 'rateLimit': 1200, # 500 request per 10 minutes
33
+ 'rateLimit': 20, # 500 requests per 10 seconds
34
34
  'has': {
35
35
  'CORS': None,
36
36
  'spot': True,
@@ -52,8 +52,13 @@ class bigone(Exchange, ImplicitAPI):
52
52
  'fetchClosedOrders': True,
53
53
  'fetchCurrencies': True,
54
54
  'fetchDepositAddress': True,
55
+ 'fetchDepositAddresses': False,
56
+ 'fetchDepositAddressesByNetwork': False,
55
57
  'fetchDeposits': True,
58
+ 'fetchFundingHistory': False,
56
59
  'fetchFundingRate': False,
60
+ 'fetchFundingRateHistory': False,
61
+ 'fetchFundingRates': False,
57
62
  'fetchMarkets': True,
58
63
  'fetchMyTrades': True,
59
64
  'fetchOHLCV': True,
@@ -88,7 +93,7 @@ class bigone(Exchange, ImplicitAPI):
88
93
  },
89
94
  'hostname': 'big.one', # or 'bigone.com'
90
95
  'urls': {
91
- 'logo': 'https://user-images.githubusercontent.com/1294454/69354403-1d532180-0c91-11ea-88ed-44c06cefdf87.jpg',
96
+ 'logo': 'https://github.com/user-attachments/assets/4e5cfd53-98cc-4b90-92cd-0d7b512653d1',
92
97
  'api': {
93
98
  'public': 'https://{hostname}/api/v3',
94
99
  'private': 'https://{hostname}/api/v3/viewer',
@@ -168,7 +173,7 @@ class bigone(Exchange, ImplicitAPI):
168
173
  },
169
174
  'webExchange': {
170
175
  'get': [
171
- 'uc/v2/assets',
176
+ 'v3/assets',
172
177
  ],
173
178
  },
174
179
  },
@@ -301,6 +306,110 @@ class bigone(Exchange, ImplicitAPI):
301
306
  # undetermined: XinFin, YAS, Ycash
302
307
  },
303
308
  },
309
+ 'features': {
310
+ 'default': {
311
+ 'sandbox': False,
312
+ 'createOrder': {
313
+ 'marginMode': False,
314
+ 'triggerPrice': True,
315
+ 'triggerPriceType': None,
316
+ 'triggerDirection': True, # todo implement
317
+ 'stopLossPrice': False, # todo by trigger
318
+ 'takeProfitPrice': False, # todo by trigger
319
+ 'attachedStopLossTakeProfit': None,
320
+ 'timeInForce': {
321
+ 'IOC': True,
322
+ 'FOK': False,
323
+ 'PO': True,
324
+ 'GTD': False,
325
+ },
326
+ 'hedged': False,
327
+ 'trailing': False,
328
+ 'leverage': False,
329
+ 'marketBuyRequiresPrice': True,
330
+ 'marketBuyByCost': True,
331
+ 'selfTradePrevention': False,
332
+ 'iceberg': False,
333
+ },
334
+ 'createOrders': None, # todo: implement
335
+ 'fetchMyTrades': {
336
+ 'marginMode': False,
337
+ 'limit': 200,
338
+ 'daysBack': None,
339
+ 'untilDays': None,
340
+ 'symbolRequired': True,
341
+ },
342
+ 'fetchOrder': {
343
+ 'marginMode': False,
344
+ 'trigger': False,
345
+ 'trailing': False,
346
+ 'symbolRequired': False,
347
+ },
348
+ 'fetchOpenOrders': {
349
+ 'marginMode': False,
350
+ 'limit': 200,
351
+ 'trigger': False,
352
+ 'trailing': False,
353
+ 'symbolRequired': True,
354
+ },
355
+ 'fetchOrders': {
356
+ 'marginMode': False,
357
+ 'limit': 200,
358
+ 'daysBack': None,
359
+ 'untilDays': None,
360
+ 'trigger': False,
361
+ 'trailing': False,
362
+ 'symbolRequired': True,
363
+ },
364
+ 'fetchClosedOrders': {
365
+ 'marginMode': False,
366
+ 'limit': 200,
367
+ 'daysBack': None,
368
+ 'daysBackCanceled': None,
369
+ 'untilDays': None,
370
+ 'trigger': False,
371
+ 'trailing': False,
372
+ 'symbolRequired': True,
373
+ },
374
+ 'fetchOHLCV': {
375
+ 'limit': 500,
376
+ },
377
+ },
378
+ 'spot': {
379
+ 'extends': 'default',
380
+ },
381
+ 'forDerivatives': {
382
+ 'extends': 'default',
383
+ 'createOrder': {
384
+ # todo: implement
385
+ 'triggerPriceType': {
386
+ 'mark': True,
387
+ 'index': True,
388
+ 'last': True,
389
+ },
390
+ },
391
+ 'fetchOrders': {
392
+ 'daysBack': 100000,
393
+ 'untilDays': 100000,
394
+ },
395
+ 'fetchClosedOrders': {
396
+ 'daysBack': 100000,
397
+ 'untilDays': 100000,
398
+ },
399
+ },
400
+ 'swap': {
401
+ 'linear': {
402
+ 'extends': 'forDerivatives',
403
+ },
404
+ 'inverse': {
405
+ 'extends': 'forDerivatives',
406
+ },
407
+ },
408
+ 'future': {
409
+ 'linear': None,
410
+ 'inverse': None,
411
+ },
412
+ },
304
413
  'precisionMode': TICK_SIZE,
305
414
  'exceptions': {
306
415
  'exact': {
@@ -347,7 +456,7 @@ class bigone(Exchange, ImplicitAPI):
347
456
  :returns dict: an associative dictionary of currencies
348
457
  """
349
458
  # we use undocumented link(possible, less informative alternative is : https://big.one/api/uc/v3/assets/accounts)
350
- data = await self.fetch_web_endpoint('fetchCurrencies', 'webExchangeGetUcV2Assets', True)
459
+ data = await self.fetch_web_endpoint('fetchCurrencies', 'webExchangeGetV3Assets', True)
351
460
  if data is None:
352
461
  return None
353
462
  #
@@ -356,91 +465,40 @@ class bigone(Exchange, ImplicitAPI):
356
465
  # "message": "",
357
466
  # "data": [
358
467
  # {
359
- # "name": "TetherUS",
360
- # "symbol": "USDT",
361
- # "contract_address": "31",
362
- # "is_deposit_enabled": True,
363
- # "is_withdrawal_enabled": True,
364
- # "is_stub": False,
365
- # "withdrawal_fee": "5.0",
366
- # "is_fiat": False,
367
- # "is_memo_required": False,
368
- # "logo": {
369
- # "default": "https://assets.peatio.com/assets/v1/color/normal/usdt.png",
370
- # "white": "https://assets.peatio.com/assets/v1/white/normal/usdt.png",
468
+ # "uuid": "17082d1c-0195-4fb6-8779-2cdbcb9eeb3c",
469
+ # "symbol": "USDT",
470
+ # "name": "TetherUS",
471
+ # "scale": 12,
472
+ # "is_fiat": False,
473
+ # "is_transfer_enabled": True,
474
+ # "transfer_scale": 12,
475
+ # "binding_gateways": [
476
+ # {
477
+ # "guid": "07efc37f-d1ec-4bc9-8339-a745256ea2ba",
478
+ # "is_deposit_enabled": True,
479
+ # "gateway_name": "Ethereum",
480
+ # "min_withdrawal_amount": "0.000001",
481
+ # "withdrawal_fee": "5.71",
482
+ # "is_withdrawal_enabled": True,
483
+ # "min_deposit_amount": "0.000001",
484
+ # "is_memo_required": False,
485
+ # "withdrawal_scale": 6,
486
+ # "scale": 12
487
+ # },
488
+ # {
489
+ # "guid": "4e387a9a-a480-40a3-b4ae-ed1773c2db5a",
490
+ # "is_deposit_enabled": True,
491
+ # "gateway_name": "BinanceSmartChain",
492
+ # "min_withdrawal_amount": "10",
493
+ # "withdrawal_fee": "5",
494
+ # "is_withdrawal_enabled": False,
495
+ # "min_deposit_amount": "1",
496
+ # "is_memo_required": False,
497
+ # "withdrawal_scale": 8,
498
+ # "scale": 12
499
+ # }
500
+ # ]
371
501
  # },
372
- # "info_link": null,
373
- # "scale": "12",
374
- # "default_gateway": ..., # one object from "gateways"
375
- # "gateways": [
376
- # {
377
- # "uuid": "f0fa5a85-7f65-428a-b7b7-13aad55c2837",
378
- # "name": "Mixin",
379
- # "kind": "CHAIN",
380
- # "required_confirmations": "0",
381
- # },
382
- # {
383
- # "uuid": "b75446c6-1446-4c8d-b3d1-39f385b0a926",
384
- # "name": "Ethereum",
385
- # "kind": "CHAIN",
386
- # "required_confirmations": "18",
387
- # },
388
- # {
389
- # "uuid": "fe9b1b0b-e55c-4017-b5ce-16f524df5fc0",
390
- # "name": "Tron",
391
- # "kind": "CHAIN",
392
- # "required_confirmations": "1",
393
- # },
394
- # ...
395
- # ],
396
- # "payments": [],
397
- # "uuid": "17082d1c-0195-4fb6-8779-2cdbcb9eeb3c",
398
- # "binding_gateways": [
399
- # {
400
- # "guid": "07efc37f-d1ec-4bc9-8339-a745256ea2ba",
401
- # "contract_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
402
- # "is_deposit_enabled": True,
403
- # "display_name": "Ethereum(ERC20)",
404
- # "gateway_name": "Ethereum",
405
- # "min_withdrawal_amount": "0.000001",
406
- # "min_internal_withdrawal_amount": "0.00000001",
407
- # "withdrawal_fee": "14",
408
- # "is_withdrawal_enabled": True,
409
- # "min_deposit_amount": "0.000001",
410
- # "is_memo_required": False,
411
- # "withdrawal_scale": "2",
412
- # "gateway": {
413
- # "uuid": "b75446c6-1446-4c8d-b3d1-39f385b0a926",
414
- # "name": "Ethereum",
415
- # "kind": "CHAIN",
416
- # "required_confirmations": "18",
417
- # },
418
- # "scale": "12",
419
- # },
420
- # {
421
- # "guid": "b80a4d13-cac7-4319-842d-b33c3bfab8ec",
422
- # "contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
423
- # "is_deposit_enabled": True,
424
- # "display_name": "Tron(TRC20)",
425
- # "gateway_name": "Tron",
426
- # "min_withdrawal_amount": "0.000001",
427
- # "min_internal_withdrawal_amount": "0.00000001",
428
- # "withdrawal_fee": "1",
429
- # "is_withdrawal_enabled": True,
430
- # "min_deposit_amount": "0.000001",
431
- # "is_memo_required": False,
432
- # "withdrawal_scale": "6",
433
- # "gateway": {
434
- # "uuid": "fe9b1b0b-e55c-4017-b5ce-16f524df5fc0",
435
- # "name": "Tron",
436
- # "kind": "CHAIN",
437
- # "required_confirmations": "1",
438
- # },
439
- # "scale": "12",
440
- # },
441
- # ...
442
- # ],
443
- # },
444
502
  # ...
445
503
  # ],
446
504
  # }
@@ -452,19 +510,15 @@ class bigone(Exchange, ImplicitAPI):
452
510
  id = self.safe_string(currency, 'symbol')
453
511
  code = self.safe_currency_code(id)
454
512
  name = self.safe_string(currency, 'name')
455
- type = 'fiat' if self.safe_bool(currency, 'is_fiat') else 'crypto'
456
513
  networks: dict = {}
457
514
  chains = self.safe_list(currency, 'binding_gateways', [])
458
515
  currencyMaxPrecision = self.parse_precision(self.safe_string_2(currency, 'withdrawal_scale', 'scale'))
459
- currencyDepositEnabled: Bool = None
460
- currencyWithdrawEnabled: Bool = None
461
516
  for j in range(0, len(chains)):
462
517
  chain = chains[j]
463
518
  networkId = self.safe_string(chain, 'gateway_name')
464
519
  networkCode = self.network_id_to_code(networkId)
465
520
  deposit = self.safe_bool(chain, 'is_deposit_enabled')
466
521
  withdraw = self.safe_bool(chain, 'is_withdrawal_enabled')
467
- isActive = (deposit and withdraw)
468
522
  minDepositAmount = self.safe_string(chain, 'min_deposit_amount')
469
523
  minWithdrawalAmount = self.safe_string(chain, 'min_withdrawal_amount')
470
524
  withdrawalFee = self.safe_string(chain, 'withdrawal_fee')
@@ -475,7 +529,7 @@ class bigone(Exchange, ImplicitAPI):
475
529
  'margin': None,
476
530
  'deposit': deposit,
477
531
  'withdraw': withdraw,
478
- 'active': isActive,
532
+ 'active': None,
479
533
  'fee': self.parse_number(withdrawalFee),
480
534
  'precision': self.parse_number(precision),
481
535
  'limits': {
@@ -490,19 +544,26 @@ class bigone(Exchange, ImplicitAPI):
490
544
  },
491
545
  'info': chain,
492
546
  }
493
- # fill global values
494
- currencyDepositEnabled = (currencyDepositEnabled is None) or deposit if deposit else currencyDepositEnabled
495
- currencyWithdrawEnabled = (currencyWithdrawEnabled is None) or withdraw if withdraw else currencyWithdrawEnabled
496
- currencyMaxPrecision = (currencyMaxPrecision is None) or precision if Precise.string_gt(currencyMaxPrecision, precision) else currencyMaxPrecision
497
- result[code] = {
547
+ chainLength = len(chains)
548
+ type: Str = None
549
+ if self.safe_bool(currency, 'is_fiat'):
550
+ type = 'fiat'
551
+ elif chainLength == 0:
552
+ if self.is_leveraged_currency(id):
553
+ type = 'leveraged'
554
+ else:
555
+ type = 'other'
556
+ else:
557
+ type = 'crypto'
558
+ result[code] = self.safe_currency_structure({
498
559
  'id': id,
499
560
  'code': code,
500
561
  'info': currency,
501
562
  'name': name,
502
563
  'type': type,
503
564
  'active': None,
504
- 'deposit': currencyDepositEnabled,
505
- 'withdraw': currencyWithdrawEnabled,
565
+ 'deposit': None,
566
+ 'withdraw': None,
506
567
  'fee': None,
507
568
  'precision': self.parse_number(currencyMaxPrecision),
508
569
  'limits': {
@@ -516,13 +577,15 @@ class bigone(Exchange, ImplicitAPI):
516
577
  },
517
578
  },
518
579
  'networks': networks,
519
- }
580
+ })
520
581
  return result
521
582
 
522
583
  async def fetch_markets(self, params={}) -> List[Market]:
523
584
  """
524
585
  retrieves data on all markets for bigone
525
- :see: https://open.big.one/docs/spot_asset_pair.html
586
+
587
+ https://open.big.one/docs/spot_asset_pair.html
588
+
526
589
  :param dict [params]: extra parameters specific to the exchange API endpoint
527
590
  :returns dict[]: an array of objects representing market data
528
591
  """
@@ -775,13 +838,17 @@ class bigone(Exchange, ImplicitAPI):
775
838
  'average': None,
776
839
  'baseVolume': self.safe_string_2(ticker, 'volume', 'volume24h'),
777
840
  'quoteVolume': self.safe_string(ticker, 'volume24hInUsd'),
841
+ 'markPrice': self.safe_string(ticker, 'markPrice'),
842
+ 'indexPrice': self.safe_string(ticker, 'indexPrice'),
778
843
  'info': ticker,
779
844
  }, market)
780
845
 
781
846
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
782
847
  """
783
848
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
784
- :see: https://open.big.one/docs/spot_tickers.html
849
+
850
+ https://open.big.one/docs/spot_tickers.html
851
+
785
852
  :param str symbol: unified symbol of the market to fetch the ticker for
786
853
  :param dict [params]: extra parameters specific to the exchange API endpoint
787
854
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -820,7 +887,9 @@ class bigone(Exchange, ImplicitAPI):
820
887
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
821
888
  """
822
889
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
823
- :see: https://open.big.one/docs/spot_tickers.html
890
+
891
+ https://open.big.one/docs/spot_tickers.html
892
+
824
893
  :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
825
894
  :param dict [params]: extra parameters specific to the exchange API endpoint
826
895
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -899,10 +968,12 @@ class bigone(Exchange, ImplicitAPI):
899
968
  tickers = self.parse_tickers(data, symbols)
900
969
  return self.filter_by_array_tickers(tickers, 'symbol', symbols)
901
970
 
902
- async def fetch_time(self, params={}):
971
+ async def fetch_time(self, params={}) -> Int:
903
972
  """
904
973
  fetches the current integer timestamp in milliseconds from the exchange server
905
- :see: https://open.big.one/docs/spot_ping.html
974
+
975
+ https://open.big.one/docs/spot_ping.html
976
+
906
977
  :param dict [params]: extra parameters specific to the exchange API endpoint
907
978
  :returns int: the current integer timestamp in milliseconds from the exchange server
908
979
  """
@@ -921,7 +992,9 @@ class bigone(Exchange, ImplicitAPI):
921
992
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
922
993
  """
923
994
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
924
- :see: https://open.big.one/docs/contract_misc.html#get-orderbook-snapshot
995
+
996
+ https://open.big.one/docs/contract_misc.html#get-orderbook-snapshot
997
+
925
998
  :param str symbol: unified symbol of the market to fetch the order book for
926
999
  :param int [limit]: the maximum amount of order book entries to return
927
1000
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1093,8 +1166,8 @@ class bigone(Exchange, ImplicitAPI):
1093
1166
  'cost': None,
1094
1167
  'info': trade,
1095
1168
  }
1096
- makerCurrencyCode = None
1097
- takerCurrencyCode = None
1169
+ makerCurrencyCode: str
1170
+ takerCurrencyCode: str
1098
1171
  if takerOrMaker is not None:
1099
1172
  if side == 'buy':
1100
1173
  if takerOrMaker == 'maker':
@@ -1136,7 +1209,9 @@ class bigone(Exchange, ImplicitAPI):
1136
1209
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1137
1210
  """
1138
1211
  get the list of most recent trades for a particular symbol
1139
- :see: https://open.big.one/docs/spot_asset_pair_trade.html
1212
+
1213
+ https://open.big.one/docs/spot_asset_pair_trade.html
1214
+
1140
1215
  :param str symbol: unified symbol of the market to fetch trades for
1141
1216
  :param int [since]: timestamp in ms of the earliest trade to fetch
1142
1217
  :param int [limit]: the maximum amount of trades to fetch
@@ -1198,30 +1273,42 @@ class bigone(Exchange, ImplicitAPI):
1198
1273
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1199
1274
  """
1200
1275
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1201
- :see: https://open.big.one/docs/spot_asset_pair_candle.html
1276
+
1277
+ https://open.big.one/docs/spot_asset_pair_candle.html
1278
+
1202
1279
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1203
1280
  :param str timeframe: the length of time each candle represents
1204
1281
  :param int [since]: timestamp in ms of the earliest candle to fetch
1205
1282
  :param int [limit]: the maximum amount of candles to fetch
1206
1283
  :param dict [params]: extra parameters specific to the exchange API endpoint
1284
+ :param int [params.until]: timestamp in ms of the earliest candle to fetch
1207
1285
  :returns int[][]: A list of candles ordered, open, high, low, close, volume
1208
1286
  """
1209
1287
  await self.load_markets()
1210
1288
  market = self.market(symbol)
1211
1289
  if market['contract']:
1212
1290
  raise BadRequest(self.id + ' fetchOHLCV() can only fetch ohlcvs for spot markets')
1291
+ until = self.safe_integer(params, 'until')
1292
+ untilIsDefined = (until is not None)
1293
+ sinceIsDefined = (since is not None)
1213
1294
  if limit is None:
1214
- limit = 100 # default 100, max 500
1295
+ limit = 500 if (sinceIsDefined and untilIsDefined) else 100 # default 100, max 500, if since and limit defined then fetch all the candles between them unless it exceeds the max of 500
1215
1296
  request: dict = {
1216
1297
  'asset_pair_name': market['id'],
1217
1298
  'period': self.safe_string(self.timeframes, timeframe, timeframe),
1218
1299
  'limit': limit,
1219
1300
  }
1220
- if since is not None:
1301
+ if sinceIsDefined:
1221
1302
  # start = self.parse_to_int(since / 1000)
1222
1303
  duration = self.parse_timeframe(timeframe)
1223
- end = self.sum(since, limit * duration * 1000)
1224
- request['time'] = self.iso8601(end)
1304
+ endByLimit = self.sum(since, limit * duration * 1000)
1305
+ if untilIsDefined:
1306
+ request['time'] = self.iso8601(min(endByLimit, until + 1))
1307
+ else:
1308
+ request['time'] = self.iso8601(endByLimit)
1309
+ elif untilIsDefined:
1310
+ request['time'] = self.iso8601(until + 1)
1311
+ params = self.omit(params, 'until')
1225
1312
  response = await self.publicGetAssetPairsAssetPairNameCandles(self.extend(request, params))
1226
1313
  #
1227
1314
  # {
@@ -1269,8 +1356,10 @@ class bigone(Exchange, ImplicitAPI):
1269
1356
  async def fetch_balance(self, params={}) -> Balances:
1270
1357
  """
1271
1358
  query for balance and get the amount of funds available for trading or funds locked in orders
1272
- :see: https://open.big.one/docs/fund_accounts.html
1273
- :see: https://open.big.one/docs/spot_accounts.html
1359
+
1360
+ https://open.big.one/docs/fund_accounts.html
1361
+ https://open.big.one/docs/spot_accounts.html
1362
+
1274
1363
  :param dict [params]: extra parameters specific to the exchange API endpoint
1275
1364
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
1276
1365
  """
@@ -1362,7 +1451,6 @@ class bigone(Exchange, ImplicitAPI):
1362
1451
  'postOnly': self.safe_bool(order, 'post_only'),
1363
1452
  'side': side,
1364
1453
  'price': price,
1365
- 'stopPrice': triggerPrice,
1366
1454
  'triggerPrice': triggerPrice,
1367
1455
  'amount': amount,
1368
1456
  'cost': cost,
@@ -1377,7 +1465,9 @@ class bigone(Exchange, ImplicitAPI):
1377
1465
  async def create_market_buy_order_with_cost(self, symbol: str, cost: float, params={}):
1378
1466
  """
1379
1467
  create a market buy order by providing the symbol and cost
1380
- :see: https://open.big.one/docs/spot_orders.html#create-order
1468
+
1469
+ https://open.big.one/docs/spot_orders.html#create-order
1470
+
1381
1471
  :param str symbol: unified symbol of the market to create an order in
1382
1472
  :param float cost: how much you want to trade in units of the quote currency
1383
1473
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1393,21 +1483,23 @@ class bigone(Exchange, ImplicitAPI):
1393
1483
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1394
1484
  """
1395
1485
  create a trade order
1396
- :see: https://open.big.one/docs/spot_orders.html#create-order
1486
+
1487
+ https://open.big.one/docs/spot_orders.html#create-order
1488
+
1397
1489
  :param str symbol: unified symbol of the market to create an order in
1398
1490
  :param str type: 'market' or 'limit'
1399
1491
  :param str side: 'buy' or 'sell'
1400
1492
  :param float amount: how much of currency you want to trade in units of base currency
1401
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1493
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1402
1494
  :param dict [params]: extra parameters specific to the exchange API endpoint
1403
1495
  :param float [params.triggerPrice]: the price at which a trigger order is triggered at
1404
1496
  :param bool [params.postOnly]: if True, the order will only be posted to the order book and not executed immediately
1405
1497
  :param str [params.timeInForce]: "GTC", "IOC", or "PO"
1406
1498
  :param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
1407
- *
1408
- * EXCHANGE SPECIFIC PARAMETERS
1409
- :param str operator: *stop order only* GTE or LTE(default)
1410
- :param str client_order_id: must match ^[a-zA-Z0-9-_]{1,36}$ self regex. client_order_id is unique in 24 hours, If created 24 hours later and the order closed, it will be released and can be reused
1499
+
1500
+ EXCHANGE SPECIFIC PARAMETERS
1501
+ :param str [params.operator]: *stop order only* GTE or LTE(default)
1502
+ :param str [params.client_order_id]: must match ^[a-zA-Z0-9-_]{1,36}$ self regex. client_order_id is unique in 24 hours, If created 24 hours later and the order closed, it will be released and can be reused
1411
1503
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1412
1504
  """
1413
1505
  await self.load_markets()
@@ -1490,7 +1582,9 @@ class bigone(Exchange, ImplicitAPI):
1490
1582
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
1491
1583
  """
1492
1584
  cancels an open order
1493
- :see: https://open.big.one/docs/spot_orders.html#cancel-order
1585
+
1586
+ https://open.big.one/docs/spot_orders.html#cancel-order
1587
+
1494
1588
  :param str id: order id
1495
1589
  :param str symbol: Not used by bigone cancelOrder()
1496
1590
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1517,7 +1611,9 @@ class bigone(Exchange, ImplicitAPI):
1517
1611
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1518
1612
  """
1519
1613
  cancel all open orders
1520
- :see: https://open.big.one/docs/spot_orders.html#cancel-all-orders
1614
+
1615
+ https://open.big.one/docs/spot_orders.html#cancel-all-orders
1616
+
1521
1617
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
1522
1618
  :param dict [params]: extra parameters specific to the exchange API endpoint
1523
1619
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1540,12 +1636,33 @@ class bigone(Exchange, ImplicitAPI):
1540
1636
  # }
1541
1637
  # }
1542
1638
  #
1543
- return response
1639
+ data = self.safe_dict(response, 'data', {})
1640
+ cancelled = self.safe_list(data, 'cancelled', [])
1641
+ failed = self.safe_list(data, 'failed', [])
1642
+ result = []
1643
+ for i in range(0, len(cancelled)):
1644
+ orderId = cancelled[i]
1645
+ result.append(self.safe_order({
1646
+ 'info': orderId,
1647
+ 'id': orderId,
1648
+ 'status': 'canceled',
1649
+ }))
1650
+ for i in range(0, len(failed)):
1651
+ orderId = failed[i]
1652
+ result.append(self.safe_order({
1653
+ 'info': orderId,
1654
+ 'id': orderId,
1655
+ 'status': 'failed',
1656
+ }))
1657
+ return result
1544
1658
 
1545
1659
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1546
1660
  """
1547
1661
  fetches information on an order made by the user
1548
- :see: https://open.big.one/docs/spot_orders.html#get-one-order
1662
+
1663
+ https://open.big.one/docs/spot_orders.html#get-one-order
1664
+
1665
+ :param str id: the order id
1549
1666
  :param str symbol: not used by bigone fetchOrder
1550
1667
  :param dict [params]: extra parameters specific to the exchange API endpoint
1551
1668
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1559,7 +1676,9 @@ class bigone(Exchange, ImplicitAPI):
1559
1676
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1560
1677
  """
1561
1678
  fetches information on multiple orders made by the user
1562
- :see: https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1679
+
1680
+ https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1681
+
1563
1682
  :param str symbol: unified market symbol of the market orders were made in
1564
1683
  :param int [since]: the earliest time in ms to fetch orders for
1565
1684
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1606,7 +1725,9 @@ class bigone(Exchange, ImplicitAPI):
1606
1725
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1607
1726
  """
1608
1727
  fetch all trades made by the user
1609
- :see: https://open.big.one/docs/spot_trade.html#trades-of-user
1728
+
1729
+ https://open.big.one/docs/spot_trade.html#trades-of-user
1730
+
1610
1731
  :param str symbol: unified market symbol
1611
1732
  :param int [since]: the earliest time in ms to fetch trades for
1612
1733
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -1672,7 +1793,9 @@ class bigone(Exchange, ImplicitAPI):
1672
1793
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1673
1794
  """
1674
1795
  fetch all unfilled currently open orders
1675
- :see: https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1796
+
1797
+ https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1798
+
1676
1799
  :param str symbol: unified market symbol
1677
1800
  :param int [since]: the earliest time in ms to fetch open orders for
1678
1801
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -1687,7 +1810,9 @@ class bigone(Exchange, ImplicitAPI):
1687
1810
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1688
1811
  """
1689
1812
  fetches information on multiple closed orders made by the user
1690
- :see: https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1813
+
1814
+ https://open.big.one/docs/spot_orders.html#get-user-orders-in-one-asset-pair
1815
+
1691
1816
  :param str symbol: unified market symbol of the market orders were made in
1692
1817
  :param int [since]: the earliest time in ms to fetch orders for
1693
1818
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1731,10 +1856,12 @@ class bigone(Exchange, ImplicitAPI):
1731
1856
  headers['User-Agent'] = 'ccxt/' + self.id + '-' + self.version
1732
1857
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1733
1858
 
1734
- async def fetch_deposit_address(self, code: str, params={}):
1859
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1735
1860
  """
1736
1861
  fetch the deposit address for a currency associated with self account
1737
- :see: https://open.big.one/docs/spot_deposit.html#get-deposite-address-of-one-asset-of-user
1862
+
1863
+ https://open.big.one/docs/spot_deposit.html#get-deposite-address-of-one-asset-of-user
1864
+
1738
1865
  :param str code: unified currency code
1739
1866
  :param dict [params]: extra parameters specific to the exchange API endpoint
1740
1867
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -1774,11 +1901,11 @@ class bigone(Exchange, ImplicitAPI):
1774
1901
  tag = self.safe_string(addressObject, 'memo')
1775
1902
  self.check_address(address)
1776
1903
  return {
1904
+ 'info': response,
1777
1905
  'currency': code,
1906
+ 'network': self.network_id_to_code(selectedNetworkId),
1778
1907
  'address': address,
1779
1908
  'tag': tag,
1780
- 'network': self.network_id_to_code(selectedNetworkId),
1781
- 'info': response,
1782
1909
  }
1783
1910
 
1784
1911
  def parse_transaction_status(self, status: Str):
@@ -1882,7 +2009,9 @@ class bigone(Exchange, ImplicitAPI):
1882
2009
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1883
2010
  """
1884
2011
  fetch all deposits made to an account
1885
- :see: https://open.big.one/docs/spot_deposit.html#deposit-of-user
2012
+
2013
+ https://open.big.one/docs/spot_deposit.html#deposit-of-user
2014
+
1886
2015
  :param str code: unified currency code
1887
2016
  :param int [since]: the earliest time in ms to fetch deposits for
1888
2017
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -1930,7 +2059,9 @@ class bigone(Exchange, ImplicitAPI):
1930
2059
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1931
2060
  """
1932
2061
  fetch all withdrawals made from an account
1933
- :see: https://open.big.one/docs/spot_withdrawal.html#get-withdrawals-of-user
2062
+
2063
+ https://open.big.one/docs/spot_withdrawal.html#get-withdrawals-of-user
2064
+
1934
2065
  :param str code: unified currency code
1935
2066
  :param int [since]: the earliest time in ms to fetch withdrawals for
1936
2067
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1978,7 +2109,9 @@ class bigone(Exchange, ImplicitAPI):
1978
2109
  async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
1979
2110
  """
1980
2111
  transfer currency internally between wallets on the same account
1981
- :see: https://open.big.one/docs/spot_transfer.html#transfer-of-user
2112
+
2113
+ https://open.big.one/docs/spot_transfer.html#transfer-of-user
2114
+
1982
2115
  :param str code: unified currency code
1983
2116
  :param float amount: amount to transfer
1984
2117
  :param str fromAccount: 'SPOT', 'FUND', or 'CONTRACT'
@@ -2044,10 +2177,12 @@ class bigone(Exchange, ImplicitAPI):
2044
2177
  }
2045
2178
  return self.safe_string(statuses, status, 'failed')
2046
2179
 
2047
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2180
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
2048
2181
  """
2049
2182
  make a withdrawal
2050
- :see: https://open.big.one/docs/spot_withdrawal.html#create-withdrawal-of-user
2183
+
2184
+ https://open.big.one/docs/spot_withdrawal.html#create-withdrawal-of-user
2185
+
2051
2186
  :param str code: unified currency code
2052
2187
  :param float amount: the amount to withdraw
2053
2188
  :param str address: the address to withdraw to