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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +8 -8
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +7 -7
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +8 -8
  68. ccxt/async_support/afratether.py +9 -9
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +31 -37
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +25 -24
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +29 -35
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +22 -21
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +28 -25
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +12 -11
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/__test__.py +0 -7
  438. ccxt/abstract/ace.py +0 -15
  439. ccxt/abstract/bitbay.py +0 -53
  440. ccxt/abstract/bitcoincom.py +0 -115
  441. ccxt/abstract/bitfinex2.py +0 -139
  442. ccxt/abstract/bitpanda.py +0 -35
  443. ccxt/abstract/bl3p.py +0 -19
  444. ccxt/abstract/coinlist.py +0 -54
  445. ccxt/abstract/currencycom.py +0 -68
  446. ccxt/abstract/hitbtc3.py +0 -115
  447. ccxt/abstract/idex.py +0 -26
  448. ccxt/abstract/kuna.py +0 -182
  449. ccxt/abstract/lykke.py +0 -29
  450. ccxt/abstract/poloniexfutures.py +0 -48
  451. ccxt/abstract/wazirx.py +0 -30
  452. ccxt/ace.py +0 -1012
  453. ccxt/async_support/ace.py +0 -1012
  454. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  455. ccxt/async_support/base/ws/fast_client.py +0 -96
  456. ccxt/async_support/bitbay.py +0 -17
  457. ccxt/async_support/bitcoincom.py +0 -17
  458. ccxt/async_support/bitfinex2.py +0 -3552
  459. ccxt/async_support/bitpanda.py +0 -16
  460. ccxt/async_support/bl3p.py +0 -485
  461. ccxt/async_support/coinlist.py +0 -2243
  462. ccxt/async_support/currencycom.py +0 -1950
  463. ccxt/async_support/hitbtc3.py +0 -16
  464. ccxt/async_support/idex.py +0 -1766
  465. ccxt/async_support/kuna.py +0 -1841
  466. ccxt/async_support/lykke.py +0 -1270
  467. ccxt/async_support/poloniexfutures.py +0 -1717
  468. ccxt/async_support/wazirx.py +0 -1224
  469. ccxt/bitbay.py +0 -17
  470. ccxt/bitcoincom.py +0 -17
  471. ccxt/bitfinex2.py +0 -3552
  472. ccxt/bitpanda.py +0 -16
  473. ccxt/bl3p.py +0 -485
  474. ccxt/coinlist.py +0 -2243
  475. ccxt/currencycom.py +0 -1950
  476. ccxt/hitbtc3.py +0 -16
  477. ccxt/idex.py +0 -1766
  478. ccxt/kuna.py +0 -1841
  479. ccxt/lykke.py +0 -1270
  480. ccxt/poloniexfutures.py +0 -1717
  481. ccxt/pro/bitcoincom.py +0 -34
  482. ccxt/pro/bitfinex2.py +0 -1083
  483. ccxt/pro/bitpanda.py +0 -15
  484. ccxt/pro/currencycom.py +0 -536
  485. ccxt/pro/idex.py +0 -672
  486. ccxt/pro/poloniexfutures.py +0 -990
  487. ccxt/pro/wazirx.py +0 -749
  488. ccxt/test/base/__init__.py +0 -29
  489. ccxt/test/base/test_account.py +0 -26
  490. ccxt/test/base/test_balance.py +0 -56
  491. ccxt/test/base/test_borrow_interest.py +0 -35
  492. ccxt/test/base/test_borrow_rate.py +0 -32
  493. ccxt/test/base/test_calculate_fee.py +0 -51
  494. ccxt/test/base/test_crypto.py +0 -127
  495. ccxt/test/base/test_currency.py +0 -76
  496. ccxt/test/base/test_datetime.py +0 -109
  497. ccxt/test/base/test_decimal_to_precision.py +0 -392
  498. ccxt/test/base/test_deep_extend.py +0 -68
  499. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  500. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  501. ccxt/test/base/test_funding_rate_history.py +0 -29
  502. ccxt/test/base/test_last_price.py +0 -31
  503. ccxt/test/base/test_ledger_entry.py +0 -45
  504. ccxt/test/base/test_ledger_item.py +0 -48
  505. ccxt/test/base/test_leverage_tier.py +0 -33
  506. ccxt/test/base/test_liquidation.py +0 -50
  507. ccxt/test/base/test_margin_mode.py +0 -24
  508. ccxt/test/base/test_margin_modification.py +0 -35
  509. ccxt/test/base/test_market.py +0 -193
  510. ccxt/test/base/test_number.py +0 -411
  511. ccxt/test/base/test_ohlcv.py +0 -33
  512. ccxt/test/base/test_open_interest.py +0 -32
  513. ccxt/test/base/test_order.py +0 -64
  514. ccxt/test/base/test_order_book.py +0 -69
  515. ccxt/test/base/test_position.py +0 -60
  516. ccxt/test/base/test_shared_methods.py +0 -353
  517. ccxt/test/base/test_status.py +0 -24
  518. ccxt/test/base/test_throttle.py +0 -126
  519. ccxt/test/base/test_ticker.py +0 -92
  520. ccxt/test/base/test_trade.py +0 -47
  521. ccxt/test/base/test_trading_fee.py +0 -26
  522. ccxt/test/base/test_transaction.py +0 -39
  523. ccxt/test/test_async.py +0 -1649
  524. ccxt/test/test_sync.py +0 -1648
  525. ccxt/wazirx.py +0 -1224
  526. ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
  527. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  528. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
ccxt/hitbtc.py CHANGED
@@ -6,7 +6,7 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.hitbtc import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
9
+ from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, Leverage, MarginMode, MarginModes, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, OrderBooks, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -28,7 +28,7 @@ from ccxt.base.precise import Precise
28
28
 
29
29
  class hitbtc(Exchange, ImplicitAPI):
30
30
 
