ccxt 4.1.56 → 4.1.58

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 (318) hide show
  1. package/.git-templates/hooks/pre-push +2 -2
  2. package/README.md +3 -3
  3. package/build.sh +30 -18
  4. package/dist/ccxt.browser.js +3893 -3214
  5. package/dist/ccxt.browser.min.js +10 -10
  6. package/dist/cjs/ccxt.js +1 -1
  7. package/dist/cjs/src/ace.js +17 -13
  8. package/dist/cjs/src/alpaca.js +6 -6
  9. package/dist/cjs/src/ascendex.js +35 -29
  10. package/dist/cjs/src/base/Exchange.js +39 -26
  11. package/dist/cjs/src/base/Precise.js +1 -3
  12. package/dist/cjs/src/base/ws/Client.js +1 -1
  13. package/dist/cjs/src/bigone.js +24 -20
  14. package/dist/cjs/src/binance.js +97 -76
  15. package/dist/cjs/src/bingx.js +63 -44
  16. package/dist/cjs/src/bit2c.js +18 -15
  17. package/dist/cjs/src/bitbank.js +16 -15
  18. package/dist/cjs/src/bitbns.js +28 -18
  19. package/dist/cjs/src/bitfinex.js +23 -21
  20. package/dist/cjs/src/bitfinex2.js +32 -28
  21. package/dist/cjs/src/bitflyer.js +28 -20
  22. package/dist/cjs/src/bitforex.js +25 -18
  23. package/dist/cjs/src/bitget.js +184 -147
  24. package/dist/cjs/src/bithumb.js +23 -16
  25. package/dist/cjs/src/bitmart.js +110 -89
  26. package/dist/cjs/src/bitmex.js +104 -64
  27. package/dist/cjs/src/bitopro.js +38 -26
  28. package/dist/cjs/src/bitpanda.js +24 -23
  29. package/dist/cjs/src/bitrue.js +33 -24
  30. package/dist/cjs/src/bitso.js +24 -23
  31. package/dist/cjs/src/bitstamp.js +24 -23
  32. package/dist/cjs/src/bittrex.js +30 -29
  33. package/dist/cjs/src/bitvavo.js +38 -30
  34. package/dist/cjs/src/bl3p.js +11 -10
  35. package/dist/cjs/src/blockchaincom.js +20 -20
  36. package/dist/cjs/src/btcalpha.js +18 -17
  37. package/dist/cjs/src/btcbox.js +13 -12
  38. package/dist/cjs/src/btcmarkets.js +20 -19
  39. package/dist/cjs/src/btcturk.js +14 -13
  40. package/dist/cjs/src/bybit.js +84 -54
  41. package/dist/cjs/src/cex.js +16 -14
  42. package/dist/cjs/src/coinbase.js +29 -27
  43. package/dist/cjs/src/coinbasepro.js +27 -25
  44. package/dist/cjs/src/coincheck.js +15 -14
  45. package/dist/cjs/src/coinex.js +100 -77
  46. package/dist/cjs/src/coinlist.js +28 -27
  47. package/dist/cjs/src/coinmate.js +20 -17
  48. package/dist/cjs/src/coinone.js +21 -16
  49. package/dist/cjs/src/coinsph.js +37 -28
  50. package/dist/cjs/src/coinspot.js +12 -11
  51. package/dist/cjs/src/cryptocom.js +40 -202
  52. package/dist/cjs/src/currencycom.js +32 -25
  53. package/dist/cjs/src/delta.js +34 -28
  54. package/dist/cjs/src/deribit.js +39 -36
  55. package/dist/cjs/src/digifinex.js +64 -44
  56. package/dist/cjs/src/exmo.js +29 -27
  57. package/dist/cjs/src/gate.js +67 -53
  58. package/dist/cjs/src/gemini.js +23 -20
  59. package/dist/cjs/src/hitbtc.js +65 -56
  60. package/dist/cjs/src/hollaex.js +30 -27
  61. package/dist/cjs/src/htx.js +132 -143
  62. package/dist/cjs/src/huobijp.js +22 -20
  63. package/dist/cjs/src/idex.js +22 -21
  64. package/dist/cjs/src/independentreserve.js +15 -14
  65. package/dist/cjs/src/indodax.js +30 -26
  66. package/dist/cjs/src/kraken.js +29 -27
  67. package/dist/cjs/src/krakenfutures.js +29 -22
  68. package/dist/cjs/src/kucoin.js +48 -43
  69. package/dist/cjs/src/kucoinfutures.js +33 -28
  70. package/dist/cjs/src/kuna.js +25 -24
  71. package/dist/cjs/src/latoken.js +24 -22
  72. package/dist/cjs/src/lbank.js +45 -30
  73. package/dist/cjs/src/luno.js +22 -19
  74. package/dist/cjs/src/lykke.js +19 -17
  75. package/dist/cjs/src/mercado.js +30 -19
  76. package/dist/cjs/src/mexc.js +60 -49
  77. package/dist/cjs/src/ndax.js +23 -22
  78. package/dist/cjs/src/novadax.js +23 -22
  79. package/dist/cjs/src/oceanex.js +22 -19
  80. package/dist/cjs/src/okcoin.js +29 -23
  81. package/dist/cjs/src/okx.js +87 -82
  82. package/dist/cjs/src/p2b.js +79 -82
  83. package/dist/cjs/src/paymium.js +10 -10
  84. package/dist/cjs/src/phemex.js +63 -40
  85. package/dist/cjs/src/poloniex.js +22 -22
  86. package/dist/cjs/src/poloniexfutures.js +23 -19
  87. package/dist/cjs/src/pro/alpaca.js +5 -5
  88. package/dist/cjs/src/pro/ascendex.js +4 -4
  89. package/dist/cjs/src/pro/binance.js +16 -16
  90. package/dist/cjs/src/pro/bingx.js +1 -1
  91. package/dist/cjs/src/pro/bitfinex.js +4 -4
  92. package/dist/cjs/src/pro/bitfinex2.js +6 -6
  93. package/dist/cjs/src/pro/bitget.js +7 -7
  94. package/dist/cjs/src/pro/bitmart.js +7 -5
  95. package/dist/cjs/src/pro/bitmex.js +6 -6
  96. package/dist/cjs/src/pro/bitopro.js +4 -4
  97. package/dist/cjs/src/pro/bitpanda.js +6 -6
  98. package/dist/cjs/src/pro/bitrue.js +2 -2
  99. package/dist/cjs/src/pro/bitstamp.js +6 -4
  100. package/dist/cjs/src/pro/bittrex.js +15 -6
  101. package/dist/cjs/src/pro/bitvavo.js +11 -7
  102. package/dist/cjs/src/pro/blockchaincom.js +8 -8
  103. package/dist/cjs/src/pro/bybit.js +7 -7
  104. package/dist/cjs/src/pro/cex.js +13 -9
  105. package/dist/cjs/src/pro/coinbase.js +5 -5
  106. package/dist/cjs/src/pro/coinbasepro.js +11 -10
  107. package/dist/cjs/src/pro/coinex.js +7 -9
  108. package/dist/cjs/src/pro/cryptocom.js +9 -9
  109. package/dist/cjs/src/pro/currencycom.js +4 -4
  110. package/dist/cjs/src/pro/deribit.js +6 -6
  111. package/dist/cjs/src/pro/exmo.js +12 -14
  112. package/dist/cjs/src/pro/gate.js +7 -7
  113. package/dist/cjs/src/pro/gemini.js +3 -3
  114. package/dist/cjs/src/pro/hitbtc.js +263 -4
  115. package/dist/cjs/src/pro/hollaex.js +5 -5
  116. package/dist/cjs/src/pro/htx.js +6 -6
  117. package/dist/cjs/src/pro/huobijp.js +3 -3
  118. package/dist/cjs/src/pro/idex.js +4 -4
  119. package/dist/cjs/src/pro/independentreserve.js +2 -2
  120. package/dist/cjs/src/pro/kraken.js +10 -10
  121. package/dist/cjs/src/pro/krakenfutures.js +41 -17
  122. package/dist/cjs/src/pro/kucoin.js +7 -7
  123. package/dist/cjs/src/pro/kucoinfutures.js +8 -6
  124. package/dist/cjs/src/pro/luno.js +2 -2
  125. package/dist/cjs/src/pro/mexc.js +6 -6
  126. package/dist/cjs/src/pro/ndax.js +3 -3
  127. package/dist/cjs/src/pro/okcoin.js +5 -5
  128. package/dist/cjs/src/pro/okx.js +12 -12
  129. package/dist/cjs/src/pro/phemex.js +6 -6
  130. package/dist/cjs/src/pro/poloniex.js +7 -7
  131. package/dist/cjs/src/pro/poloniexfutures.js +5 -5
  132. package/dist/cjs/src/pro/probit.js +6 -6
  133. package/dist/cjs/src/pro/upbit.js +3 -3
  134. package/dist/cjs/src/pro/wazirx.js +8 -8
  135. package/dist/cjs/src/pro/whitebit.js +12 -8
  136. package/dist/cjs/src/pro/woo.js +1 -1
  137. package/dist/cjs/src/probit.js +28 -23
  138. package/dist/cjs/src/tidex.js +16 -15
  139. package/dist/cjs/src/timex.js +19 -18
  140. package/dist/cjs/src/tokocrypto.js +27 -22
  141. package/dist/cjs/src/upbit.js +19 -19
  142. package/dist/cjs/src/wavesexchange.js +22 -19
  143. package/dist/cjs/src/wazirx.js +24 -17
  144. package/dist/cjs/src/whitebit.js +33 -27
  145. package/dist/cjs/src/woo.js +44 -34
  146. package/dist/cjs/src/yobit.js +25 -20
  147. package/dist/cjs/src/zaif.js +9 -9
  148. package/dist/cjs/src/zonda.js +18 -17
  149. package/js/ccxt.d.ts +1 -1
  150. package/js/ccxt.js +1 -1
  151. package/js/src/abstract/bybit.d.ts +1 -0
  152. package/js/src/abstract/cryptocom.d.ts +0 -20
  153. package/js/src/ace.js +18 -14
  154. package/js/src/alpaca.js +6 -6
  155. package/js/src/ascendex.js +35 -29
  156. package/js/src/base/Exchange.d.ts +37 -34
  157. package/js/src/base/Exchange.js +39 -26
  158. package/js/src/base/Precise.d.ts +4 -4
  159. package/js/src/base/Precise.js +1 -3
  160. package/js/src/base/functions/type.d.ts +25 -25
  161. package/js/src/base/types.d.ts +21 -14
  162. package/js/src/base/ws/Client.js +1 -1
  163. package/js/src/bigone.js +25 -21
  164. package/js/src/binance.d.ts +2 -2
  165. package/js/src/binance.js +97 -76
  166. package/js/src/bingx.js +63 -44
  167. package/js/src/bit2c.js +19 -16
  168. package/js/src/bitbank.js +16 -15
  169. package/js/src/bitbns.js +28 -18
  170. package/js/src/bitfinex.js +23 -21
  171. package/js/src/bitfinex2.js +32 -28
  172. package/js/src/bitflyer.js +28 -20
  173. package/js/src/bitforex.js +26 -19
  174. package/js/src/bitget.d.ts +25 -3
  175. package/js/src/bitget.js +184 -147
  176. package/js/src/bithumb.js +23 -16
  177. package/js/src/bitmart.d.ts +1 -1
  178. package/js/src/bitmart.js +110 -89
  179. package/js/src/bitmex.d.ts +2 -2
  180. package/js/src/bitmex.js +104 -64
  181. package/js/src/bitopro.js +38 -26
  182. package/js/src/bitpanda.js +24 -23
  183. package/js/src/bitrue.js +33 -24
  184. package/js/src/bitso.js +24 -23
  185. package/js/src/bitstamp.d.ts +2 -2
  186. package/js/src/bitstamp.js +24 -23
  187. package/js/src/bittrex.js +30 -29
  188. package/js/src/bitvavo.js +38 -30
  189. package/js/src/bl3p.js +11 -10
  190. package/js/src/blockchaincom.js +20 -20
  191. package/js/src/btcalpha.js +18 -17
  192. package/js/src/btcbox.js +13 -12
  193. package/js/src/btcmarkets.js +20 -19
  194. package/js/src/btcturk.js +14 -13
  195. package/js/src/bybit.d.ts +1 -1
  196. package/js/src/bybit.js +84 -54
  197. package/js/src/cex.js +16 -14
  198. package/js/src/coinbase.js +29 -27
  199. package/js/src/coinbasepro.js +27 -25
  200. package/js/src/coincheck.js +15 -14
  201. package/js/src/coinex.d.ts +1 -1
  202. package/js/src/coinex.js +100 -77
  203. package/js/src/coinlist.js +28 -27
  204. package/js/src/coinmate.js +21 -18
  205. package/js/src/coinone.js +21 -16
  206. package/js/src/coinsph.js +37 -28
  207. package/js/src/coinspot.js +12 -11
  208. package/js/src/cryptocom.d.ts +0 -23
  209. package/js/src/cryptocom.js +40 -202
  210. package/js/src/currencycom.js +32 -25
  211. package/js/src/delta.js +35 -29
  212. package/js/src/deribit.js +39 -36
  213. package/js/src/digifinex.d.ts +2 -2
  214. package/js/src/digifinex.js +65 -45
  215. package/js/src/exmo.js +29 -27
  216. package/js/src/gate.d.ts +1 -1
  217. package/js/src/gate.js +67 -53
  218. package/js/src/gemini.js +23 -20
  219. package/js/src/hitbtc.d.ts +1 -0
  220. package/js/src/hitbtc.js +65 -56
  221. package/js/src/hollaex.js +30 -27
  222. package/js/src/htx.d.ts +11 -3
  223. package/js/src/htx.js +132 -143
  224. package/js/src/huobijp.js +23 -21
  225. package/js/src/idex.js +22 -21
  226. package/js/src/independentreserve.js +15 -14
  227. package/js/src/indodax.js +30 -26
  228. package/js/src/kraken.js +29 -27
  229. package/js/src/krakenfutures.js +29 -22
  230. package/js/src/kucoin.d.ts +1 -1
  231. package/js/src/kucoin.js +48 -43
  232. package/js/src/kucoinfutures.js +33 -28
  233. package/js/src/kuna.js +25 -24
  234. package/js/src/latoken.js +25 -23
  235. package/js/src/lbank.js +46 -31
  236. package/js/src/luno.js +22 -19
  237. package/js/src/lykke.js +19 -17
  238. package/js/src/mercado.js +30 -19
  239. package/js/src/mexc.d.ts +1 -1
  240. package/js/src/mexc.js +60 -49
  241. package/js/src/ndax.js +23 -22
  242. package/js/src/novadax.js +23 -22
  243. package/js/src/oceanex.js +22 -19
  244. package/js/src/okcoin.js +29 -23
  245. package/js/src/okx.d.ts +2 -2
  246. package/js/src/okx.js +87 -82
  247. package/js/src/p2b.d.ts +8 -7
  248. package/js/src/p2b.js +79 -81
  249. package/js/src/paymium.js +10 -10
  250. package/js/src/phemex.js +63 -40
  251. package/js/src/poloniex.js +22 -22
  252. package/js/src/poloniexfutures.js +23 -19
  253. package/js/src/pro/alpaca.js +5 -5
  254. package/js/src/pro/ascendex.js +4 -4
  255. package/js/src/pro/binance.js +16 -16
  256. package/js/src/pro/bingx.js +1 -1
  257. package/js/src/pro/bitfinex.js +4 -4
  258. package/js/src/pro/bitfinex2.d.ts +1 -1
  259. package/js/src/pro/bitfinex2.js +6 -6
  260. package/js/src/pro/bitget.js +7 -7
  261. package/js/src/pro/bitmart.js +7 -5
  262. package/js/src/pro/bitmex.js +6 -6
  263. package/js/src/pro/bitopro.js +4 -4
  264. package/js/src/pro/bitpanda.js +6 -6
  265. package/js/src/pro/bitrue.js +2 -2
  266. package/js/src/pro/bitstamp.js +7 -5
  267. package/js/src/pro/bittrex.js +15 -6
  268. package/js/src/pro/bitvavo.js +12 -8
  269. package/js/src/pro/blockchaincom.js +8 -8
  270. package/js/src/pro/bybit.js +7 -7
  271. package/js/src/pro/cex.js +14 -10
  272. package/js/src/pro/coinbase.js +5 -5
  273. package/js/src/pro/coinbasepro.js +12 -11
  274. package/js/src/pro/coinex.js +7 -9
  275. package/js/src/pro/cryptocom.js +9 -9
  276. package/js/src/pro/currencycom.js +4 -4
  277. package/js/src/pro/deribit.js +6 -6
  278. package/js/src/pro/exmo.js +12 -14
  279. package/js/src/pro/gate.js +7 -7
  280. package/js/src/pro/gemini.js +3 -3
  281. package/js/src/pro/hitbtc.d.ts +8 -1
  282. package/js/src/pro/hitbtc.js +264 -5
  283. package/js/src/pro/hollaex.js +5 -5
  284. package/js/src/pro/htx.js +6 -6
  285. package/js/src/pro/huobijp.js +3 -3
  286. package/js/src/pro/idex.js +4 -4
  287. package/js/src/pro/independentreserve.js +2 -2
  288. package/js/src/pro/kraken.js +10 -10
  289. package/js/src/pro/krakenfutures.d.ts +1 -0
  290. package/js/src/pro/krakenfutures.js +42 -18
  291. package/js/src/pro/kucoin.js +7 -7
  292. package/js/src/pro/kucoinfutures.js +8 -6
  293. package/js/src/pro/luno.js +2 -2
  294. package/js/src/pro/mexc.js +6 -6
  295. package/js/src/pro/ndax.js +3 -3
  296. package/js/src/pro/okcoin.js +5 -5
  297. package/js/src/pro/okx.js +12 -12
  298. package/js/src/pro/phemex.js +6 -6
  299. package/js/src/pro/poloniex.js +7 -7
  300. package/js/src/pro/poloniexfutures.js +5 -5
  301. package/js/src/pro/probit.js +6 -6
  302. package/js/src/pro/upbit.js +3 -3
  303. package/js/src/pro/wazirx.js +8 -8
  304. package/js/src/pro/whitebit.js +13 -9
  305. package/js/src/pro/woo.js +1 -1
  306. package/js/src/probit.js +29 -24
  307. package/js/src/tidex.js +16 -15
  308. package/js/src/timex.js +19 -18
  309. package/js/src/tokocrypto.js +28 -23
  310. package/js/src/upbit.js +19 -19
  311. package/js/src/wavesexchange.js +23 -20
  312. package/js/src/wazirx.js +25 -18
  313. package/js/src/whitebit.js +33 -27
  314. package/js/src/woo.js +45 -35
  315. package/js/src/yobit.js +25 -20
  316. package/js/src/zaif.js +9 -9
  317. package/js/src/zonda.js +18 -17
  318. package/package.json +1 -1
