ccxt 4.1.43 → 4.1.45

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 (383) hide show
  1. package/README.md +3 -3
  2. package/change.sh +2 -4
  3. package/dist/ccxt.browser.js +12641 -12877
  4. package/dist/ccxt.browser.min.js +9 -9
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/ace.js +4 -6
  7. package/dist/cjs/src/ascendex.js +65 -67
  8. package/dist/cjs/src/bigone.js +109 -113
  9. package/dist/cjs/src/binance.js +274 -269
  10. package/dist/cjs/src/bingx.js +117 -117
  11. package/dist/cjs/src/bit2c.js +6 -8
  12. package/dist/cjs/src/bitbank.js +19 -19
  13. package/dist/cjs/src/bitbns.js +5 -15
  14. package/dist/cjs/src/bitfinex.js +73 -75
  15. package/dist/cjs/src/bitfinex2.js +60 -62
  16. package/dist/cjs/src/bitflyer.js +4 -12
  17. package/dist/cjs/src/bitforex.js +4 -8
  18. package/dist/cjs/src/bitget.js +355 -355
  19. package/dist/cjs/src/bithumb.js +39 -45
  20. package/dist/cjs/src/bitmart.js +100 -95
  21. package/dist/cjs/src/bitmex.js +113 -117
  22. package/dist/cjs/src/bitopro.js +18 -28
  23. package/dist/cjs/src/bitpanda.js +8 -8
  24. package/dist/cjs/src/bitrue.js +23 -31
  25. package/dist/cjs/src/bitso.js +212 -212
  26. package/dist/cjs/src/bitstamp.js +95 -95
  27. package/dist/cjs/src/bittrex.js +28 -28
  28. package/dist/cjs/src/bitvavo.js +37 -42
  29. package/dist/cjs/src/bl3p.js +18 -18
  30. package/dist/cjs/src/blockchaincom.js +24 -24
  31. package/dist/cjs/src/btcalpha.js +27 -27
  32. package/dist/cjs/src/btctradeua.js +2 -4
  33. package/dist/cjs/src/btcturk.js +6 -6
  34. package/dist/cjs/src/bybit.js +50 -247
  35. package/dist/cjs/src/cex.js +107 -109
  36. package/dist/cjs/src/coinbase.js +179 -179
  37. package/dist/cjs/src/coinbasepro.js +115 -115
  38. package/dist/cjs/src/coincheck.js +21 -21
  39. package/dist/cjs/src/coinex.js +26 -43
  40. package/dist/cjs/src/coinfalcon.js +54 -56
  41. package/dist/cjs/src/coinlist.js +150 -150
  42. package/dist/cjs/src/coinmate.js +69 -71
  43. package/dist/cjs/src/coinone.js +11 -15
  44. package/dist/cjs/src/coinsph.js +113 -121
  45. package/dist/cjs/src/coinspot.js +28 -28
  46. package/dist/cjs/src/cryptocom.js +32 -32
  47. package/dist/cjs/src/currencycom.js +54 -58
  48. package/dist/cjs/src/delta.js +3 -3
  49. package/dist/cjs/src/deribit.js +285 -284
  50. package/dist/cjs/src/exmo.js +41 -41
  51. package/dist/cjs/src/gate.js +176 -180
  52. package/dist/cjs/src/gemini.js +5 -7
  53. package/dist/cjs/src/hitbtc.js +316 -127
  54. package/dist/cjs/src/hollaex.js +79 -81
  55. package/dist/cjs/src/huobi.js +270 -279
  56. package/dist/cjs/src/huobijp.js +126 -128
  57. package/dist/cjs/src/idex.js +202 -202
  58. package/dist/cjs/src/indodax.js +4 -10
  59. package/dist/cjs/src/kraken.js +161 -161
  60. package/dist/cjs/src/krakenfutures.js +223 -223
  61. package/dist/cjs/src/kucoin.js +122 -122
  62. package/dist/cjs/src/kucoinfutures.js +130 -135
  63. package/dist/cjs/src/kuna.js +24 -24
  64. package/dist/cjs/src/latoken.js +70 -70
  65. package/dist/cjs/src/lbank.js +6 -6
  66. package/dist/cjs/src/lbank2.js +35 -35
  67. package/dist/cjs/src/luno.js +6 -8
  68. package/dist/cjs/src/lykke.js +4 -4
  69. package/dist/cjs/src/mercado.js +24 -34
  70. package/dist/cjs/src/mexc.js +177 -187
  71. package/dist/cjs/src/ndax.js +9 -8
  72. package/dist/cjs/src/oceanex.js +11 -13
  73. package/dist/cjs/src/okcoin.js +65 -65
  74. package/dist/cjs/src/okx.js +81 -86
  75. package/dist/cjs/src/phemex.js +122 -143
  76. package/dist/cjs/src/poloniex.js +43 -43
  77. package/dist/cjs/src/poloniexfutures.js +98 -102
  78. package/dist/cjs/src/pro/alpaca.js +174 -174
  79. package/dist/cjs/src/pro/ascendex.js +151 -151
  80. package/dist/cjs/src/pro/binance.js +278 -278
  81. package/dist/cjs/src/pro/bingx.js +136 -136
  82. package/dist/cjs/src/pro/bitfinex.js +38 -38
  83. package/dist/cjs/src/pro/bitfinex2.js +57 -57
  84. package/dist/cjs/src/pro/bitget.js +227 -227
  85. package/dist/cjs/src/pro/bitmart.js +100 -102
  86. package/dist/cjs/src/pro/bitmex.js +584 -584
  87. package/dist/cjs/src/pro/bitopro.js +49 -49
  88. package/dist/cjs/src/pro/bitpanda.js +249 -249
  89. package/dist/cjs/src/pro/bitrue.js +79 -83
  90. package/dist/cjs/src/pro/bitstamp.js +61 -63
  91. package/dist/cjs/src/pro/bittrex.js +107 -107
  92. package/dist/cjs/src/pro/bitvavo.js +118 -122
  93. package/dist/cjs/src/pro/blockchaincom.js +169 -169
  94. package/dist/cjs/src/pro/bybit.js +57 -57
  95. package/dist/cjs/src/pro/cex.js +201 -205
  96. package/dist/cjs/src/pro/coinbase.js +4 -4
  97. package/dist/cjs/src/pro/coinbasepro.js +95 -95
  98. package/dist/cjs/src/pro/coinex.js +232 -232
  99. package/dist/cjs/src/pro/cryptocom.js +32 -32
  100. package/dist/cjs/src/pro/currencycom.js +108 -108
  101. package/dist/cjs/src/pro/deribit.js +140 -140
  102. package/dist/cjs/src/pro/exmo.js +72 -72
  103. package/dist/cjs/src/pro/gate.js +160 -160
  104. package/dist/cjs/src/pro/gemini.js +135 -135
  105. package/dist/cjs/src/pro/hitbtc.js +10 -10
  106. package/dist/cjs/src/pro/hollaex.js +88 -88
  107. package/dist/cjs/src/pro/huobi.js +277 -277
  108. package/dist/cjs/src/pro/huobijp.js +71 -71
  109. package/dist/cjs/src/pro/idex.js +58 -58
  110. package/dist/cjs/src/pro/independentreserve.js +29 -29
  111. package/dist/cjs/src/pro/kraken.js +113 -113
  112. package/dist/cjs/src/pro/krakenfutures.js +58 -58
  113. package/dist/cjs/src/pro/kucoin.js +95 -95
  114. package/dist/cjs/src/pro/kucoinfutures.js +100 -100
  115. package/dist/cjs/src/pro/luno.js +42 -42
  116. package/dist/cjs/src/pro/mexc.js +98 -98
  117. package/dist/cjs/src/pro/ndax.js +24 -24
  118. package/dist/cjs/src/pro/okcoin.js +104 -104
  119. package/dist/cjs/src/pro/okx.js +161 -161
  120. package/dist/cjs/src/pro/phemex.js +295 -295
  121. package/dist/cjs/src/pro/poloniex.js +79 -79
  122. package/dist/cjs/src/pro/poloniexfutures.js +172 -172
  123. package/dist/cjs/src/pro/probit.js +87 -87
  124. package/dist/cjs/src/pro/upbit.js +66 -66
  125. package/dist/cjs/src/pro/wazirx.js +11 -11
  126. package/dist/cjs/src/pro/whitebit.js +80 -84
  127. package/dist/cjs/src/pro/woo.js +78 -78
  128. package/dist/cjs/src/probit.js +45 -49
  129. package/dist/cjs/src/tidex.js +9 -9
  130. package/dist/cjs/src/tokocrypto.js +60 -64
  131. package/dist/cjs/src/upbit.js +157 -157
  132. package/dist/cjs/src/wavesexchange.js +127 -129
  133. package/dist/cjs/src/wazirx.js +4 -10
  134. package/dist/cjs/src/whitebit.js +66 -70
  135. package/dist/cjs/src/woo.js +244 -246
  136. package/dist/cjs/src/yobit.js +12 -16
  137. package/dist/cjs/src/zonda.js +103 -103
  138. package/js/ccxt.d.ts +1 -1
  139. package/js/ccxt.js +1 -1
  140. package/js/src/abstract/bequant.d.ts +37 -7
  141. package/js/src/abstract/binance.d.ts +1 -0
  142. package/js/src/abstract/binancecoinm.d.ts +1 -0
  143. package/js/src/abstract/binanceus.d.ts +1 -0
  144. package/js/src/abstract/binanceusdm.d.ts +1 -0
  145. package/js/src/abstract/bitcoincom.d.ts +37 -7
  146. package/js/src/abstract/bybit.d.ts +16 -195
  147. package/js/src/abstract/fmfwio.d.ts +37 -7
  148. package/js/src/abstract/hitbtc.d.ts +37 -7
  149. package/js/src/abstract/hitbtc3.d.ts +37 -7
  150. package/js/src/abstract/okex.d.ts +6 -1
  151. package/js/src/abstract/okex5.d.ts +6 -1
  152. package/js/src/abstract/okx.d.ts +6 -1
  153. package/js/src/ace.d.ts +10 -10
  154. package/js/src/ace.js +5 -7
  155. package/js/src/alpaca.d.ts +4 -4
  156. package/js/src/ascendex.d.ts +12 -36
  157. package/js/src/ascendex.js +65 -67
  158. package/js/src/base/types.d.ts +8 -0
  159. package/js/src/bigone.d.ts +12 -50
  160. package/js/src/bigone.js +110 -114
  161. package/js/src/binance.d.ts +9 -66
  162. package/js/src/binance.js +274 -269
  163. package/js/src/bingx.d.ts +11 -35
  164. package/js/src/bingx.js +117 -117
  165. package/js/src/bit2c.d.ts +9 -9
  166. package/js/src/bit2c.js +7 -9
  167. package/js/src/bitbank.d.ts +11 -51
  168. package/js/src/bitbank.js +19 -19
  169. package/js/src/bitbns.d.ts +10 -30
  170. package/js/src/bitbns.js +5 -15
  171. package/js/src/bitfinex.d.ts +10 -58
  172. package/js/src/bitfinex.js +73 -75
  173. package/js/src/bitfinex2.d.ts +5 -29
  174. package/js/src/bitfinex2.js +60 -62
  175. package/js/src/bitflyer.d.ts +11 -51
  176. package/js/src/bitflyer.js +4 -12
  177. package/js/src/bitforex.d.ts +9 -9
  178. package/js/src/bitforex.js +5 -9
  179. package/js/src/bitget.d.ts +8 -28
  180. package/js/src/bitget.js +355 -355
  181. package/js/src/bithumb.d.ts +11 -51
  182. package/js/src/bithumb.js +39 -45
  183. package/js/src/bitmart.d.ts +12 -69
  184. package/js/src/bitmart.js +100 -95
  185. package/js/src/bitmex.d.ts +8 -56
  186. package/js/src/bitmex.js +113 -117
  187. package/js/src/bitopro.d.ts +13 -85
  188. package/js/src/bitopro.js +18 -28
  189. package/js/src/bitpanda.d.ts +13 -51
  190. package/js/src/bitpanda.js +8 -8
  191. package/js/src/bitrue.d.ts +13 -53
  192. package/js/src/bitrue.js +23 -31
  193. package/js/src/bitso.d.ts +13 -73
  194. package/js/src/bitso.js +212 -212
  195. package/js/src/bitstamp.d.ts +14 -66
  196. package/js/src/bitstamp.js +95 -95
  197. package/js/src/bitstamp1.d.ts +9 -9
  198. package/js/src/bittrex.d.ts +14 -58
  199. package/js/src/bittrex.js +28 -28
  200. package/js/src/bitvavo.d.ts +9 -45
  201. package/js/src/bitvavo.js +37 -42
  202. package/js/src/bl3p.d.ts +8 -8
  203. package/js/src/bl3p.js +18 -18
  204. package/js/src/blockchaincom.d.ts +13 -93
  205. package/js/src/blockchaincom.js +24 -24
  206. package/js/src/btcalpha.d.ts +11 -31
  207. package/js/src/btcalpha.js +27 -27
  208. package/js/src/btcbox.d.ts +8 -8
  209. package/js/src/btcmarkets.d.ts +12 -60
  210. package/js/src/btctradeua.d.ts +8 -8
  211. package/js/src/btctradeua.js +3 -5
  212. package/js/src/btcturk.d.ts +7 -7
  213. package/js/src/btcturk.js +6 -6
  214. package/js/src/bybit.d.ts +9 -47
  215. package/js/src/bybit.js +50 -247
  216. package/js/src/cex.d.ts +9 -9
  217. package/js/src/cex.js +107 -109
  218. package/js/src/coinbase.d.ts +10 -10
  219. package/js/src/coinbase.js +179 -179
  220. package/js/src/coinbasepro.d.ts +9 -57
  221. package/js/src/coinbasepro.js +115 -115
  222. package/js/src/coincheck.d.ts +10 -30
  223. package/js/src/coincheck.js +21 -21
  224. package/js/src/coinex.d.ts +9 -53
  225. package/js/src/coinex.js +26 -43
  226. package/js/src/coinfalcon.d.ts +9 -53
  227. package/js/src/coinfalcon.js +55 -57
  228. package/js/src/coinlist.d.ts +23 -61
  229. package/js/src/coinlist.js +150 -150
  230. package/js/src/coinmate.d.ts +10 -58
  231. package/js/src/coinmate.js +70 -72
  232. package/js/src/coinone.d.ts +10 -10
  233. package/js/src/coinone.js +11 -15
  234. package/js/src/coinsph.d.ts +14 -74
  235. package/js/src/coinsph.js +113 -121
  236. package/js/src/coinspot.d.ts +10 -10
  237. package/js/src/coinspot.js +28 -28
  238. package/js/src/cryptocom.d.ts +6 -46
  239. package/js/src/cryptocom.js +32 -32
  240. package/js/src/currencycom.d.ts +9 -33
  241. package/js/src/currencycom.js +54 -58
  242. package/js/src/delta.d.ts +10 -10
  243. package/js/src/delta.js +3 -3
  244. package/js/src/deribit.d.ts +14 -50
  245. package/js/src/deribit.js +285 -284
  246. package/js/src/digifinex.d.ts +12 -50
  247. package/js/src/exmo.d.ts +10 -106
  248. package/js/src/exmo.js +41 -41
  249. package/js/src/gate.d.ts +7 -51
  250. package/js/src/gate.js +176 -180
  251. package/js/src/gemini.d.ts +10 -48
  252. package/js/src/gemini.js +5 -7
  253. package/js/src/hitbtc.d.ts +8 -55
  254. package/js/src/hitbtc.js +317 -128
  255. package/js/src/hollaex.d.ts +13 -70
  256. package/js/src/hollaex.js +79 -81
  257. package/js/src/huobi.d.ts +7 -53
  258. package/js/src/huobi.js +270 -279
  259. package/js/src/huobijp.d.ts +9 -55
  260. package/js/src/huobijp.js +127 -129
  261. package/js/src/idex.d.ts +13 -89
  262. package/js/src/idex.js +202 -202
  263. package/js/src/independentreserve.d.ts +9 -9
  264. package/js/src/indodax.d.ts +11 -51
  265. package/js/src/indodax.js +4 -10
  266. package/js/src/kraken.d.ts +9 -53
  267. package/js/src/kraken.js +161 -161
  268. package/js/src/krakenfutures.d.ts +6 -6
  269. package/js/src/krakenfutures.js +223 -223
  270. package/js/src/kucoin.d.ts +7 -47
  271. package/js/src/kucoin.js +122 -122
  272. package/js/src/kucoinfutures.d.ts +6 -6
  273. package/js/src/kucoinfutures.js +130 -135
  274. package/js/src/kuna.d.ts +15 -107
  275. package/js/src/kuna.js +25 -24
  276. package/js/src/latoken.d.ts +9 -33
  277. package/js/src/latoken.js +70 -70
  278. package/js/src/lbank.d.ts +10 -64
  279. package/js/src/lbank.js +6 -6
  280. package/js/src/lbank2.d.ts +8 -29
  281. package/js/src/lbank2.js +35 -35
  282. package/js/src/luno.d.ts +10 -10
  283. package/js/src/luno.js +6 -8
  284. package/js/src/lykke.d.ts +12 -50
  285. package/js/src/lykke.js +4 -4
  286. package/js/src/mercado.d.ts +8 -48
  287. package/js/src/mercado.js +24 -34
  288. package/js/src/mexc.d.ts +11 -49
  289. package/js/src/mexc.js +177 -187
  290. package/js/src/ndax.d.ts +11 -47
  291. package/js/src/ndax.js +9 -8
  292. package/js/src/novadax.d.ts +13 -61
  293. package/js/src/oceanex.d.ts +8 -8
  294. package/js/src/oceanex.js +11 -13
  295. package/js/src/okcoin.d.ts +11 -55
  296. package/js/src/okcoin.js +65 -65
  297. package/js/src/okx.d.ts +10 -98
  298. package/js/src/okx.js +81 -86
  299. package/js/src/paymium.d.ts +8 -8
  300. package/js/src/phemex.d.ts +8 -27
  301. package/js/src/phemex.js +122 -143
  302. package/js/src/poloniex.d.ts +8 -56
  303. package/js/src/poloniex.js +43 -43
  304. package/js/src/poloniexfutures.d.ts +10 -10
  305. package/js/src/poloniexfutures.js +98 -102
  306. package/js/src/pro/alpaca.d.ts +2 -2
  307. package/js/src/pro/alpaca.js +174 -174
  308. package/js/src/pro/ascendex.js +151 -151
  309. package/js/src/pro/binance.d.ts +2 -19
  310. package/js/src/pro/binance.js +278 -278
  311. package/js/src/pro/bingx.js +136 -136
  312. package/js/src/pro/bitfinex.d.ts +2 -2
  313. package/js/src/pro/bitfinex.js +38 -38
  314. package/js/src/pro/bitfinex2.js +57 -57
  315. package/js/src/pro/bitget.js +227 -227
  316. package/js/src/pro/bitmart.js +100 -102
  317. package/js/src/pro/bitmex.js +584 -584
  318. package/js/src/pro/bitopro.js +49 -49
  319. package/js/src/pro/bitpanda.js +249 -249
  320. package/js/src/pro/bitrue.js +79 -83
  321. package/js/src/pro/bitstamp.js +62 -64
  322. package/js/src/pro/bittrex.js +107 -107
  323. package/js/src/pro/bitvavo.js +119 -123
  324. package/js/src/pro/blockchaincom.js +169 -169
  325. package/js/src/pro/bybit.js +57 -57
  326. package/js/src/pro/cex.js +202 -206
  327. package/js/src/pro/coinbase.js +4 -4
  328. package/js/src/pro/coinbasepro.d.ts +2 -2
  329. package/js/src/pro/coinbasepro.js +95 -95
  330. package/js/src/pro/coinex.js +232 -232
  331. package/js/src/pro/cryptocom.js +32 -32
  332. package/js/src/pro/currencycom.js +108 -108
  333. package/js/src/pro/deribit.js +140 -140
  334. package/js/src/pro/exmo.js +72 -72
  335. package/js/src/pro/gate.js +160 -160
  336. package/js/src/pro/gemini.js +135 -135
  337. package/js/src/pro/hitbtc.js +10 -10
  338. package/js/src/pro/hollaex.js +88 -88
  339. package/js/src/pro/huobi.js +277 -277
  340. package/js/src/pro/huobijp.js +71 -71
  341. package/js/src/pro/idex.js +58 -58
  342. package/js/src/pro/independentreserve.js +29 -29
  343. package/js/src/pro/kraken.js +113 -113
  344. package/js/src/pro/krakenfutures.js +58 -58
  345. package/js/src/pro/kucoin.js +95 -95
  346. package/js/src/pro/kucoinfutures.js +100 -100
  347. package/js/src/pro/luno.d.ts +2 -2
  348. package/js/src/pro/luno.js +42 -42
  349. package/js/src/pro/mexc.js +98 -98
  350. package/js/src/pro/ndax.js +24 -24
  351. package/js/src/pro/okcoin.js +104 -104
  352. package/js/src/pro/okx.js +161 -161
  353. package/js/src/pro/phemex.js +295 -295
  354. package/js/src/pro/poloniex.js +79 -79
  355. package/js/src/pro/poloniexfutures.js +172 -172
  356. package/js/src/pro/probit.js +87 -87
  357. package/js/src/pro/upbit.js +66 -66
  358. package/js/src/pro/wazirx.js +11 -11
  359. package/js/src/pro/whitebit.js +81 -85
  360. package/js/src/pro/woo.js +78 -78
  361. package/js/src/probit.d.ts +12 -50
  362. package/js/src/probit.js +46 -50
  363. package/js/src/tidex.d.ts +8 -62
  364. package/js/src/tidex.js +9 -9
  365. package/js/src/timex.d.ts +11 -44
  366. package/js/src/tokocrypto.d.ts +11 -61
  367. package/js/src/tokocrypto.js +61 -65
  368. package/js/src/upbit.d.ts +7 -51
  369. package/js/src/upbit.js +157 -157
  370. package/js/src/wavesexchange.d.ts +9 -49
  371. package/js/src/wavesexchange.js +128 -130
  372. package/js/src/wazirx.d.ts +9 -9
  373. package/js/src/wazirx.js +5 -11
  374. package/js/src/whitebit.d.ts +9 -55
  375. package/js/src/whitebit.js +66 -70
  376. package/js/src/woo.d.ts +10 -48
  377. package/js/src/woo.js +245 -247
  378. package/js/src/yobit.d.ts +3 -3
  379. package/js/src/yobit.js +12 -16
  380. package/js/src/zaif.d.ts +10 -50
  381. package/js/src/zonda.d.ts +8 -48
  382. package/js/src/zonda.js +103 -103
  383. package/package.json +2 -1