31
- def describe(self):
31
+ def describe(self) -> Any:
32
32
  return self.deep_extend(super(hitbtc, self).describe(), {
33
33
  'id': 'hitbtc',
34
34
  'name': 'HitBTC',
@@ -44,7 +44,7 @@ class hitbtc(Exchange, ImplicitAPI):
44
44
  'margin': True,
45
45
  'swap': True,
46
46
  'future': False,
47
- 'option': None,
47
+ 'option': False,
48
48
  'addMargin': True,
49
49
  'cancelAllOrders': True,
50
50
  'cancelOrder': True,
@@ -66,6 +66,8 @@ class hitbtc(Exchange, ImplicitAPI):
66
66
  'fetchCrossBorrowRates': False,
67
67
  'fetchCurrencies': True,
68
68
  'fetchDepositAddress': True,
69
+ 'fetchDepositAddresses': False,
70
+ 'fetchDepositAddressesByNetwork': False,
69
71
  'fetchDeposits': True,
70
72
  'fetchDepositsWithdrawals': True,
71
73
  'fetchDepositWithdrawFee': 'emulated',
@@ -74,6 +76,7 @@ class hitbtc(Exchange, ImplicitAPI):
74
76
  'fetchFundingRate': True,
75
77
  'fetchFundingRateHistory': True,
76
78
  'fetchFundingRates': True,
79
+ 'fetchGreeks': False,
77
80
  'fetchIndexOHLCV': True,
78
81
  'fetchIsolatedBorrowRate': False,
79
82
  'fetchIsolatedBorrowRates': False,
@@ -86,12 +89,16 @@ class hitbtc(Exchange, ImplicitAPI):
86
89
  'fetchMarkets': True,
87
90
  'fetchMarkOHLCV': True,
88
91
  'fetchMyLiquidations': False,
92
+ 'fetchMySettlementHistory': False,
89
93
  'fetchMyTrades': True,
90
94
  'fetchOHLCV': True,
91
95
  'fetchOpenInterest': True,
92
96
  'fetchOpenInterestHistory': False,
97
+ 'fetchOpenInterests': True,
93
98
  'fetchOpenOrder': True,
94
99
  'fetchOpenOrders': True,
100
+ 'fetchOption': False,
101
+ 'fetchOptionChain': False,
95
102
  'fetchOrder': True,
96
103
  'fetchOrderBook': True,
97
104
  'fetchOrderBooks': True,
@@ -100,12 +107,14 @@ class hitbtc(Exchange, ImplicitAPI):
100
107
  'fetchPosition': True,
101
108
  'fetchPositions': True,
102
109
  'fetchPremiumIndexOHLCV': True,
110
+ 'fetchSettlementHistory': False,
103
111
  'fetchTicker': True,
104
112
  'fetchTickers': True,
105
113
  'fetchTrades': True,
106
114
  'fetchTradingFee': True,
107
115
  'fetchTradingFees': True,
108
116
  'fetchTransactions': 'emulated',
117
+ 'fetchVolatilityHistory': False,
109
118
  'fetchWithdrawals': True,
110
119
  'reduceMargin': True,
111
120
  'sandbox': True,
@@ -301,6 +310,109 @@ class hitbtc(Exchange, ImplicitAPI):
301
310
  },
302
311
  },
303
312
  },
