ccxt 4.4.49 → 4.4.53

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 (158) hide show
  1. package/README.md +6 -3
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/alpaca.js +65 -2
  5. package/dist/cjs/src/base/Exchange.js +112 -3
  6. package/dist/cjs/src/binance.js +42 -19
  7. package/dist/cjs/src/bitfinex1.js +22 -22
  8. package/dist/cjs/src/blofin.js +6 -2
  9. package/dist/cjs/src/bybit.js +2 -2
  10. package/dist/cjs/src/coinex.js +5 -5
  11. package/dist/cjs/src/coinmetro.js +21 -4
  12. package/dist/cjs/src/defx.js +1 -1
  13. package/dist/cjs/src/deribit.js +23 -4
  14. package/dist/cjs/src/ellipx.js +1 -0
  15. package/dist/cjs/src/gate.js +2 -2
  16. package/dist/cjs/src/hollaex.js +15 -20
  17. package/dist/cjs/src/htx.js +6 -4
  18. package/dist/cjs/src/hyperliquid.js +4 -4
  19. package/dist/cjs/src/krakenfutures.js +1 -1
  20. package/dist/cjs/src/kucoin.js +52 -74
  21. package/dist/cjs/src/kuna.js +1 -1
  22. package/dist/cjs/src/mexc.js +29 -8
  23. package/dist/cjs/src/okcoin.js +13 -5
  24. package/dist/cjs/src/okx.js +1 -1
  25. package/dist/cjs/src/onetrading.js +1 -1
  26. package/dist/cjs/src/paradex.js +2 -2
  27. package/dist/cjs/src/paymium.js +42 -0
  28. package/dist/cjs/src/pro/binance.js +2 -0
  29. package/dist/cjs/src/pro/bitfinex1.js +4 -4
  30. package/dist/cjs/src/pro/bitvavo.js +1 -1
  31. package/dist/cjs/src/pro/blofin.js +9 -1
  32. package/dist/cjs/src/pro/bybit.js +1 -1
  33. package/dist/cjs/src/pro/coincatch.js +2 -2
  34. package/dist/cjs/src/pro/coinex.js +4 -1
  35. package/dist/cjs/src/pro/cryptocom.js +2 -2
  36. package/dist/cjs/src/pro/defx.js +1 -1
  37. package/dist/cjs/src/pro/exmo.js +1 -1
  38. package/dist/cjs/src/pro/gemini.js +1 -1
  39. package/dist/cjs/src/pro/hashkey.js +2 -2
  40. package/dist/cjs/src/pro/htx.js +8 -8
  41. package/dist/cjs/src/pro/hyperliquid.js +2 -2
  42. package/dist/cjs/src/pro/kucoin.js +1 -1
  43. package/dist/cjs/src/pro/okx.js +1 -1
  44. package/dist/cjs/src/pro/oxfun.js +1 -1
  45. package/dist/cjs/src/probit.js +77 -9
  46. package/dist/cjs/src/timex.js +67 -0
  47. package/dist/cjs/src/tokocrypto.js +82 -5
  48. package/dist/cjs/src/tradeogre.js +55 -2
  49. package/dist/cjs/src/vertex.js +65 -2
  50. package/dist/cjs/src/wavesexchange.js +73 -0
  51. package/dist/cjs/src/wazirx.js +59 -3
  52. package/dist/cjs/src/whitebit.js +80 -4
  53. package/dist/cjs/src/xt.js +112 -0
  54. package/dist/cjs/src/yobit.js +56 -0
  55. package/dist/cjs/src/zaif.js +55 -0
  56. package/dist/cjs/src/zonda.js +56 -0
  57. package/examples/README.md +6 -0
  58. package/js/ccxt.d.ts +1 -1
  59. package/js/ccxt.js +1 -1
  60. package/js/src/abstract/binance.d.ts +1 -0
  61. package/js/src/abstract/binancecoinm.d.ts +1 -0
  62. package/js/src/abstract/binanceus.d.ts +1 -0
  63. package/js/src/abstract/binanceusdm.d.ts +1 -0
  64. package/js/src/alpaca.d.ts +35 -0
  65. package/js/src/alpaca.js +65 -2
  66. package/js/src/base/Exchange.d.ts +2 -0
  67. package/js/src/base/Exchange.js +112 -3
  68. package/js/src/binance.d.ts +4 -1
  69. package/js/src/binance.js +42 -19
  70. package/js/src/bitfinex1.d.ts +22 -22
  71. package/js/src/bitfinex1.js +22 -22
  72. package/js/src/blofin.d.ts +1 -1
  73. package/js/src/blofin.js +6 -2
  74. package/js/src/bybit.d.ts +2 -2
  75. package/js/src/bybit.js +2 -2
  76. package/js/src/coinex.js +5 -5
  77. package/js/src/coinmetro.d.ts +1 -1
  78. package/js/src/coinmetro.js +21 -4
  79. package/js/src/defx.d.ts +1 -1
  80. package/js/src/defx.js +1 -1
  81. package/js/src/deribit.d.ts +1 -1
  82. package/js/src/deribit.js +23 -4
  83. package/js/src/ellipx.d.ts +1 -0
  84. package/js/src/ellipx.js +1 -0
  85. package/js/src/gate.d.ts +1 -1
  86. package/js/src/gate.js +2 -2
  87. package/js/src/hollaex.d.ts +2 -1
  88. package/js/src/hollaex.js +15 -20
  89. package/js/src/htx.d.ts +1 -1
  90. package/js/src/htx.js +6 -4
  91. package/js/src/hyperliquid.d.ts +3 -3
  92. package/js/src/hyperliquid.js +4 -4
  93. package/js/src/krakenfutures.d.ts +1 -1
  94. package/js/src/krakenfutures.js +1 -1
  95. package/js/src/kucoin.js +52 -74
  96. package/js/src/kuna.d.ts +1 -1
  97. package/js/src/kuna.js +1 -1
  98. package/js/src/mexc.d.ts +1 -1
  99. package/js/src/mexc.js +29 -8
  100. package/js/src/okcoin.js +13 -5
  101. package/js/src/okx.d.ts +1 -1
  102. package/js/src/okx.js +1 -1
  103. package/js/src/onetrading.d.ts +1 -1
  104. package/js/src/onetrading.js +1 -1
  105. package/js/src/paradex.d.ts +1 -1
  106. package/js/src/paradex.js +2 -2
  107. package/js/src/paymium.js +42 -0
  108. package/js/src/pro/binance.js +2 -0
  109. package/js/src/pro/bitfinex1.d.ts +4 -4
  110. package/js/src/pro/bitfinex1.js +4 -4
  111. package/js/src/pro/bitvavo.d.ts +1 -1
  112. package/js/src/pro/bitvavo.js +1 -1
  113. package/js/src/pro/blofin.d.ts +1 -1
  114. package/js/src/pro/blofin.js +9 -1
  115. package/js/src/pro/bybit.d.ts +1 -1
  116. package/js/src/pro/bybit.js +1 -1
  117. package/js/src/pro/coincatch.d.ts +2 -2
  118. package/js/src/pro/coincatch.js +2 -2
  119. package/js/src/pro/coinex.js +4 -1
  120. package/js/src/pro/cryptocom.d.ts +2 -2
  121. package/js/src/pro/cryptocom.js +2 -2
  122. package/js/src/pro/defx.d.ts +1 -1
  123. package/js/src/pro/defx.js +1 -1
  124. package/js/src/pro/exmo.d.ts +1 -1
  125. package/js/src/pro/exmo.js +1 -1
  126. package/js/src/pro/gemini.d.ts +1 -1
  127. package/js/src/pro/gemini.js +1 -1
  128. package/js/src/pro/hashkey.d.ts +2 -2
  129. package/js/src/pro/hashkey.js +2 -2
  130. package/js/src/pro/htx.d.ts +8 -8
  131. package/js/src/pro/htx.js +8 -8
  132. package/js/src/pro/hyperliquid.d.ts +2 -2
  133. package/js/src/pro/hyperliquid.js +2 -2
  134. package/js/src/pro/kucoin.d.ts +1 -1
  135. package/js/src/pro/kucoin.js +1 -1
  136. package/js/src/pro/okx.d.ts +1 -1
  137. package/js/src/pro/okx.js +1 -1
  138. package/js/src/pro/oxfun.d.ts +1 -1
  139. package/js/src/pro/oxfun.js +1 -1
  140. package/js/src/probit.d.ts +1 -0
  141. package/js/src/probit.js +77 -9
  142. package/js/src/timex.js +67 -0
  143. package/js/src/tokocrypto.d.ts +2 -3
  144. package/js/src/tokocrypto.js +82 -5
  145. package/js/src/tradeogre.d.ts +4 -2
  146. package/js/src/tradeogre.js +55 -2
  147. package/js/src/vertex.js +65 -2
  148. package/js/src/wavesexchange.js +73 -0
  149. package/js/src/wazirx.js +59 -3
  150. package/js/src/whitebit.js +80 -4
  151. package/js/src/xt.js +112 -0
  152. package/js/src/yobit.js +56 -0
  153. package/js/src/zaif.js +55 -0
  154. package/js/src/zonda.d.ts +1 -0
  155. package/js/src/zonda.js +56 -0
  156. package/package.json +2 -2
  157. package/js/src/hitbtc3.d.ts +0 -8
  158. package/js/src/hitbtc3.js +0 -20