@@ -39,6 +39,7 @@ class hitbtc extends hitbtc$1 {
39
39
  'createStopMarketOrder': true,
40
40
  'createStopOrder': true,
41
41
  'editOrder': true,
42
+ 'fetchAccounts': false,
42
43
  'fetchBalance': true,
43
44
  'fetchBorrowRate': undefined,
44
45
  'fetchBorrowRateHistories': undefined,
@@ -54,15 +55,20 @@ class hitbtc extends hitbtc$1 {
54
55
  'fetchFundingHistory': undefined,
55
56
  'fetchFundingRate': true,
56
57
  'fetchFundingRateHistory': true,
57
- 'fetchFundingRates': false,
58
+ 'fetchFundingRates': true,
58
59
  'fetchIndexOHLCV': true,
59
60
  'fetchLeverage': true,
60
61
  'fetchLeverageTiers': undefined,
61
- 'fetchMarketLeverageTiers': undefined,
62
+ 'fetchLiquidations': false,
63
+ 'fetchMarginMode': false,
64
+ 'fetchMarketLeverageTiers': false,
62
65
  'fetchMarkets': true,
63
66
  'fetchMarkOHLCV': true,
67
+ 'fetchMyLiquidations': false,
64
68
  'fetchMyTrades': true,
65
69
  'fetchOHLCV': true,
70
+ 'fetchOpenInterest': true,
71
+ 'fetchOpenInterestHistory': false,
66
72
  'fetchOpenOrder': true,
67
73
  'fetchOpenOrders': true,
68
74
  'fetchOrder': true,
@@ -82,6 +88,7 @@ class hitbtc extends hitbtc$1 {
82
88
  'fetchWithdrawals': true,
83
89
  'reduceMargin': true,
84
90
  'setLeverage': true,
91
+ 'setMargin': false,
85
92
  'setMarginMode': false,
86
93
  'setPositionMode': false,
87
94
  'transfer': true,
@@ -113,56 +120,79 @@ class hitbtc extends hitbtc$1 {
113
120
  'public': {
114
121
  'get': {
115
122
  'public/currency': 10,
123
+ 'public/currency/{currency}': 10,
116
124
  'public/symbol': 10,
125
+ 'public/symbol/{symbol}': 10,
117
126
  'public/ticker': 10,
127
+ 'public/ticker/{symbol}': 10,
118
128
  'public/price/rate': 10,
129
+ 'public/price/history': 10,
130
+ 'public/price/ticker': 10,
131
+ 'public/price/ticker/{symbol}': 10,
119
132
  'public/trades': 10,
133
+ 'public/trades/{symbol}': 10,
120
134
  'public/orderbook': 10,
135
+ 'public/orderbook/{symbol}': 10,
121
136
  'public/candles': 10,
137
+ 'public/candles/{symbol}': 10,
122
138
  'public/futures/info': 10,
139
+ 'public/futures/info/{symbol}': 10,
123
140
  'public/futures/history/funding': 10,
141
+ 'public/futures/history/funding/{symbol}': 10,
124
142
  'public/futures/candles/index_price': 10,
143
+ 'public/futures/candles/index_price/{symbol}': 10,
125
144
  'public/futures/candles/mark_price': 10,
145
+ 'public/futures/candles/mark_price/{symbol}': 10,
126
146
  'public/futures/candles/premium_index': 10,
147
+ 'public/futures/candles/premium_index/{symbol}': 10,
127
148
  'public/futures/candles/open_interest': 10,
149
+ 'public/futures/candles/open_interest/{symbol}': 10,
128
150
  },
129
151
  },
130
152
  'private': {
131
153
  'get': {
132
154
  'spot/balance': 15,
133
- 'spot/order': 15,
134
- 'spot/order/{client_order_id}': 15,
155
+ 'spot/balance/{currency}': 15,
156
+ 'spot/order': 1,
157
+ 'spot/order/{client_order_id}': 1,
135
158
  'spot/fee': 15,
136
159
  'spot/fee/{symbol}': 15,
137
160
  'spot/history/order': 15,
138
161
  'spot/history/trade': 15,
139
- 'margin/account': 15,
140
- 'margin/account/isolated/{symbol}': 15,
141
- 'margin/order': 15,
142
- 'margin/order/{client_order_id}': 15,
143
- 'margin/history/clearing': 15,
162
+ 'margin/account': 1,
163
+ 'margin/account/isolated/{symbol}': 1,
164
+ 'margin/account/cross/{currency}': 1,
165
+ 'margin/order': 1,
166
+ 'margin/order/{client_order_id}': 1,
167
+ 'margin/config': 15,
144
168
  'margin/history/order': 15,
145
- 'margin/history/positions': 15,
146
169
  'margin/history/trade': 15,
170
+ 'margin/history/positions': 15,
171
+ 'margin/history/clearing': 15,
147
172
  'futures/balance': 15,
148
- 'futures/account': 15,
149
- 'futures/account/isolated/{symbol}': 15,
150
- 'futures/order': 15,
151
- 'futures/order/{client_order_id}': 15,
173
+ 'futures/balance/{currency}': 15,
174
+ 'futures/account': 1,
175
+ 'futures/account/isolated/{symbol}': 1,
176
+ 'futures/order': 1,
177
+ 'futures/order/{client_order_id}': 1,
178
+ 'futures/config': 15,
152
179
  'futures/fee': 15,
153
180
  'futures/fee/{symbol}': 15,
154
- 'futures/history/clearing': 15,
155
181
  'futures/history/order': 15,
156
- 'futures/history/positions': 15,
157
182
  'futures/history/trade': 15,
158
- 'wallet/balance': 15,
159
- 'wallet/crypto/address': 15,
160
- 'wallet/crypto/address/recent-deposit': 15,
161
- 'wallet/crypto/address/recent-withdraw': 15,
162
- 'wallet/crypto/address/check-mine': 15,
163
- 'wallet/transactions': 15,
164
- 'wallet/crypto/check-offchain-available': 15,
165
- 'wallet/crypto/fee/estimate': 15,
183
+ 'futures/history/positions': 15,
184
+ 'futures/history/clearing': 15,
185
+ 'wallet/balance': 30,
186
+ 'wallet/balance/{currency}': 30,
187
+ 'wallet/crypto/address': 30,
188
+ 'wallet/crypto/address/recent-deposit': 30,
189
+ 'wallet/crypto/address/recent-withdraw': 30,
190
+ 'wallet/crypto/address/check-mine': 30,
191
+ 'wallet/transactions': 30,
192
+ 'wallet/transactions/{tx_id}': 30,
193
+ 'wallet/crypto/fee/estimate': 30,
194
+ 'wallet/airdrops': 30,
195
+ 'wallet/amount-locks': 30,
166
196
  'sub-account': 15,
167
197
  'sub-account/acl': 15,
168
198
  'sub-account/balance/{subAccID}': 15,
@@ -170,12 +200,19 @@ class hitbtc extends hitbtc$1 {
170
200
  },
171
201
  'post': {
172
202
  'spot/order': 1,
203
+ 'spot/order/list': 1,
173
204
  'margin/order': 1,
205
+ 'margin/order/list': 1,
174
206
  'futures/order': 1,
175
- 'wallet/convert': 15,
176
- 'wallet/crypto/address': 15,
177
- 'wallet/crypto/withdraw': 15,
178
- 'wallet/transfer': 15,
207
+ 'futures/order/list': 1,
208
+ 'wallet/crypto/address': 30,
209
+ 'wallet/crypto/withdraw': 30,
210
+ 'wallet/convert': 30,
211
+ 'wallet/transfer': 30,
212
+ 'wallet/internal/withdraw': 30,
213
+ 'wallet/crypto/check-offchain-available': 30,
214
+ 'wallet/crypto/fees/estimate': 30,
215
+ 'wallet/airdrops/{id}/claim': 30,
179
216
  'sub-account/freeze': 15,
180
217
  'sub-account/activate': 15,
181
218
  'sub-account/transfer': 15,
@@ -194,15 +231,15 @@ class hitbtc extends hitbtc$1 {
194
231
  'margin/order': 1,
195
232
  'margin/order/{client_order_id}': 1,
196
233
  'futures/position': 1,
197
- 'futures/position/isolated/{symbol}': 1,
234
+ 'futures/position/{margin_mode}/{symbol}': 1,
198
235
  'futures/order': 1,
199
236
  'futures/order/{client_order_id}': 1,
200
- 'wallet/crypto/withdraw/{id}': 1,
237
+ 'wallet/crypto/withdraw/{id}': 30,
201
238
  },
202
239
  'put': {
203
240
  'margin/account/isolated/{symbol}': 1,
204
241
  'futures/account/isolated/{symbol}': 1,
205
- 'wallet/crypto/withdraw/{id}': 1,
242
+ 'wallet/crypto/withdraw/{id}': 30,
206
243
  },
207
244
  },
208
245
  },
@@ -995,18 +1032,38 @@ class hitbtc extends hitbtc$1 {
995
1032
  * @method
996
1033
  * @name hitbtc#fetchTicker
997
1034
  * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
1035
+ * @see https://api.hitbtc.com/#tickers
998
1036
  * @param {string} symbol unified symbol of the market to fetch the ticker for
999
1037
  * @param {object} [params] extra parameters specific to the hitbtc api endpoint
1000
1038
  * @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
1001
1039
  */
1002
- const response = await this.fetchTickers([symbol], params);
1003
- return this.safeValue(response, symbol);
1040
+ await this.loadMarkets();
1041
+ const market = this.market(symbol);
1042
+ const request = {
1043
+ 'symbol': market['id'],
1044
+ };
1045
+ const response = await this.publicGetPublicTickerSymbol(this.extend(request, params));
1046
+ //
1047
+ // {
1048
+ // "ask": "0.020572",
1049
+ // "bid": "0.020566",
1050
+ // "last": "0.020574",
1051
+ // "low": "0.020388",
1052
+ // "high": "0.021084",
1053
+ // "open": "0.020913",
1054
+ // "volume": "138444.3666",
1055
+ // "volume_quote": "2853.6874972480",
1056
+ // "timestamp": "2021-06-02T17:52:36.731Z"
1057
+ // }
1058
+ //
1059
+ return this.parseTicker(response, market);
1004
1060
  }
1005
1061
  async fetchTickers(symbols = undefined, params = {}) {
1006
1062
  /**
1007
1063
  * @method
1008
1064
  * @name hitbtc#fetchTickers
1009
1065
  * @description fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
1066
+ * @see https://api.hitbtc.com/#tickers
1010
1067
  * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
1011
1068
  * @param {object} [params] extra parameters specific to the hitbtc api endpoint
1012
1069
  * @returns {object} a dictionary of [ticker structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
@@ -1094,6 +1151,7 @@ class hitbtc extends hitbtc$1 {
1094
1151
  * @method
1095
1152
  * @name hitbtc#fetchTrades
1096
1153
  * @description get the list of most recent trades for a particular symbol
1154
+ * @see https://api.hitbtc.com/#trades
1097
1155
  * @param {string} symbol unified symbol of the market to fetch trades for
1098
1156
  * @param {int} [since] timestamp in ms of the earliest trade to fetch
1099
1157
  * @param {int} [limit] the maximum amount of trades to fetch
@@ -1103,20 +1161,26 @@ class hitbtc extends hitbtc$1 {
1103
1161
  await this.loadMarkets();
1104
1162
  let market = undefined;
1105
1163
  const request = {};
1106
- if (symbol !== undefined) {
1107
- market = this.market(symbol);
1108
- // symbol is optional for hitbtc fetchTrades
1109
- request['symbols'] = market['id'];
1110
- }
1111
1164
  if (limit !== undefined) {
1112
1165
  request['limit'] = Math.min(limit, 1000);
1113
1166
  }
1114
1167
  if (since !== undefined) {
1115
1168
  request['from'] = since;
1116
1169
  }
1117
- const response = await this.publicGetPublicTrades(this.extend(request, params));
1118
- const marketIds = Object.keys(response);
1170
+ let response = undefined;
1171
+ if (symbol !== undefined) {
1172
+ market = this.market(symbol);
1173
+ request['symbol'] = market['id'];
1174
+ response = await this.publicGetPublicTradesSymbol(this.extend(request, params));
1175
+ }
1176
+ else {
1177
+ response = await this.publicGetPublicTrades(this.extend(request, params));
1178
+ }
1179
+ if (symbol !== undefined) {
1180
+ return this.parseTrades(response, market);
1181
+ }
1119
1182
  let trades = [];
1183
+ const marketIds = Object.keys(response);
1120
1184
  for (let i = 0; i < marketIds.length; i++) {
1121
1185
  const marketId = marketIds[i];
1122
1186
  const marketInner = this.market(marketId);
@@ -1171,38 +1235,38 @@ class hitbtc extends hitbtc$1 {
1171
1235
  // createOrder (market)
1172
1236
  //
1173
1237
  // {
1174
- // id: '1569252895',
1175
- // position_id: '0',
1176
- // quantity: '10',
1177
- // price: '0.03919424',
1178
- // fee: '0.000979856000',
1179
- // timestamp: '2022-01-25T19:38:36.153Z',
1180
- // taker: true
1238
+ // "id": "1569252895",
1239
+ // "position_id": "0",
1240
+ // "quantity": "10",
1241
+ // "price": "0.03919424",
1242
+ // "fee": "0.000979856000",
1243
+ // "timestamp": "2022-01-25T19:38:36.153Z",
1244
+ // "taker": true
1181
1245
  // }
1182
1246
  //
1183
1247
  // fetchTrades
1184
1248
  //
1185
1249
  // {
1186
- // id: 974786185,
1187
- // price: '0.032462',
1188
- // qty: '0.3673',
1189
- // side: 'buy',
1190
- // timestamp: '2020-10-16T12:57:39.846Z'
1250
+ // "id": 974786185,
1251
+ // "price": "0.032462",
1252
+ // "qty": "0.3673",
1253
+ // "side": "buy",
1254
+ // "timestamp": "2020-10-16T12:57:39.846Z"
1191
1255
  // }
1192
1256
  //
1193
1257
  // fetchMyTrades spot
1194
1258
  //
1195
1259
  // {
1196
- // id: 277210397,
1197
- // clientOrderId: '6e102f3e7f3f4e04aeeb1cdc95592f1a',
1198
- // orderId: 28102855393,
1199
- // symbol: 'ETHBTC',
1200
- // side: 'sell',
1201
- // quantity: '0.002',
1202
- // price: '0.073365',
1203
- // fee: '0.000000147',
1204
- // timestamp: '2018-04-28T18:39:55.345Z',
1205
- // taker: true
1260
+ // "id": 277210397,
1261
+ // "clientOrderId": "6e102f3e7f3f4e04aeeb1cdc95592f1a",
1262
+ // "orderId": 28102855393,
1263
+ // "symbol": "ETHBTC",
1264
+ // "side": "sell",
1265
+ // "quantity": "0.002",
1266
+ // "price": "0.073365",
1267
+ // "fee": "0.000000147",
1268
+ // "timestamp": "2018-04-28T18:39:55.345Z",
1269
+ // "taker": true
1206
1270
  // }
1207
1271
  //
1208
1272
  // fetchMyTrades swap and margin
@@ -1391,7 +1455,6 @@ class hitbtc extends hitbtc$1 {
1391
1455
  'id': id,
1392
1456
  'txid': txhash,
1393
1457
  'type': type,
1394
- 'code': code,
1395
1458
  'currency': code,
1396
1459
  'network': undefined,
1397
1460
  'amount': amount,
@@ -1453,6 +1516,7 @@ class hitbtc extends hitbtc$1 {
1453
1516
  * @method
1454
1517
  * @name hitbtc#fetchOrderBooks
1455
1518
  * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data for multiple markets
1519
+ * @see https://api.hitbtc.com/#order-books
1456
1520
  * @param {string[]|undefined} symbols list of unified market symbols, all symbols fetched if undefined, default is undefined
1457
1521
  * @param {int} [limit] max number of entries per orderbook to return, default is undefined
1458
1522
  * @param {object} [params] extra parameters specific to the hitbtc api endpoint
@@ -1484,13 +1548,23 @@ class hitbtc extends hitbtc$1 {
1484
1548
  * @method
1485
1549
  * @name hitbtc#fetchOrderBook
1486
1550
  * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
1551
+ * @see https://api.hitbtc.com/#order-books
1487
1552
  * @param {string} symbol unified symbol of the market to fetch the order book for
1488
1553
  * @param {int} [limit] the maximum amount of order book entries to return
1489
1554
  * @param {object} [params] extra parameters specific to the hitbtc api endpoint
1490
1555
  * @returns {object} A dictionary of [order book structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-book-structure} indexed by market symbols
1491
1556
  */
1492
- const result = await this.fetchOrderBooks([symbol], limit, params);
1493
- return result[symbol];
1557
+ await this.loadMarkets();
1558
+ const market = this.market(symbol);
1559
+ const request = {
1560
+ 'symbol': market['id'],
1561
+ };
1562
+ if (limit !== undefined) {
1563
+ request['depth'] = limit;
1564
+ }
1565
+ const response = await this.publicGetPublicOrderbookSymbol(this.extend(request, params));
1566
+ const timestamp = this.parse8601(this.safeString(response, 'timestamp'));
1567
+ return this.parseOrderBook(response, symbol, timestamp, 'bid', 'ask');
1494
1568
  }
1495
1569
  parseTradingFee(fee, market = undefined) {
1496
1570
  //
@@ -1576,6 +1650,9 @@ class hitbtc extends hitbtc$1 {
1576
1650
  * @name hitbtc#fetchOHLCV
1577
1651
  * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1578
1652
  * @see https://api.hitbtc.com/#candles
1653
+ * @see https://api.hitbtc.com/#futures-index-price-candles
1654
+ * @see https://api.hitbtc.com/#futures-mark-price-candles
1655
+ * @see https://api.hitbtc.com/#futures-premium-index-candles
1579
1656
  * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1580
1657
  * @param {string} timeframe the length of time each candle represents
1581
1658
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
@@ -1593,7 +1670,7 @@ class hitbtc extends hitbtc$1 {
1593
1670
  }
1594
1671
  const market = this.market(symbol);
1595
1672
  let request = {
1596
- 'symbols': market['id'],
1673
+ 'symbol': market['id'],
1597
1674
  'period': this.safeString(this.timeframes, timeframe, timeframe),
1598
1675
  };
1599
1676
  [request, params] = this.handleUntilOption('till', request, params);
@@ -1605,50 +1682,47 @@ class hitbtc extends hitbtc$1 {
1605
1682
  }
1606
1683
  const price = this.safeString(params, 'price');
1607
1684
  params = this.omit(params, 'price');
1608
- let method = 'publicGetPublicCandles';
1685
+ let response = undefined;
1609
1686
  if (price === 'mark') {
1610
- method = 'publicGetPublicFuturesCandlesMarkPrice';
1687
+ response = await this.publicGetPublicFuturesCandlesMarkPriceSymbol(this.extend(request, params));
1611
1688
  }
1612
1689
  else if (price === 'index') {
1613
- method = 'publicGetPublicFuturesCandlesIndexPrice';
1690
+ response = await this.publicGetPublicFuturesCandlesIndexPriceSymbol(this.extend(request, params));
1614
1691
  }
1615
1692
  else if (price === 'premiumIndex') {
1616
- method = 'publicGetPublicFuturesCandlesPremiumIndex';
1693
+ response = await this.publicGetPublicFuturesCandlesPremiumIndexSymbol(this.extend(request, params));
1694
+ }
1695
+ else {
1696
+ response = await this.publicGetPublicCandlesSymbol(this.extend(request, params));
1617
1697
  }
1618
- const response = await this[method](this.extend(request, params));
1619
1698
  //
1620
1699
  // Spot and Swap
1621
1700
  //
1622
- // {
1623
- // "ETHUSDT": [
1624
- // {
1625
- // "timestamp": "2021-10-25T07:38:00.000Z",
1626
- // "open": "4173.391",
1627
- // "close": "4170.923",
1628
- // "min": "4170.923",
1629
- // "max": "4173.986",
1630
- // "volume": "0.1879",
1631
- // "volume_quote": "784.2517846"
1632
- // }
1633
- // ]
1634
- // }
1701
+ // [
1702
+ // {
1703
+ // "timestamp": "2021-10-25T07:38:00.000Z",
1704
+ // "open": "4173.391",
1705
+ // "close": "4170.923",
1706
+ // "min": "4170.923",
1707
+ // "max": "4173.986",
1708
+ // "volume": "0.1879",
1709
+ // "volume_quote": "784.2517846"
1710
+ // }
1711
+ // ]
1635
1712
  //
1636
1713
  // Mark, Index and Premium Index
1637
1714
  //
1638
- // {
1639
- // "BTCUSDT_PERP": [
1640
- // {
1641
- // "timestamp": "2022-04-01T01:28:00.000Z",
1642
- // "open": "45146.39",
1643
- // "close": "45219.43",
1644
- // "min": "45146.39",
1645
- // "max": "45219.43"
1646
- // },
1647
- // ]
1648
- // }
1715
+ // [
1716
+ // {
1717
+ // "timestamp": "2022-04-01T01:28:00.000Z",
1718
+ // "open": "45146.39",
1719
+ // "close": "45219.43",
1720
+ // "min": "45146.39",
1721
+ // "max": "45219.43"
1722
+ // },
1723
+ // ]
1649
1724
  //
1650
- const ohlcvs = this.safeValue(response, market['id']);
1651
- return this.parseOHLCVs(ohlcvs, market, timeframe, since, limit);
1725
+ return this.parseOHLCVs(response, market, timeframe, since, limit);
1652
1726
  }
1653
1727
  parseOHLCV(ohlcv, market = undefined) {
1654
1728
  //
@@ -2048,7 +2122,7 @@ class hitbtc extends hitbtc$1 {
2048
2122
  * @param {float} amount how much of currency you want to trade in units of base currency
2049
2123
  * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
2050
2124
  * @param {object} [params] extra parameters specific to the hitbtc api endpoint
2051
- * @param {string} [params.marginMode] 'cross' or 'isolated' only 'isolated' is supported for spot-margin, swap supports both
2125
+ * @param {string} [params.marginMode] 'cross' or 'isolated' only 'isolated' is supported for spot-margin, swap supports both, default is 'cross'
2052
2126
  * @param {bool} [params.margin] true for creating a margin order
2053
2127
  * @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
2054
2128
  * @param {bool} [params.postOnly] if true, the order will only be posted to the order book and not executed immediately
@@ -2122,7 +2196,11 @@ class hitbtc extends hitbtc$1 {
2122
2196
  throw new errors.ExchangeError(this.id + ' createOrder() requires a stopPrice parameter for stop-loss and take-profit orders');
2123
2197
  }
2124
2198
  params = this.omit(params, ['triggerPrice', 'timeInForce', 'stopPrice', 'stop_price', 'reduceOnly', 'postOnly']);
2125
- if ((marketType === 'swap') && (marginMode !== undefined)) {
2199
+ if (marketType === 'swap') {
2200
+ // set default margin mode to cross
2201
+ if (marginMode === undefined) {
2202
+ marginMode = 'cross';
2203
+ }
2126
2204
  request['margin_mode'] = marginMode;
2127
2205
  }
2128
2206
  let response = undefined;
@@ -2301,7 +2379,7 @@ class hitbtc extends hitbtc$1 {
2301
2379
  const response = await this.privatePostWalletTransfer(this.extend(request, params));
2302
2380
  //
2303
2381
  // [
2304
- // '2db6ebab-fb26-4537-9ef8-1a689472d236'
2382
+ // "2db6ebab-fb26-4537-9ef8-1a689472d236"
2305
2383
  // ]
2306
2384
  //
2307
2385
  return this.parseTransfer(response, currency);
@@ -2311,7 +2389,7 @@ class hitbtc extends hitbtc$1 {
2311
2389
  // transfer
2312
2390
  //
2313
2391
  // [
2314
- // '2db6ebab-fb26-4537-9ef8-1a689472d236'
2392
+ // "2db6ebab-fb26-4537-9ef8-1a689472d236"
2315
2393
  // ]
2316
2394
  //
2317
2395
  const timestamp = this.milliseconds();
@@ -2401,6 +2479,60 @@ class hitbtc extends hitbtc$1 {
2401
2479
  //
2402
2480
  return this.parseTransaction(response, currency);
2403
2481
  }
2482
+ async fetchFundingRates(symbols = undefined, params = {}) {
2483
+ /**
2484
+ * @method
2485
+ * @name hitbtc#fetchFundingRates
2486
+ * @description fetches funding rates for multiple markets
2487
+ * @see https://api.hitbtc.com/#futures-info
2488
+ * @param {string[]} symbols unified symbols of the markets to fetch the funding rates for, all market funding rates are returned if not assigned
2489
+ * @param {object} [params] extra parameters specific to the hitbtc api endpoint
2490
+ * @returns {object} an array of [funding rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-structure}
2491
+ */
2492
+ await this.loadMarkets();
2493
+ let market = undefined;
2494
+ const request = {};
2495
+ if (symbols !== undefined) {
2496
+ symbols = this.marketSymbols(symbols);
2497
+ market = this.market(symbols[0]);
2498
+ const queryMarketIds = this.marketIds(symbols);
2499
+ request['symbols'] = queryMarketIds.join(',');
2500
+ }
2501
+ let type = undefined;
2502
+ [type, params] = this.handleMarketTypeAndParams('fetchFundingRates', market, params);
2503
+ if (type !== 'swap') {
2504
+ throw new errors.NotSupported(this.id + ' fetchFundingRates() does not support ' + type + ' markets');
2505
+ }
2506
+ const response = await this.publicGetPublicFuturesInfo(this.extend(request, params));
2507
+ //
2508
+ // {
2509
+ // "BTCUSDT_PERP": {
2510
+ // "contract_type": "perpetual",
2511
+ // "mark_price": "30897.68",
2512
+ // "index_price": "30895.29",
2513
+ // "funding_rate": "0.0001",
2514
+ // "open_interest": "93.7128",
2515
+ // "next_funding_time": "2021-07-21T16:00:00.000Z",
2516
+ // "indicative_funding_rate": "0.0001",
2517
+ // "premium_index": "0.000047541807127312",
2518
+ // "avg_premium_index": "0.000087063368020112",
2519
+ // "interest_rate": "0.0001",
2520
+ // "timestamp": "2021-07-21T09:48:37.235Z"
2521
+ // }
2522
+ // }
2523
+ //
2524
+ const marketIds = Object.keys(response);
2525
+ const fundingRates = {};
2526
+ for (let i = 0; i < marketIds.length; i++) {
2527
+ const marketId = this.safeString(marketIds, i);
2528
+ const rawFundingRate = this.safeValue(response, marketId);
2529
+ const marketInner = this.market(marketId);
2530
+ const symbol = marketInner['symbol'];
2531
+ const fundingRate = this.parseFundingRate(rawFundingRate, marketInner);
2532
+ fundingRates[symbol] = fundingRate;
2533
+ }
2534
+ return this.filterByArray(fundingRates, 'symbol', symbols);
2535
+ }
2404
2536
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2405
2537
  /**
2406
2538
  * @method
@@ -2691,11 +2823,75 @@ class hitbtc extends hitbtc$1 {
2691
2823
  'takeProfitPrice': undefined,
2692
2824
  });
2693
2825
  }
2826
+ parseOpenInterest(interest, market = undefined) {
2827
+ //
2828
+ // {
2829
+ // "contract_type": "perpetual",
2830
+ // "mark_price": "42307.43",
2831
+ // "index_price": "42303.27",
2832
+ // "funding_rate": "0.0001",
2833
+ // "open_interest": "30.9826",
2834
+ // "next_funding_time": "2022-03-22T16:00:00.000Z",
2835
+ // "indicative_funding_rate": "0.0001",
2836
+ // "premium_index": "0",
2837
+ // "avg_premium_index": "0.000029587712038098",
2838
+ // "interest_rate": "0.0001",
2839
+ // "timestamp": "2022-03-22T08:08:26.687Z"
2840
+ // }
2841
+ //
2842
+ const datetime = this.safeString(interest, 'timestamp');
2843
+ const value = this.safeNumber(interest, 'open_interest');
2844
+ return this.safeOpenInterest({
2845
+ 'symbol': market['symbol'],
2846
+ 'openInterestAmount': undefined,
2847
+ 'openInterestValue': value,
2848
+ 'timestamp': this.parse8601(datetime),
2849
+ 'datetime': datetime,
2850
+ 'info': interest,
2851
+ }, market);
2852
+ }
2853
+ async fetchOpenInterest(symbol, params = {}) {
2854
+ /**
2855
+ * @method
2856
+ * @name hitbtc#fetchOpenInterest
2857
+ * @description Retrieves the open interest of a derivative trading pair
2858
+ * @see https://api.hitbtc.com/#futures-info
2859
+ * @param {string} symbol Unified CCXT market symbol
2860
+ * @param {object} [params] exchange specific parameters
2861
+ * @returns {object} an open interest structure{@link https://github.com/ccxt/ccxt/wiki/Manual#interest-history-structure}
2862
+ */
2863
+ await this.loadMarkets();
2864
+ const market = this.market(symbol);
2865
+ if (!market['swap']) {
2866
+ throw new errors.BadSymbol(this.id + ' fetchOpenInterest() supports swap contracts only');
2867
+ }
2868
+ const request = {
2869
+ 'symbol': market['id'],
2870
+ };
2871
+ const response = await this.publicGetPublicFuturesInfoSymbol(this.extend(request, params));
2872
+ //
2873
+ // {
2874
+ // "contract_type": "perpetual",
2875
+ // "mark_price": "42307.43",
2876
+ // "index_price": "42303.27",
2877
+ // "funding_rate": "0.0001",
2878
+ // "open_interest": "30.9826",
2879
+ // "next_funding_time": "2022-03-22T16:00:00.000Z",
2880
+ // "indicative_funding_rate": "0.0001",
2881
+ // "premium_index": "0",
2882
+ // "avg_premium_index": "0.000029587712038098",
2883
+ // "interest_rate": "0.0001",
2884
+ // "timestamp": "2022-03-22T08:08:26.687Z"
2885
+ // }
2886
+ //
2887
+ return this.parseOpenInterest(response, market);
2888
+ }
2694
2889
  async fetchFundingRate(symbol, params = {}) {
2695
2890
  /**
2696
2891
  * @method
2697
2892
  * @name hitbtc#fetchFundingRate
2698
2893
  * @description fetch the current funding rate
2894
+ * @see https://api.hitbtc.com/#futures-info
2699
2895
  * @param {string} symbol unified market symbol
2700
2896
  * @param {object} [params] extra parameters specific to the hitbtc api endpoint
2701
2897
  * @returns {object} a [funding rate structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-structure}
@@ -2705,31 +2901,26 @@ class hitbtc extends hitbtc$1 {
2705
2901
  if (!market['swap']) {
2706
2902
  throw new errors.BadSymbol(this.id + ' fetchFundingRate() supports swap contracts only');
2707
2903
  }
2708
- const request = {};
2709
- if (symbol !== undefined) {
2710
- symbol = market['symbol'];
2711
- request['symbols'] = market['id'];
2712
- }
2713
- const response = await this.publicGetPublicFuturesInfo(this.extend(request, params));
2904
+ const request = {
2905
+ 'symbol': market['id'],
2906
+ };
2907
+ const response = await this.publicGetPublicFuturesInfoSymbol(this.extend(request, params));
2714
2908
  //
2715
2909
  // {
2716
- // "BTCUSDT_PERP": {
2717
- // "contract_type": "perpetual",
2718
- // "mark_price": "42307.43",
2719
- // "index_price": "42303.27",
2720
- // "funding_rate": "0.0001",
2721
- // "open_interest": "30.9826",
2722
- // "next_funding_time": "2022-03-22T16:00:00.000Z",
2723
- // "indicative_funding_rate": "0.0001",
2724
- // "premium_index": "0",
2725
- // "avg_premium_index": "0.000029587712038098",
2726
- // "interest_rate": "0.0001",
2727
- // "timestamp": "2022-03-22T08:08:26.687Z"
2728
- // }
2910
+ // "contract_type": "perpetual",
2911
+ // "mark_price": "42307.43",
2912
+ // "index_price": "42303.27",
2913
+ // "funding_rate": "0.0001",
2914
+ // "open_interest": "30.9826",
2915
+ // "next_funding_time": "2022-03-22T16:00:00.000Z",
2916
+ // "indicative_funding_rate": "0.0001",
2917
+ // "premium_index": "0",
2918
+ // "avg_premium_index": "0.000029587712038098",
2919
+ // "interest_rate": "0.0001",
2920
+ // "timestamp": "2022-03-22T08:08:26.687Z"
2729
2921
  // }
2730
2922
  //
2731
- const data = this.safeValue(response, market['id'], {});
2732
- return this.parseFundingRate(data, market);
2923
+ return this.parseFundingRate(response, market);
2733
2924
  }
2734
2925
  parseFundingRate(contract, market = undefined) {
2735
2926
  //
@@ -2782,8 +2973,8 @@ class hitbtc extends hitbtc$1 {
2782
2973
  const request = {
2783
2974
  'symbol': market['id'],
2784
2975
  'margin_balance': amount, // swap and margin
2785
- // 'leverage': '10', // swap only required
2786
- // 'strict_validate': false, // swap and margin
2976
+ // "leverage": "10", // swap only required
2977
+ // "strict_validate": false, // swap and margin
2787
2978
  };
2788
2979
  if (leverage !== undefined) {
2789
2980
  request['leverage'] = leverage;
@@ -2933,10 +3124,8 @@ class hitbtc extends hitbtc$1 {
2933
3124
  * @param {object} [params] extra parameters specific to the hitbtc api endpoint
2934
3125
  * @returns {object} response from the exchange
2935
3126
  */
3127
+ this.checkRequiredSymbol('setLeverage', symbol);
2936
3128
  await this.loadMarkets();
2937
- if (symbol === undefined) {
2938
- throw new errors.ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
2939
- }
2940
3129
  if (params['margin_balance'] === undefined) {
2941
3130
  throw new errors.ArgumentsRequired(this.id + ' setLeverage() requires a margin_balance parameter that will transfer margin to the specified trading pair');
2942
3131
  }