313
+ 'features': {
314
+ 'default': {
315
+ 'sandbox': True,
316
+ 'createOrder': {
317
+ 'marginMode': False,
318
+ 'triggerPrice': True,
319
+ 'triggerPriceType': None,
320
+ 'triggerDirection': False,
321
+ 'stopLossPrice': False, # todo
322
+ 'takeProfitPrice': False, # todo
323
+ 'attachedStopLossTakeProfit': None,
324
+ 'timeInForce': {
325
+ 'IOC': True,
326
+ 'FOK': True,
327
+ 'PO': True,
328
+ 'GTD': True,
329
+ },
330
+ 'hedged': False,
331
+ 'selfTradePrevention': False,
332
+ 'trailing': False,
333
+ 'leverage': False,
334
+ 'marketBuyByCost': False,
335
+ 'marketBuyRequiresPrice': False,
336
+ 'iceberg': True,
337
+ },
338
+ 'createOrders': None,
339
+ 'fetchMyTrades': {
340
+ 'marginMode': True,
341
+ 'limit': 1000,
342
+ 'daysBack': 100000,
343
+ 'untilDays': 100000,
344
+ 'symbolRequired': False,
345
+ 'marketType': True,
346
+ },
347
+ 'fetchOrder': {
348
+ 'marginMode': True,
349
+ 'trigger': False,
350
+ 'trailing': False,
351
+ 'symbolRequired': False,
352
+ 'marketType': True,
353
+ },
354
+ 'fetchOpenOrders': {
355
+ 'marginMode': True,
356
+ 'limit': 1000,
357
+ 'trigger': False,
358
+ 'trailing': False,
359
+ 'symbolRequired': False,
360
+ 'marketType': True,
361
+ },
362
+ 'fetchOrders': None,
363
+ 'fetchClosedOrders': {
364
+ 'marginMode': True,
365
+ 'limit': 1000,
366
+ 'daysBack': 100000, # todo
367
+ 'daysBackCanceled': 1, # todo
368
+ 'untilDays': 100000, # todo
369
+ 'trigger': False,
370
+ 'trailing': False,
371
+ 'symbolRequired': False,
372
+ 'marketType': True,
373
+ },
374
+ 'fetchOHLCV': {
375
+ 'limit': 1000,
376
+ },
377
+ },
378
+ 'spot': {
379
+ 'extends': 'default',
380
+ },
381
+ 'forDerivatives': {
382
+ 'extends': 'default',
383
+ 'createOrder': {
384
+ 'marginMode': True,
385
+ },
386
+ 'fetchOrder': {
387
+ 'marginMode': False,
388
+ },
389
+ 'fetchMyTrades': {
390
+ 'marginMode': False,
391
+ },
392
+ 'fetchOpenOrders': {
393
+ 'marginMode': False,
394
+ },
395
+ 'fetchClosedOrders': {
396
+ 'marginMode': False,
397
+ },
398
+ },
399
+ 'swap': {
400
+ 'linear': {
401
+ 'extends': 'forDerivatives',
402
+ },
403
+ 'inverse': {
404
+ 'extends': 'forDerivatives',
405
+ },
406
+ },
407
+ 'future': {
408
+ 'linear': {
409
+ 'extends': 'forDerivatives',
410
+ },
411
+ 'inverse': {
412
+ 'extends': 'forDerivatives',
413
+ },
414
+ },
415
+ },
304
416
  'timeframes': {
305
417
  '1m': 'M1',
306
418
  '3m': 'M3',
@@ -670,7 +782,9 @@ class hitbtc(Exchange, ImplicitAPI):
670
782
  def fetch_markets(self, params={}) -> List[Market]:
671
783
  """
672
784
  retrieves data on all markets for hitbtc
673
- :see: https://api.hitbtc.com/#symbols
785
+
786
+ https://api.hitbtc.com/#symbols
787
+
674
788
  :param dict [params]: extra parameters specific to the exchange API endpoint
675
789
  :returns dict[]: an array of objects representing market data
676
790
  """
@@ -807,35 +921,54 @@ class hitbtc(Exchange, ImplicitAPI):
807
921
  def fetch_currencies(self, params={}) -> Currencies:
808
922
  """
809
923
  fetches all available currencies on an exchange
810
- :see: https://api.hitbtc.com/#currencies
924
+
925
+ https://api.hitbtc.com/#currencies
926
+
811
927
  :param dict [params]: extra parameters specific to the exchange API endpoint
812
928
  :returns dict: an associative dictionary of currencies
813
929
  """
814
930
  response = self.publicGetPublicCurrency(params)
815
931
  #
816
- # {
817
- # "WEALTH": {
818
- # "full_name": "ConnectWealth",
819
- # "payin_enabled": False,
820
- # "payout_enabled": False,
821
- # "transfer_enabled": True,
822
- # "precision_transfer": "0.001",
823
- # "networks": [
824
- # {
825
- # "network": "ETH",
826
- # "protocol": "ERC20",
827
- # "default": True,
828
- # "payin_enabled": False,
829
- # "payout_enabled": False,
830
- # "precision_payout": "0.001",
831
- # "payout_fee": "0.016800000000",
832
- # "payout_is_payment_id": False,
833
- # "payin_payment_id": False,
834
- # "payin_confirmations": "2"
835
- # }
836
- # ]
837
- # }
838
- # }
932
+ # {
933
+ # "DFC": {
934
+ # "full_name": "DeFiScale",
935
+ # "crypto": True,
936
+ # "payin_enabled": False,
937
+ # "payout_enabled": True,
938
+ # "transfer_enabled": False,
939
+ # "transfer_to_wallet_enabled": True,
940
+ # "transfer_to_exchange_enabled": False,
941
+ # "sign": "D",
942
+ # "crypto_payment_id_name": "",
943
+ # "crypto_explorer": "https://etherscan.io/tx/{tx}",
944
+ # "precision_transfer": "0.00000001",
945
+ # "delisted": False,
946
+ # "networks": [
947
+ # {
948
+ # "code": "ETH",
949
+ # "network_name": "Ethereum",
950
+ # "network": "ETH",
951
+ # "protocol": "ERC-20",
952
+ # "default": True,
953
+ # "is_ens_available": True,
954
+ # "payin_enabled": True,
955
+ # "payout_enabled": True,
956
+ # "precision_payout": "0.000000000000000001",
957
+ # "payout_fee": "277000.0000000000",
958
+ # "payout_is_payment_id": False,
959
+ # "payin_payment_id": False,
960
+ # "payin_confirmations": "2",
961
+ # "contract_address": "0x1b2a76da77d03b7fc21189d9838f55bd849014af",
962
+ # "crypto_payment_id_name": "",
963
+ # "crypto_explorer": "https://etherscan.io/tx/{tx}",
964
+ # "is_multichain": True,
965
+ # "asset_id": {
966
+ # "contract_address": "0x1b2a76da77d03b7fc21189d9838f55bd849014af"
967
+ # }
968
+ # }
969
+ # ]
970
+ # },
971
+ # }
839
972
  #
840
973
  result: dict = {}
841
974
  currencies = list(response.keys())
@@ -843,43 +976,22 @@ class hitbtc(Exchange, ImplicitAPI):
843
976
  currencyId = currencies[i]
844
977
  code = self.safe_currency_code(currencyId)
845
978
  entry = response[currencyId]
846
- name = self.safe_string(entry, 'full_name')
847
- precision = self.safe_number(entry, 'precision_transfer')
848
- payinEnabled = self.safe_bool(entry, 'payin_enabled', False)
849
- payoutEnabled = self.safe_bool(entry, 'payout_enabled', False)
850
- transferEnabled = self.safe_bool(entry, 'transfer_enabled', False)
851
- active = payinEnabled and payoutEnabled and transferEnabled
852
- rawNetworks = self.safe_value(entry, 'networks', [])
979
+ rawNetworks = self.safe_list(entry, 'networks', [])
853
980
  networks: dict = {}
854
- fee = None
855
- depositEnabled = None
856
- withdrawEnabled = None
857
981
  for j in range(0, len(rawNetworks)):
858
982
  rawNetwork = rawNetworks[j]
859
983
  networkId = self.safe_string_2(rawNetwork, 'protocol', 'network')
860
- network = self.safe_network(networkId)
861
- fee = self.safe_number(rawNetwork, 'payout_fee')
862
- networkPrecision = self.safe_number(rawNetwork, 'precision_payout')
863
- payinEnabledNetwork = self.safe_bool(rawNetwork, 'payin_enabled', False)
864
- payoutEnabledNetwork = self.safe_bool(rawNetwork, 'payout_enabled', False)
865
- activeNetwork = payinEnabledNetwork and payoutEnabledNetwork
866
- if payinEnabledNetwork and not depositEnabled:
867
- depositEnabled = True
868
- elif not payinEnabledNetwork:
869
- depositEnabled = False
870
- if payoutEnabledNetwork and not withdrawEnabled:
871
- withdrawEnabled = True
872
- elif not payoutEnabledNetwork:
873
- withdrawEnabled = False
874
- networks[network] = {
984
+ networkCode = self.network_id_to_code(networkId)
985
+ networkCode = networkCode.upper() if (networkCode is not None) else code # is white label, ensure we safeguard from possible bugs
986
+ networks[networkCode] = {
875
987
  'info': rawNetwork,
876
988
  'id': networkId,
877
- 'network': network,
878
- 'fee': fee,
879
- 'active': activeNetwork,
880
- 'deposit': payinEnabledNetwork,
881
- 'withdraw': payoutEnabledNetwork,
882
- 'precision': networkPrecision,
989
+ 'network': networkCode,
990
+ 'active': None,
991
+ 'fee': self.safe_number(rawNetwork, 'payout_fee'),
992
+ 'deposit': self.safe_bool(rawNetwork, 'payin_enabled'),
993
+ 'withdraw': self.safe_bool(rawNetwork, 'payout_enabled'),
994
+ 'precision': self.safe_number(rawNetwork, 'precision_payout'),
883
995
  'limits': {
884
996
  'withdraw': {
885
997
  'min': None,
@@ -887,38 +999,33 @@ class hitbtc(Exchange, ImplicitAPI):
887
999
  },
888
1000
  },
889
1001
  }
890
- networksKeys = list(networks.keys())
891
- networksLength = len(networksKeys)
892
- result[code] = {
1002
+ result[code] = self.safe_currency_structure({
893
1003
  'info': entry,
894
1004
  'code': code,
895
1005
  'id': currencyId,
896
- 'precision': precision,
897
- 'name': name,
898
- 'active': active,
899
- 'deposit': depositEnabled,
900
- 'withdraw': withdrawEnabled,
1006
+ 'precision': self.safe_number(entry, 'precision_transfer'),
1007
+ 'name': self.safe_string(entry, 'full_name'),
1008
+ 'active': not self.safe_bool(entry, 'delisted'),
1009
+ 'deposit': self.safe_bool(entry, 'payin_enabled'),
1010
+ 'withdraw': self.safe_bool(entry, 'payout_enabled'),
901
1011
  'networks': networks,
902
- 'fee': fee if (networksLength <= 1) else None,
1012
+ 'fee': None,
903
1013
  'limits': {
904
1014
  'amount': {
905
1015
  'min': None,
906
1016
  'max': None,
907
1017
  },
908
1018
  },
909
- }
1019
+ 'type': None, # 'crypto' field emits incorrect values
1020
+ })
910
1021
  return result
911
1022
 
912
- def safe_network(self, networkId):
913
- if networkId is None:
914
- return None
915
- else:
916
- return networkId.upper()
917
-
918
- def create_deposit_address(self, code: str, params={}):
1023
+ def create_deposit_address(self, code: str, params={}) -> DepositAddress:
919
1024
  """
920
1025
  create a currency deposit address
921
- :see: https://api.hitbtc.com/#generate-deposit-crypto-address
1026
+
1027
+ https://api.hitbtc.com/#generate-deposit-crypto-address
1028
+
922
1029
  :param str code: unified currency code of the currency for the deposit address
923
1030
  :param dict [params]: extra parameters specific to the exchange API endpoint
924
1031
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -948,10 +1055,12 @@ class hitbtc(Exchange, ImplicitAPI):
948
1055
  'info': response,
949
1056
  }
950
1057
 
951
- def fetch_deposit_address(self, code: str, params={}):
1058
+ def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
952
1059
  """
953
1060
  fetch the deposit address for a currency associated with self account
954
- :see: https://api.hitbtc.com/#get-deposit-crypto-address
1061
+
1062
+ https://api.hitbtc.com/#get-deposit-crypto-address
1063
+
955
1064
  :param str code: unified currency code
956
1065
  :param dict [params]: extra parameters specific to the exchange API endpoint
957
1066
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -979,11 +1088,10 @@ class hitbtc(Exchange, ImplicitAPI):
979
1088
  parsedCode = self.safe_currency_code(currencyId)
980
1089
  return {
981
1090
  'info': response,
982
- 'address': address,
983
- 'tag': tag,
984
- 'code': parsedCode, # kept here for backward-compatibility, but will be removed soon
985
1091
  'currency': parsedCode,
986
1092
  'network': None,
1093
+ 'address': address,
1094
+ 'tag': tag,
987
1095
  }
988
1096
 
989
1097
  def parse_balance(self, response) -> Balances:
@@ -1001,9 +1109,11 @@ class hitbtc(Exchange, ImplicitAPI):
1001
1109
  def fetch_balance(self, params={}) -> Balances:
1002
1110
  """
1003
1111
  query for balance and get the amount of funds available for trading or funds locked in orders
1004
- :see: https://api.hitbtc.com/#wallet-balance
1005
- :see: https://api.hitbtc.com/#get-spot-trading-balance
1006
- :see: https://api.hitbtc.com/#get-trading-balance
1112
+
1113
+ https://api.hitbtc.com/#wallet-balance
1114
+ https://api.hitbtc.com/#get-spot-trading-balance
1115
+ https://api.hitbtc.com/#get-trading-balance
1116
+
1007
1117
  :param dict [params]: extra parameters specific to the exchange API endpoint
1008
1118
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
1009
1119
  """
@@ -1037,7 +1147,9 @@ class hitbtc(Exchange, ImplicitAPI):
1037
1147
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
1038
1148
  """
1039
1149
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
1040
- :see: https://api.hitbtc.com/#tickers
1150
+
1151
+ https://api.hitbtc.com/#tickers
1152
+
1041
1153
  :param str symbol: unified symbol of the market to fetch the ticker for
1042
1154
  :param dict [params]: extra parameters specific to the exchange API endpoint
1043
1155
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -1066,7 +1178,9 @@ class hitbtc(Exchange, ImplicitAPI):
1066
1178
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
1067
1179
  """
1068
1180
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
1069
- :see: https://api.hitbtc.com/#tickers
1181
+
1182
+ https://api.hitbtc.com/#tickers
1183
+
1070
1184
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
1071
1185
  :param dict [params]: extra parameters specific to the exchange API endpoint
1072
1186
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -1150,7 +1264,9 @@ class hitbtc(Exchange, ImplicitAPI):
1150
1264
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1151
1265
  """
1152
1266
  get the list of most recent trades for a particular symbol
1153
- :see: https://api.hitbtc.com/#trades
1267
+
1268
+ https://api.hitbtc.com/#trades
1269
+
1154
1270
  :param str symbol: unified symbol of the market to fetch trades for
1155
1271
  :param int [since]: timestamp in ms of the earliest trade to fetch
1156
1272
  :param int [limit]: the maximum amount of trades to fetch
@@ -1186,9 +1302,11 @@ class hitbtc(Exchange, ImplicitAPI):
1186
1302
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1187
1303
  """
1188
1304
  fetch all trades made by the user
1189
- :see: https://api.hitbtc.com/#spot-trades-history
1190
- :see: https://api.hitbtc.com/#futures-trades-history
1191
- :see: https://api.hitbtc.com/#margin-trades-history
1305
+
1306
+ https://api.hitbtc.com/#spot-trades-history
1307
+ https://api.hitbtc.com/#futures-trades-history
1308
+ https://api.hitbtc.com/#margin-trades-history
1309
+
1192
1310
  :param str symbol: unified market symbol
1193
1311
  :param int [since]: the earliest time in ms to fetch trades for
1194
1312
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -1290,7 +1408,7 @@ class hitbtc(Exchange, ImplicitAPI):
1290
1408
  fee = None
1291
1409
  feeCostString = self.safe_string(trade, 'fee')
1292
1410
  taker = self.safe_value(trade, 'taker')
1293
- takerOrMaker = None
1411
+ takerOrMaker: str
1294
1412
  if taker is not None:
1295
1413
  takerOrMaker = 'taker' if taker else 'maker'
1296
1414
  else:
@@ -1369,8 +1487,10 @@ class hitbtc(Exchange, ImplicitAPI):
1369
1487
 
1370
1488
  def parse_transaction_status(self, status: Str):
1371
1489
  statuses: dict = {
1490
+ 'CREATED': 'pending',
1372
1491
  'PENDING': 'pending',
1373
1492
  'FAILED': 'failed',
1493
+ 'ROLLED_BACK': 'failed',
1374
1494
  'SUCCESS': 'ok',
1375
1495
  }
1376
1496
  return self.safe_string(statuses, status, status)
@@ -1469,7 +1589,9 @@ class hitbtc(Exchange, ImplicitAPI):
1469
1589
  def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1470
1590
  """
1471
1591
  fetch history of deposits and withdrawals
1472
- :see: https://api.hitbtc.com/#get-transactions-history
1592
+
1593
+ https://api.hitbtc.com/#get-transactions-history
1594
+
1473
1595
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
1474
1596
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
1475
1597
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -1481,7 +1603,9 @@ class hitbtc(Exchange, ImplicitAPI):
1481
1603
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1482
1604
  """
1483
1605
  fetch all deposits made to an account
1484
- :see: https://api.hitbtc.com/#get-transactions-history
1606
+
1607
+ https://api.hitbtc.com/#get-transactions-history
1608
+
1485
1609
  :param str code: unified currency code
1486
1610
  :param int [since]: the earliest time in ms to fetch deposits for
1487
1611
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -1493,7 +1617,9 @@ class hitbtc(Exchange, ImplicitAPI):
1493
1617
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1494
1618
  """
1495
1619
  fetch all withdrawals made from an account
1496
- :see: https://api.hitbtc.com/#get-transactions-history
1620
+
1621
+ https://api.hitbtc.com/#get-transactions-history
1622
+
1497
1623
  :param str code: unified currency code
1498
1624
  :param int [since]: the earliest time in ms to fetch withdrawals for
1499
1625
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1502,11 +1628,13 @@ class hitbtc(Exchange, ImplicitAPI):
1502
1628
  """
1503
1629
  return self.fetch_transactions_helper('WITHDRAW', code, since, limit, params)
1504
1630
 
1505
- def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
1631
+ def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}) -> OrderBooks:
1506
1632
  """
1507
1633
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
1508
- :see: https://api.hitbtc.com/#order-books
1509
- :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
1634
+
1635
+ https://api.hitbtc.com/#order-books
1636
+
1637
+ :param str[] [symbols]: list of unified market symbols, all symbols fetched if None, default is None
1510
1638
  :param int [limit]: max number of entries per orderbook to return, default is None
1511
1639
  :param dict [params]: extra parameters specific to the exchange API endpoint
1512
1640
  :returns dict: a dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbol
@@ -1532,7 +1660,9 @@ class hitbtc(Exchange, ImplicitAPI):
1532
1660
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
1533
1661
  """
