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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +8 -8
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +7 -7
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +8 -8
  68. ccxt/async_support/afratether.py +9 -9
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +31 -37
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +25 -24
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +29 -35
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +22 -21
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +28 -25
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +12 -11
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/__test__.py +0 -7
  438. ccxt/abstract/ace.py +0 -15
  439. ccxt/abstract/bitbay.py +0 -53
  440. ccxt/abstract/bitcoincom.py +0 -115
  441. ccxt/abstract/bitfinex2.py +0 -139
  442. ccxt/abstract/bitpanda.py +0 -35
  443. ccxt/abstract/bl3p.py +0 -19
  444. ccxt/abstract/coinlist.py +0 -54
  445. ccxt/abstract/currencycom.py +0 -68
  446. ccxt/abstract/hitbtc3.py +0 -115
  447. ccxt/abstract/idex.py +0 -26
  448. ccxt/abstract/kuna.py +0 -182
  449. ccxt/abstract/lykke.py +0 -29
  450. ccxt/abstract/poloniexfutures.py +0 -48
  451. ccxt/abstract/wazirx.py +0 -30
  452. ccxt/ace.py +0 -1012
  453. ccxt/async_support/ace.py +0 -1012
  454. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  455. ccxt/async_support/base/ws/fast_client.py +0 -96
  456. ccxt/async_support/bitbay.py +0 -17
  457. ccxt/async_support/bitcoincom.py +0 -17
  458. ccxt/async_support/bitfinex2.py +0 -3552
  459. ccxt/async_support/bitpanda.py +0 -16
  460. ccxt/async_support/bl3p.py +0 -485
  461. ccxt/async_support/coinlist.py +0 -2243
  462. ccxt/async_support/currencycom.py +0 -1950
  463. ccxt/async_support/hitbtc3.py +0 -16
  464. ccxt/async_support/idex.py +0 -1766
  465. ccxt/async_support/kuna.py +0 -1841
  466. ccxt/async_support/lykke.py +0 -1270
  467. ccxt/async_support/poloniexfutures.py +0 -1717
  468. ccxt/async_support/wazirx.py +0 -1224
  469. ccxt/bitbay.py +0 -17
  470. ccxt/bitcoincom.py +0 -17
  471. ccxt/bitfinex2.py +0 -3552
  472. ccxt/bitpanda.py +0 -16
  473. ccxt/bl3p.py +0 -485
  474. ccxt/coinlist.py +0 -2243
  475. ccxt/currencycom.py +0 -1950
  476. ccxt/hitbtc3.py +0 -16
  477. ccxt/idex.py +0 -1766
  478. ccxt/kuna.py +0 -1841
  479. ccxt/lykke.py +0 -1270
  480. ccxt/poloniexfutures.py +0 -1717
  481. ccxt/pro/bitcoincom.py +0 -34
  482. ccxt/pro/bitfinex2.py +0 -1083
  483. ccxt/pro/bitpanda.py +0 -15
  484. ccxt/pro/currencycom.py +0 -536
  485. ccxt/pro/idex.py +0 -672
  486. ccxt/pro/poloniexfutures.py +0 -990
  487. ccxt/pro/wazirx.py +0 -749
  488. ccxt/test/base/__init__.py +0 -29
  489. ccxt/test/base/test_account.py +0 -26
  490. ccxt/test/base/test_balance.py +0 -56
  491. ccxt/test/base/test_borrow_interest.py +0 -35
  492. ccxt/test/base/test_borrow_rate.py +0 -32
  493. ccxt/test/base/test_calculate_fee.py +0 -51
  494. ccxt/test/base/test_crypto.py +0 -127
  495. ccxt/test/base/test_currency.py +0 -76
  496. ccxt/test/base/test_datetime.py +0 -109
  497. ccxt/test/base/test_decimal_to_precision.py +0 -392
  498. ccxt/test/base/test_deep_extend.py +0 -68
  499. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  500. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  501. ccxt/test/base/test_funding_rate_history.py +0 -29
  502. ccxt/test/base/test_last_price.py +0 -31
  503. ccxt/test/base/test_ledger_entry.py +0 -45
  504. ccxt/test/base/test_ledger_item.py +0 -48
  505. ccxt/test/base/test_leverage_tier.py +0 -33
  506. ccxt/test/base/test_liquidation.py +0 -50
  507. ccxt/test/base/test_margin_mode.py +0 -24
  508. ccxt/test/base/test_margin_modification.py +0 -35
  509. ccxt/test/base/test_market.py +0 -193
  510. ccxt/test/base/test_number.py +0 -411
  511. ccxt/test/base/test_ohlcv.py +0 -33
  512. ccxt/test/base/test_open_interest.py +0 -32
  513. ccxt/test/base/test_order.py +0 -64
  514. ccxt/test/base/test_order_book.py +0 -69
  515. ccxt/test/base/test_position.py +0 -60
  516. ccxt/test/base/test_shared_methods.py +0 -353
  517. ccxt/test/base/test_status.py +0 -24
  518. ccxt/test/base/test_throttle.py +0 -126
  519. ccxt/test/base/test_ticker.py +0 -92
  520. ccxt/test/base/test_trade.py +0 -47
  521. ccxt/test/base/test_trading_fee.py +0 -26
  522. ccxt/test/base/test_transaction.py +0 -39
  523. ccxt/test/test_async.py +0 -1649
  524. ccxt/test/test_sync.py +0 -1648
  525. ccxt/wazirx.py +0 -1224
  526. ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
  527. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  528. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bitbank import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
