ccxt 4.2.18 → 4.2.20

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 (446) hide show
  1. package/README.md +100 -100
  2. package/dist/ccxt.browser.js +34240 -33297
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +12 -1
  5. package/dist/cjs/src/alpaca.js +18 -18
  6. package/dist/cjs/src/ascendex.js +13 -6
  7. package/dist/cjs/src/base/Exchange.js +276 -27
  8. package/dist/cjs/src/bigone.js +434 -168
  9. package/dist/cjs/src/binance.js +165 -35
  10. package/dist/cjs/src/binanceus.js +25 -0
  11. package/dist/cjs/src/bingx.js +185 -42
  12. package/dist/cjs/src/bitfinex.js +2 -3
  13. package/dist/cjs/src/bitget.js +84 -47
  14. package/dist/cjs/src/bitmart.js +5 -5
  15. package/dist/cjs/src/bitmex.js +4 -6
  16. package/dist/cjs/src/bitpanda.js +5 -1991
  17. package/dist/cjs/src/bitstamp.js +8 -0
  18. package/dist/cjs/src/bitteam.js +1 -1
  19. package/dist/cjs/src/bybit.js +27 -75
  20. package/dist/cjs/src/coinbase.js +176 -26
  21. package/dist/cjs/src/coincheck.js +1 -0
  22. package/dist/cjs/src/coinex.js +3 -0
  23. package/dist/cjs/src/coinlist.js +13 -6
  24. package/dist/cjs/src/coinone.js +2 -2
  25. package/dist/cjs/src/coinsph.js +4 -5
  26. package/dist/cjs/src/delta.js +7 -19
  27. package/dist/cjs/src/deribit.js +17 -4
  28. package/dist/cjs/src/gate.js +151 -194
  29. package/dist/cjs/src/gemini.js +1 -1
  30. package/dist/cjs/src/hitbtc.js +2 -3
  31. package/dist/cjs/src/htx.js +157 -7
  32. package/dist/cjs/src/huobijp.js +2 -3
  33. package/dist/cjs/src/independentreserve.js +7 -5
  34. package/dist/cjs/src/kraken.js +86 -54
  35. package/dist/cjs/src/kucoin.js +5 -0
  36. package/dist/cjs/src/kucoinfutures.js +140 -86
  37. package/dist/cjs/src/lbank.js +60 -33
  38. package/dist/cjs/src/luno.js +84 -2
  39. package/dist/cjs/src/mexc.js +3 -3
  40. package/dist/cjs/src/oceanex.js +1 -1
  41. package/dist/cjs/src/okx.js +23 -29
  42. package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
  43. package/dist/cjs/src/phemex.js +37 -27
  44. package/dist/cjs/src/poloniexfutures.js +1 -0
  45. package/dist/cjs/src/pro/binance.js +66 -25
  46. package/dist/cjs/src/pro/bitget.js +1 -1
  47. package/dist/cjs/src/pro/bitpanda.js +5 -1330
  48. package/dist/cjs/src/pro/coinbase.js +4 -1
  49. package/dist/cjs/src/pro/hitbtc.js +5 -4
  50. package/dist/cjs/src/pro/htx.js +6 -1
  51. package/dist/cjs/src/pro/kraken.js +1 -1
  52. package/dist/cjs/src/pro/krakenfutures.js +7 -1
  53. package/dist/cjs/src/pro/kucoin.js +46 -36
  54. package/dist/cjs/src/pro/kucoinfutures.js +45 -37
  55. package/dist/cjs/src/pro/lbank.js +881 -0
  56. package/dist/cjs/src/pro/okx.js +52 -2
  57. package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
  58. package/dist/cjs/src/pro/poloniex.js +2 -2
  59. package/dist/cjs/src/pro/poloniexfutures.js +43 -35
  60. package/dist/cjs/src/pro/woo.js +126 -0
  61. package/dist/cjs/src/probit.js +4 -2
  62. package/dist/cjs/src/upbit.js +12 -12
  63. package/dist/cjs/src/wavesexchange.js +1 -1
  64. package/dist/cjs/src/whitebit.js +1 -0
  65. package/dist/cjs/src/woo.js +56 -0
  66. package/js/ccxt.d.ts +11 -2
  67. package/js/ccxt.js +8 -2
  68. package/js/src/abstract/binance.d.ts +1 -0
  69. package/js/src/abstract/binancecoinm.d.ts +1 -0
  70. package/js/src/abstract/binanceus.d.ts +1 -0
  71. package/js/src/abstract/binanceusdm.d.ts +1 -0
  72. package/js/src/abstract/bitpanda.d.ts +4 -4
  73. package/js/src/abstract/bitpanda.js +3 -3
  74. package/js/src/abstract/bitstamp.d.ts +8 -0
  75. package/js/src/abstract/gate.d.ts +1 -0
  76. package/js/src/abstract/gateio.d.ts +1 -0
  77. package/js/src/abstract/htx.d.ts +3 -0
  78. package/js/src/abstract/huobi.d.ts +3 -0
  79. package/js/src/abstract/luno.d.ts +1 -0
  80. package/js/src/abstract/onetrading.d.ts +38 -0
  81. package/js/src/abstract/onetrading.js +11 -0
  82. package/js/src/ascendex.js +2 -0
  83. package/js/src/base/Exchange.d.ts +3 -0
  84. package/js/src/base/Exchange.js +10 -0
  85. package/js/src/binance.js +2 -1
  86. package/js/src/binanceus.js +17 -0
  87. package/js/src/bingx.js +3 -2
  88. package/js/src/bitget.d.ts +1 -1
  89. package/js/src/bitget.js +47 -34
  90. package/js/src/bitpanda.d.ts +2 -72
  91. package/js/src/bitpanda.js +5 -1991
  92. package/js/src/bitstamp.js +8 -0
  93. package/js/src/bitteam.js +1 -1
  94. package/js/src/bybit.d.ts +0 -1
  95. package/js/src/bybit.js +1 -29
  96. package/js/src/delta.d.ts +0 -1
  97. package/js/src/delta.js +0 -18
  98. package/js/src/deribit.js +11 -3
  99. package/js/src/gate.d.ts +1 -1
  100. package/js/src/gate.js +50 -135
  101. package/js/src/htx.js +3 -0
  102. package/js/src/kraken.d.ts +1 -0
  103. package/js/src/kraken.js +39 -38
  104. package/js/src/kucoinfutures.d.ts +6 -6
  105. package/js/src/kucoinfutures.js +9 -9
  106. package/js/src/lbank.js +1 -0
  107. package/js/src/luno.d.ts +3 -1
  108. package/js/src/luno.js +84 -2
  109. package/js/src/mexc.js +1 -2
  110. package/js/src/okx.d.ts +0 -1
  111. package/js/src/okx.js +0 -18
  112. package/js/src/onetrading.d.ts +74 -0
  113. package/js/src/onetrading.js +2003 -0
  114. package/js/src/poloniexfutures.js +1 -0
  115. package/js/src/pro/binance.js +6 -1
  116. package/js/src/pro/bitpanda.d.ts +2 -34
  117. package/js/src/pro/bitpanda.js +5 -1330
  118. package/js/src/pro/lbank.d.ts +29 -0
  119. package/js/src/pro/lbank.js +882 -0
  120. package/js/src/pro/onetrading.d.ts +36 -0
  121. package/js/src/pro/onetrading.js +1339 -0
  122. package/package.json +2 -2
  123. package/rollup.config.js +2 -0
  124. package/skip-tests.json +4 -2
  125. package/test-commonjs.cjs +25 -1
  126. package/dist/cjs/js/ccxt.js +0 -478
  127. package/dist/cjs/js/src/abstract/alpaca.js +0 -9
  128. package/dist/cjs/js/src/abstract/ascendex.js +0 -9
  129. package/dist/cjs/js/src/abstract/bigone.js +0 -9
  130. package/dist/cjs/js/src/abstract/binance.js +0 -9
  131. package/dist/cjs/js/src/abstract/bingx.js +0 -9
  132. package/dist/cjs/js/src/abstract/bit2c.js +0 -9
  133. package/dist/cjs/js/src/abstract/bitbank.js +0 -9
  134. package/dist/cjs/js/src/abstract/bitbns.js +0 -9
  135. package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
  136. package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
  137. package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
  138. package/dist/cjs/js/src/abstract/bitforex.js +0 -9
  139. package/dist/cjs/js/src/abstract/bitget.js +0 -9
  140. package/dist/cjs/js/src/abstract/bithumb.js +0 -9
  141. package/dist/cjs/js/src/abstract/bitmart.js +0 -9
  142. package/dist/cjs/js/src/abstract/bitmex.js +0 -9
  143. package/dist/cjs/js/src/abstract/bitopro.js +0 -9
  144. package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
  145. package/dist/cjs/js/src/abstract/bitrue.js +0 -9
  146. package/dist/cjs/js/src/abstract/bitso.js +0 -9
  147. package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
  148. package/dist/cjs/js/src/abstract/bitteam.js +0 -9
  149. package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
  150. package/dist/cjs/js/src/abstract/bl3p.js +0 -9
  151. package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
  152. package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
  153. package/dist/cjs/js/src/abstract/btcbox.js +0 -9
  154. package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
  155. package/dist/cjs/js/src/abstract/btcturk.js +0 -9
  156. package/dist/cjs/js/src/abstract/bybit.js +0 -9
  157. package/dist/cjs/js/src/abstract/cex.js +0 -9
  158. package/dist/cjs/js/src/abstract/coinbase.js +0 -9
  159. package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
  160. package/dist/cjs/js/src/abstract/coincheck.js +0 -9
  161. package/dist/cjs/js/src/abstract/coinex.js +0 -9
  162. package/dist/cjs/js/src/abstract/coinlist.js +0 -9
  163. package/dist/cjs/js/src/abstract/coinmate.js +0 -9
  164. package/dist/cjs/js/src/abstract/coinone.js +0 -9
  165. package/dist/cjs/js/src/abstract/coinsph.js +0 -9
  166. package/dist/cjs/js/src/abstract/coinspot.js +0 -9
  167. package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
  168. package/dist/cjs/js/src/abstract/currencycom.js +0 -9
  169. package/dist/cjs/js/src/abstract/delta.js +0 -9
  170. package/dist/cjs/js/src/abstract/deribit.js +0 -9
  171. package/dist/cjs/js/src/abstract/digifinex.js +0 -9
  172. package/dist/cjs/js/src/abstract/exmo.js +0 -9
  173. package/dist/cjs/js/src/abstract/gate.js +0 -9
  174. package/dist/cjs/js/src/abstract/gemini.js +0 -9
  175. package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
  176. package/dist/cjs/js/src/abstract/hollaex.js +0 -9
  177. package/dist/cjs/js/src/abstract/htx.js +0 -9
  178. package/dist/cjs/js/src/abstract/huobijp.js +0 -9
  179. package/dist/cjs/js/src/abstract/idex.js +0 -9
  180. package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
  181. package/dist/cjs/js/src/abstract/indodax.js +0 -9
  182. package/dist/cjs/js/src/abstract/kraken.js +0 -9
  183. package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
  184. package/dist/cjs/js/src/abstract/kucoin.js +0 -9
  185. package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
  186. package/dist/cjs/js/src/abstract/kuna.js +0 -9
  187. package/dist/cjs/js/src/abstract/latoken.js +0 -9
  188. package/dist/cjs/js/src/abstract/lbank.js +0 -9
  189. package/dist/cjs/js/src/abstract/luno.js +0 -9
  190. package/dist/cjs/js/src/abstract/lykke.js +0 -9
  191. package/dist/cjs/js/src/abstract/mercado.js +0 -9
  192. package/dist/cjs/js/src/abstract/mexc.js +0 -9
  193. package/dist/cjs/js/src/abstract/ndax.js +0 -9
  194. package/dist/cjs/js/src/abstract/novadax.js +0 -9
  195. package/dist/cjs/js/src/abstract/oceanex.js +0 -9
  196. package/dist/cjs/js/src/abstract/okcoin.js +0 -9
  197. package/dist/cjs/js/src/abstract/okx.js +0 -9
  198. package/dist/cjs/js/src/abstract/p2b.js +0 -9
  199. package/dist/cjs/js/src/abstract/paymium.js +0 -9
  200. package/dist/cjs/js/src/abstract/phemex.js +0 -9
  201. package/dist/cjs/js/src/abstract/poloniex.js +0 -9
  202. package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
  203. package/dist/cjs/js/src/abstract/probit.js +0 -9
  204. package/dist/cjs/js/src/abstract/timex.js +0 -9
  205. package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
  206. package/dist/cjs/js/src/abstract/upbit.js +0 -9
  207. package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
  208. package/dist/cjs/js/src/abstract/wazirx.js +0 -9
  209. package/dist/cjs/js/src/abstract/whitebit.js +0 -9
  210. package/dist/cjs/js/src/abstract/woo.js +0 -9
  211. package/dist/cjs/js/src/abstract/yobit.js +0 -9
  212. package/dist/cjs/js/src/abstract/zaif.js +0 -9
  213. package/dist/cjs/js/src/abstract/zonda.js +0 -9
  214. package/dist/cjs/js/src/ace.js +0 -1058
  215. package/dist/cjs/js/src/alpaca.js +0 -1125
  216. package/dist/cjs/js/src/ascendex.js +0 -3365
  217. package/dist/cjs/js/src/base/Exchange.js +0 -5260
  218. package/dist/cjs/js/src/base/Precise.js +0 -263
  219. package/dist/cjs/js/src/base/errors.js +0 -299
  220. package/dist/cjs/js/src/base/functions/crypto.js +0 -78
  221. package/dist/cjs/js/src/base/functions/encode.js +0 -44
  222. package/dist/cjs/js/src/base/functions/generic.js +0 -193
  223. package/dist/cjs/js/src/base/functions/misc.js +0 -96
  224. package/dist/cjs/js/src/base/functions/number.js +0 -297
  225. package/dist/cjs/js/src/base/functions/platform.js +0 -28
  226. package/dist/cjs/js/src/base/functions/rsa.js +0 -34
  227. package/dist/cjs/js/src/base/functions/string.js +0 -48
  228. package/dist/cjs/js/src/base/functions/throttle.js +0 -66
  229. package/dist/cjs/js/src/base/functions/time.js +0 -187
  230. package/dist/cjs/js/src/base/functions/totp.js +0 -24
  231. package/dist/cjs/js/src/base/functions/type.js +0 -162
  232. package/dist/cjs/js/src/base/functions.js +0 -157
  233. package/dist/cjs/js/src/base/ws/Cache.js +0 -254
  234. package/dist/cjs/js/src/base/ws/Client.js +0 -299
  235. package/dist/cjs/js/src/base/ws/Future.js +0 -34
  236. package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
  237. package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
  238. package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
  239. package/dist/cjs/js/src/bequant.js +0 -33
  240. package/dist/cjs/js/src/bigone.js +0 -2213
  241. package/dist/cjs/js/src/binance.js +0 -9851
  242. package/dist/cjs/js/src/binancecoinm.js +0 -45
  243. package/dist/cjs/js/src/binanceus.js +0 -92
  244. package/dist/cjs/js/src/binanceusdm.js +0 -58
  245. package/dist/cjs/js/src/bingx.js +0 -3872
  246. package/dist/cjs/js/src/bit2c.js +0 -916
  247. package/dist/cjs/js/src/bitbank.js +0 -1000
  248. package/dist/cjs/js/src/bitbay.js +0 -17
  249. package/dist/cjs/js/src/bitbns.js +0 -1220
  250. package/dist/cjs/js/src/bitcoincom.js +0 -17
  251. package/dist/cjs/js/src/bitfinex.js +0 -1670
  252. package/dist/cjs/js/src/bitfinex2.js +0 -2990
  253. package/dist/cjs/js/src/bitflyer.js +0 -1045
  254. package/dist/cjs/js/src/bitforex.js +0 -852
  255. package/dist/cjs/js/src/bitget.js +0 -8295
  256. package/dist/cjs/js/src/bithumb.js +0 -1090
  257. package/dist/cjs/js/src/bitmart.js +0 -4454
  258. package/dist/cjs/js/src/bitmex.js +0 -2881
  259. package/dist/cjs/js/src/bitopro.js +0 -1724
  260. package/dist/cjs/js/src/bitrue.js +0 -3253
  261. package/dist/cjs/js/src/bitso.js +0 -1753
  262. package/dist/cjs/js/src/bitstamp.js +0 -2188
  263. package/dist/cjs/js/src/bitteam.js +0 -2309
  264. package/dist/cjs/js/src/bitvavo.js +0 -1968
  265. package/dist/cjs/js/src/bl3p.js +0 -447
  266. package/dist/cjs/js/src/blockchaincom.js +0 -1160
  267. package/dist/cjs/js/src/btcalpha.js +0 -929
  268. package/dist/cjs/js/src/btcbox.js +0 -565
  269. package/dist/cjs/js/src/btcmarkets.js +0 -1237
  270. package/dist/cjs/js/src/btcturk.js +0 -929
  271. package/dist/cjs/js/src/bybit.js +0 -7624
  272. package/dist/cjs/js/src/cex.js +0 -1693
  273. package/dist/cjs/js/src/coinbase.js +0 -3424
  274. package/dist/cjs/js/src/coinbasepro.js +0 -1866
  275. package/dist/cjs/js/src/coincheck.js +0 -844
  276. package/dist/cjs/js/src/coinex.js +0 -5417
  277. package/dist/cjs/js/src/coinlist.js +0 -2337
  278. package/dist/cjs/js/src/coinmate.js +0 -989
  279. package/dist/cjs/js/src/coinone.js +0 -1185
  280. package/dist/cjs/js/src/coinsph.js +0 -1933
  281. package/dist/cjs/js/src/coinspot.js +0 -548
  282. package/dist/cjs/js/src/cryptocom.js +0 -3007
  283. package/dist/cjs/js/src/currencycom.js +0 -2015
  284. package/dist/cjs/js/src/delta.js +0 -3262
  285. package/dist/cjs/js/src/deribit.js +0 -3310
  286. package/dist/cjs/js/src/digifinex.js +0 -4307
  287. package/dist/cjs/js/src/exmo.js +0 -2645
  288. package/dist/cjs/js/src/fmfwio.js +0 -34
  289. package/dist/cjs/js/src/gate.js +0 -7077
  290. package/dist/cjs/js/src/gateio.js +0 -16
  291. package/dist/cjs/js/src/gemini.js +0 -1801
  292. package/dist/cjs/js/src/hitbtc.js +0 -3660
  293. package/dist/cjs/js/src/hitbtc3.js +0 -19
  294. package/dist/cjs/js/src/hollaex.js +0 -1882
  295. package/dist/cjs/js/src/htx.js +0 -9174
  296. package/dist/cjs/js/src/huobi.js +0 -16
  297. package/dist/cjs/js/src/huobijp.js +0 -1918
  298. package/dist/cjs/js/src/idex.js +0 -1770
  299. package/dist/cjs/js/src/independentreserve.js +0 -761
  300. package/dist/cjs/js/src/indodax.js +0 -1069
  301. package/dist/cjs/js/src/kraken.js +0 -2891
  302. package/dist/cjs/js/src/krakenfutures.js +0 -2407
  303. package/dist/cjs/js/src/kucoin.js +0 -4494
  304. package/dist/cjs/js/src/kucoinfutures.js +0 -2529
  305. package/dist/cjs/js/src/kuna.js +0 -1949
  306. package/dist/cjs/js/src/latoken.js +0 -1729
  307. package/dist/cjs/js/src/lbank.js +0 -2851
  308. package/dist/cjs/js/src/luno.js +0 -1044
  309. package/dist/cjs/js/src/lykke.js +0 -1303
  310. package/dist/cjs/js/src/mercado.js +0 -897
  311. package/dist/cjs/js/src/mexc.js +0 -5407
  312. package/dist/cjs/js/src/ndax.js +0 -2450
  313. package/dist/cjs/js/src/novadax.js +0 -1556
  314. package/dist/cjs/js/src/oceanex.js +0 -964
  315. package/dist/cjs/js/src/okcoin.js +0 -3115
  316. package/dist/cjs/js/src/okx.js +0 -7331
  317. package/dist/cjs/js/src/p2b.js +0 -1243
  318. package/dist/cjs/js/src/paymium.js +0 -597
  319. package/dist/cjs/js/src/phemex.js +0 -4725
  320. package/dist/cjs/js/src/poloniex.js +0 -2356
  321. package/dist/cjs/js/src/poloniexfutures.js +0 -1794
  322. package/dist/cjs/js/src/pro/alpaca.js +0 -714
  323. package/dist/cjs/js/src/pro/ascendex.js +0 -957
  324. package/dist/cjs/js/src/pro/bequant.js +0 -33
  325. package/dist/cjs/js/src/pro/binance.js +0 -2796
  326. package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
  327. package/dist/cjs/js/src/pro/binanceus.js +0 -51
  328. package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
  329. package/dist/cjs/js/src/pro/bingx.js +0 -944
  330. package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
  331. package/dist/cjs/js/src/pro/bitfinex.js +0 -672
  332. package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
  333. package/dist/cjs/js/src/pro/bitget.js +0 -1733
  334. package/dist/cjs/js/src/pro/bitmart.js +0 -1486
  335. package/dist/cjs/js/src/pro/bitmex.js +0 -1576
  336. package/dist/cjs/js/src/pro/bitopro.js +0 -327
  337. package/dist/cjs/js/src/pro/bitrue.js +0 -462
  338. package/dist/cjs/js/src/pro/bitstamp.js +0 -547
  339. package/dist/cjs/js/src/pro/bitvavo.js +0 -704
  340. package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
  341. package/dist/cjs/js/src/pro/bybit.js +0 -1843
  342. package/dist/cjs/js/src/pro/cex.js +0 -1510
  343. package/dist/cjs/js/src/pro/coinbase.js +0 -561
  344. package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
  345. package/dist/cjs/js/src/pro/coinex.js +0 -1095
  346. package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
  347. package/dist/cjs/js/src/pro/currencycom.js +0 -563
  348. package/dist/cjs/js/src/pro/deribit.js +0 -825
  349. package/dist/cjs/js/src/pro/exmo.js +0 -658
  350. package/dist/cjs/js/src/pro/gate.js +0 -1316
  351. package/dist/cjs/js/src/pro/gateio.js +0 -16
  352. package/dist/cjs/js/src/pro/gemini.js +0 -649
  353. package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
  354. package/dist/cjs/js/src/pro/hollaex.js +0 -597
  355. package/dist/cjs/js/src/pro/htx.js +0 -2388
  356. package/dist/cjs/js/src/pro/huobi.js +0 -16
  357. package/dist/cjs/js/src/pro/huobijp.js +0 -606
  358. package/dist/cjs/js/src/pro/idex.js +0 -714
  359. package/dist/cjs/js/src/pro/independentreserve.js +0 -280
  360. package/dist/cjs/js/src/pro/kraken.js +0 -1364
  361. package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
  362. package/dist/cjs/js/src/pro/kucoin.js +0 -1062
  363. package/dist/cjs/js/src/pro/kucoinfutures.js +0 -989
  364. package/dist/cjs/js/src/pro/luno.js +0 -322
  365. package/dist/cjs/js/src/pro/mexc.js +0 -1170
  366. package/dist/cjs/js/src/pro/ndax.js +0 -545
  367. package/dist/cjs/js/src/pro/okcoin.js +0 -760
  368. package/dist/cjs/js/src/pro/okx.js +0 -1608
  369. package/dist/cjs/js/src/pro/phemex.js +0 -1511
  370. package/dist/cjs/js/src/pro/poloniex.js +0 -1253
  371. package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1022
  372. package/dist/cjs/js/src/pro/probit.js +0 -586
  373. package/dist/cjs/js/src/pro/upbit.js +0 -234
  374. package/dist/cjs/js/src/pro/wazirx.js +0 -776
  375. package/dist/cjs/js/src/pro/whitebit.js +0 -927
  376. package/dist/cjs/js/src/pro/woo.js +0 -895
  377. package/dist/cjs/js/src/probit.js +0 -1867
  378. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
  379. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
  380. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
  381. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
  382. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
  383. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
  384. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
  385. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
  386. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
  387. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
  388. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
  389. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
  390. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
  391. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
  392. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
  393. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
  394. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
  395. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
  396. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
  397. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
  398. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
  399. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
  400. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
  401. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
  402. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
  403. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
  404. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
  405. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
  406. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
  407. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
  408. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
  409. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
  410. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
  411. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
  412. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
  413. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
  414. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
  415. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
  416. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
  417. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
  418. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
  419. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
  420. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
  421. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
  422. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
  423. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
  424. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
  425. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
  426. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
  427. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
  428. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
  429. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
  430. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
  431. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
  432. package/dist/cjs/js/src/timex.js +0 -1562
  433. package/dist/cjs/js/src/tokocrypto.js +0 -2542
  434. package/dist/cjs/js/src/upbit.js +0 -1844
  435. package/dist/cjs/js/src/wavesexchange.js +0 -2607
  436. package/dist/cjs/js/src/wazirx.js +0 -953
  437. package/dist/cjs/js/src/whitebit.js +0 -2310
  438. package/dist/cjs/js/src/woo.js +0 -2769
  439. package/dist/cjs/js/src/yobit.js +0 -1314
  440. package/dist/cjs/js/src/zaif.js +0 -736
  441. package/dist/cjs/js/src/zonda.js +0 -1883
  442. package/dist/cjs/src/abstract/bitpanda.js +0 -9
  443. package/test.ts +0 -0
  444. /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
  445. /package/dist/cjs/{js/src → src}/pro/coincheck.js +0 -0
  446. /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
