ccxt 4.1.41 → 4.1.44

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 (363) hide show
  1. package/README.md +6 -5
  2. package/change.sh +2 -4
  3. package/dist/ccxt.browser.js +14841 -12517
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/ccxt.js +4 -1
  6. package/dist/cjs/src/abstract/coinlist.js +9 -0
  7. package/dist/cjs/src/ace.js +3 -3
  8. package/dist/cjs/src/ascendex.js +226 -96
  9. package/dist/cjs/src/bigone.js +107 -107
  10. package/dist/cjs/src/binance.js +258 -257
  11. package/dist/cjs/src/bingx.js +117 -117
  12. package/dist/cjs/src/bit2c.js +4 -4
  13. package/dist/cjs/src/bitbank.js +19 -19
  14. package/dist/cjs/src/bitfinex.js +72 -72
  15. package/dist/cjs/src/bitfinex2.js +59 -59
  16. package/dist/cjs/src/bitget.js +355 -355
  17. package/dist/cjs/src/bithumb.js +35 -35
  18. package/dist/cjs/src/bitmart.js +37 -37
  19. package/dist/cjs/src/bitmex.js +111 -111
  20. package/dist/cjs/src/bitopro.js +12 -12
  21. package/dist/cjs/src/bitpanda.js +8 -8
  22. package/dist/cjs/src/bitrue.js +17 -17
  23. package/dist/cjs/src/bitso.js +212 -212
  24. package/dist/cjs/src/bitstamp.js +95 -95
  25. package/dist/cjs/src/bittrex.js +28 -28
  26. package/dist/cjs/src/bitvavo.js +34 -33
  27. package/dist/cjs/src/bl3p.js +18 -18
  28. package/dist/cjs/src/blockchaincom.js +24 -24
  29. package/dist/cjs/src/btcalpha.js +27 -27
  30. package/dist/cjs/src/btcturk.js +6 -6
  31. package/dist/cjs/src/bybit.js +46 -247
  32. package/dist/cjs/src/cex.js +105 -105
  33. package/dist/cjs/src/coinbase.js +179 -179
  34. package/dist/cjs/src/coinbasepro.js +113 -113
  35. package/dist/cjs/src/coincheck.js +21 -21
  36. package/dist/cjs/src/coinex.js +19 -19
  37. package/dist/cjs/src/coinfalcon.js +53 -53
  38. package/dist/cjs/src/coinlist.js +2327 -0
  39. package/dist/cjs/src/coinmate.js +67 -67
  40. package/dist/cjs/src/coinone.js +9 -9
  41. package/dist/cjs/src/coinsph.js +108 -108
  42. package/dist/cjs/src/coinspot.js +28 -28
  43. package/dist/cjs/src/cryptocom.js +32 -32
  44. package/dist/cjs/src/currencycom.js +52 -52
  45. package/dist/cjs/src/delta.js +3 -3
  46. package/dist/cjs/src/deribit.js +285 -284
  47. package/dist/cjs/src/exmo.js +41 -41
  48. package/dist/cjs/src/gate.js +174 -174
  49. package/dist/cjs/src/gemini.js +4 -4
  50. package/dist/cjs/src/hitbtc.js +26 -27
  51. package/dist/cjs/src/hollaex.js +78 -78
  52. package/dist/cjs/src/huobi.js +267 -267
  53. package/dist/cjs/src/huobijp.js +125 -125
  54. package/dist/cjs/src/idex.js +202 -202
  55. package/dist/cjs/src/kraken.js +161 -161
  56. package/dist/cjs/src/krakenfutures.js +223 -223
  57. package/dist/cjs/src/kucoin.js +122 -122
  58. package/dist/cjs/src/kucoinfutures.js +128 -128
  59. package/dist/cjs/src/kuna.js +23 -24
  60. package/dist/cjs/src/latoken.js +70 -70
  61. package/dist/cjs/src/lbank.js +6 -6
  62. package/dist/cjs/src/lbank2.js +35 -35
  63. package/dist/cjs/src/luno.js +5 -5
  64. package/dist/cjs/src/lykke.js +4 -4
  65. package/dist/cjs/src/mercado.js +17 -17
  66. package/dist/cjs/src/mexc.js +172 -172
  67. package/dist/cjs/src/ndax.js +9 -8
  68. package/dist/cjs/src/oceanex.js +9 -9
  69. package/dist/cjs/src/okcoin.js +65 -65
  70. package/dist/cjs/src/okx.js +67 -67
  71. package/dist/cjs/src/phemex.js +110 -110
  72. package/dist/cjs/src/poloniex.js +43 -43
  73. package/dist/cjs/src/poloniexfutures.js +96 -96
  74. package/dist/cjs/src/pro/alpaca.js +174 -174
  75. package/dist/cjs/src/pro/ascendex.js +151 -151
  76. package/dist/cjs/src/pro/binance.js +278 -278
  77. package/dist/cjs/src/pro/bingx.js +136 -136
  78. package/dist/cjs/src/pro/bitfinex.js +38 -38
  79. package/dist/cjs/src/pro/bitfinex2.js +57 -57
  80. package/dist/cjs/src/pro/bitget.js +227 -227
  81. package/dist/cjs/src/pro/bitmart.js +98 -98
  82. package/dist/cjs/src/pro/bitmex.js +584 -584
  83. package/dist/cjs/src/pro/bitopro.js +49 -49
  84. package/dist/cjs/src/pro/bitpanda.js +249 -249
  85. package/dist/cjs/src/pro/bitrue.js +79 -79
  86. package/dist/cjs/src/pro/bitstamp.js +59 -59
  87. package/dist/cjs/src/pro/bittrex.js +107 -107
  88. package/dist/cjs/src/pro/bitvavo.js +115 -115
  89. package/dist/cjs/src/pro/blockchaincom.js +169 -169
  90. package/dist/cjs/src/pro/bybit.js +57 -57
  91. package/dist/cjs/src/pro/cex.js +199 -199
  92. package/dist/cjs/src/pro/coinbase.js +4 -4
  93. package/dist/cjs/src/pro/coinbasepro.js +95 -95
  94. package/dist/cjs/src/pro/coinex.js +232 -232
  95. package/dist/cjs/src/pro/cryptocom.js +32 -32
  96. package/dist/cjs/src/pro/currencycom.js +108 -108
  97. package/dist/cjs/src/pro/deribit.js +140 -140
  98. package/dist/cjs/src/pro/exmo.js +72 -72
  99. package/dist/cjs/src/pro/gate.js +160 -160
  100. package/dist/cjs/src/pro/gemini.js +135 -135
  101. package/dist/cjs/src/pro/hitbtc.js +10 -10
  102. package/dist/cjs/src/pro/hollaex.js +88 -88
  103. package/dist/cjs/src/pro/huobi.js +277 -277
  104. package/dist/cjs/src/pro/huobijp.js +71 -71
  105. package/dist/cjs/src/pro/idex.js +58 -58
  106. package/dist/cjs/src/pro/independentreserve.js +29 -29
  107. package/dist/cjs/src/pro/kraken.js +113 -113
  108. package/dist/cjs/src/pro/krakenfutures.js +58 -58
  109. package/dist/cjs/src/pro/kucoin.js +95 -95
  110. package/dist/cjs/src/pro/kucoinfutures.js +100 -100
  111. package/dist/cjs/src/pro/luno.js +42 -42
  112. package/dist/cjs/src/pro/mexc.js +98 -98
  113. package/dist/cjs/src/pro/ndax.js +24 -24
  114. package/dist/cjs/src/pro/okcoin.js +104 -104
  115. package/dist/cjs/src/pro/okx.js +161 -161
  116. package/dist/cjs/src/pro/phemex.js +295 -295
  117. package/dist/cjs/src/pro/poloniex.js +79 -79
  118. package/dist/cjs/src/pro/poloniexfutures.js +172 -172
  119. package/dist/cjs/src/pro/probit.js +87 -87
  120. package/dist/cjs/src/pro/upbit.js +66 -66
  121. package/dist/cjs/src/pro/wazirx.js +11 -11
  122. package/dist/cjs/src/pro/whitebit.js +77 -77
  123. package/dist/cjs/src/pro/woo.js +78 -78
  124. package/dist/cjs/src/probit.js +78 -44
  125. package/dist/cjs/src/tidex.js +9 -9
  126. package/dist/cjs/src/tokocrypto.js +57 -57
  127. package/dist/cjs/src/upbit.js +157 -157
  128. package/dist/cjs/src/wavesexchange.js +125 -125
  129. package/dist/cjs/src/whitebit.js +63 -63
  130. package/dist/cjs/src/woo.js +244 -243
  131. package/dist/cjs/src/yobit.js +9 -9
  132. package/dist/cjs/src/zonda.js +103 -103
  133. package/js/ccxt.d.ts +5 -2
  134. package/js/ccxt.js +4 -2
  135. package/js/src/abstract/bybit.d.ts +13 -195
  136. package/js/src/abstract/coinlist.d.ts +49 -0
  137. package/js/src/abstract/coinlist.js +11 -0
  138. package/js/src/ace.d.ts +9 -9
  139. package/js/src/ace.js +3 -3
  140. package/js/src/alpaca.d.ts +3 -3
  141. package/js/src/ascendex.d.ts +13 -35
  142. package/js/src/ascendex.js +227 -97
  143. package/js/src/base/types.d.ts +8 -0
  144. package/js/src/bigone.d.ts +11 -49
  145. package/js/src/bigone.js +107 -107
  146. package/js/src/binance.d.ts +8 -65
  147. package/js/src/binance.js +258 -257
  148. package/js/src/bingx.d.ts +10 -34
  149. package/js/src/bingx.js +117 -117
  150. package/js/src/bit2c.d.ts +8 -8
  151. package/js/src/bit2c.js +4 -4
  152. package/js/src/bitbank.d.ts +10 -50
  153. package/js/src/bitbank.js +19 -19
  154. package/js/src/bitbns.d.ts +9 -29
  155. package/js/src/bitfinex.d.ts +9 -57
  156. package/js/src/bitfinex.js +72 -72
  157. package/js/src/bitfinex2.d.ts +5 -29
  158. package/js/src/bitfinex2.js +59 -59
  159. package/js/src/bitflyer.d.ts +10 -50
  160. package/js/src/bitforex.d.ts +8 -8
  161. package/js/src/bitget.d.ts +7 -27
  162. package/js/src/bitget.js +355 -355
  163. package/js/src/bithumb.d.ts +10 -50
  164. package/js/src/bithumb.js +35 -35
  165. package/js/src/bitmart.d.ts +11 -68
  166. package/js/src/bitmart.js +37 -37
  167. package/js/src/bitmex.d.ts +8 -56
  168. package/js/src/bitmex.js +111 -111
  169. package/js/src/bitopro.d.ts +12 -84
  170. package/js/src/bitopro.js +12 -12
  171. package/js/src/bitpanda.d.ts +12 -50
  172. package/js/src/bitpanda.js +8 -8
  173. package/js/src/bitrue.d.ts +12 -52
  174. package/js/src/bitrue.js +17 -17
  175. package/js/src/bitso.d.ts +12 -72
  176. package/js/src/bitso.js +212 -212
  177. package/js/src/bitstamp.d.ts +13 -65
  178. package/js/src/bitstamp.js +95 -95
  179. package/js/src/bitstamp1.d.ts +8 -8
  180. package/js/src/bittrex.d.ts +13 -57
  181. package/js/src/bittrex.js +28 -28
  182. package/js/src/bitvavo.d.ts +8 -44
  183. package/js/src/bitvavo.js +34 -33
  184. package/js/src/bl3p.d.ts +7 -7
  185. package/js/src/bl3p.js +18 -18
  186. package/js/src/blockchaincom.d.ts +10 -90
  187. package/js/src/blockchaincom.js +24 -24
  188. package/js/src/btcalpha.d.ts +10 -30
  189. package/js/src/btcalpha.js +27 -27
  190. package/js/src/btcbox.d.ts +7 -7
  191. package/js/src/btcmarkets.d.ts +11 -59
  192. package/js/src/btctradeua.d.ts +7 -7
  193. package/js/src/btcturk.d.ts +6 -6
  194. package/js/src/btcturk.js +6 -6
  195. package/js/src/bybit.d.ts +8 -46
  196. package/js/src/bybit.js +46 -247
  197. package/js/src/cex.d.ts +8 -8
  198. package/js/src/cex.js +105 -105
  199. package/js/src/coinbase.d.ts +9 -9
  200. package/js/src/coinbase.js +179 -179
  201. package/js/src/coinbasepro.d.ts +8 -56
  202. package/js/src/coinbasepro.js +113 -113
  203. package/js/src/coincheck.d.ts +9 -29
  204. package/js/src/coincheck.js +21 -21
  205. package/js/src/coinex.d.ts +9 -53
  206. package/js/src/coinex.js +19 -19
  207. package/js/src/coinfalcon.d.ts +8 -52
  208. package/js/src/coinfalcon.js +53 -53
  209. package/js/src/coinlist.d.ts +104 -0
  210. package/js/src/coinlist.js +2328 -0
  211. package/js/src/coinmate.d.ts +8 -56
  212. package/js/src/coinmate.js +67 -67
  213. package/js/src/coinone.d.ts +9 -9
  214. package/js/src/coinone.js +9 -9
  215. package/js/src/coinsph.d.ts +13 -73
  216. package/js/src/coinsph.js +108 -108
  217. package/js/src/coinspot.d.ts +9 -9
  218. package/js/src/coinspot.js +28 -28
  219. package/js/src/cryptocom.d.ts +5 -45
  220. package/js/src/cryptocom.js +32 -32
  221. package/js/src/currencycom.d.ts +8 -32
  222. package/js/src/currencycom.js +52 -52
  223. package/js/src/delta.d.ts +9 -9
  224. package/js/src/delta.js +3 -3
  225. package/js/src/deribit.d.ts +12 -48
  226. package/js/src/deribit.js +285 -284
  227. package/js/src/digifinex.d.ts +11 -49
  228. package/js/src/exmo.d.ts +10 -106
  229. package/js/src/exmo.js +41 -41
  230. package/js/src/gate.d.ts +6 -50
  231. package/js/src/gate.js +174 -174
  232. package/js/src/gemini.d.ts +8 -46
  233. package/js/src/gemini.js +4 -4
  234. package/js/src/hitbtc.d.ts +5 -55
  235. package/js/src/hitbtc.js +26 -27
  236. package/js/src/hollaex.d.ts +13 -70
  237. package/js/src/hollaex.js +78 -78
  238. package/js/src/huobi.d.ts +6 -52
  239. package/js/src/huobi.js +267 -267
  240. package/js/src/huobijp.d.ts +8 -54
  241. package/js/src/huobijp.js +125 -125
  242. package/js/src/idex.d.ts +13 -89
  243. package/js/src/idex.js +202 -202
  244. package/js/src/independentreserve.d.ts +8 -8
  245. package/js/src/indodax.d.ts +10 -50
  246. package/js/src/kraken.d.ts +8 -52
  247. package/js/src/kraken.js +161 -161
  248. package/js/src/krakenfutures.d.ts +5 -5
  249. package/js/src/krakenfutures.js +223 -223
  250. package/js/src/kucoin.d.ts +6 -46
  251. package/js/src/kucoin.js +122 -122
  252. package/js/src/kucoinfutures.d.ts +5 -5
  253. package/js/src/kucoinfutures.js +128 -128
  254. package/js/src/kuna.d.ts +13 -105
  255. package/js/src/kuna.js +24 -24
  256. package/js/src/latoken.d.ts +8 -32
  257. package/js/src/latoken.js +70 -70
  258. package/js/src/lbank.d.ts +10 -64
  259. package/js/src/lbank.js +6 -6
  260. package/js/src/lbank2.d.ts +7 -28
  261. package/js/src/lbank2.js +35 -35
  262. package/js/src/luno.d.ts +9 -9
  263. package/js/src/luno.js +5 -5
  264. package/js/src/lykke.d.ts +11 -49
  265. package/js/src/lykke.js +4 -4
  266. package/js/src/mercado.d.ts +7 -47
  267. package/js/src/mercado.js +17 -17
  268. package/js/src/mexc.d.ts +11 -49
  269. package/js/src/mexc.js +172 -172
  270. package/js/src/ndax.d.ts +11 -47
  271. package/js/src/ndax.js +9 -8
  272. package/js/src/novadax.d.ts +12 -60
  273. package/js/src/oceanex.d.ts +5 -5
  274. package/js/src/oceanex.js +9 -9
  275. package/js/src/okcoin.d.ts +10 -54
  276. package/js/src/okcoin.js +65 -65
  277. package/js/src/okx.d.ts +9 -97
  278. package/js/src/okx.js +67 -67
  279. package/js/src/paymium.d.ts +7 -7
  280. package/js/src/phemex.d.ts +8 -27
  281. package/js/src/phemex.js +110 -110
  282. package/js/src/poloniex.d.ts +8 -56
  283. package/js/src/poloniex.js +43 -43
  284. package/js/src/poloniexfutures.d.ts +9 -9
  285. package/js/src/poloniexfutures.js +96 -96
  286. package/js/src/pro/alpaca.d.ts +2 -2
  287. package/js/src/pro/alpaca.js +174 -174
  288. package/js/src/pro/ascendex.js +151 -151
  289. package/js/src/pro/binance.d.ts +2 -19
  290. package/js/src/pro/binance.js +278 -278
  291. package/js/src/pro/bingx.js +136 -136
  292. package/js/src/pro/bitfinex.d.ts +2 -2
  293. package/js/src/pro/bitfinex.js +38 -38
  294. package/js/src/pro/bitfinex2.js +57 -57
  295. package/js/src/pro/bitget.js +227 -227
  296. package/js/src/pro/bitmart.js +98 -98
  297. package/js/src/pro/bitmex.js +584 -584
  298. package/js/src/pro/bitopro.js +49 -49
  299. package/js/src/pro/bitpanda.js +249 -249
  300. package/js/src/pro/bitrue.js +79 -79
  301. package/js/src/pro/bitstamp.js +59 -59
  302. package/js/src/pro/bittrex.js +107 -107
  303. package/js/src/pro/bitvavo.js +115 -115
  304. package/js/src/pro/blockchaincom.js +169 -169
  305. package/js/src/pro/bybit.js +57 -57
  306. package/js/src/pro/cex.js +199 -199
  307. package/js/src/pro/coinbase.js +4 -4
  308. package/js/src/pro/coinbasepro.d.ts +2 -2
  309. package/js/src/pro/coinbasepro.js +95 -95
  310. package/js/src/pro/coinex.js +232 -232
  311. package/js/src/pro/cryptocom.js +32 -32
  312. package/js/src/pro/currencycom.js +108 -108
  313. package/js/src/pro/deribit.js +140 -140
  314. package/js/src/pro/exmo.js +72 -72
  315. package/js/src/pro/gate.js +160 -160
  316. package/js/src/pro/gemini.js +135 -135
  317. package/js/src/pro/hitbtc.js +10 -10
  318. package/js/src/pro/hollaex.js +88 -88
  319. package/js/src/pro/huobi.js +277 -277
  320. package/js/src/pro/huobijp.js +71 -71
  321. package/js/src/pro/idex.js +58 -58
  322. package/js/src/pro/independentreserve.js +29 -29
  323. package/js/src/pro/kraken.js +113 -113
  324. package/js/src/pro/krakenfutures.js +58 -58
  325. package/js/src/pro/kucoin.js +95 -95
  326. package/js/src/pro/kucoinfutures.js +100 -100
  327. package/js/src/pro/luno.d.ts +2 -2
  328. package/js/src/pro/luno.js +42 -42
  329. package/js/src/pro/mexc.js +98 -98
  330. package/js/src/pro/ndax.js +24 -24
  331. package/js/src/pro/okcoin.js +104 -104
  332. package/js/src/pro/okx.js +161 -161
  333. package/js/src/pro/phemex.js +295 -295
  334. package/js/src/pro/poloniex.js +79 -79
  335. package/js/src/pro/poloniexfutures.js +172 -172
  336. package/js/src/pro/probit.js +87 -87
  337. package/js/src/pro/upbit.js +66 -66
  338. package/js/src/pro/wazirx.js +11 -11
  339. package/js/src/pro/whitebit.js +77 -77
  340. package/js/src/pro/woo.js +78 -78
  341. package/js/src/probit.d.ts +11 -49
  342. package/js/src/probit.js +78 -44
  343. package/js/src/tidex.d.ts +8 -62
  344. package/js/src/tidex.js +9 -9
  345. package/js/src/timex.d.ts +10 -43
  346. package/js/src/tokocrypto.d.ts +10 -60
  347. package/js/src/tokocrypto.js +57 -57
  348. package/js/src/upbit.d.ts +7 -51
  349. package/js/src/upbit.js +157 -157
  350. package/js/src/wavesexchange.d.ts +9 -49
  351. package/js/src/wavesexchange.js +125 -125
  352. package/js/src/wazirx.d.ts +8 -8
  353. package/js/src/whitebit.d.ts +8 -54
  354. package/js/src/whitebit.js +63 -63
  355. package/js/src/woo.d.ts +9 -47
  356. package/js/src/woo.js +244 -243
  357. package/js/src/yobit.d.ts +3 -3
  358. package/js/src/yobit.js +9 -9
  359. package/js/src/zaif.d.ts +9 -49
  360. package/js/src/zonda.d.ts +8 -48
  361. package/js/src/zonda.js +103 -103
  362. package/package.json +2 -1
  363. package/skip-tests.json +11 -0