@@ -595,6 +595,79 @@ class tokocrypto extends tokocrypto$1 {
595
595
  'MAX_POSITION': errors.InvalidOrder, // {"code":-2010,"msg":"Filter failure: MAX_POSITION"}
596
596
  },
597
597
  },
598
+ 'features': {
599
+ 'spot': {
600
+ 'sandbox': false,
601
+ 'createOrder': {
602
+ 'marginMode': false,
603
+ 'triggerPrice': true,
604
+ 'triggerDirection': false,
605
+ 'triggerPriceType': undefined,
606
+ 'stopLossPrice': false,
607
+ 'takeProfitPrice': false,
608
+ 'attachedStopLossTakeProfit': undefined,
609
+ 'timeInForce': {
610
+ 'IOC': true,
611
+ 'FOK': true,
612
+ 'PO': true,
613
+ 'GTD': false,
614
+ },
615
+ 'hedged': false,
616
+ 'trailing': false,
617
+ 'leverage': false,
618
+ 'marketBuyByCost': true,
619
+ 'marketBuyRequiresPrice': true,
620
+ 'selfTradePrevention': true,
621
+ 'iceberg': true, // todo
622
+ },
623
+ 'createOrders': undefined,
624
+ 'fetchMyTrades': {
625
+ 'marginMode': false,
626
+ 'limit': 1000,
627
+ 'daysBack': 100000,
628
+ 'untilDays': 100000, // todo
629
+ },
630
+ 'fetchOrder': {
631
+ 'marginMode': false,
632
+ 'trigger': false,
633
+ 'trailing': false,
634
+ },
635
+ 'fetchOpenOrders': {
636
+ 'marginMode': false,
637
+ 'limit': 1000,
638
+ 'trigger': false,
639
+ 'trailing': false,
640
+ },
641
+ 'fetchOrders': {
642
+ 'marginMode': false,
643
+ 'limit': 1000,
644
+ 'daysBack': 100000,
645
+ 'untilDays': 100000,
646
+ 'trigger': false,
647
+ 'trailing': false,
648
+ },
649
+ 'fetchClosedOrders': {
650
+ 'marginMode': false,
651
+ 'limit': 1000,
652
+ 'daysBack': 100000,
653
+ 'daysBackCanceled': 1,
654
+ 'untilDays': 100000,
655
+ 'trigger': false,
656
+ 'trailing': false,
657
+ },
658
+ 'fetchOHLCV': {
659
+ 'limit': 1000,
660
+ },
661
+ },
662
+ 'swap': {
663
+ 'linear': undefined,
664
+ 'inverse': undefined,
665
+ },
666
+ 'future': {
667
+ 'linear': undefined,
668
+ 'inverse': undefined,
669
+ },
670
+ },
598
671
  });