1534
1662
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
1535
- :see: https://api.hitbtc.com/#order-books
1663
+
1664
+ https://api.hitbtc.com/#order-books
1665
+
1536
1666
  :param str symbol: unified symbol of the market to fetch the order book for
1537
1667
  :param int [limit]: the maximum amount of order book entries to return
1538
1668
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1573,8 +1703,10 @@ class hitbtc(Exchange, ImplicitAPI):
1573
1703
  def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
1574
1704
  """
1575
1705
  fetch the trading fees for a market
1576
- :see: https://api.hitbtc.com/#get-trading-commission
1577
- :see: https://api.hitbtc.com/#get-trading-commission-2
1706
+
1707
+ https://api.hitbtc.com/#get-trading-commission
1708
+ https://api.hitbtc.com/#get-trading-commission-2
1709
+
1578
1710
  :param str symbol: unified market symbol
1579
1711
  :param dict [params]: extra parameters specific to the exchange API endpoint
1580
1712
  :returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -1602,8 +1734,10 @@ class hitbtc(Exchange, ImplicitAPI):
1602
1734
  def fetch_trading_fees(self, params={}) -> TradingFees:
1603
1735
  """
1604
1736
  fetch the trading fees for multiple markets
1605
- :see: https://api.hitbtc.com/#get-all-trading-commissions
1606
- :see: https://api.hitbtc.com/#get-all-trading-commissions-2
1737
+
1738
+ https://api.hitbtc.com/#get-all-trading-commissions
1739
+ https://api.hitbtc.com/#get-all-trading-commissions-2
1740
+
1607
1741
  :param dict [params]: extra parameters specific to the exchange API endpoint