@@ -22,7 +22,7 @@ class bingx extends bingx$1 {
22
22
  'has': {
23
23
  'CORS': undefined,
24
24
  'spot': true,
25
- 'margin': true,
25
+ 'margin': false,
26
26
  'swap': true,
27
27
  'future': false,
28
28
  'option': false,
@@ -36,6 +36,12 @@ class bingx extends bingx$1 {
36
36
  'createMarketSellOrderWithCost': true,
37
37
  'createOrder': true,
38
38
  'createOrders': true,
39
+ 'createOrderWithTakeProfitAndStopLoss': true,
40
+ 'createStopLossOrder': true,
41
+ 'createTakeProfitOrder': true,
42
+ 'createTrailingAmountOrder': true,
43
+ 'createTrailingPercentOrder': true,
44
+ 'createTriggerOrder': true,
39
45
  'fetchBalance': true,
40
46
  'fetchClosedOrders': true,
41
47
  'fetchCurrencies': true,
@@ -45,6 +51,7 @@ class bingx extends bingx$1 {
45
51
  'fetchDepositWithdrawFees': true,
46
52
  'fetchFundingRate': true,
47
53
  'fetchFundingRateHistory': true,
54
+ 'fetchFundingRates': true,
48
55
  'fetchLeverage': true,
49
56
  'fetchLiquidations': false,
50
57
  'fetchMarkets': true,
@@ -79,6 +86,9 @@ class bingx extends bingx$1 {
79
86
  'account': 'https://open-api.{hostname}/openApi',
80
87
  'copyTrading': 'https://open-api.{hostname}/openApi',
81
88
  },
89
+ 'test': {
90
+ 'swap': 'https://open-api-vst.{hostname}/openApi', // only swap is really "test" but since the API keys are the same, we want to keep all the functionalities when the user enables the sandboxmode
91
+ },
82
92
  'www': 'https://bingx.com/',
83
93
  'doc': 'https://bingx-api.github.io/docs/',
84
94
  'referral': 'https://bingx.com/invite/OHETOM',
@@ -117,6 +127,7 @@ class bingx extends bingx$1 {
117
127
  'trade/query': 3,
118
128
  'trade/openOrders': 3,
119
129
  'trade/historyOrders': 3,
130
+ 'trade/myTrades': 3,
120
131
  'user/commissionRate': 3,
121
132
  'account/balance': 3,
122
133
  },
@@ -176,6 +187,7 @@ class bingx extends bingx$1 {
176
187
  'user/positions': 3,
177
188
  'user/income': 3,
178
189
  'trade/openOrders': 3,
190
+ 'trade/openOrder': 3,
179
191
  'trade/order': 3,
180
192
  'trade/marginType': 3,
181
193
  'trade/leverage': 3,
@@ -353,7 +365,9 @@ class bingx extends bingx$1 {
353
365
  '80016': errors.OrderNotFound,
354
366
  '80017': errors.OrderNotFound,
355
367
  '100414': errors.AccountSuspended,
356
- '100437': errors.BadRequest, // {"code":100437,"msg":"The withdrawal amount is lower than the minimum limit, please re-enter.","timestamp":1689258588845}
368
+ '100419': errors.PermissionDenied,
369
+ '100437': errors.BadRequest,
370
+ '101204': errors.InsufficientFunds, // bingx {"code":101204,"msg":"","data":{}}
357
371
  },
358
372
  'broad': {},
359
373
  },
@@ -409,6 +423,10 @@ class bingx extends bingx$1 {
409
423
  if (!this.checkRequiredCredentials(false)) {
410
424
  return undefined;
411
425
  }
426
+ const isSandbox = this.safeValue(this.options, 'sandboxMode', false);
427
+ if (isSandbox) {
428
+ return undefined;
429
+ }
412
430
  const response = await this.walletsV1PrivateGetCapitalConfigGetall(params);
413
431
  //
414
432
  // {
@@ -648,7 +666,11 @@ class bingx extends bingx$1 {
648
666
  * @param {object} [params] extra parameters specific to the exchange API endpoint
649
667
  * @returns {object[]} an array of objects representing market data
650
668
  */
651
- const requests = [this.fetchSpotMarkets(params), this.fetchSwapMarkets(params)];
669
+ const requests = [this.fetchSwapMarkets(params)];
670
+ const isSandbox = this.safeValue(this.options, 'sandboxMode', false);
671
+ if (!isSandbox) {
672
+ requests.push(this.fetchSpotMarkets(params)); // sandbox is swap only
673
+ }
652
674
  const promises = await Promise.all(requests);
653
675
  const spotMarkets = this.safeValue(promises, 0, []);
654
676
  const swapMarkets = this.safeValue(promises, 1, []);
@@ -843,6 +865,22 @@ class bingx extends bingx$1 {
843
865
  // "buyerMaker": false
844
866
  // }
845
867
  //
868
+ // spot
869
+ // fetchMyTrades
870
+ // {
871
+ // "symbol": "LTC-USDT",
872
+ // "id": 36237072,
873
+ // "orderId": 1674069326895775744,
874
+ // "price": "85.891",
875
+ // "qty": "0.0582",
876
+ // "quoteQty": "4.9988562000000005",
877
+ // "commission": -0.00005820000000000001,
878
+ // "commissionAsset": "LTC",
879
+ // "time": 1687964205000,
880
+ // "isBuyer": true,
881
+ // "isMaker": false
882
+ // }
883
+ //
846
884
  // swap
847
885
  // fetchTrades
848
886
  //
@@ -905,7 +943,7 @@ class bingx extends bingx$1 {
905
943
  }
906
944
  const cost = this.safeString(trade, 'quoteQty');
907
945
  const type = (cost === undefined) ? 'spot' : 'swap';
908
- const currencyId = this.safeString2(trade, 'currency', 'N');
946
+ const currencyId = this.safeStringN(trade, ['currency', 'N', 'commissionAsset']);
909
947
  const currencyCode = this.safeCurrencyCode(currencyId);
910
948
  const m = this.safeValue(trade, 'm');
911
949
  const marketId = this.safeString(trade, 's');
@@ -921,6 +959,14 @@ class bingx extends bingx$1 {
921
959
  takeOrMaker = 'taker';
922
960
  }
923
961
  }
962
+ const isBuyer = this.safeValue(trade, 'isBuyer');
963
+ if (isBuyer !== undefined) {
964
+ side = isBuyer ? 'buy' : 'sell';
965
+ }
966
+ const isMaker = this.safeValue(trade, 'isMaker');
967
+ if (isMaker !== undefined) {
968
+ takeOrMaker = isMaker ? 'maker' : 'taker';
969
+ }
924
970
  return this.safeTrade({
925
971
  'id': this.safeStringN(trade, ['id', 't']),
926
972
  'info': trade,
@@ -1066,6 +1112,31 @@ class bingx extends bingx$1 {
1066
1112
  const data = this.safeValue(response, 'data', {});
1067
1113
  return this.parseFundingRate(data, market);
1068
1114
  }
1115
+ async fetchFundingRates(symbols = undefined, params = {}) {
1116
+ /**
1117
+ * @method
1118
+ * @name bingx#fetchFundingRate
1119
+ * @description fetch the current funding rate
1120
+ * @see https://bingx-api.github.io/docs/#/swapV2/market-api.html#Current%20Funding%20Rate
1121
+ * @param {string[]} [symbols] list of unified market symbols
1122
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1123
+ * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
1124
+ */
1125
+ await this.loadMarkets();
1126
+ symbols = this.marketSymbols(symbols, 'swap', true);
1127
+ const response = await this.swapV2PublicGetQuotePremiumIndex(this.extend(params));
1128
+ const data = this.safeValue(response, 'data', []);
1129
+ const filteredResponse = [];
1130
+ for (let i = 0; i < data.length; i++) {
1131
+ const item = data[i];
1132
+ const marketId = this.safeString(item, 'symbol');
1133
+ const market = this.safeMarket(marketId, undefined, undefined, 'swap');
1134
+ if ((symbols === undefined) || this.inArray(market['symbol'], symbols)) {
1135
+ filteredResponse.push(this.parseFundingRate(item, market));
1136
+ }
1137
+ }
1138
+ return filteredResponse;
1139
+ }
1069
1140
  parseFundingRate(contract, market = undefined) {
1070
1141
  //
1071
1142
  // {
@@ -2417,6 +2488,7 @@ class bingx extends bingx$1 {
2417
2488
  'symbol': market['id'],
2418
2489
  };
2419
2490
  const clientOrderIds = this.safeValue(params, 'clientOrderIds');
2491
+ params = this.omit(params, 'clientOrderIds');
2420
2492
  let idsToParse = ids;
2421
2493
  const areClientOrderIds = (clientOrderIds !== undefined);
2422
2494
  if (areClientOrderIds) {
@@ -2435,8 +2507,12 @@ class bingx extends bingx$1 {
2435
2507
  response = await this.spotV1PrivatePostTradeCancelOrders(this.extend(request, params));
2436
2508
  }
2437
2509
  else {
2438
- const swapReqKey = areClientOrderIds ? 'ClientOrderIDList' : 'orderIdList';
2439
- request[swapReqKey] = parsedIds;
2510
+ if (areClientOrderIds) {
2511
+ request['clientOrderIDList'] = this.json(parsedIds);
2512
+ }
2513
+ else {
2514
+ request['orderIdList'] = parsedIds;
2515
+ }
2440
2516
  response = await this.swapV2PrivateDeleteTradeBatchOrders(this.extend(request, params));
2441
2517
  }
2442
2518
  //
@@ -3050,6 +3126,21 @@ class bingx extends bingx$1 {
3050
3126
  // "txId": "0xb5ef8c13b968a406cc62a93a8bd80f9e9a906ef1b3fcf20a2e48573c17659268"
3051
3127
  // }
3052
3128
  //
3129
+ // withdraw
3130
+ //
3131
+ // {
3132
+ // "code":0,
3133
+ // "timestamp":1705274263621,
3134
+ // "data":{
3135
+ // "id":"1264246141278773252"
3136
+ // }
3137
+ // }
3138
+ //
3139
+ // parse withdraw-type output first...
3140
+ //
3141
+ const data = this.safeValue(transaction, 'data');
3142
+ const dataId = (data === undefined) ? undefined : this.safeString(data, 'id');
3143
+ const id = this.safeString(transaction, 'id', dataId);
3053
3144
  const address = this.safeString(transaction, 'address');
3054
3145
  const tag = this.safeString(transaction, 'addressTag');
3055
3146
  let timestamp = this.safeInteger(transaction, 'insertTime');
@@ -3070,7 +3161,7 @@ class bingx extends bingx$1 {
3070
3161
  const type = (rawType === '0') ? 'deposit' : 'withdrawal';
3071
3162
  return {
3072
3163
  'info': transaction,
3073
- 'id': this.safeString(transaction, 'id'),
3164
+ 'id': id,
3074
3165
  'txid': this.safeString(transaction, 'txId'),
3075
3166
  'type': type,
3076
3167
  'currency': code,
@@ -3250,57 +3341,101 @@ class bingx extends bingx$1 {
3250
3341
  * @method
3251
3342
  * @name bingx#fetchMyTrades
3252
3343
  * @description fetch all trades made by the user
3344
+ * @see https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Order%20History
3253
3345
  * @see https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Query%20historical%20transaction%20orders
3254
3346
  * @param {string} [symbol] unified market symbol
3255
3347
  * @param {int} [since] the earliest time in ms to fetch trades for
3256
3348
  * @param {int} [limit] the maximum number of trades structures to retrieve
3257
3349
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3350
+ * @param {int} [params.until] timestamp in ms for the ending date filter, default is undefined
3258
3351
  * @param {string} params.trandingUnit COIN (directly represent assets such as BTC and ETH) or CONT (represents the number of contract sheets)
3259
3352
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
3260
3353
  */
3261
3354
  if (symbol === undefined) {
3262
3355
  throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
3263
3356
  }
3264
- if (since === undefined) {
3265
- throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a since argument');
3266
- }
3267
- const tradingUnit = this.safeStringUpper(params, 'tradingUnit', 'CONT');
3268
3357
  await this.loadMarkets();
3269
3358
  const market = this.market(symbol);
3270
- if (market['spot']) {
3271
- throw new errors.BadSymbol(this.id + ' fetchMyTrades() supports swap contracts only');
3272
- }
3359
+ const now = this.milliseconds();
3360
+ let response = undefined;
3273
3361
  const request = {
3274
3362
  'symbol': market['id'],
3275
- 'tradingUnit': tradingUnit,
3276
- 'startTs': since,
3277
- 'endTs': this.nonce(),
3278
3363
  };
3279
- const query = this.omit(params, 'tradingUnit');
3280
- const response = await this.swapV2PrivateGetTradeAllFillOrders(this.extend(request, query));
3281
- //
3282
- // {
3283
- // "code": "0",
3284
- // "msg": '',
3285
- // "data": { fill_orders: [
3286
- // {
3287
- // "volume": "0.1",
3288
- // "price": "106.75",
3289
- // "amount": "10.6750",
3290
- // "commission": "-0.0053",
3291
- // "currency": "USDT",
3292
- // "orderId": "1676213270274379776",
3293
- // "liquidatedPrice": "0.00",
3294
- // "liquidatedMarginRatio": "0.00",
3295
- // "filledTime": "2023-07-04T20:56:01.000+0800"
3296
- // }
3297
- // ]
3298
- // }
3299
- // }
3300
- //
3301
- const data = this.safeValue(response, 'data', []);
3302
- const fillOrders = this.safeValue(data, 'fill_orders', []);
3303
- return this.parseTrades(fillOrders, market, since, limit, query);
3364
+ if (since !== undefined) {
3365
+ const startTimeReq = market['spot'] ? 'startTime' : 'startTs';
3366
+ request[startTimeReq] = since;
3367
+ }
3368
+ else if (market['swap']) {
3369
+ request['startTs'] = now - 7776000000; // 90 days
3370
+ }
3371
+ const until = this.safeInteger(params, 'until');
3372
+ params = this.omit(params, 'until');
3373
+ if (until !== undefined) {
3374
+ const endTimeReq = market['spot'] ? 'endTime' : 'endTs';
3375
+ request[endTimeReq] = until;
3376
+ }
3377
+ else if (market['swap']) {
3378
+ request['endTs'] = now;
3379
+ }
3380
+ let fills = undefined;
3381
+ if (market['spot']) {
3382
+ response = await this.spotV1PrivateGetTradeMyTrades(this.extend(request, params));
3383
+ const data = this.safeValue(response, 'data', []);
3384
+ fills = this.safeValue(data, 'fills', []);
3385
+ //
3386
+ // {
3387
+ // "code": 0,
3388
+ // "msg": "",
3389
+ // "debugMsg": "",
3390
+ // "data": {
3391
+ // "fills": [
3392
+ // {
3393
+ // "symbol": "LTC-USDT",
3394
+ // "id": 36237072,
3395
+ // "orderId": 1674069326895775744,
3396
+ // "price": "85.891",
3397
+ // "qty": "0.0582",
3398
+ // "quoteQty": "4.9988562000000005",
3399
+ // "commission": -0.00005820000000000001,
3400
+ // "commissionAsset": "LTC",
3401
+ // "time": 1687964205000,
3402
+ // "isBuyer": true,
3403
+ // "isMaker": false
3404
+ // }
3405
+ // ]
3406
+ // }
3407
+ // }
3408
+ //
3409
+ }
3410
+ else {
3411
+ const tradingUnit = this.safeStringUpper(params, 'tradingUnit', 'CONT');
3412
+ params = this.omit(params, 'tradingUnit');
3413
+ request['tradingUnit'] = tradingUnit;
3414
+ response = await this.swapV2PrivateGetTradeAllFillOrders(this.extend(request, params));
3415
+ const data = this.safeValue(response, 'data', []);
3416
+ fills = this.safeValue(data, 'fill_orders', []);
3417
+ //
3418
+ // {
3419
+ // "code": "0",
3420
+ // "msg": '',
3421
+ // "data": { fill_orders: [
3422
+ // {
3423
+ // "volume": "0.1",
3424
+ // "price": "106.75",
3425
+ // "amount": "10.6750",
3426
+ // "commission": "-0.0053",
3427
+ // "currency": "USDT",
3428
+ // "orderId": "1676213270274379776",
3429
+ // "liquidatedPrice": "0.00",
3430
+ // "liquidatedMarginRatio": "0.00",
3431
+ // "filledTime": "2023-07-04T20:56:01.000+0800"
3432
+ // }
3433
+ // ]
3434
+ // }
3435
+ // }
3436
+ //
3437
+ }
3438
+ return this.parseTrades(fills, market, since, limit, params);
3304
3439
  }
3305
3440
  parseDepositWithdrawFee(fee, currency = undefined) {
3306
3441
  //
@@ -3660,6 +3795,10 @@ class bingx extends bingx$1 {
3660
3795
  const type = section[0];
3661
3796
  const version = section[1];
3662
3797
  const access = section[2];
3798
+ const isSandbox = this.safeValue(this.options, 'sandboxMode', false);
3799
+ if (isSandbox && (type !== 'swap')) {
3800
+ throw new errors.NotSupported(this.id + ' does not have a testnet/sandbox URL for ' + type + ' endpoints');
3801
+ }
3663
3802
  let url = this.implodeHostname(this.urls['api'][type]);
3664
3803
  if (type === 'spot' && version === 'v3') {
3665
3804
  url += '/api';
@@ -3702,6 +3841,10 @@ class bingx extends bingx$1 {
3702
3841
  nonce() {
3703
3842
  return this.milliseconds();
3704
3843
  }
3844
+ setSandboxMode(enable) {
3845
+ super.setSandboxMode(enable);
3846
+ this.options['sandboxMode'] = enable;
3847
+ }
3705
3848
  handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
3706
3849
  if (response === undefined) {
3707
3850
  return undefined; // fallback to default error handler
@@ -789,12 +789,11 @@ class bitfinex extends bitfinex$1 {
789
789
  // "message": "0.0001 Bitcoin transfered from Margin to Exchange"
790
790
  // }
791
791
  //
792
- const timestamp = this.milliseconds();
793
792
  return {
794
793
  'info': transfer,
795
794
  'id': undefined,
796
- 'timestamp': timestamp,
797
- 'datetime': this.iso8601(timestamp),
795
+ 'timestamp': undefined,
796
+ 'datetime': undefined,
798
797
  'currency': this.safeCurrencyCode(undefined, currency),
799
798
  'amount': undefined,
800
799
  'fromAccount': undefined,
@@ -42,7 +42,12 @@ class bitget extends bitget$1 {
42
42
  'createMarketSellOrderWithCost': false,
43
43
  'createOrder': true,
44
44
  'createOrders': true,
45
+ 'createOrderWithTakeProfitAndStopLoss': true,
45
46
  'createReduceOnlyOrder': false,
47
+ 'createStopLossOrder': true,
48
+ 'createTakeProfitOrder': true,
49
+ 'createTrailingPercentOrder': true,
50
+ 'createTriggerOrder': true,
46
51
  'editOrder': true,
47
52
  'fetchAccounts': false,
48
53
  'fetchBalance': true,
@@ -50,6 +55,7 @@ class bitget extends bitget$1 {
50
55
  'fetchBorrowRateHistories': false,
51
56
  'fetchBorrowRateHistory': false,
52
57
  'fetchCanceledOrders': true,
58
+ 'fetchCanceledAndClosedOrders': true,
53
59
  'fetchClosedOrders': true,
54
60
  'fetchCrossBorrowRate': true,
55
61
  'fetchCrossBorrowRates': false,
@@ -2956,7 +2962,12 @@ class bitget extends bitget$1 {
2956
2962
  'symbol': market['id'],
2957
2963
  };
2958
2964
  if (limit !== undefined) {
2959
- request['limit'] = limit;
2965
+ if (market['contract']) {
2966
+ request['limit'] = Math.min(limit, 1000);
2967
+ }
2968
+ else {
2969
+ request['limit'] = limit;
2970
+ }
2960
2971
  }
2961
2972
  const options = this.safeValue(this.options, 'fetchTrades', {});
2962
2973
  let response = undefined;
@@ -3268,31 +3279,45 @@ class bitget extends bitget$1 {
3268
3279
  const marketType = market['spot'] ? 'spot' : 'swap';
3269
3280
  const timeframes = this.options['timeframes'][marketType];
3270
3281
  const selectedTimeframe = this.safeString(timeframes, timeframe, timeframe);
3271
- let request = {
3282
+ const request = {
3272
3283
  'symbol': market['id'],
3273
3284
  'granularity': selectedTimeframe,
3274
3285
  };
3275
- [request, params] = this.handleUntilOption('endTime', request, params);
3276
- if (since !== undefined) {
3277
- request['startTime'] = limit;
3278
- }
3286
+ const until = this.safeInteger2(params, 'until', 'till');
3287
+ params = this.omit(params, ['until', 'till']);
3279
3288
  if (limit !== undefined) {
3280
3289
  request['limit'] = limit;
3281
3290
  }
3282
3291
  const options = this.safeValue(this.options, 'fetchOHLCV', {});
3292
+ const spotOptions = this.safeValue(options, 'spot', {});
3293
+ const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketCandles');
3294
+ const method = this.safeString(params, 'method', defaultSpotMethod);
3295
+ params = this.omit(params, 'method');
3296
+ if (method !== 'publicSpotGetV2SpotMarketHistoryCandles') {
3297
+ if (since !== undefined) {
3298
+ request['startTime'] = since;
3299
+ }
3300
+ if (until !== undefined) {
3301
+ request['endTime'] = until;
3302
+ }
3303
+ }
3283
3304
  let response = undefined;
3284
3305
  if (market['spot']) {
3285
- const spotOptions = this.safeValue(options, 'spot', {});
3286
- const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketCandles');
3287
- const method = this.safeString(params, 'method', defaultSpotMethod);
3288
- params = this.omit(params, 'method');
3289
3306
  if (method === 'publicSpotGetV2SpotMarketCandles') {
3290
3307
  response = await this.publicSpotGetV2SpotMarketCandles(this.extend(request, params));
3291
3308
  }
3292
3309
  else if (method === 'publicSpotGetV2SpotMarketHistoryCandles') {
3293
- const until = this.safeInteger2(params, 'until', 'till');
3294
- params = this.omit(params, ['until', 'till']);
3295
- if (until === undefined) {
3310
+ if (since !== undefined) {
3311
+ if (limit === undefined) {
3312
+ limit = 100; // exchange default
3313
+ }
3314
+ const duration = this.parseTimeframe(timeframe) * 1000;
3315
+ request['endTime'] = this.sum(since, duration * limit);
3316
+ }
3317
+ else if (until !== undefined) {
3318
+ request['endTime'] = until;
3319
+ }
3320
+ else {
3296
3321
  request['endTime'] = this.milliseconds();
3297
3322
  }
3298
3323
  response = await this.publicSpotGetV2SpotMarketHistoryCandles(this.extend(request, params));
@@ -5370,20 +5395,8 @@ class bitget extends bitget$1 {
5370
5395
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5371
5396
  */
5372
5397
  await this.loadMarkets();
5373
- let market = undefined;
5374
- if (symbol !== undefined) {
5375
- market = this.market(symbol);
5376
- }
5377
- const response = await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
5378
- const result = [];
5379
- for (let i = 0; i < response.length; i++) {
5380
- const entry = response[i];
5381
- const status = this.parseOrderStatus(this.safeStringN(entry, ['state', 'status', 'planStatus']));
5382
- if (status === 'closed') {
5383
- result.push(entry);
5384
- }
5385
- }
5386
- return this.parseOrders(result, market, since, limit);
5398
+ const orders = await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
5399
+ return this.filterBy(orders, 'status', 'closed');
5387
5400
  }
5388
5401
  async fetchCanceledOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
5389
5402
  /**
@@ -5408,22 +5421,26 @@ class bitget extends bitget$1 {
5408
5421
  * @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5409
5422
  */
5410
5423
  await this.loadMarkets();
5411
- let market = undefined;
5412
- if (symbol !== undefined) {
5413
- market = this.market(symbol);
5414
- }
5415
- const response = await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
5416
- const result = [];
5417
- for (let i = 0; i < response.length; i++) {
5418
- const entry = response[i];
5419
- const status = this.parseOrderStatus(this.safeStringN(entry, ['state', 'status', 'planStatus']));
5420
- if (status === 'canceled') {
5421
- result.push(entry);
5422
- }
5423
- }
5424
- return this.parseOrders(result, market, since, limit);
5424
+ const orders = await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
5425
+ return this.filterBy(orders, 'status', 'canceled');
5425
5426
  }
5426
5427
  async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
5428
+ /**
5429
+ * @method
5430
+ * @name bitget#fetchCanceledAndClosedOrders
5431
+ * @see https://www.bitget.com/api-doc/spot/trade/Get-History-Orders
5432
+ * @see https://www.bitget.com/api-doc/spot/plan/Get-History-Plan-Order
5433
+ * @see https://www.bitget.com/api-doc/contract/trade/Get-Orders-History
5434
+ * @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
5435
+ * @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
5436
+ * @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
5437
+ * @description fetches information on multiple canceled and closed orders made by the user
5438
+ * @param {string} symbol unified market symbol of the market orders were made in
5439
+ * @param {int} [since] the earliest time in ms to fetch orders for
5440
+ * @param {int} [limit] the maximum number of order structures to retrieve
5441
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
5442
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5443
+ */
5427
5444
  await this.loadMarkets();
5428
5445
  const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
5429
5446
  let market = undefined;
@@ -5708,16 +5725,17 @@ class bitget extends bitget$1 {
5708
5725
  const data = this.safeValue(response, 'data', {});
5709
5726
  if (marketType === 'spot') {
5710
5727
  if ((marginMode !== undefined) || stop) {
5711
- return this.safeValue(data, 'orderList', []);
5728
+ return this.parseOrders(this.safeValue(data, 'orderList', []), market, since, limit);
5712
5729
  }
5713
5730
  }
5714
5731
  else {
5715
- return this.safeValue(data, 'entrustedList', []);
5732
+ return this.parseOrders(this.safeValue(data, 'entrustedList', []), market, since, limit);
5716
5733
  }
5717
5734
  if (typeof response === 'string') {
5718
5735
  response = JSON.parse(response);
5719
5736
  }
5720
- return this.safeValue(response, 'data', []);
5737
+ const orders = this.safeValue(response, 'data', []);
5738
+ return this.parseOrders(orders, market, since, limit);
5721
5739
  }
5722
5740
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
5723
5741
  /**
@@ -6200,6 +6218,7 @@ class bitget extends bitget$1 {
6200
6218
  * @see https://www.bitget.com/api-doc/contract/position/Get-History-Position
6201
6219
  * @param {string[]|undefined} symbols list of unified market symbols
6202
6220
  * @param {object} [params] extra parameters specific to the exchange API endpoint
6221
+ * @param {string} [params.marginCoin] the settle currency of the positions, needs to match the productType
6203
6222
  * @param {string} [params.productType] 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
6204
6223
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
6205
6224
  * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
@@ -6232,10 +6251,28 @@ class bitget extends bitget$1 {
6232
6251
  let response = undefined;
6233
6252
  let isHistory = false;
6234
6253
  if (method === 'privateMixGetV2MixPositionAllPosition') {
6235
- if (symbols === undefined) {
6236
- throw new errors.ArgumentsRequired(this.id + ' fetchPositions() requires a symbols argument');
6254
+ let marginCoin = this.safeString(params, 'marginCoin', 'USDT');
6255
+ if (symbols !== undefined) {
6256
+ marginCoin = market['settleId'];
6237
6257
  }
6238
- request['marginCoin'] = market['settleId'];
6258
+ else if (productType === 'USDT-FUTURES') {
6259
+ marginCoin = 'USDT';
6260
+ }
6261
+ else if (productType === 'USDC-FUTURES') {
6262
+ marginCoin = 'USDC';
6263
+ }
6264
+ else if (productType === 'SUSDT-FUTURES') {
6265
+ marginCoin = 'SUSDT';
6266
+ }
6267
+ else if (productType === 'SUSDC-FUTURES') {
6268
+ marginCoin = 'SUSDC';
6269
+ }
6270
+ else if ((productType === 'SCOIN-FUTURES') || (productType === 'COIN-FUTURES')) {
6271
+ if (marginCoin === undefined) {
6272
+ throw new errors.ArgumentsRequired(this.id + ' fetchPositions() requires a marginCoin parameter that matches the productType');
6273
+ }
6274
+ }
6275
+ request['marginCoin'] = marginCoin;
6239
6276
  response = await this.privateMixGetV2MixPositionAllPosition(this.extend(request, params));
6240
6277
  }
6241
6278
  else {
@@ -44,6 +44,7 @@ class bitmart extends bitmart$1 {
44
44
  'createStopLimitOrder': false,
45
45
  'createStopMarketOrder': false,
46
46
  'createStopOrder': false,
47
+ 'createTrailingPercentOrder': true,
47
48
  'fetchBalance': true,
48
49
  'fetchBorrowInterest': true,
49
50
  'fetchBorrowRateHistories': false,
@@ -262,8 +263,8 @@ class bitmart extends bitmart$1 {
262
263
  'trading': {
263
264
  'tierBased': true,
264
265
  'percentage': true,
265
- 'taker': this.parseNumber('0.0025'),
266
- 'maker': this.parseNumber('0.0025'),
266
+ 'taker': this.parseNumber('0.0040'),
267
+ 'maker': this.parseNumber('0.0035'),
267
268
  'tiers': {
268
269
  'taker': [
269
270
  [this.parseNumber('0'), this.parseNumber('0.0020')],
@@ -3512,14 +3513,13 @@ class bitmart extends bitmart$1 {
3512
3513
  // "repay_id": "2afcc16d99bd4707818c5a355dc89bed",
3513
3514
  // }
3514
3515
  //
3515
- const timestamp = this.milliseconds();
3516
3516
  return {
3517
3517
  'id': this.safeString2(info, 'borrow_id', 'repay_id'),
3518
3518
  'currency': this.safeCurrencyCode(undefined, currency),
3519
3519
  'amount': undefined,
3520
3520
  'symbol': undefined,
3521
- 'timestamp': timestamp,
3522
- 'datetime': this.iso8601(timestamp),
3521
+ 'timestamp': undefined,
3522
+ 'datetime': undefined,
3523
3523
  'info': info,
3524
3524
  };
3525
3525
  }