599
672
  }
600
673
  nonce() {
@@ -611,9 +684,14 @@ class tokocrypto extends tokocrypto$1 {
611
684
  async fetchTime(params = {}) {
612
685
  const response = await this.publicGetOpenV1CommonTime(params);
613
686
  //
687
+ // {
688
+ // "code": 0,
689
+ // "msg": "Success",
690
+ // "data": null,
691
+ // "timestamp": 1737378074159
692
+ // }
614
693
  //
615
- //
616
- return this.safeInteger(response, 'serverTime');
694
+ return this.safeInteger(response, 'timestamp');
617
695
  }
618
696
  /**
619
697
  * @method
@@ -1588,7 +1666,6 @@ class tokocrypto extends tokocrypto$1 {
1588
1666
  * @name tokocrypto#createOrder
1589
1667
  * @description create a trade order
1590
1668
  * @see https://www.tokocrypto.com/apidocs/#new-order--signed
1591
- * @see https://www.tokocrypto.com/apidocs/#account-trade-list-signed
1592
1669
  * @param {string} symbol unified symbol of the market to create an order in
1593
1670
  * @param {string} type 'market' or 'limit'
1594
1671
  * @param {string} side 'buy' or 'sell'
@@ -1778,7 +1855,7 @@ class tokocrypto extends tokocrypto$1 {
1778
1855
  /**
1779
1856
  * @method
1780
1857
  * @name tokocrypto#fetchOrder
1781
- * @see https://www.tokocrypto.com/apidocs/#all-orders-signed
1858
+ * @see https://www.tokocrypto.com/apidocs/#query-order-signed
1782
1859
  * @description fetches information on an order made by the user
1783
1860
  * @param {string} id order id
1784
1861
  * @param {string} symbol unified symbol of the market the order was made in
@@ -2343,7 +2420,7 @@ class tokocrypto extends tokocrypto$1 {
2343
2420
  }
2344
2421
  /**
2345
2422
  * @method
2346
- * @name bybit#withdraw
2423
+ * @name tokocrypto#withdraw
2347
2424
  * @see https://www.tokocrypto.com/apidocs/#withdraw-signed
2348
2425
  * @description make a withdrawal
2349
2426
  * @param {string} code unified currency code
@@ -156,6 +156,57 @@ class tradeogre extends tradeogre$1 {
156
156
  },
157
157
  },
158
158
  'options': {},
159
+ 'features': {
160
+ 'spot': {
161
+ 'sandbox': false,
162
+ 'createOrder': {
163
+ 'marginMode': false,
164
+ 'triggerPrice': false,
165
+ 'triggerDirection': false,
166
+ 'triggerPriceType': undefined,
167
+ 'stopLossPrice': false,
168
+ 'takeProfitPrice': false,
169
+ 'attachedStopLossTakeProfit': undefined,
170
+ 'timeInForce': {
171
+ 'IOC': false,
172
+ 'FOK': false,
173
+ 'PO': false,
174
+ 'GTD': false,
175
+ },
176
+ 'hedged': false,
177
+ 'trailing': false,
178
+ 'leverage': false,
179
+ 'marketBuyByCost': false,
180
+ 'marketBuyRequiresPrice': false,
181
+ 'selfTradePrevention': false,
182
+ 'iceberg': false,
183
+ },
184
+ 'createOrders': undefined,
185
+ 'fetchMyTrades': undefined,
186
+ 'fetchOrder': {
187
+ 'marginMode': false,
188
+ 'trigger': false,
189
+ 'trailing': false,
190
+ },
191
+ 'fetchOpenOrders': {
192
+ 'marginMode': false,
193
+ 'limit': undefined,
194
+ 'trigger': false,
195
+ 'trailing': false,
196
+ },
197
+ 'fetchOrders': undefined,
198
+ 'fetchClosedOrders': undefined,
199
+ 'fetchOHLCV': undefined, // todo
200
+ },
201
+ 'swap': {
202
+ 'linear': undefined,
203
+ 'inverse': undefined,
204
+ },
205
+ 'future': {
206
+ 'linear': undefined,
207
+ 'inverse': undefined,
208
+ },
209
+ },
159
210
  });
160
211
  }
161
212
  /**
@@ -446,6 +497,7 @@ class tradeogre extends tradeogre$1 {
446
497
  * @method
447
498
  * @name tradeogre#createOrder
448
499
  * @description create a trade order
500
+ * @see https://tradeogre.com/help/api#:~:text=u%20%27%7Bpublic%7D%3A%7Bprivate%7D%27-,Submit%20Buy%20Order
449
501
  * @param {string} symbol unified symbol of the market to create an order in
450
502
  * @param {string} type must be 'limit'
451
503
  * @param {string} side 'buy' or 'sell'
@@ -513,6 +565,7 @@ class tradeogre extends tradeogre$1 {
513
565
  * @method
514
566
  * @name tradeogre#fetchOpenOrders
515
567
  * @description fetch all unfilled currently open orders
568
+ * @see https://tradeogre.com/help/api#:~:text=%7B%22success%22%3Atrue%7D-,Get%20Orders,-Method%20(POST)
516
569
  * @param {string} symbol unified market symbol of the market orders were made in
517
570
  * @param {int} [since] the earliest time in ms to fetch orders for
518
571
  * @param {int} [limit] the maximum number of order structures to retrieve
@@ -534,9 +587,9 @@ class tradeogre extends tradeogre$1 {
534
587
  }
535
588
  /**
536
589
  * @method
537
- * @name ace#fetchOrder
590
+ * @name tradeogre#fetchOrder
538
591
  * @description fetches information on an order made by the user
539
- * @see https://github.com/ace-exchange/ace-official-api-docs/blob/master/api_v2.md#open-api---order-status
592
+ * @see https://tradeogre.com/help/api#:~:text=market%22%3A%22XMR%2DBTC%22%7D%5D-,Get%20Order,-Method%20(GET)
540
593
  * @param {string} id order id
541
594
  * @param {string} symbol unified symbol of the market the order was made in
542
595
  * @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -321,6 +321,69 @@ class vertex extends vertex$1 {
321
321
  'timeDifference': 0,
322
322
  'brokerId': 5930043274845996,
323
323
  },
324
+ 'features': {
325
+ 'default': {
326
+ 'sandbox': true,
327
+ 'createOrder': {
328
+ 'marginMode': false,
329
+ 'triggerPrice': true,
330
+ 'triggerDirection': false,
331
+ 'triggerPriceType': undefined,
332
+ 'stopLossPrice': true,
333
+ 'takeProfitPrice': true,
334
+ 'attachedStopLossTakeProfit': undefined,
335
+ 'timeInForce': {
336
+ 'IOC': false,
337
+ 'FOK': false,
338
+ 'PO': true,
339
+ 'GTD': true,
340
+ },
341
+ 'hedged': false,
342
+ 'trailing': false,
343
+ 'leverage': false,
344
+ 'marketBuyByCost': true,
345
+ 'marketBuyRequiresPrice': true,
346
+ 'selfTradePrevention': false,
347
+ 'iceberg': false,
348
+ },
349
+ 'createOrders': undefined,
350
+ 'fetchMyTrades': {
351
+ 'marginMode': false,
352
+ 'limit': 500,
353
+ 'daysBack': 100000,
354
+ 'untilDays': undefined,
355
+ },
356
+ 'fetchOrder': {
357
+ 'marginMode': false,
358
+ 'trigger': false,
359
+ 'trailing': false,
360
+ },
361
+ 'fetchOpenOrders': {
362
+ 'marginMode': false,
363
+ 'limit': 500,
364
+ 'trigger': true,
365
+ 'trailing': false,
366
+ },
367
+ 'fetchOrders': undefined,
368
+ 'fetchClosedOrders': undefined,
369
+ 'fetchOHLCV': {
370
+ 'limit': 1000,
371
+ },
372
+ },
373
+ 'spot': {
374
+ 'extends': 'default',
375
+ },
376
+ 'swap': {
377
+ 'linear': {
378
+ 'extends': 'default',
379
+ },
380
+ 'inverse': undefined,
381
+ },
382
+ 'future': {
383
+ 'linear': undefined,
384
+ 'inverse': undefined,
385
+ },
386
+ },
324
387
  });
325
388
  }
326
389
  setSandboxMode(enabled) {
@@ -2166,7 +2229,7 @@ class vertex extends vertex$1 {
2166
2229
  // "product_id": 1,
2167
2230
  // "orders": [
2168
2231
  // {
2169
- // "product_id": 1,
2232
+ // "product_id": 2,
2170
2233
  // "sender": "0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43000000000000000000000000",
2171
2234
  // "price_x18": "1000000000000000000",
2172
2235
  // "amount": "1000000000000000000",
@@ -2175,7 +2238,7 @@ class vertex extends vertex$1 {
2175
2238
  // "order_type": "default",
2176
2239
  // "unfilled_amount": "1000000000000000000",
2177
2240
  // "digest": "0x0000000000000000000000000000000000000000000000000000000000000000",
2178
- // "placed_at": 1682437739,
2241
+ // "placed_at": 1682437737,
2179
2242
  // "order_type": "ioc"
2180
2243
  // }
2181
2244
  // ]
@@ -344,6 +344,79 @@ class wavesexchange extends wavesexchange$1 {
344
344
  'BEP20': 'BSC',
345
345
  },
346
346
  },
347
+ 'features': {
348
+ 'spot': {
349
+ 'sandbox': true,
350
+ 'createOrder': {
351
+ 'marginMode': false,
352
+ 'triggerPrice': true,
353
+ 'triggerDirection': false,
354
+ 'triggerPriceType': undefined,
355
+ 'stopLossPrice': false,
356
+ 'takeProfitPrice': false,
357
+ 'attachedStopLossTakeProfit': undefined,
358
+ 'timeInForce': {
359
+ 'IOC': false,
360
+ 'FOK': false,
361
+ 'PO': false,
362
+ 'GTD': true, // todo
363
+ },
364
+ 'hedged': false,
365
+ 'trailing': false,
366
+ 'leverage': false,
367
+ 'marketBuyByCost': false,
368
+ 'marketBuyRequiresPrice': true,
369
+ 'selfTradePrevention': false,
370
+ 'iceberg': false,
371
+ },
372
+ 'createOrders': undefined,
373
+ 'fetchMyTrades': {
374
+ 'marginMode': false,
375
+ 'limit': 100,
376
+ 'daysBack': 100000,
377
+ 'untilDays': 100000, // todo
378
+ },
379
+ 'fetchOrder': {
380
+ 'marginMode': false,
381
+ 'trigger': false,
382
+ 'trailing': false,
383
+ },
384
+ 'fetchOpenOrders': {
385
+ 'marginMode': false,
386
+ 'limit': 100,
387
+ 'trigger': false,
388
+ 'trailing': false,
389
+ },
390
+ 'fetchOrders': {
391
+ 'marginMode': false,
392
+ 'limit': 100,
393
+ 'daysBack': undefined,
394
+ 'untilDays': undefined,
395
+ 'trigger': false,
396
+ 'trailing': false,
397
+ },
398
+ 'fetchClosedOrders': {
399
+ 'marginMode': false,
400
+ 'limit': 100,
401
+ 'daysBack': 100000,
402
+ 'daysBackCanceled': 1,
403
+ 'untilDays': 100000,
404
+ 'trigger': false,
405
+ 'trailing': false,
406
+ },
407
+ 'fetchOHLCV': {
408
+ 'limit': undefined, // todo
409
+ },
410
+ },
411
+ 'swap': {
412
+ 'linear': undefined,
413
+ 'inverse': undefined,
414
+ },
415
+ 'future': {
416
+ 'linear': undefined,
417
+ 'inverse': undefined,
418
+ },
419
+ },
347
420
  'commonCurrencies': {
348
421
  'EGG': 'Waves Ducks',
349
422
  },
@@ -207,6 +207,62 @@ class wazirx extends wazirx$1 {
207
207
  // You can get network from fetchCurrencies
208
208
  },
209
209
  },
210
+ 'features': {
211
+ 'spot': {
212
+ 'sandbox': false,
213
+ 'createOrder': {
214
+ 'marginMode': false,
215
+ 'triggerPrice': true,
216
+ 'triggerDirection': false,
217
+ 'triggerPriceType': undefined,
218
+ 'stopLossPrice': false,
219
+ 'takeProfitPrice': false,
220
+ 'attachedStopLossTakeProfit': undefined,
221
+ 'timeInForce': {
222
+ 'IOC': false,
223
+ 'FOK': false,
224
+ 'PO': false,
225
+ 'GTD': false,
226
+ },
227
+ 'hedged': false,
228
+ 'trailing': false,
229
+ 'leverage': false,
230
+ 'marketBuyByCost': false,
231
+ 'marketBuyRequiresPrice': false,
232
+ 'selfTradePrevention': false,
233
+ 'iceberg': false,
234
+ },
235
+ 'createOrders': undefined,
236
+ 'fetchMyTrades': undefined,
237
+ 'fetchOrder': undefined,
238
+ 'fetchOpenOrders': {
239
+ 'marginMode': false,
240
+ 'limit': undefined,
241
+ 'trigger': false,
242
+ 'trailing': false,
243
+ },
244
+ 'fetchOrders': {
245
+ 'marginMode': false,
246
+ 'limit': 1000,
247
+ 'daysBack': 100000,
248
+ 'untilDays': 100000,
249
+ 'trigger': false,
250
+ 'trailing': false,
251
+ },
252
+ 'fetchClosedOrders': undefined,
253
+ 'fetchOHLCV': {
254
+ 'limit': 2000,
255
+ },
256
+ },
257
+ 'swap': {
258
+ 'linear': undefined,
259
+ 'inverse': undefined,
260
+ },
261
+ 'future': {
262
+ 'linear': undefined,
263
+ 'inverse': undefined,
264
+ },
265
+ },
210
266
  });
211
267
  }
212
268
  /**
@@ -887,10 +943,10 @@ class wazirx extends wazirx$1 {
887
943
  'type': 'limit',
888
944
  };
889
945
  request['price'] = this.priceToPrecision(symbol, price);
890
- const stopPrice = this.safeString(params, 'stopPrice');
891
- if (stopPrice !== undefined) {
946
+ const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
947
+ if (triggerPrice !== undefined) {
892
948
  request['type'] = 'stop_limit';
893
- request['stopPrice'] = this.priceToPrecision(symbol, stopPrice);
949
+ request['stopPrice'] = this.priceToPrecision(symbol, triggerPrice);
894
950
  }
895
951
  const response = await this.privatePostOrder(this.extend(request, params));
896
952
  // {
@@ -259,6 +259,8 @@ class whitebit extends whitebit$1 {
259
259
  },
260
260
  },
261
261
  'options': {
262
+ 'timeDifference': 0,
263
+ 'adjustForTimeDifference': false,
262
264
  'fiatCurrencies': ['EUR', 'USD', 'RUB', 'UAH'],
263
265
  'fetchBalance': {
264
266
  'account': 'spot',
@@ -276,6 +278,75 @@ class whitebit extends whitebit$1 {
276
278
  'defaultType': 'spot',
277
279
  'brokerId': 'ccxt',
278
280
  },
281
+ 'features': {
282
+ 'default': {
283
+ 'sandbox': false,
284
+ 'createOrder': {
285
+ 'marginMode': true,
286
+ 'triggerPrice': true,
287
+ 'triggerDirection': false,
288
+ 'triggerPriceType': undefined,
289
+ 'stopLossPrice': false,
290
+ 'takeProfitPrice': false,
291
+ 'attachedStopLossTakeProfit': undefined,
292
+ 'timeInForce': {
293
+ 'IOC': true,
294
+ 'FOK': false,
295
+ 'PO': true,
296
+ 'GTD': false,
297
+ },
298
+ 'hedged': false,
299
+ 'trailing': false,
300
+ 'leverage': false,
301
+ 'marketBuyByCost': true,
302
+ 'marketBuyRequiresPrice': false,
303
+ 'selfTradePrevention': false,
304
+ 'iceberg': false,
305
+ },
306
+ 'createOrders': undefined,
307
+ 'fetchMyTrades': {
308
+ 'marginMode': false,
309
+ 'limit': 100,
310
+ 'daysBack': undefined,
311
+ 'untilDays': undefined,
312
+ },
313
+ 'fetchOrder': undefined,
314
+ 'fetchOpenOrders': {
315
+ 'marginMode': false,
316
+ 'limit': 100,
317
+ 'trigger': false,
318
+ 'trailing': false,
319
+ },
320
+ 'fetchOrders': undefined,
321
+ 'fetchClosedOrders': {
322
+ 'marginMode': false,
323
+ 'limit': 100,
324
+ 'daysBack': undefined,
325
+ 'daysBackCanceled': undefined,
326
+ 'untilDays': undefined,
327
+ 'trigger': false,
328
+ 'trailing': false,
329
+ },
330
+ 'fetchOHLCV': {
331
+ 'limit': 1440,
332
+ },
333
+ },
334
+ 'spot': {
335
+ 'extends': 'default',
336
+ },
337
+ 'swap': {
338
+ 'linear': {
339
+ 'extends': 'default',
340
+ },
341
+ 'inverse': {
342
+ 'extends': 'default',
343
+ },
344
+ },
345
+ 'future': {
346
+ 'linear': undefined,
347
+ 'inverse': undefined,
348
+ },
349
+ },
279
350
  'precisionMode': number.TICK_SIZE,
280
351
  'exceptions': {
281
352
  'exact': {
@@ -315,6 +386,9 @@ class whitebit extends whitebit$1 {
315
386
  * @returns {object[]} an array of objects representing market data
316
387
  */
317
388
  async fetchMarkets(params = {}) {
389
+ if (this.options['adjustForTimeDifference']) {
390
+ await this.loadTimeDifference();
391
+ }
318
392
  const markets = await this.v4PublicGetMarkets();
319
393
  //
320
394
  // [
@@ -1239,7 +1313,7 @@ class whitebit extends whitebit$1 {
1239
1313
  const response = await this.v4PublicGetTime(params);
1240
1314
  //
1241
1315
  // {
1242
- // "time":1635467280514
1316
+ // "time":1737380046
1243
1317
  // }
1244
1318
  //
1245
1319
  return this.safeInteger(response, 'time');
@@ -2608,7 +2682,7 @@ class whitebit extends whitebit$1 {
2608
2682
  return this.inArray(currency, fiatCurrencies);
2609
2683
  }
2610
2684
  nonce() {
2611
- return this.milliseconds();
2685
+ return this.milliseconds() - this.options['timeDifference'];
2612
2686
  }
2613
2687
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2614
2688
  const query = this.omit(params, this.extractParams(path));
@@ -2623,10 +2697,12 @@ class whitebit extends whitebit$1 {
2623
2697
  }
2624
2698
  if (accessibility === 'private') {
2625
2699
  this.checkRequiredCredentials();
2626
- const nonce = this.nonce().toString();
2700
+ const nonce = this.nonce();
2701
+ const timestamp = this.parseToInt(nonce / 1000);
2702
+ const timestampString = timestamp.toString();
2627
2703
  const secret = this.encode(this.secret);
2628
2704
  const request = '/' + 'api' + '/' + version + pathWithParams;
2629
- body = this.json(this.extend({ 'request': request, 'nonce': nonce }, params));
2705
+ body = this.json(this.extend({ 'request': request, 'nonce': timestampString }, params));
2630
2706
  const payload = this.stringToBase64(body);
2631
2707
  const signature = this.hmac(this.encode(payload), secret, sha512.sha512);
2632
2708
  headers = {