1608
1742
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
1609
1743
  """
@@ -1635,10 +1769,12 @@ class hitbtc(Exchange, ImplicitAPI):
1635
1769
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1636
1770
  """
1637
1771
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1638
- :see: https://api.hitbtc.com/#candles
1639
- :see: https://api.hitbtc.com/#futures-index-price-candles
1640
- :see: https://api.hitbtc.com/#futures-mark-price-candles
1641
- :see: https://api.hitbtc.com/#futures-premium-index-candles
1772
+
1773
+ https://api.hitbtc.com/#candles
1774
+ https://api.hitbtc.com/#futures-index-price-candles
1775
+ https://api.hitbtc.com/#futures-mark-price-candles
1776
+ https://api.hitbtc.com/#futures-premium-index-candles
1777
+
1642
1778
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1643
1779
  :param str timeframe: the length of time each candle represents
1644
1780
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -1739,9 +1875,11 @@ class hitbtc(Exchange, ImplicitAPI):
1739
1875
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1740
1876
  """
1741
1877
  fetches information on multiple closed orders made by the user
1742
- :see: https://api.hitbtc.com/#spot-orders-history
1743
- :see: https://api.hitbtc.com/#futures-orders-history
1744
- :see: https://api.hitbtc.com/#margin-orders-history
1878
+
1879
+ https://api.hitbtc.com/#spot-orders-history
1880
+ https://api.hitbtc.com/#futures-orders-history
1881
+ https://api.hitbtc.com/#margin-orders-history
1882
+
1745
1883
  :param str symbol: unified market symbol of the market orders were made in
1746
1884
  :param int [since]: the earliest time in ms to fetch orders for
1747
1885
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1783,9 +1921,12 @@ class hitbtc(Exchange, ImplicitAPI):
1783
1921
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1784
1922
  """
1785
1923
  fetches information on an order made by the user
1786
- :see: https://api.hitbtc.com/#spot-orders-history
1787
- :see: https://api.hitbtc.com/#futures-orders-history
1788
- :see: https://api.hitbtc.com/#margin-orders-history
1924
+
1925
+ https://api.hitbtc.com/#spot-orders-history
1926
+ https://api.hitbtc.com/#futures-orders-history
1927
+ https://api.hitbtc.com/#margin-orders-history
1928
+
1929
+ :param str id: order id
1789
1930
  :param str symbol: unified symbol of the market the order was made in
1790
1931
  :param dict [params]: extra parameters specific to the exchange API endpoint
1791
1932
  :param str [params.marginMode]: 'cross' or 'isolated' only 'isolated' is supported
@@ -1841,9 +1982,11 @@ class hitbtc(Exchange, ImplicitAPI):
1841
1982
  def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1842
1983
  """
1843
1984
  fetch all the trades made from a single order
1844
- :see: https://api.hitbtc.com/#spot-trades-history
1845
- :see: https://api.hitbtc.com/#futures-trades-history
1846
- :see: https://api.hitbtc.com/#margin-trades-history
1985
+
1986
+ https://api.hitbtc.com/#spot-trades-history
1987
+ https://api.hitbtc.com/#futures-trades-history
1988
+ https://api.hitbtc.com/#margin-trades-history
1989
+
1847
1990
  :param str id: order id
1848
1991
  :param str symbol: unified market symbol
1849
1992
  :param int [since]: the earliest time in ms to fetch trades for
@@ -1920,9 +2063,11 @@ class hitbtc(Exchange, ImplicitAPI):
1920
2063
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1921
2064
  """
1922
2065
  fetch all unfilled currently open orders
1923
- :see: https://api.hitbtc.com/#get-all-active-spot-orders
1924
- :see: https://api.hitbtc.com/#get-active-futures-orders
1925
- :see: https://api.hitbtc.com/#get-active-margin-orders
2066
+
2067
+ https://api.hitbtc.com/#get-all-active-spot-orders
2068
+ https://api.hitbtc.com/#get-active-futures-orders
2069
+ https://api.hitbtc.com/#get-active-margin-orders
2070
+
1926
2071
  :param str symbol: unified market symbol
1927
2072
  :param int [since]: the earliest time in ms to fetch open orders for
1928
2073
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -1978,9 +2123,11 @@ class hitbtc(Exchange, ImplicitAPI):
1978
2123
  def fetch_open_order(self, id: str, symbol: Str = None, params={}):