9
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -20,7 +20,7 @@ from ccxt.base.decimal_to_precision import TICK_SIZE
20
20
 
21
21
  class bitbank(Exchange, ImplicitAPI):
22
22
 
23
- def describe(self):
23
+ def describe(self) -> Any:
24
24
  return self.deep_extend(super(bitbank, self).describe(), {
25
25
  'id': 'bitbank',
26
26
  'name': 'bitbank',
@@ -34,33 +34,62 @@ class bitbank(Exchange, ImplicitAPI):
34
34
  'future': False,
35
35
  'option': False,
36
36
  'addMargin': False,
37
+ 'borrowCrossMargin': False,
38
+ 'borrowIsolatedMargin': False,
39
+ 'borrowMargin': False,
37
40
  'cancelAllOrders': False,
38
41
  'cancelOrder': True,
39
42
  'closeAllPositions': False,
40
43
  'closePosition': False,
41
44
  'createOrder': True,
45
+ 'createOrderWithTakeProfitAndStopLoss': False,
46
+ 'createOrderWithTakeProfitAndStopLossWs': False,
42
47
  'createReduceOnlyOrder': False,
43
48
  'fetchBalance': True,
49
+ 'fetchBorrowInterest': False,
50
+ 'fetchBorrowRate': False,
44
51
  'fetchBorrowRateHistories': False,
45
52
  'fetchBorrowRateHistory': False,
53
+ 'fetchBorrowRates': False,
54
+ 'fetchBorrowRatesPerSymbol': False,
46
55
  'fetchCrossBorrowRate': False,
47
56
  'fetchCrossBorrowRates': False,
48
57
  'fetchDepositAddress': True,
58
+ 'fetchDepositAddresses': False,
59
+ 'fetchDepositAddressesByNetwork': False,
49
60
  'fetchFundingHistory': False,
61
+ 'fetchFundingInterval': False,
62
+ 'fetchFundingIntervals': False,
50
63
  'fetchFundingRate': False,
51
64
  'fetchFundingRateHistory': False,
52
65
  'fetchFundingRates': False,
66
+ 'fetchGreeks': False,
53
67
  'fetchIndexOHLCV': False,
54
68
  'fetchIsolatedBorrowRate': False,
55
69
  'fetchIsolatedBorrowRates': False,
70
+ 'fetchIsolatedPositions': False,
56
71
  'fetchLeverage': False,
72
+ 'fetchLeverages': False,
57
73
  'fetchLeverageTiers': False,
74
+ 'fetchLiquidations': False,
75
+ 'fetchLongShortRatio': False,
76
+ 'fetchLongShortRatioHistory': False,
77
+ 'fetchMarginAdjustmentHistory': False,
58
78
  'fetchMarginMode': False,
79
+ 'fetchMarginModes': False,
80
+ 'fetchMarketLeverageTiers': False,
59
81
  'fetchMarkOHLCV': False,
82
+ 'fetchMarkPrices': False,
83
+ 'fetchMyLiquidations': False,
84
+ 'fetchMySettlementHistory': False,
60
85
  'fetchMyTrades': True,
61
86
  'fetchOHLCV': True,
87
+ 'fetchOpenInterest': False,
62
88
  'fetchOpenInterestHistory': False,
89
+ 'fetchOpenInterests': False,
63
90
  'fetchOpenOrders': True,
91
+ 'fetchOption': False,
92
+ 'fetchOptionChain': False,
64
93
  'fetchOrder': True,
65
94
  'fetchOrderBook': True,
66
95
  'fetchPosition': False,
@@ -71,14 +100,19 @@ class bitbank(Exchange, ImplicitAPI):
71
100
  'fetchPositionsHistory': False,
72
101
  'fetchPositionsRisk': False,
73
102
  'fetchPremiumIndexOHLCV': False,
103
+ 'fetchSettlementHistory': False,
74
104
  'fetchTicker': True,
75
105
  'fetchTrades': True,
76
106
  'fetchTradingFee': False,
77
107
  'fetchTradingFees': True,
78
108
  'fetchTransfer': False,
79
109
  'fetchTransfers': False,
110
+ 'fetchVolatilityHistory': False,
80
111
  'reduceMargin': False,
112
+ 'repayCrossMargin': False,
113
+ 'repayIsolatedMargin': False,
81
114
  'setLeverage': False,
115
+ 'setMargin': False,
82
116
  'setMarginMode': False,
83
117
  'setPositionMode': False,
84
118
  'transfer': False,
@@ -98,7 +132,7 @@ class bitbank(Exchange, ImplicitAPI):
98
132
  },
99
133
  'hostname': 'bitbank.cc',
100
134
  'urls': {
101
- 'logo': 'https://user-images.githubusercontent.com/1294454/37808081-b87f2d9c-2e59-11e8-894d-c1900b7584fe.jpg',
135
+ 'logo': 'https://github.com/user-attachments/assets/9d616de0-8a88-4468-8e38-d269acab0348',
102
136
  'api': {
103
137
  'public': 'https://public.{hostname}',
104
138
  'private': 'https://api.{hostname}',
@@ -126,8 +160,11 @@ class bitbank(Exchange, ImplicitAPI):
126
160
  'user/assets',
127
161
  'user/spot/order',
128
162
  'user/spot/active_orders',
163
+ 'user/margin/positions',
129
164
  'user/spot/trade_history',
130
165
  'user/deposit_history',
166
+ 'user/unconfirmed_deposits',
167
+ 'user/deposit_originators',
131
168
  'user/withdrawal_account',
132
169
  'user/withdrawal_history',
133
170
  'spot/status',
@@ -138,6 +175,8 @@ class bitbank(Exchange, ImplicitAPI):
138
175
  'user/spot/cancel_order',
139
176
  'user/spot/cancel_orders',
140
177
  'user/spot/orders_info',
178
+ 'user/confirm_deposits',
179
+ 'user/confirm_deposits_all',
141
180
  'user/request_withdrawal',
142
181
  ],
143
182
  },
@@ -147,6 +186,67 @@ class bitbank(Exchange, ImplicitAPI):
147
186
  ],