@@ -390,9 +390,7 @@ class bitmex extends bitmex$1 {
390
390
  convertToRealAmount(code, amount) {
391
391
  const currency = this.currency(code);
392
392
  const precision = this.safeString(currency, 'precision');
393
- const amountString = this.numberToString(amount);
394
- const finalAmount = Precise["default"].stringMul(amountString, precision);
395
- return this.parseNumber(finalAmount);
393
+ return Precise["default"].stringMul(amount, precision);
396
394
  }
397
395
  amountToPrecision(symbol, amount) {
398
396
  symbol = this.safeSymbol(symbol);
@@ -414,7 +412,7 @@ class bitmex extends bitmex$1 {
414
412
  }
415
413
  const market = this.market(symbol);
416
414
  if (market['spot']) {
417
- return this.convertToRealAmount(market[currencySide], rawQuantity);
415
+ return this.parseNumber(this.convertToRealAmount(market[currencySide], rawQuantity));
418
416
  }
419
417
  return this.parseNumber(rawQuantity);
420
418
  }
@@ -429,7 +427,7 @@ class bitmex extends bitmex$1 {
429
427
  * @param {object} [params] extra parameters specific to the exchange api endpoint
430
428
  * @returns {object[]} an array of objects representing market data
431
429
  */
432
- const response = await this.publicGetInstrumentActiveAndIndices(params);
430
+ const response = await this.publicGetInstrumentActive(params);
433
431
  //
434
432
  // [
435
433
  // {
@@ -545,30 +543,38 @@ class bitmex extends bitmex$1 {
545
543
  }
546
544
  parseMarket(market) {
547
545
  const id = this.safeString(market, 'symbol');
548
- const baseId = this.safeString(market, 'underlying');
549
- const quoteId = this.safeString(market, 'quoteCurrency');
546
+ let baseId = this.safeString(market, 'underlying');
547
+ let quoteId = this.safeString(market, 'quoteCurrency');
550
548
  const settleId = this.safeString(market, 'settlCurrency');
551
- const base = this.safeCurrencyCode(baseId);
552
- const quote = this.safeCurrencyCode(quoteId);
553
549
  const settle = this.safeCurrencyCode(settleId);
554
550
  // 'positionCurrency' may be empty ("", as Bitmex currently returns for ETHUSD)
555
551
  // so let's take the settlCurrency first and then adjust if needed
556
552
  const typ = this.safeString(market, 'typ'); // type definitions at: https://www.bitmex.com/api/explorer/#!/Instrument/Instrument_get
557
- const types = {
558
- 'FFWCSX': 'swap',
559
- 'FFWCSF': 'swap',
560
- 'IFXXXP': 'spot',
561
- 'FFCCSX': 'future',
562
- 'MRBXXX': 'index',
563
- 'MRCXXX': 'index',
564
- 'MRFXXX': 'index',
565
- 'MRRXXX': 'index',
566
- 'MRIXXX': 'index',
567
- };
568
- const type = this.safeString(types, typ, typ);
569
- const swap = type === 'swap';
570
- const future = type === 'future';
571
- const spot = type === 'spot';
553
+ let type;
554
+ let swap = false;
555
+ let spot = false;
556
+ let future = false;
557
+ if (typ === 'FFWCSX') {
558
+ type = 'swap';
559
+ swap = true;
560
+ }
561
+ else if (typ === 'IFXXXP') {
562
+ type = 'spot';
563
+ spot = true;
564
+ }
565
+ else if (typ === 'FFCCSX') {
566
+ type = 'future';
567
+ future = true;
568
+ }
569
+ else if (typ === 'FFICSX') {
570
+ // prediction markets (without any volume)
571
+ quoteId = baseId;
572
+ baseId = this.safeString(market, 'rootSymbol');
573
+ type = 'future';
574
+ future = true;
575
+ }
576
+ const base = this.safeCurrencyCode(baseId);
577
+ const quote = this.safeCurrencyCode(quoteId);
572
578
  const contract = swap || future;
573
579
  let contractSize = undefined;
574
580
  const isInverse = this.safeValue(market, 'isInverse'); // this is true when BASE and SETTLE are same, i.e. BTC/XXX:BTC
@@ -584,11 +590,12 @@ class bitmex extends bitmex$1 {
584
590
  }
585
591
  else if (contract) {
586
592
  symbol = base + '/' + quote + ':' + settle;
587
- const multiplierString = Precise["default"].stringAbs(this.safeString(market, 'multiplier'));
588
593
  if (linear) {
589
- contractSize = this.parseNumber(Precise["default"].stringDiv('1', market['underlyingToPositionMultiplier']));
594
+ const multiplierString = this.safeString2(market, 'underlyingToPositionMultiplier', 'underlyingToSettleMultiplier');
595
+ contractSize = this.parseNumber(Precise["default"].stringDiv('1', multiplierString));
590
596
  }
591
597
  else {
598
+ const multiplierString = Precise["default"].stringAbs(this.safeString(market, 'multiplier'));
592
599
  contractSize = this.parseNumber(multiplierString);
593
600
  }
594
601
  if (future) {
@@ -728,7 +735,7 @@ class bitmex extends bitmex$1 {
728
735
  * @name bitmex#fetchBalance
729
736
  * @description query for balance and get the amount of funds available for trading or funds locked in orders
730
737
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
731
- * @returns {object} a [balance structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#balance-structure}
738
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
732
739
  */
733
740
  await this.loadMarkets();
734
741
  const request = {
@@ -792,7 +799,7 @@ class bitmex extends bitmex$1 {
792
799
  * @param {string} symbol unified symbol of the market to fetch the order book for
793
800
  * @param {int} [limit] the maximum amount of order book entries to return
794
801
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
795
- * @returns {object} A dictionary of [order book structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-book-structure} indexed by market symbols
802
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
796
803
  */
797
804
  await this.loadMarkets();
798
805
  const market = this.market(symbol);
@@ -834,7 +841,7 @@ class bitmex extends bitmex$1 {
834
841
  * @description fetches information on an order made by the user
835
842
  * @param {string} symbol unified symbol of the market the order was made in
836
843
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
837
- * @returns {object} An [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
844
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
838
845
  */
839
846
  const filter = {
840
847
  'filter': {
@@ -860,7 +867,7 @@ class bitmex extends bitmex$1 {
860
867
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
861
868
  * @param {int} [params.until] the earliest time in ms to fetch orders for
862
869
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
863
- * @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
870
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
864
871
  */
865
872
  await this.loadMarkets();
866
873
  let paginate = false;
@@ -904,7 +911,7 @@ class bitmex extends bitmex$1 {
904
911
  * @param {int} [since] the earliest time in ms to fetch open orders for
905
912
  * @param {int} [limit] the maximum number of open orders structures to retrieve
906
913
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
907
- * @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
914
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
908
915
  */
909
916
  const request = {
910
917
  'filter': {
@@ -922,7 +929,7 @@ class bitmex extends bitmex$1 {
922
929
  * @param {int} [since] the earliest time in ms to fetch orders for
923
930
  * @param {int} [limit] the maximum number of orde structures to retrieve
924
931
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
925
- * @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
932
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
926
933
  */
927
934
  // Bitmex barfs if you set 'open': false in the filter...
928
935
  const orders = await this.fetchOrders(symbol, since, limit, params);
@@ -939,7 +946,7 @@ class bitmex extends bitmex$1 {
939
946
  * @param {int} [limit] the maximum number of trades structures to retrieve
940
947
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
941
948
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
942
- * @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#trade-structure}
949
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
943
950
  */
944
951
  await this.loadMarkets();
945
952
  let paginate = false;
@@ -1097,15 +1104,15 @@ class bitmex extends bitmex$1 {
1097
1104
  // for unrealized pnl and other transactions without a timestamp
1098
1105
  timestamp = 0; // see comments above
1099
1106
  }
1100
- let feeCost = this.safeNumber(item, 'fee', 0);
1107
+ let feeCost = this.safeString(item, 'fee');
1101
1108
  if (feeCost !== undefined) {
1102
1109
  feeCost = this.convertToRealAmount(code, feeCost);
1103
1110
  }
1104
1111
  const fee = {
1105
- 'cost': feeCost,
1112
+ 'cost': this.parseNumber(feeCost),
1106
1113
  'currency': code,
1107
1114
  };
1108
- let after = this.safeNumber(item, 'walletBalance');
1115
+ let after = this.safeString(item, 'walletBalance');
1109
1116
  if (after !== undefined) {
1110
1117
  after = this.convertToRealAmount(code, after);
1111
1118
  }
@@ -1132,7 +1139,7 @@ class bitmex extends bitmex$1 {
1132
1139
  'currency': code,
1133
1140
  'amount': amount,
1134
1141
  'before': before,
1135
- 'after': after,
1142
+ 'after': this.parseNumber(after),
1136
1143
  'status': status,
1137
1144
  'fee': fee,
1138
1145
  };
@@ -1146,7 +1153,7 @@ class bitmex extends bitmex$1 {
1146
1153
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
1147
1154
  * @param {int} [limit] max number of ledger entrys to return, default is undefined
1148
1155
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1149
- * @returns {object} a [ledger structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ledger-structure}
1156
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
1150
1157
  */
1151
1158
  await this.loadMarkets();
1152
1159
  const request = {
@@ -1197,7 +1204,7 @@ class bitmex extends bitmex$1 {
1197
1204
  * @param {int} [since] timestamp in ms of the earliest deposit/withdrawal, default is undefined
1198
1205
  * @param {int} [limit] max number of deposit/withdrawals to return, default is undefined
1199
1206
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1200
- * @returns {object} a list of [transaction structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#transaction-structure}
1207
+ * @returns {object} a list of [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1201
1208
  */
1202
1209
  await this.loadMarkets();
1203
1210
  const request = {
@@ -1286,7 +1293,7 @@ class bitmex extends bitmex$1 {
1286
1293
  'type': type,
1287
1294
  'currency': currency['code'],
1288
1295
  'network': this.networkIdToCode(this.safeString(transaction, 'network'), currency['code']),
1289
- 'amount': amount,
1296
+ 'amount': this.parseNumber(amount),
1290
1297
  'status': status,
1291
1298
  'timestamp': transactTime,
1292
1299
  'datetime': this.iso8601(transactTime),
@@ -1301,7 +1308,7 @@ class bitmex extends bitmex$1 {
1301
1308
  'comment': undefined,
1302
1309
  'fee': {
1303
1310
  'currency': currency['code'],
1304
- 'cost': feeCost,
1311
+ 'cost': this.parseNumber(feeCost),
1305
1312
  'rate': undefined,
1306
1313
  },
1307
1314
  };
@@ -1313,7 +1320,7 @@ class bitmex extends bitmex$1 {
1313
1320
  * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
1314
1321
  * @param {string} symbol unified symbol of the market to fetch the ticker for
1315
1322
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1316
- * @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
1323
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1317
1324
  */
1318
1325
  await this.loadMarkets();
1319
1326
  const market = this.market(symbol);
@@ -1334,7 +1341,7 @@ class bitmex extends bitmex$1 {
1334
1341
  * @description fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
1335
1342
  * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
1336
1343
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1337
- * @returns {object} a dictionary of [ticker structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
1344
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1338
1345
  */
1339
1346
  await this.loadMarkets();
1340
1347
  symbols = this.marketSymbols(symbols);
@@ -1739,7 +1746,7 @@ class bitmex extends bitmex$1 {
1739
1746
  * @param {int} [limit] the maximum amount of trades to fetch
1740
1747
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1741
1748
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1742
- * @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#public-trades}
1749
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1743
1750
  */
1744
1751
  await this.loadMarkets();
1745
1752
  let paginate = false;
@@ -1802,12 +1809,15 @@ class bitmex extends bitmex$1 {
1802
1809
  * @method
1803
1810
  * @name bitmex#createOrder
1804
1811
  * @description create a trade order
1812
+ * @see https://www.bitmex.com/api/explorer/#!/Order/Order_new
1805
1813
  * @param {string} symbol unified symbol of the market to create an order in
1806
1814
  * @param {string} type 'market' or 'limit'
1807
1815
  * @param {string} side 'buy' or 'sell'
1808
1816
  * @param {float} amount how much of currency you want to trade in units of base currency
1809
1817
  * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1810
1818
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1819
+ * @param {object} [params.triggerPrice] the price at which a trigger order is triggered at
1820
+ * @param {object} [params.triggerDirection] the direction whenever the trigger happens with relation to price - 'above' or 'below'
1811
1821
  * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1812
1822
  */
1813
1823
  await this.loadMarkets();
@@ -1828,15 +1838,41 @@ class bitmex extends bitmex$1 {
1828
1838
  'ordType': orderType,
1829
1839
  'text': brokerId,
1830
1840
  };
1831
- if ((orderType === 'Stop') || (orderType === 'StopLimit') || (orderType === 'MarketIfTouched') || (orderType === 'LimitIfTouched')) {
1832
- const stopPrice = this.safeNumber2(params, 'stopPx', 'stopPrice');
1833
- if (stopPrice === undefined) {
1834
- throw new errors.ArgumentsRequired(this.id + ' createOrder() requires a stopPx or stopPrice parameter for the ' + orderType + ' order type');
1841
+ const customTriggerType = (orderType === 'Stop') || (orderType === 'StopLimit') || (orderType === 'MarketIfTouched') || (orderType === 'LimitIfTouched');
1842
+ // support for unified trigger format
1843
+ const triggerPrice = this.safeNumberN(params, ['triggerPrice', 'stopPx', 'stopPrice']);
1844
+ if ((triggerPrice !== undefined) && !customTriggerType) {
1845
+ request['stopPx'] = parseFloat(this.priceToPrecision(symbol, triggerPrice));
1846
+ const triggerDirection = this.safeString(params, 'triggerDirection');
1847
+ params = this.omit(params, ['triggerPrice', 'stopPrice', 'stopPx', 'triggerDirection']);
1848
+ const triggerAbove = (triggerDirection === 'above');
1849
+ this.checkRequiredArgument('createOrder', triggerDirection, 'triggerDirection', ['above', 'below']);
1850
+ this.checkRequiredArgument('createOrder', side, 'side', ['buy', 'sell']);
1851
+ if (type === 'limit') {
1852
+ request['price'] = parseFloat(this.priceToPrecision(symbol, price));
1853
+ if (side === 'buy') {
1854
+ request['ordType'] = triggerAbove ? 'StopLimit' : 'LimitIfTouched';
1855
+ }
1856
+ else {
1857
+ request['ordType'] = triggerAbove ? 'LimitIfTouched' : 'StopLimit';
1858
+ }
1835
1859
  }
1836
- else {
1837
- request['stopPx'] = parseFloat(this.priceToPrecision(symbol, stopPrice));
1838
- params = this.omit(params, ['stopPx', 'stopPrice']);
1860
+ else if (type === 'market') {
1861
+ if (side === 'buy') {
1862
+ request['ordType'] = triggerAbove ? 'Stop' : 'MarketIfTouched';
1863
+ }
1864
+ else {
1865
+ request['ordType'] = triggerAbove ? 'MarketIfTouched' : 'Stop';
1866
+ }
1867
+ }
1868
+ }
1869
+ else if (customTriggerType) {
1870
+ if (triggerPrice === undefined) {
1871
+ // if exchange specific trigger types were provided
1872
+ throw new errors.ArgumentsRequired(this.id + ' createOrder() requires a triggerPrice (stopPx|stopPrice) parameter for the ' + orderType + ' order type');
1839
1873
  }
1874
+ params = this.omit(params, ['triggerPrice', 'stopPrice', 'stopPx']);
1875
+ request['stopPx'] = parseFloat(this.priceToPrecision(symbol, triggerPrice));
1840
1876
  }
1841
1877
  if ((orderType === 'Limit') || (orderType === 'StopLimit') || (orderType === 'LimitIfTouched')) {
1842
1878
  request['price'] = parseFloat(this.priceToPrecision(symbol, price));
@@ -1884,7 +1920,7 @@ class bitmex extends bitmex$1 {
1884
1920
  * @param {string} id order id
1885
1921
  * @param {string} symbol not used by bitmex cancelOrder ()
1886
1922
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1887
- * @returns {object} An [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1923
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1888
1924
  */
1889
1925
  await this.loadMarkets();
1890
1926
  // https://github.com/ccxt/ccxt/issues/6507
@@ -1915,7 +1951,7 @@ class bitmex extends bitmex$1 {
1915
1951
  * @param {string[]} ids order ids
1916
1952
  * @param {string} symbol not used by bitmex cancelOrders ()
1917
1953
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1918
- * @returns {object} an list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1954
+ * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1919
1955
  */
1920
1956
  // return await this.cancelOrder (ids, symbol, params);
1921
1957
  await this.loadMarkets();
@@ -1939,7 +1975,7 @@ class bitmex extends bitmex$1 {
1939
1975
  * @description cancel all open orders
1940
1976
  * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1941
1977
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
1942
- * @returns {object[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1978
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1943
1979
  */
1944
1980
  await this.loadMarkets();
1945
1981
  const request = {};
@@ -1997,7 +2033,7 @@ class bitmex extends bitmex$1 {
1997
2033
  * @description fetch all open positions
1998
2034
  * @param {string[]|undefined} symbols list of unified market symbols
1999
2035
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
2000
- * @returns {object[]} a list of [position structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#position-structure}
2036
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
2001
2037
  */
2002
2038
  await this.loadMarkets();
2003
2039
  const response = await this.privateGetPosition(params);
@@ -2258,7 +2294,7 @@ class bitmex extends bitmex$1 {
2258
2294
  * @param {string} address the address to withdraw to
2259
2295
  * @param {string} tag
2260
2296
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
2261
- * @returns {object} a [transaction structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#transaction-structure}
2297
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2262
2298
  */
2263
2299
  [tag, params] = this.handleWithdrawTagAndParams(tag, params);
2264
2300
  this.checkAddress(address);
@@ -2302,7 +2338,7 @@ class bitmex extends bitmex$1 {
2302
2338
  * @description fetch the funding rate for multiple markets
2303
2339
  * @param {string[]|undefined} symbols list of unified market symbols
2304
2340
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
2305
- * @returns {object} a dictionary of [funding rates structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rates-structure}, indexe by market symbols
2341
+ * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
2306
2342
  */
2307
2343
  await this.loadMarkets();
2308
2344
  const response = await this.publicGetInstrumentActiveAndIndices(params);
@@ -2353,14 +2389,14 @@ class bitmex extends bitmex$1 {
2353
2389
  * @description Fetches the history of funding rates
2354
2390
  * @param {string} symbol unified symbol of the market to fetch the funding rate history for
2355
2391
  * @param {int} [since] timestamp in ms of the earliest funding rate to fetch
2356
- * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-history-structure} to fetch
2392
+ * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure} to fetch
2357
2393
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
2358
2394
  * @param {int} [params.until] timestamp in ms for ending date filter
2359
2395
  * @param {bool} [params.reverse] if true, will sort results newest first
2360
2396
  * @param {int} [params.start] starting point for results
2361
2397
  * @param {string} [params.columns] array of column names to fetch in info, if omitted, will return all columns
2362
2398
  * @param {string} [params.filter] generic table filter, send json key/value pairs, such as {"key": "value"}, you can key on individual fields, and do more advanced querying on timestamps, see the [timestamp docs]{@link https://www.bitmex.com/app/restAPI#Timestamp-Filters} for more details
2363
- * @returns {object[]} a list of [funding rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-history-structure}
2399
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
2364
2400
  */
2365
2401
  await this.loadMarkets();
2366
2402
  const request = {};
@@ -2439,7 +2475,9 @@ class bitmex extends bitmex$1 {
2439
2475
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
2440
2476
  * @returns {object} response from the exchange
2441
2477
  */
2442
- this.checkRequiredSymbol('setLeverage', symbol);
2478
+ if (symbol === undefined) {
2479
+ throw new errors.ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
2480
+ }
2443
2481
  if ((leverage < 0.01) || (leverage > 100)) {
2444
2482
  throw new errors.BadRequest(this.id + ' leverage should be between 0.01 and 100');
2445
2483
  }
@@ -2464,7 +2502,9 @@ class bitmex extends bitmex$1 {
2464
2502
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
2465
2503
  * @returns {object} response from the exchange
2466
2504
  */
2467
- this.checkRequiredSymbol('setMarginMode', symbol);
2505
+ if (symbol === undefined) {
2506
+ throw new errors.ArgumentsRequired(this.id + ' setMarginMode() requires a symbol argument');
2507
+ }
2468
2508
  marginMode = marginMode.toLowerCase();
2469
2509
  if (marginMode !== 'isolated' && marginMode !== 'cross') {
2470
2510
  throw new errors.BadRequest(this.id + ' setMarginMode() marginMode argument should be isolated or cross');
@@ -2490,7 +2530,7 @@ class bitmex extends bitmex$1 {
2490
2530
  * @param {string} code unified currency code
2491
2531
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
2492
2532
  * @param {string} [params.network] deposit chain, can view all chains via this.publicGetWalletAssets, default is eth, unless the currency has a default chain within this.options['networks']
2493
- * @returns {object} an [address structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#address-structure}
2533
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2494
2534
  */
2495
2535
  await this.loadMarkets();
2496
2536
  let networkCode = undefined;
@@ -2590,7 +2630,7 @@ class bitmex extends bitmex$1 {
2590
2630
  * @see https://www.bitmex.com/api/explorer/#!/Wallet/Wallet_getAssetsConfig
2591
2631
  * @param {string[]|undefined} codes list of unified currency codes
2592
2632
  * @param {object} [params] extra parameters specific to the bitmex api endpoint
2593
- * @returns {object} a list of [fee structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#fee-structure}
2633
+ * @returns {object} a list of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure}
2594
2634
  */
2595
2635
  await this.loadMarkets();
2596
2636
  const assets = await this.publicGetWalletAssets(params);
@@ -2650,7 +2690,7 @@ class bitmex extends bitmex$1 {
2650
2690
  * @param {object} [params] exchange specific parameters for the bitmex api endpoint
2651
2691
  * @param {int} [params.until] timestamp in ms of the latest liquidation
2652
2692
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2653
- * @returns {object} an array of [liquidation structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#liquidation-structure}
2693
+ * @returns {object} an array of [liquidation structures]{@link https://docs.ccxt.com/#/?id=liquidation-structure}
2654
2694
  */
2655
2695
  await this.loadMarkets();
2656
2696
  let paginate = false;