1979
2124
  """
1980
2125
  fetch an open order by it's id
1981
- :see: https://api.hitbtc.com/#get-active-spot-order
1982
- :see: https://api.hitbtc.com/#get-active-futures-order
1983
- :see: https://api.hitbtc.com/#get-active-margin-order
2126
+
2127
+ https://api.hitbtc.com/#get-active-spot-order
2128
+ https://api.hitbtc.com/#get-active-futures-order
2129
+ https://api.hitbtc.com/#get-active-margin-order
2130
+
1984
2131
  :param str id: order id
1985
2132
  :param str symbol: unified market symbol, default is None
1986
2133
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2017,9 +2164,11 @@ class hitbtc(Exchange, ImplicitAPI):
2017
2164
  def cancel_all_orders(self, symbol: Str = None, params={}):
2018
2165
  """
2019
2166
  cancel all open orders
2020
- :see: https://api.hitbtc.com/#cancel-all-spot-orders
2021
- :see: https://api.hitbtc.com/#cancel-futures-orders
2022
- :see: https://api.hitbtc.com/#cancel-all-margin-orders
2167
+
2168
+ https://api.hitbtc.com/#cancel-all-spot-orders
2169
+ https://api.hitbtc.com/#cancel-futures-orders
2170
+ https://api.hitbtc.com/#cancel-all-margin-orders
2171
+
2023
2172
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
2024
2173
  :param dict [params]: extra parameters specific to the exchange API endpoint
2025
2174
  :param str [params.marginMode]: 'cross' or 'isolated' only 'isolated' is supported
@@ -2054,9 +2203,11 @@ class hitbtc(Exchange, ImplicitAPI):
2054
2203
  def cancel_order(self, id: str, symbol: Str = None, params={}):
2055
2204
  """
2056
2205
  cancels an open order
2057
- :see: https://api.hitbtc.com/#cancel-spot-order
2058
- :see: https://api.hitbtc.com/#cancel-futures-order
2059
- :see: https://api.hitbtc.com/#cancel-margin-order
2206
+
2207
+ https://api.hitbtc.com/#cancel-spot-order
2208
+ https://api.hitbtc.com/#cancel-futures-order
2209
+ https://api.hitbtc.com/#cancel-margin-order
2210
+
2060
2211
  :param str id: order id
2061
2212
  :param str symbol: unified symbol of the market the order was made in
2062
2213
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2125,14 +2276,16 @@ class hitbtc(Exchange, ImplicitAPI):
2125
2276
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
2126
2277
  """
2127
2278
  create a trade order
2128
- :see: https://api.hitbtc.com/#create-new-spot-order
2129
- :see: https://api.hitbtc.com/#create-margin-order
2130
- :see: https://api.hitbtc.com/#create-futures-order
2279
+
2280
+ https://api.hitbtc.com/#create-new-spot-order
2281
+ https://api.hitbtc.com/#create-margin-order
2282
+ https://api.hitbtc.com/#create-futures-order
2283
+
2131
2284
  :param str symbol: unified symbol of the market to create an order in
2132
2285
  :param str type: 'market' or 'limit'
2133
2286
  :param str side: 'buy' or 'sell'
2134
2287
  :param float amount: how much of currency you want to trade in units of base currency
2135
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
2288
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
2136
2289
  :param dict [params]: extra parameters specific to the exchange API endpoint
2137
2290
  :param str [params.marginMode]: 'cross' or 'isolated' only 'isolated' is supported for spot-margin, swap supports both, default is 'cross'
2138
2291
  :param bool [params.margin]: True for creating a margin order
@@ -2205,7 +2358,7 @@ class hitbtc(Exchange, ImplicitAPI):
2205
2358
  elif type == 'market':
2206
2359
  request['type'] = 'stopMarket'
2207
2360
  elif (type == 'stopLimit') or (type == 'stopMarket') or (type == 'takeProfitLimit') or (type == 'takeProfitMarket'):
2208
- raise ExchangeError(self.id + ' createOrder() requires a stopPrice parameter for stop-loss and take-profit orders')
2361
+ raise ExchangeError(self.id + ' createOrder() requires a triggerPrice parameter for stop-loss and take-profit orders')
2209
2362
  params = self.omit(params, ['triggerPrice', 'timeInForce', 'stopPrice', 'stop_price', 'reduceOnly', 'postOnly'])
2210
2363
  if marketType == 'swap':
2211
2364
  # set default margin mode to cross
@@ -2314,7 +2467,6 @@ class hitbtc(Exchange, ImplicitAPI):
2314
2467
  postOnly = self.safe_value(order, 'post_only')
2315
2468
  timeInForce = self.safe_string(order, 'time_in_force')
2316
2469
  rawTrades = self.safe_value(order, 'trades')
2317
- stopPrice = self.safe_string(order, 'stop_price')
2318
2470
  return self.safe_order({
2319
2471
  'info': order,
2320
2472
  'id': id,
@@ -2338,8 +2490,7 @@ class hitbtc(Exchange, ImplicitAPI):
2338
2490
  'average': average,
2339
2491
  'trades': rawTrades,
2340
2492
  'fee': None,
2341
- 'stopPrice': stopPrice,
2342
- 'triggerPrice': stopPrice,
2493
+ 'triggerPrice': self.safe_string(order, 'stop_price'),
2343
2494
  'takeProfitPrice': None,
2344
2495
  'stopLossPrice': None,
2345
2496
  }, market)
@@ -2347,9 +2498,11 @@ class hitbtc(Exchange, ImplicitAPI):
2347
2498
  def fetch_margin_modes(self, symbols: List[Str] = None, params={}) -> MarginModes:
2348
2499
  """
2349
2500
  fetches margin mode of the user
2350
- :see: https://api.hitbtc.com/#get-margin-position-parameters
2351
- :see: https://api.hitbtc.com/#get-futures-position-parameters
2352
- :param str symbol: unified symbol of the market the order was made in
2501
+
2502
+ https://api.hitbtc.com/#get-margin-position-parameters
2503
+ https://api.hitbtc.com/#get-futures-position-parameters
2504
+
2505
+ :param str[] symbols: unified market symbols
2353
2506
  :param dict [params]: extra parameters specific to the exchange API endpoint
2354
2507
  :returns dict: a list of `margin mode structures <https://docs.ccxt.com/#/?id=margin-mode-structure>`
2355
2508
  """
@@ -2415,7 +2568,9 @@ class hitbtc(Exchange, ImplicitAPI):
2415
2568
  def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
2416
2569
  """
2417
2570
  transfer currency internally between wallets on the same account
2418
- :see: https://api.hitbtc.com/#transfer-between-wallet-and-exchange
2571
+
2572
+ https://api.hitbtc.com/#transfer-between-wallet-and-exchange
2573
+
2419
2574
  :param str code: unified currency code
2420
2575
  :param float amount: amount to transfer
2421
2576
  :param str fromAccount: account to transfer from
@@ -2493,10 +2648,12 @@ class hitbtc(Exchange, ImplicitAPI):
2493
2648
  'info': response,
2494
2649
  }
2495
2650
 
2496
- def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
2651
+ def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
2497
2652
  """
2498
2653
  make a withdrawal