148
187
  },
149
188
  },
189
+ 'features': {
190
+ 'spot': {
191
+ 'sandbox': False,
192
+ 'createOrder': {
193
+ 'marginMode': False,
194
+ 'triggerPrice': True, # todo implement
195
+ 'triggerPriceType': None,
196
+ 'triggerDirection': False,
197
+ 'stopLossPrice': False,
198
+ 'takeProfitPrice': False,
199
+ 'attachedStopLossTakeProfit': None,
200
+ 'timeInForce': {
201
+ 'IOC': False,
202
+ 'FOK': False,
203
+ 'PO': True, # todo: implement
204
+ 'GTD': False,
205
+ },
206
+ 'hedged': False,
207
+ 'trailing': False,
208
+ 'leverage': False,
209
+ 'marketBuyRequiresPrice': False,
210
+ 'marketBuyByCost': False,
211
+ 'selfTradePrevention': False,
212
+ 'iceberg': False,
213
+ },
214
+ 'createOrders': None,
215
+ 'fetchMyTrades': {
216
+ 'marginMode': False,
217
+ 'limit': 1000,
218
+ 'daysBack': None,
219
+ 'untilDays': None,
220
+ 'symbolRequired': False,
221
+ },
222
+ 'fetchOrder': {
223
+ 'marginMode': False,
224
+ 'trigger': False,
225
+ 'trailing': False,
226
+ 'symbolRequired': False,
227
+ },
228
+ 'fetchOpenOrders': {
229
+ 'marginMode': False,
230
+ 'limit': 1000,
231
+ 'trigger': False,
232
+ 'trailing': False,
233
+ 'symbolRequired': False,
234
+ },
235
+ 'fetchOrders': None,
236
+ 'fetchClosedOrders': None,
237
+ 'fetchOHLCV': {
238
+ 'limit': 1000,
239
+ },
240
+ },
241
+ 'swap': {
242
+ 'linear': None,
243
+ 'inverse': None,
244
+ },
245
+ 'future': {
246
+ 'linear': None,
247
+ 'inverse': None,
248
+ },
249
+ },
150
250
  'precisionMode': TICK_SIZE,