package/dist/cjs/ccxt.js CHANGED
@@ -58,6 +58,7 @@ var coinbasepro = require('./src/coinbasepro.js');
58
58
  var coincheck = require('./src/coincheck.js');
59
59
  var coinex = require('./src/coinex.js');
60
60
  var coinfalcon = require('./src/coinfalcon.js');
61
+ var coinlist = require('./src/coinlist.js');
61
62
  var coinmate = require('./src/coinmate.js');
62
63
  var coinone = require('./src/coinone.js');
63
64
  var coinsph = require('./src/coinsph.js');
@@ -180,7 +181,7 @@ var woo$1 = require('./src/pro/woo.js');
180
181
 
181
182
  //-----------------------------------------------------------------------------
182
183
  // this is updated by vss.js when building
183
- const version = '4.1.41';
184
+ const version = '4.1.44';
184
185
  Exchange["default"].ccxtVersion = version;
185
186
  const exchanges = {
186
187
  'ace': ace,
@@ -229,6 +230,7 @@ const exchanges = {
229
230
  'coincheck': coincheck,
230
231
  'coinex': coinex,
231
232
  'coinfalcon': coinfalcon,
233
+ 'coinlist': coinlist,
232
234
  'coinmate': coinmate,
233
235
  'coinone': coinone,
234
236
  'coinsph': coinsph,
@@ -438,6 +440,7 @@ exports.coinbasepro = coinbasepro;
438
440
  exports.coincheck = coincheck;
439
441
  exports.coinex = coinex;
440
442
  exports.coinfalcon = coinfalcon;
443
+ exports.coinlist = coinlist;
441
444
  exports.coinmate = coinmate;
442
445
  exports.coinone = coinone;
443
446
  exports.coinsph = coinsph;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var Exchange$1 = require('../base/Exchange.js');
4
+
5
+ // -------------------------------------------------------------------------------
6
+ class Exchange extends Exchange$1["default"] {
7
+ }
8
+
9
+ module.exports = Exchange;
@@ -992,9 +992,9 @@ class ace extends ace$1 {
992
992
  // "currencyName": "BTC"
993
993
  // }
994
994
  // ],
995
- // message: null,
996
- // parameters: null,
997
- // status: '200'
995
+ // "message": null,
996
+ // "parameters": null,
997
+ // "status": "200"
998
998
  // }
999
999
  //
1000
1000
  return this.parseBalance(balances);
@@ -35,6 +35,7 @@ class ascendex extends ascendex$1 {
35
35
  'cancelAllOrders': true,
36
36
  'cancelOrder': true,
37
37
  'createOrder': true,
38
+ 'createOrders': true,
38
39
  'createPostOnlyOrder': true,
39
40
  'createReduceOnlyOrder': true,
40
41
  'createStopLimitOrder': true,
@@ -832,12 +833,12 @@ class ascendex extends ascendex$1 {
832
833
  // cash
833
834
  //
834
835
  // {
835
- // 'code': 0,
836
- // 'data': [
836
+ // "code": 0,
837
+ // "data": [
837
838
  // {
838
- // 'asset': 'BCHSV',
839
- // 'totalBalance': '64.298000048',
840
- // 'availableBalance': '64.298000048',
839
+ // "asset": "BCHSV",
840
+ // "totalBalance": "64.298000048",
841
+ // "availableBalance": "64.298000048",
841
842
  // },
842
843
  // ]
843
844
  // }
@@ -845,14 +846,14 @@ class ascendex extends ascendex$1 {
845
846
  // margin
846
847
  //
847
848
  // {
848
- // 'code': 0,
849
- // 'data': [
849
+ // "code": 0,
850
+ // "data": [
850
851
  // {
851
- // 'asset': 'BCHSV',
852
- // 'totalBalance': '64.298000048',
853
- // 'availableBalance': '64.298000048',
854
- // 'borrowed': '0',
855
- // 'interest': '0',
852
+ // "asset": "BCHSV",
853
+ // "totalBalance": "64.298000048",
854
+ // "availableBalance": "64.298000048",
855
+ // "borrowed": "0",
856
+ // "interest": "0",
856
857
  // },
857
858
  // ]
858
859
  // }
@@ -1429,15 +1430,15 @@ class ascendex extends ascendex$1 {
1429
1430
  const response = await this.v1PrivateAccountGroupGetSpotFee(this.extend(request, params));
1430
1431
  //
1431
1432
  // {
1432
- // code: '0',
1433
- // data: {
1434
- // domain: 'spot',
1435
- // userUID: 'U1479576458',
1436
- // vipLevel: '0',
1437
- // fees: [
1438
- // { symbol: 'HT/USDT', fee: { taker: '0.001', maker: '0.001' } },
1439
- // { symbol: 'LAMB/BTC', fee: { taker: '0.002', maker: '0.002' } },
1440
- // { symbol: 'STOS/USDT', fee: { taker: '0.002', maker: '0.002' } },
1433
+ // "code": "0",
1434
+ // "data": {
1435
+ // "domain": "spot",
1436
+ // "userUID": "U1479576458",
1437
+ // "vipLevel": "0",
1438
+ // "fees": [
1439
+ // { symbol: 'HT/USDT', fee: { taker: '0.001', maker: "0.001" } },
1440
+ // { symbol: 'LAMB/BTC', fee: { taker: '0.002', maker: "0.002" } },
1441
+ // { symbol: 'STOS/USDT', fee: { taker: '0.002', maker: "0.002" } },
1441
1442
  // ...
1442
1443
  // ]
1443
1444
  // }
@@ -1460,30 +1461,33 @@ class ascendex extends ascendex$1 {
1460
1461
  }
1461
1462
  return result;
1462
1463
  }
1463
- async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1464
+ createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
1464
1465
  /**
1465
1466
  * @method
1466
- * @name ascendex#createOrder
1467
- * @description Create an order on the exchange
1468
- * @param {string} symbol Unified CCXT market symbol
1469
- * @param {string} type "limit" or "market"
1470
- * @param {string} side "buy" or "sell"
1471
- * @param {float} amount the amount of currency to trade
1472
- * @param {float} [price] *ignored in "market" orders* the price at which the order is to be fullfilled at in units of the quote currency
1473
- * @param {object} [params] Extra parameters specific to the exchange API endpoint
1467
+ * @ignore
1468
+ * @name ascendex#createOrderRequest
1469
+ * @description helper function to build request
1470
+ * @param {string} symbol unified symbol of the market to create an order in
1471
+ * @param {string} type 'market' or 'limit'
1472
+ * @param {string} side 'buy' or 'sell'
1473
+ * @param {float} amount how much you want to trade in units of the base currency
1474
+ * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1475
+ * @param {object} [params] extra parameters specific to the ascendex api endpoint
1474
1476
  * @param {string} [params.timeInForce] "GTC", "IOC", "FOK", or "PO"
1475
1477
  * @param {bool} [params.postOnly] true or false
1476
- * @param {float} [params.stopPrice] The price at which a trigger order is triggered at
1477
- * @returns [An order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1478
+ * @param {float} [params.stopPrice] the price at which a trigger order is triggered at
1479
+ * @returns {object} request to be sent to the exchange
1478
1480
  */
1479
- await this.loadMarkets();
1480
- await this.loadAccounts();
1481
1481
  const market = this.market(symbol);
1482
+ let marginMode = undefined;
1482
1483
  let marketType = undefined;
1483
- [marketType, params] = this.handleMarketTypeAndParams('createOrder', market, params);
1484
- const options = this.safeValue(this.options, 'createOrder', {});
1484
+ [marginMode, params] = this.handleMarginModeAndParams('createOrderRequest', params);
1485
+ [marketType, params] = this.handleMarketTypeAndParams('createOrderRequest', market, params);
1485
1486
  const accountsByType = this.safeValue(this.options, 'accountsByType', {});
1486
- const accountCategory = this.safeString(accountsByType, marketType, 'cash');
1487
+ let accountCategory = this.safeString(accountsByType, marketType, 'cash');
1488
+ if (marginMode !== undefined) {
1489
+ accountCategory = 'margin';
1490
+ }
1487
1491
  const account = this.safeValue(this.accounts, 0, {});
1488
1492
  const accountGroup = this.safeValue(account, 'id');
1489
1493
  const clientOrderId = this.safeString2(params, 'clientOrderId', 'id');
@@ -1504,13 +1508,6 @@ class ascendex extends ascendex$1 {
1504
1508
  const postOnly = this.isPostOnly(isMarketOrder, false, params);
1505
1509
  const reduceOnly = this.safeValue(params, 'reduceOnly', false);
1506
1510
  const stopPrice = this.safeValue2(params, 'triggerPrice', 'stopPrice');
1507
- params = this.omit(params, ['timeInForce', 'postOnly', 'reduceOnly', 'stopPrice', 'triggerPrice']);
1508
- if (reduceOnly) {
1509
- if (marketType !== 'swap') {
1510
- throw new errors.InvalidOrder(this.id + ' createOrder() does not support reduceOnly for ' + marketType + ' orders, reduceOnly orders are supported for perpetuals only');
1511
- }
1512
- request['execInst'] = 'ReduceOnly';
1513
- }
1514
1511
  if (isLimitOrder) {
1515
1512
  request['orderPrice'] = this.priceToPrecision(symbol, price);
1516
1513
  }
@@ -1535,21 +1532,56 @@ class ascendex extends ascendex$1 {
1535
1532
  if (clientOrderId !== undefined) {
1536
1533
  request['id'] = clientOrderId;
1537
1534
  }
1538
- const defaultMethod = this.safeString(options, 'method', 'v1PrivateAccountCategoryPostOrder');
1539
- const method = this.getSupportedMapping(marketType, {
1540
- 'spot': defaultMethod,
1541
- 'margin': defaultMethod,
1542
- 'swap': 'v2PrivateAccountGroupPostFuturesOrder',
1543
- });
1544
- if (method === 'v1PrivateAccountCategoryPostOrder') {
1535
+ if (market['spot']) {
1545
1536
  if (accountCategory !== undefined) {
1546
1537
  request['category'] = accountCategory;
1547
1538
  }
1548
1539
  }
1549
1540
  else {
1550
1541
  request['account-category'] = accountCategory;
1542
+ if (reduceOnly) {
1543
+ request['execInst'] = 'ReduceOnly';
1544
+ }
1545
+ if (postOnly) {
1546
+ request['execInst'] = 'Post';
1547
+ }
1548
+ }
1549
+ params = this.omit(params, ['reduceOnly', 'triggerPrice']);
1550
+ return this.extend(request, params);
1551
+ }
1552
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1553
+ /**
1554
+ * @method
1555
+ * @name ascendex#createOrder
1556
+ * @description create a trade order on the exchange
1557
+ * @see https://ascendex.github.io/ascendex-pro-api/#place-order
1558
+ * @see https://ascendex.github.io/ascendex-futures-pro-api-v2/#new-order
1559
+ * @param {string} symbol unified CCXT market symbol
1560
+ * @param {string} type "limit" or "market"
1561
+ * @param {string} side "buy" or "sell"
1562
+ * @param {float} amount the amount of currency to trade
1563
+ * @param {float} [price] *ignored in "market" orders* the price at which the order is to be fullfilled at in units of the quote currency
1564
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1565
+ * @param {string} [params.timeInForce] "GTC", "IOC", "FOK", or "PO"
1566
+ * @param {bool} [params.postOnly] true or false
1567
+ * @param {float} [params.stopPrice] the price at which a trigger order is triggered at
1568
+ * @param {object} [params.takeProfit] *takeProfit object in params* containing the triggerPrice that the attached take profit order will be triggered (perpetual swap markets only)
1569
+ * @param {float} [params.takeProfit.triggerPrice] *swap only* take profit trigger price
1570
+ * @param {object} [params.stopLoss] *stopLoss object in params* containing the triggerPrice that the attached stop loss order will be triggered (perpetual swap markets only)
1571
+ * @param {float} [params.stopLoss.triggerPrice] *swap only* stop loss trigger price
1572
+ * @returns [An order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1573
+ */
1574
+ await this.loadMarkets();
1575
+ await this.loadAccounts();
1576
+ const market = this.market(symbol);
1577
+ const request = this.createOrderRequest(symbol, type, side, amount, price, params);
1578
+ let response = undefined;
1579
+ if (market['swap']) {
1580
+ response = await this.v2PrivateAccountGroupPostFuturesOrder(request);
1581
+ }
1582
+ else {
1583
+ response = await this.v1PrivateAccountCategoryPostOrder(request);
1551
1584
  }
1552
- const response = await this[method](this.extend(request, params));
1553
1585
  //
1554
1586
  // spot
1555
1587
  //
@@ -1570,7 +1602,6 @@ class ascendex extends ascendex$1 {
1570
1602
  // }
1571
1603
  // }
1572
1604
  //
1573
- //
1574
1605
  // swap
1575
1606
  //
1576
1607
  // {
@@ -1618,6 +1649,105 @@ class ascendex extends ascendex$1 {
1618
1649
  const order = this.safeValue2(data, 'order', 'info', {});
1619
1650
  return this.parseOrder(order, market);
1620
1651
  }
1652
+ async createOrders(orders, params = {}) {
1653
+ /**
1654
+ * @method
1655
+ * @name ascendex#createOrders
1656
+ * @description create a list of trade orders
1657
+ * @see https://ascendex.github.io/ascendex-pro-api/#place-batch-orders
1658
+ * @see https://ascendex.github.io/ascendex-futures-pro-api-v2/#place-batch-orders
1659
+ * @param {array} orders list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
1660
+ * @param {object} [params] extra parameters specific to the ascendex api endpoint
1661
+ * @param {string} [params.timeInForce] "GTC", "IOC", "FOK", or "PO"
1662
+ * @param {bool} [params.postOnly] true or false
1663
+ * @param {float} [params.stopPrice] the price at which a trigger order is triggered at
1664
+ * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1665
+ */
1666
+ await this.loadMarkets();
1667
+ await this.loadAccounts();
1668
+ const ordersRequests = [];
1669
+ let symbol = undefined;
1670
+ let marginMode = undefined;
1671
+ for (let i = 0; i < orders.length; i++) {
1672
+ const rawOrder = orders[i];
1673
+ const marketId = this.safeString(rawOrder, 'symbol');
1674
+ if (symbol === undefined) {
1675
+ symbol = marketId;
1676
+ }
1677
+ else {
1678
+ if (symbol !== marketId) {
1679
+ throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same symbol');
1680
+ }
1681
+ }
1682
+ const type = this.safeString(rawOrder, 'type');
1683
+ const side = this.safeString(rawOrder, 'side');
1684
+ const amount = this.safeValue(rawOrder, 'amount');
1685
+ const price = this.safeValue(rawOrder, 'price');
1686
+ const orderParams = this.safeValue(rawOrder, 'params', {});
1687
+ const marginResult = this.handleMarginModeAndParams('createOrders', orderParams);
1688
+ const currentMarginMode = marginResult[0];
1689
+ if (currentMarginMode !== undefined) {
1690
+ if (marginMode === undefined) {
1691
+ marginMode = currentMarginMode;
1692
+ }
1693
+ else {
1694
+ if (marginMode !== currentMarginMode) {
1695
+ throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same margin mode (isolated or cross)');
1696
+ }
1697
+ }
1698
+ }
1699
+ const orderRequest = this.createOrderRequest(marketId, type, side, amount, price, orderParams);
1700
+ ordersRequests.push(orderRequest);
1701
+ }
1702
+ const market = this.market(symbol);
1703
+ const accountsByType = this.safeValue(this.options, 'accountsByType', {});
1704
+ let accountCategory = this.safeString(accountsByType, market['type'], 'cash');
1705
+ if (marginMode !== undefined) {
1706
+ accountCategory = 'margin';
1707
+ }
1708
+ const account = this.safeValue(this.accounts, 0, {});
1709
+ const accountGroup = this.safeValue(account, 'id');
1710
+ const request = {};
1711
+ let response = undefined;
1712
+ if (market['swap']) {
1713
+ throw new errors.NotSupported(this.id + ' createOrders() is not currently supported for swap markets on ascendex');
1714
+ // request['account-group'] = accountGroup;
1715
+ // request['category'] = accountCategory;
1716
+ // request['orders'] = ordersRequests;
1717
+ // response = await this.v2PrivateAccountGroupPostFuturesOrderBatch (request);
1718
+ }
1719
+ else {
1720
+ request['account-group'] = accountGroup;
1721
+ request['account-category'] = accountCategory;
1722
+ request['orders'] = ordersRequests;
1723
+ response = await this.v1PrivateAccountCategoryPostOrderBatch(request);
1724
+ }
1725
+ //
1726
+ // spot
1727
+ //
1728
+ // {
1729
+ // "code": 0,
1730
+ // "data": {
1731
+ // "accountId": "cshdAKBO43TKIh2kJtq7FVVb42KIePyS",
1732
+ // "ac": "CASH",
1733
+ // "action": "batch-place-order",
1734
+ // "status": "Ack",
1735
+ // "info": [
1736
+ // {
1737
+ // "symbol": "BTC/USDT",
1738
+ // "orderType": "Limit",
1739
+ // "timestamp": 1699326589344,
1740
+ // "id": "",
1741
+ // "orderId": "a18ba7c1f6efU0711043490p3HvjjN5x"
1742
+ // }
1743
+ // ]
1744
+ // }
1745
+ // }
1746
+ //
1747
+ const data = this.safeValue(response, 'data', {});
1748
+ const info = this.safeValue(data, 'info', []);
1749
+ return this.parseOrders(info, market);
1750
+ }
1621
1751
  async fetchOrder(id, symbol = undefined, params = {}) {
1622
1752
  /**
1623
1753
  * @method
@@ -2215,15 +2345,15 @@ class ascendex extends ascendex$1 {
2215
2345
  parseDepositAddress(depositAddress, currency = undefined) {
2216
2346
  //
2217
2347
  // {
2218
- // address: "0xe7c70b4e73b6b450ee46c3b5c0f5fb127ca55722",
2219
- // destTag: "",
2220
- // tagType: "",
2221
- // tagId: "",
2222
- // chainName: "ERC20",
2223
- // numConfirmations: 20,
2224
- // withdrawalFee: 1,
2225
- // nativeScale: 4,
2226
- // tips: []
2348
+ // "address": "0xe7c70b4e73b6b450ee46c3b5c0f5fb127ca55722",
2349
+ // "destTag": "",
2350
+ // "tagType": "",
2351
+ // "tagId": "",
2352
+ // "chainName": "ERC20",
2353
+ // "numConfirmations": 20,
2354
+ // "withdrawalFee": 1,
2355
+ // "nativeScale": 4,
2356
+ // "tips": []
2227
2357
  // }
2228
2358
  //
2229
2359
  const address = this.safeString(depositAddress, 'address');
@@ -2396,26 +2526,26 @@ class ascendex extends ascendex$1 {
2396
2526
  const response = await this.v1PrivateGetWalletTransactions(this.extend(request, params));
2397
2527
  //
2398
2528
  // {
2399
- // code: 0,
2400
- // data: {
2401
- // data: [
2529
+ // "code": 0,
2530
+ // "data": {
2531
+ // "data": [
2402
2532
  // {
2403
- // requestId: "wuzd1Ojsqtz4bCA3UXwtUnnJDmU8PiyB",
2404
- // time: 1591606166000,
2405
- // asset: "USDT",
2406
- // transactionType: "deposit",
2407
- // amount: "25",
2408
- // commission: "0",
2409
- // networkTransactionId: "0xbc4eabdce92f14dbcc01d799a5f8ca1f02f4a3a804b6350ea202be4d3c738fce",
2410
- // status: "pending",
2411
- // numConfirmed: 8,
2412
- // numConfirmations: 20,
2413
- // destAddress: { address: "0xe7c70b4e73b6b450ee46c3b5c0f5fb127ca55722" }
2533
+ // "requestId": "wuzd1Ojsqtz4bCA3UXwtUnnJDmU8PiyB",
2534
+ // "time": 1591606166000,
2535
+ // "asset": "USDT",
2536
+ // "transactionType": "deposit",
2537
+ // "amount": "25",
2538
+ // "commission": "0",
2539
+ // "networkTransactionId": "0xbc4eabdce92f14dbcc01d799a5f8ca1f02f4a3a804b6350ea202be4d3c738fce",
2540
+ // "status": "pending",
2541
+ // "numConfirmed": 8,
2542
+ // "numConfirmations": 20,
2543
+ // "destAddress": { address: "0xe7c70b4e73b6b450ee46c3b5c0f5fb127ca55722" }
2414
2544
  // }
2415
2545
  // ],
2416
- // page: 1,
2417
- // pageSize: 20,
2418
- // hasNext: false
2546
+ // "page": 1,
2547
+ // "pageSize": 20,
2548
+ // "hasNext": false
2419
2549
  // }
2420
2550
  // }
2421
2551
  //
@@ -2435,19 +2565,19 @@ class ascendex extends ascendex$1 {
2435
2565
  parseTransaction(transaction, currency = undefined) {
2436
2566
  //
2437
2567
  // {
2438
- // requestId: "wuzd1Ojsqtz4bCA3UXwtUnnJDmU8PiyB",
2439
- // time: 1591606166000,
2440
- // asset: "USDT",
2441
- // transactionType: "deposit",
2442
- // amount: "25",
2443
- // commission: "0",
2444
- // networkTransactionId: "0xbc4eabdce92f14dbcc01d799a5f8ca1f02f4a3a804b6350ea202be4d3c738fce",
2445
- // status: "pending",
2446
- // numConfirmed: 8,
2447
- // numConfirmations: 20,
2448
- // destAddress: {
2449
- // address: "0xe7c70b4e73b6b450ee46c3b5c0f5fb127ca55722",
2450
- // destTag: "..." // for currencies that have it
2568
+ // "requestId": "wuzd1Ojsqtz4bCA3UXwtUnnJDmU8PiyB",
2569
+ // "time": 1591606166000,
2570
+ // "asset": "USDT",
2571
+ // "transactionType": "deposit",
2572
+ // "amount": "25",
2573
+ // "commission": "0",
2574
+ // "networkTransactionId": "0xbc4eabdce92f14dbcc01d799a5f8ca1f02f4a3a804b6350ea202be4d3c738fce",
2575
+ // "status": "pending",
2576
+ // "numConfirmed": 8,
2577
+ // "numConfirmations": 20,
2578
+ // "destAddress": {
2579
+ // "address": "0xe7c70b4e73b6b450ee46c3b5c0f5fb127ca55722",
2580
+ // "destTag": "..." // for currencies that have it
2451
2581
  // }
2452
2582
  // }
2453
2583
  //
@@ -3009,7 +3139,7 @@ class ascendex extends ascendex$1 {
3009
3139
  };
3010
3140
  const response = await this.v1PrivateAccountGroupPostTransfer(this.extend(request, params));
3011
3141
  //
3012
- // { code: '0' }
3142
+ // { "code": "0" }
3013
3143
  //
3014
3144
  const transferOptions = this.safeValue(this.options, 'transfer', {});
3015
3145
  const fillResponseFromRequest = this.safeValue(transferOptions, 'fillResponseFromRequest', true);
@@ -3024,7 +3154,7 @@ class ascendex extends ascendex$1 {
3024
3154
  }
3025
3155
  parseTransfer(transfer, currency = undefined) {
3026
3156
  //
3027
- // { code: '0' }
3157
+ // { "code": "0" }
3028
3158
  //
3029
3159
  const status = this.safeInteger(transfer, 'code');
3030
3160
  const currencyCode = this.safeCurrencyCode(undefined, currency);
@@ -3196,8 +3326,8 @@ class ascendex extends ascendex$1 {
3196
3326
  return undefined; // fallback to default error handler
3197
3327
  }
3198
3328
  //
3199
- // {'code': 6010, 'message': 'Not enough balance.'}
3200
- // {'code': 60060, 'message': 'The order is already filled or canceled.'}
3329
+ // {"code": 6010, "message": "Not enough balance."}
3330
+ // {"code": 60060, "message": "The order is already filled or canceled."}
3201
3331
  // {"code":2100,"message":"ApiKeyFailure"}
3202
3332
  // {"code":300001,"message":"Price is too low from market price.","reason":"INVALID_PRICE","accountId":"cshrHKLZCjlZ2ejqkmvIHHtPmLYqdnda","ac":"CASH","action":"place-order","status":"Err","info":{"symbol":"BTC/USDT"}}
3203
3333
  //