2499
- :see: https://api.hitbtc.com/#withdraw-crypto
2654
+
2655
+ https://api.hitbtc.com/#withdraw-crypto
2656
+
2500
2657
  :param str code: unified currency code
2501
2658
  :param float amount: the amount to withdraw
2502
2659
  :param str address: the address to withdraw to
@@ -2534,13 +2691,15 @@ class hitbtc(Exchange, ImplicitAPI):
2534
2691
  #
2535
2692
  return self.parse_transaction(response, currency)
2536
2693
 
2537
- def fetch_funding_rates(self, symbols: Strings = None, params={}):
2694
+ def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
2538
2695
  """
2539
2696
  fetches funding rates for multiple markets
2540
- :see: https://api.hitbtc.com/#futures-info
2697
+
2698
+ https://api.hitbtc.com/#futures-info
2699
+
2541
2700
  :param str[] symbols: unified symbols of the markets to fetch the funding rates for, all market funding rates are returned if not assigned
2542
2701
  :param dict [params]: extra parameters specific to the exchange API endpoint
2543
- :returns dict: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
2702
+ :returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
2544
2703
  """
2545
2704
  self.load_markets()
2546
2705
  market = None
@@ -2585,7 +2744,9 @@ class hitbtc(Exchange, ImplicitAPI):
2585
2744
 
2586
2745
  def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
2587
2746
  """
2588
- :see: https://api.hitbtc.com/#funding-history
2747
+
2748
+ https://api.hitbtc.com/#funding-history
2749
+
2589
2750
  fetches historical funding rate prices
2590
2751
  :param str symbol: unified symbol of the market to fetch the funding rate history for
2591
2752
  :param int [since]: timestamp in ms of the earliest funding rate to fetch
@@ -2656,11 +2817,13 @@ class hitbtc(Exchange, ImplicitAPI):
2656
2817
  sorted = self.sort_by(rates, 'timestamp')
2657
2818
  return self.filter_by_symbol_since_limit(sorted, symbol, since, limit)
2658
2819
 
2659
- def fetch_positions(self, symbols: Strings = None, params={}):
2820
+ def fetch_positions(self, symbols: Strings = None, params={}) -> List[Position]:
2660
2821
  """
2661
2822
  fetch all open positions
2662
- :see: https://api.hitbtc.com/#get-futures-margin-accounts
2663
- :see: https://api.hitbtc.com/#get-all-margin-accounts
2823
+
2824
+ https://api.hitbtc.com/#get-futures-margin-accounts
2825
+ https://api.hitbtc.com/#get-all-margin-accounts
2826
+
2664
2827
  :param str[]|None symbols: not used by hitbtc fetchPositions()
2665
2828
  :param dict [params]: extra parameters specific to the exchange API endpoint
2666
2829
  :param str [params.marginMode]: 'cross' or 'isolated' only 'isolated' is supported, defaults to spot-margin endpoint if self is set
@@ -2726,8 +2889,10 @@ class hitbtc(Exchange, ImplicitAPI):
2726
2889
  def fetch_position(self, symbol: str, params={}):
2727
2890
  """
2728
2891
  fetch data on a single open contract trade position
2729
- :see: https://api.hitbtc.com/#get-futures-margin-account
2730
- :see: https://api.hitbtc.com/#get-isolated-margin-account
2892
+
2893
+ https://api.hitbtc.com/#get-futures-margin-account
2894
+ https://api.hitbtc.com/#get-isolated-margin-account
2895
+
2731
2896
  :param str symbol: unified market symbol of the market the position is held in, default is None
2732
2897
  :param dict [params]: extra parameters specific to the exchange API endpoint
2733
2898
  :param str [params.marginMode]: 'cross' or 'isolated' only 'isolated' is supported, defaults to spot-margin endpoint if self is set
@@ -2891,7 +3056,7 @@ class hitbtc(Exchange, ImplicitAPI):
2891
3056
  datetime = self.safe_string(interest, 'timestamp')
2892
3057
  value = self.safe_number(interest, 'open_interest')
2893
3058
  return self.safe_open_interest({
2894
- 'symbol': market['symbol'],
3059
+ 'symbol': self.safe_symbol(None, market),
2895
3060
  'openInterestAmount': None,
2896
3061
  'openInterestValue': value,
2897
3062
  'timestamp': self.parse8601(datetime),
@@ -2899,10 +3064,55 @@ class hitbtc(Exchange, ImplicitAPI):
2899
3064
  'info': interest,
2900
3065
  }, market)
2901
3066
 
3067
+ def fetch_open_interests(self, symbols: Strings = None, params={}):
3068
+ """
3069
+ Retrieves the open interest for a list of symbols
3070
+
3071
+ https://api.hitbtc.com/#futures-info
3072
+
3073
+ :param str[] [symbols]: a list of unified CCXT market symbols
3074
+ :param dict [params]: exchange specific parameters
3075
+ :returns dict[]: a list of `open interest structures <https://docs.ccxt.com/#/?id=open-interest-structure>`
3076
+ """
3077
+ self.load_markets()
3078
+ request: dict = {}
3079
+ symbols = self.market_symbols(symbols)
3080
+ marketIds = None
3081
+ if symbols is not None:
3082
+ marketIds = self.market_ids(symbols)
3083
+ request['symbols'] = ','.join(marketIds)
3084
+ response = self.publicGetPublicFuturesInfo(self.extend(request, params))
3085
+ #
3086
+ # {
3087
+ # "BTCUSDT_PERP": {
3088
+ # "contract_type": "perpetual",
3089
+ # "mark_price": "97291.83",
3090
+ # "index_price": "97298.61",
3091
+ # "funding_rate": "-0.000183473092423284",
3092
+ # "open_interest": "94.1503",
3093
+ # "next_funding_time": "2024-12-20T08:00:00.000Z",
3094
+ # "indicative_funding_rate": "-0.00027495203277752",
3095
+ # "premium_index": "-0.000789474900583786",
3096
+ # "avg_premium_index": "-0.000683473092423284",
3097
+ # "interest_rate": "0.0001",
3098
+ # "timestamp": "2024-12-20T04:57:33.693Z"
3099
+ # }
3100
+ # }
3101
+ #
3102
+ results = []
3103
+ markets = list(response.keys())
3104
+ for i in range(0, len(markets)):
3105
+ marketId = markets[i]
3106
+ marketInner = self.safe_market(marketId)
3107
+ results.append(self.parse_open_interest(response[marketId], marketInner))
3108
+ return self.filter_by_array(results, 'symbol', symbols)
3109
+
2902
3110
  def fetch_open_interest(self, symbol: str, params={}):
2903
3111
  """
2904
3112
  Retrieves the open interest of a derivative trading pair
2905
- :see: https://api.hitbtc.com/#futures-info
3113
+
3114
+ https://api.hitbtc.com/#futures-info
3115
+
2906
3116
  :param str symbol: Unified CCXT market symbol
2907
3117
  :param dict [params]: exchange specific parameters