151
251
  'exceptions': {
152
252
  'exact': {
@@ -172,7 +272,9 @@ class bitbank(Exchange, ImplicitAPI):
172
272
  async def fetch_markets(self, params={}) -> List[Market]:
173
273
  """
174
274
  retrieves data on all markets for bitbank
175
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
275
+
276
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
277
+
176
278
  :param dict [params]: extra parameters specific to the exchange API endpoint
177
279
  :returns dict[]: an array of objects representing market data
178
280
  """
@@ -296,7 +398,9 @@ class bitbank(Exchange, ImplicitAPI):
296
398
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
297
399
  """
298
400
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
299
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#ticker
401
+
402
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#ticker
403
+
300
404
  :param str symbol: unified symbol of the market to fetch the ticker for
301
405
  :param dict [params]: extra parameters specific to the exchange API endpoint
302
406
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -313,7 +417,9 @@ class bitbank(Exchange, ImplicitAPI):
313
417
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
314
418
  """
315
419
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
316
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#depth
420
+
421
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#depth
422
+
317
423
  :param str symbol: unified symbol of the market to fetch the order book for
318
424
  :param int [limit]: the maximum amount of order book entries to return
319
425
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -376,7 +482,9 @@ class bitbank(Exchange, ImplicitAPI):
376
482
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
377
483
  """
378
484
  get the list of most recent trades for a particular symbol
379
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#transactions
485
+
486
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#transactions
487
+
380
488
  :param str symbol: unified symbol of the market to fetch trades for
381
489
  :param int [since]: timestamp in ms of the earliest trade to fetch
382
490
  :param int [limit]: the maximum amount of trades to fetch
@@ -396,7 +504,9 @@ class bitbank(Exchange, ImplicitAPI):
396
504
  async def fetch_trading_fees(self, params={}) -> TradingFees:
397
505
  """
398
506
  fetch the trading fees for multiple markets
399
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
507
+
508
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
509
+
400
510
  :param dict [params]: extra parameters specific to the exchange API endpoint
401
511
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
402
512
  """
@@ -471,7 +581,9 @@ class bitbank(Exchange, ImplicitAPI):
471
581
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
472
582
  """
473
583
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
474
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#candlestick
584
+
585
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#candlestick
586
+
475
587
  :param str symbol: unified symbol of the market to fetch OHLCV data for
476
588
  :param str timeframe: the length of time each candle represents
477
589
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -538,7 +650,9 @@ class bitbank(Exchange, ImplicitAPI):
538
650
  async def fetch_balance(self, params={}) -> Balances:
539
651
  """
540
652
  query for balance and get the amount of funds available for trading or funds locked in orders
541
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#assets
653
+
654
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#assets
655
+
542
656
  :param dict [params]: extra parameters specific to the exchange API endpoint
543
657
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
544
658
  """
@@ -615,7 +729,6 @@ class bitbank(Exchange, ImplicitAPI):
615
729
  'postOnly': None,
616
730
  'side': side,
617
731
  'price': price,
618
- 'stopPrice': None,
619
732
  'triggerPrice': None,
620
733
  'cost': None,
621
734
  'average': average,
@@ -630,12 +743,14 @@ class bitbank(Exchange, ImplicitAPI):
630
743
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
631
744
  """
632
745
  create a trade order
633
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#create-new-order
746
+
747
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#create-new-order
748
+
634
749
  :param str symbol: unified symbol of the market to create an order in
635
750
  :param str type: 'market' or 'limit'
636
751
  :param str side: 'buy' or 'sell'
637
752
  :param float amount: how much of currency you want to trade in units of base currency
638
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
753
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
639
754
  :param dict [params]: extra parameters specific to the exchange API endpoint
640
755
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
641
756
  """
@@ -656,7 +771,9 @@ class bitbank(Exchange, ImplicitAPI):
656
771
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
657
772
  """
658
773
  cancels an open order
659
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#cancel-order
774
+
775
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#cancel-order
776
+
660
777
  :param str id: order id
661
778
  :param str symbol: unified symbol of the market the order was made in
662
779
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -698,7 +815,10 @@ class bitbank(Exchange, ImplicitAPI):
698
815
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
699
816
  """
700
817
  fetches information on an order made by the user
701
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-order-information
818
+
819
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-order-information
820
+
821
+ :param str id: the order id
702
822
  :param str symbol: unified symbol of the market the order was made in
703
823
  :param dict [params]: extra parameters specific to the exchange API endpoint
704
824
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -738,7 +858,9 @@ class bitbank(Exchange, ImplicitAPI):
738
858
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
739
859
  """
740
860
  fetch all unfilled currently open orders
741
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-active-orders
861
+
862
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-active-orders
863
+
742
864
  :param str symbol: unified market symbol
743
865
  :param int [since]: the earliest time in ms to fetch open orders for
744
866
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -762,7 +884,9 @@ class bitbank(Exchange, ImplicitAPI):
762
884
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
763
885
  """
764
886
  fetch all trades made by the user
765
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-trade-history
887
+
888
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-trade-history
889
+
766
890
  :param str symbol: unified market symbol
767
891
  :param int [since]: the earliest time in ms to fetch trades for
768
892
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -784,10 +908,12 @@ class bitbank(Exchange, ImplicitAPI):
784
908
  trades = self.safe_list(data, 'trades', [])
785
909
  return self.parse_trades(trades, market, since, limit)
786
910
 
787
- async def fetch_deposit_address(self, code: str, params={}):
911
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
788
912
  """
789
913
  fetch the deposit address for a currency associated with self account
790
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-withdrawal-accounts
914
+
915
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-withdrawal-accounts
916
+
791
917
  :param str code: unified currency code
792
918
  :param dict [params]: extra parameters specific to the exchange API endpoint
793
919
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -804,17 +930,19 @@ class bitbank(Exchange, ImplicitAPI):
804
930
  firstAccount = self.safe_value(accounts, 0, {})
805
931
  address = self.safe_string(firstAccount, 'address')
806
932
  return {
933
+ 'info': response,
807
934
  'currency': currency,
935
+ 'network': None,
808
936
  'address': address,
809
937
  'tag': None,
810
- 'network': None,
811
- 'info': response,
812
938
  }
813
939
 
814
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
940
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
815
941
  """
816
942
  make a withdrawal
817
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#new-withdrawal-request
943
+
944
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#new-withdrawal-request
945
+
818
946
  :param str code: unified currency code
819
947
  :param float amount: the amount to withdraw
820
948
  :param str address: the address to withdraw to
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bitbns import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import ArgumentsRequired
@@ -20,7 +20,7 @@ from ccxt.base.precise import Precise
20
20
 
21
21
  class bitbns(Exchange, ImplicitAPI):
22
22
 
23
- def describe(self):
23
+ def describe(self) -> Any:
24
24
  return self.deep_extend(super(bitbns, self).describe(), {
25
25
  'id': 'bitbns',
26
26
  'name': 'Bitbns',
@@ -39,8 +39,12 @@ class bitbns(Exchange, ImplicitAPI):
39
39
  'cancelAllOrders': False,
40
40
  'cancelOrder': True,
41
41
  'createOrder': True,
42
+ 'createStopOrder': True,
43
+ 'createTriggerOrder': True,
42
44
  'fetchBalance': True,
43
45
  'fetchDepositAddress': True,
46
+ 'fetchDepositAddresses': False,
47
+ 'fetchDepositAddressesByNetwork': False,
44
48
  'fetchDeposits': True,
45
49
  'fetchFundingHistory': False,
46
50
  'fetchFundingRate': False,
@@ -72,7 +76,7 @@ class bitbns(Exchange, ImplicitAPI):
72
76
  },
73
77
  'hostname': 'bitbns.com',
74
78
  'urls': {
75
- 'logo': 'https://user-images.githubusercontent.com/1294454/117201933-e7a6e780-adf5-11eb-9d80-98fc2a21c3d6.jpg',
79
+ 'logo': 'https://github.com/user-attachments/assets/a5b9a562-cdd8-4bea-9fa7-fd24c1dad3d9',
76
80
  'api': {
77
81
  'www': 'https://{hostname}',
78
82
  'v1': 'https://api.{hostname}/api/trade/v1',
@@ -147,6 +151,69 @@ class bitbns(Exchange, ImplicitAPI):
147
151
  },
148
152
  },
149
153
  'precisionMode': TICK_SIZE,
154
+ 'features': {
155
+ 'spot': {
156
+ 'sandbox': False,
157
+ 'createOrder': {
158
+ 'marginMode': False,
159
+ 'triggerPrice': True,
160
+ 'triggerPriceType': None,
161
+ 'triggerDirection': False,
162
+ 'stopLossPrice': False, # todo with triggerPrice
163
+ 'takeProfitPrice': False, # todo with triggerPrice
164
+ 'attachedStopLossTakeProfit': None,
165
+ 'timeInForce': {
166
+ 'IOC': False,
167
+ 'FOK': False,
168
+ 'PO': False,
169
+ 'GTD': False,
170
+ },
171
+ 'hedged': False,
172
+ 'trailing': False, # todo recheck
173
+ 'leverage': False,
174
+ 'marketBuyRequiresPrice': False,
175
+ 'marketBuyByCost': False,
176
+ 'selfTradePrevention': False,
177
+ 'iceberg': False,
178
+ },
179
+ 'createOrders': None,
180
+ 'fetchMyTrades': {
181
+ 'marginMode': False,
182
+ 'limit': None,
183
+ 'daysBack': None,
184
+ 'untilDays': None,
185
+ 'symbolRequired': True,
186
+ },
187
+ 'fetchOrder': {
188
+ 'marginMode': False,
189
+ 'trigger': False,
190
+ 'trailing': False,
191
+ 'symbolRequired': True,
192
+ },
193
+ 'fetchOpenOrders': {
194
+ 'marginMode': False,
195
+ 'limit': None,
196
+ 'trigger': True,
197
+ 'trailing': False,
198
+ 'symbolRequired': True,
199
+ },
200
+ 'fetchOrders': None,
201
+ 'fetchClosedOrders': None,
202
+ # todo: implement fetchOHLCV
203
+ 'fetchOHLCV': {
204
+ 'limit': 100,
205
+ },
206
+ },
207
+ # todo: implement swap methods
208
+ 'swap': {
209
+ 'linear': None,
210
+ 'inverse': None,
211
+ },
212
+ 'future': {
213
+ 'linear': None,
214
+ 'inverse': None,
215
+ },
216
+ },
150
217
  'exceptions': {
151
218
  'exact': {
152
219
  '400': BadRequest, # {"msg":"Invalid Request","status":-1,"code":400}
@@ -224,11 +291,11 @@ class bitbns(Exchange, ImplicitAPI):
224
291
  quoteId = self.safe_string(market, 'quote')
225
292
  base = self.safe_currency_code(baseId)
226
293
  quote = self.safe_currency_code(quoteId)
227
- marketPrecision = self.safe_value(market, 'precision', {})
228
- marketLimits = self.safe_value(market, 'limits', {})
229
- amountLimits = self.safe_value(marketLimits, 'amount', {})
230
- priceLimits = self.safe_value(marketLimits, 'price', {})
231
- costLimits = self.safe_value(marketLimits, 'cost', {})
294
+ marketPrecision = self.safe_dict(market, 'precision', {})
295
+ marketLimits = self.safe_dict(market, 'limits', {})
296
+ amountLimits = self.safe_dict(marketLimits, 'amount', {})
297
+ priceLimits = self.safe_dict(marketLimits, 'price', {})
298
+ costLimits = self.safe_dict(marketLimits, 'cost', {})
232
299
  usdt = (quoteId == 'USDT')
233
300
  # INR markets don't need a _INR prefix
234
301
  uppercaseId = (baseId + '_' + quoteId) if usdt else baseId
@@ -248,7 +315,7 @@ class bitbns(Exchange, ImplicitAPI):
248
315
  'swap': False,
249
316
  'future': False,
250
317
  'option': False,
251
- 'active': None,
318
+ 'active': self.safe_bool(market, 'active'),
252
319
  'contract': False,
253
320
  'linear': None,
254
321
  'inverse': None,
@@ -428,7 +495,7 @@ class bitbns(Exchange, ImplicitAPI):
428
495
  'timestamp': timestamp,
429
496
  'datetime': self.iso8601(timestamp),
430
497
  }
431
- data = self.safe_value(response, 'data', {})
498
+ data = self.safe_dict(response, 'data', {})
432
499
  keys = list(data.keys())
433
500
  for i in range(0, len(keys)):
434
501
  key = keys[i]
@@ -548,7 +615,6 @@ class bitbns(Exchange, ImplicitAPI):
548
615
  'postOnly': None,
549
616
  'side': side,
550
617
  'price': self.safe_string(order, 'rate'),
551
- 'stopPrice': triggerPrice,
552
618
  'triggerPrice': triggerPrice,
553
619
  'amount': self.safe_string(order, 'btc'),
554
620
  'cost': None,
@@ -567,17 +633,19 @@ class bitbns(Exchange, ImplicitAPI):
567
633
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
568
634
  """
569
635
  create a trade order
570
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/place-orders
571
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/market-orders-quantity # market orders
636
+
637
+ https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/place-orders
638
+ https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/market-orders-quantity # market orders
639
+
572
640
  :param str symbol: unified symbol of the market to create an order in
573
641
  :param str type: 'market' or 'limit'
574
642
  :param str side: 'buy' or 'sell'
575
643
  :param float amount: how much of currency you want to trade in units of base currency
576
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
644
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
577
645
  :param dict [params]: extra parameters specific to the exchange API endpoint
578
646
  :param float [params.triggerPrice]: the price at which a trigger order is triggered at
579
- *
580
- * EXCHANGE SPECIFIC PARAMETERS
647
+
648
+ EXCHANGE SPECIFIC PARAMETERS
581
649
  :param float [params.target_rate]: *requires params.trail_rate when set, type must be 'limit'* a bracket order is placed when set
582
650
  :param float [params.trail_rate]: *requires params.target_rate when set, type must be 'limit'* a bracket order is placed when set
583
651
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -623,8 +691,10 @@ class bitbns(Exchange, ImplicitAPI):
623
691
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
624
692
  """
625
693
  cancels an open order
626
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/cancel-orders
627
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/cancel-stop-loss-orders
694
+
695
+ https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/cancel-orders
696
+ https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/cancel-stop-loss-orders
697
+
628
698
  :param str id: order id
629
699
  :param str symbol: unified symbol of the market the order was made in
630
700
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -635,7 +705,7 @@ class bitbns(Exchange, ImplicitAPI):
635
705
  raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
636
706
  await self.load_markets()
637
707
  market = self.market(symbol)
638
- isTrigger = self.safe_value_2(params, 'trigger', 'stop')
708
+ isTrigger = self.safe_bool_2(params, 'trigger', 'stop')
639
709
  params = self.omit(params, ['trigger', 'stop'])
640
710
  request: dict = {
641
711
  'entry_id': id,
@@ -652,7 +722,9 @@ class bitbns(Exchange, ImplicitAPI):
652
722
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
653
723
  """
654
724
  fetches information on an order made by the user
655
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/order-status
725
+
726
+ https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/order-status
727
+
656
728
  :param str id: order id
657
729
  :param str symbol: unified symbol of the market the order was made in
658
730
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -666,7 +738,7 @@ class bitbns(Exchange, ImplicitAPI):
666
738
  'symbol': market['id'],
667
739
  'entry_id': id,
668
740
  }
669
- trigger = self.safe_value_2(params, 'trigger', 'stop')
741
+ trigger = self.safe_bool_2(params, 'trigger', 'stop')
670
742
  if trigger:
671
743
  raise BadRequest(self.id + ' fetchOrder cannot fetch stop orders')
672
744
  response = await self.v1PostOrderStatusSymbol(self.extend(request, params))
@@ -695,15 +767,17 @@ class bitbns(Exchange, ImplicitAPI):
695
767
  # "code":200
696
768
  # }
697
769
  #
698
- data = self.safe_value(response, 'data', [])
770
+ data = self.safe_list(response, 'data', [])
699
771
  first = self.safe_dict(data, 0)
700
772
  return self.parse_order(first, market)
701
773
 
702
774
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
703
775
  """
704
776
  fetch all unfilled currently open orders
705
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit
706
- :see: https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit/order-status-stop-limit
777
+
778
+ https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit
779
+ https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit/order-status-stop-limit
780
+
707
781
  :param str symbol: unified market symbol
708
782
  :param int [since]: the earliest time in ms to fetch open orders for
709
783
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -715,7 +789,7 @@ class bitbns(Exchange, ImplicitAPI):
715
789
  raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol argument')
716
790
  await self.load_markets()
717
791
  market = self.market(symbol)
718
- isTrigger = self.safe_value_2(params, 'trigger', 'stop')
792
+ isTrigger = self.safe_bool_2(params, 'trigger', 'stop')
719
793
  params = self.omit(params, ['trigger', 'stop'])
720
794
  quoteSide = 'usdtListOpen' if (market['quoteId'] == 'USDT') else 'listOpen'
721
795
  request: dict = {
@@ -998,7 +1072,7 @@ class bitbns(Exchange, ImplicitAPI):
998
1072
  '6': 'ok', # Completed
999
1073
  },
1000
1074
  }
1001
- statuses = self.safe_value(statusesByType, type, {})
1075
+ statuses = self.safe_dict(statusesByType, type, {})
1002
1076
  return self.safe_string(statuses, status, status)
1003
1077
 
1004
1078
  def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
@@ -1065,7 +1139,7 @@ class bitbns(Exchange, ImplicitAPI):
1065
1139
  'fee': fee,
1066
1140
  }
1067
1141
 
1068
- async def fetch_deposit_address(self, code: str, params={}):
1142
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1069
1143
  """
1070
1144
  fetch the deposit address for a currency associated with self account
1071
1145
  :param str code: unified currency code
@@ -1088,16 +1162,16 @@ class bitbns(Exchange, ImplicitAPI):
1088
1162
  # "error":null
1089
1163
  # }
1090
1164
  #
1091
- data = self.safe_value(response, 'data', {})
1165
+ data = self.safe_dict(response, 'data', {})
1092
1166
  address = self.safe_string(data, 'token')
1093
1167
  tag = self.safe_string(data, 'tag')
1094
1168
  self.check_address(address)
1095
1169
  return {
1170
+ 'info': response,
1096
1171
  'currency': code,
1172
+ 'network': None,
1097
1173
  'address': address,
1098
1174
  'tag': tag,
1099
- 'network': None,
1100
- 'info': response,
1101
1175
  }
1102
1176
 
1103
1177
  def nonce(self):