ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.1__py2.py3-none-any.whl

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