2908
3118
  :returns dict} an open interest structure{@link https://docs.ccxt.com/#/?id=interest-history-structure:
@@ -2932,10 +3142,12 @@ class hitbtc(Exchange, ImplicitAPI):
2932
3142
  #
2933
3143
  return self.parse_open_interest(response, market)
2934
3144
 
2935
- def fetch_funding_rate(self, symbol: str, params={}):
3145
+ def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
2936
3146
  """
2937
3147
  fetch the current funding rate
2938
- :see: https://api.hitbtc.com/#futures-info
3148
+
3149
+ https://api.hitbtc.com/#futures-info
3150
+
2939
3151
  :param str symbol: unified market symbol
2940
3152
  :param dict [params]: extra parameters specific to the exchange API endpoint
2941
3153
  :returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
@@ -2965,7 +3177,7 @@ class hitbtc(Exchange, ImplicitAPI):
2965
3177
  #
2966
3178
  return self.parse_funding_rate(response, market)
2967
3179
 
2968
- def parse_funding_rate(self, contract, market: Market = None):
3180
+ def parse_funding_rate(self, contract, market: Market = None) -> FundingRate:
2969
3181
  #
2970
3182
  # {
2971
3183
  # "contract_type": "perpetual",
@@ -3001,6 +3213,7 @@ class hitbtc(Exchange, ImplicitAPI):
3001
3213
  'previousFundingRate': None,
3002
3214
  'previousFundingTimestamp': None,
3003
3215
  'previousFundingDatetime': None,
3216
+ 'interval': None,
3004
3217
  }
3005
3218
 
3006
3219
  def modify_margin_helper(self, symbol: str, amount, type, params={}) -> MarginModification:
@@ -3097,8 +3310,10 @@ class hitbtc(Exchange, ImplicitAPI):
3097
3310
  def reduce_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
3098
3311
  """
3099
3312
  remove margin from a position
3100
- :see: https://api.hitbtc.com/#create-update-margin-account-2
3101
- :see: https://api.hitbtc.com/#create-update-margin-account
3313
+
3314
+ https://api.hitbtc.com/#create-update-margin-account-2
3315
+ https://api.hitbtc.com/#create-update-margin-account
3316
+
3102
3317
  :param str symbol: unified market symbol
3103
3318
  :param float amount: the amount of margin to remove
3104
3319
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -3113,8 +3328,10 @@ class hitbtc(Exchange, ImplicitAPI):
3113
3328
  def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
3114
3329
  """
3115
3330
  add margin
3116
- :see: https://api.hitbtc.com/#create-update-margin-account-2
3117
- :see: https://api.hitbtc.com/#create-update-margin-account
3331
+
3332
+ https://api.hitbtc.com/#create-update-margin-account-2
3333
+ https://api.hitbtc.com/#create-update-margin-account
3334
+
3118
3335
  :param str symbol: unified market symbol
3119
3336
  :param float amount: amount of margin to add
3120
3337
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -3127,8 +3344,10 @@ class hitbtc(Exchange, ImplicitAPI):
3127
3344
  def fetch_leverage(self, symbol: str, params={}) -> Leverage:
3128
3345
  """
3129
3346
  fetch the set leverage for a market
3130
- :see: https://api.hitbtc.com/#get-futures-margin-account
3131
- :see: https://api.hitbtc.com/#get-isolated-margin-account
3347
+
3348
+ https://api.hitbtc.com/#get-futures-margin-account
3349
+ https://api.hitbtc.com/#get-isolated-margin-account
3350
+
3132
3351
  :param str symbol: unified market symbol
3133
3352
  :param dict [params]: extra parameters specific to the exchange API endpoint
3134
3353
  :param str [params.marginMode]: 'cross' or 'isolated' only 'isolated' is supported, defaults to the spot-margin endpoint if self is set
@@ -3198,10 +3417,12 @@ class hitbtc(Exchange, ImplicitAPI):
3198
3417
  'shortLeverage': leverageValue,
3199
3418
  }
3200
3419
 
3201
- def set_leverage(self, leverage: Int, symbol: Str = None, params={}):
3420
+ def set_leverage(self, leverage: int, symbol: Str = None, params={}):
3202
3421
  """
3203
3422
  set the level of leverage for a market
3204
- :see: https://api.hitbtc.com/#create-update-margin-account-2
3423
+
3424
+ https://api.hitbtc.com/#create-update-margin-account-2
3425
+
3205
3426
  :param float leverage: the rate of leverage
3206
3427
  :param str symbol: unified market symbol
3207
3428
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -3230,7 +3451,9 @@ class hitbtc(Exchange, ImplicitAPI):
3230
3451
  def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
3231
3452
  """
3232
3453
  fetch deposit and withdraw fees
3233
- :see: https://api.hitbtc.com/#currencies
3454
+
3455
+ https://api.hitbtc.com/#currencies
3456
+
3234
3457
  :param str[]|None codes: list of unified currency codes
3235
3458
  :param dict [params]: extra parameters specific to the exchange API endpoint
3236
3459
  :returns dict[]: a list of `fees structures <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -3294,6 +3517,7 @@ class hitbtc(Exchange, ImplicitAPI):
3294
3517
  networkEntry = networks[j]
3295
3518
  networkId = self.safe_string(networkEntry, 'network')
3296
3519
  networkCode = self.network_id_to_code(networkId)
3520
+ networkCode = networkCode.upper() if (networkCode is not None) else None
3297
3521
  withdrawFee = self.safe_number(networkEntry, 'payout_fee')
3298
3522
  isDefault = self.safe_value(networkEntry, 'default')
3299
3523
  withdrawResult: dict = {
@@ -3314,7 +3538,11 @@ class hitbtc(Exchange, ImplicitAPI):
3314
3538
  def close_position(self, symbol: str, side: OrderSide = None, params={}) -> Order:
3315
3539
  """
3316
3540
  closes open positions for a market
3317
- :see: https://api.hitbtc.com/#close-all-futures-margin-positions
3541
+
3542
+ https://api.hitbtc.com/#close-all-futures-margin-positions
3543
+
3544
+ :param str symbol: unified ccxt market symbol
3545
+ :param str side: 'buy' or 'sell'
3318
3546
  :param dict [params]: extra parameters specific to the okx api endpoint
3319
3547
  :param str [params.symbol]: *required* unified market symbol
3320
3548
  :param str [params.marginMode]: 'cross' or 'isolated', default is 'cross'
@@ -3348,7 +3576,7 @@ class hitbtc(Exchange, ImplicitAPI):
3348
3576
 
3349
3577
  def handle_margin_mode_and_params(self, methodName, params={}, defaultValue=None):
3350
3578
  """
3351
- * @ignore
3579
+ @ignore
3352
3580
  marginMode specified by params["marginMode"], self.options["marginMode"], self.options["defaultMarginMode"], params["margin"] = True or self.options["defaultType"] = 'margin'
3353
3581
  :param dict [params]: extra parameters specific to the exchange API endpoint
3354
3582
  :returns Array: the marginMode in lowercase