ccxt 4.4.50 → 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 (71) 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 +1 -1
  5. package/dist/cjs/src/base/Exchange.js +37 -3
  6. package/dist/cjs/src/binance.js +34 -15
  7. package/dist/cjs/src/blofin.js +4 -0
  8. package/dist/cjs/src/coinex.js +1 -1
  9. package/dist/cjs/src/coinmetro.js +20 -3
  10. package/dist/cjs/src/deribit.js +23 -4
  11. package/dist/cjs/src/gate.js +1 -1
  12. package/dist/cjs/src/hollaex.js +2 -1
  13. package/dist/cjs/src/htx.js +6 -4
  14. package/dist/cjs/src/kucoin.js +3 -3
  15. package/dist/cjs/src/mexc.js +26 -6
  16. package/dist/cjs/src/onetrading.js +1 -1
  17. package/dist/cjs/src/paradex.js +1 -1
  18. package/dist/cjs/src/pro/binance.js +2 -0
  19. package/dist/cjs/src/pro/blofin.js +8 -0
  20. package/dist/cjs/src/pro/coinex.js +4 -1
  21. package/dist/cjs/src/pro/htx.js +8 -8
  22. package/dist/cjs/src/probit.js +9 -8
  23. package/dist/cjs/src/vertex.js +65 -2
  24. package/dist/cjs/src/wavesexchange.js +73 -0
  25. package/dist/cjs/src/wazirx.js +59 -3
  26. package/dist/cjs/src/whitebit.js +69 -0
  27. package/dist/cjs/src/xt.js +112 -0
  28. package/dist/cjs/src/yobit.js +56 -0
  29. package/dist/cjs/src/zaif.js +55 -0
  30. package/dist/cjs/src/zonda.js +56 -0
  31. package/js/ccxt.d.ts +1 -1
  32. package/js/ccxt.js +1 -1
  33. package/js/src/alpaca.js +1 -1
  34. package/js/src/base/Exchange.d.ts +2 -0
  35. package/js/src/base/Exchange.js +37 -3
  36. package/js/src/binance.d.ts +3 -1
  37. package/js/src/binance.js +34 -15
  38. package/js/src/blofin.js +4 -0
  39. package/js/src/coinex.js +1 -1
  40. package/js/src/coinmetro.js +20 -3
  41. package/js/src/deribit.d.ts +1 -1
  42. package/js/src/deribit.js +23 -4
  43. package/js/src/gate.js +1 -1
  44. package/js/src/hollaex.js +2 -1
  45. package/js/src/htx.d.ts +1 -1
  46. package/js/src/htx.js +6 -4
  47. package/js/src/kucoin.js +3 -3
  48. package/js/src/mexc.d.ts +1 -1
  49. package/js/src/mexc.js +26 -6
  50. package/js/src/onetrading.d.ts +1 -1
  51. package/js/src/onetrading.js +1 -1
  52. package/js/src/paradex.js +1 -1
  53. package/js/src/pro/binance.js +2 -0
  54. package/js/src/pro/blofin.js +8 -0
  55. package/js/src/pro/coinex.js +4 -1
  56. package/js/src/pro/htx.d.ts +8 -8
  57. package/js/src/pro/htx.js +8 -8
  58. package/js/src/probit.d.ts +1 -0
  59. package/js/src/probit.js +9 -8
  60. package/js/src/vertex.js +65 -2
  61. package/js/src/wavesexchange.js +73 -0
  62. package/js/src/wazirx.js +59 -3
  63. package/js/src/whitebit.js +69 -0
  64. package/js/src/xt.js +112 -0
  65. package/js/src/yobit.js +56 -0
  66. package/js/src/zaif.js +55 -0
  67. package/js/src/zonda.d.ts +1 -0
  68. package/js/src/zonda.js +56 -0
  69. package/package.json +2 -2
  70. package/js/src/hitbtc3.d.ts +0 -8
  71. package/js/src/hitbtc3.js +0 -20
@@ -6,7 +6,7 @@ export default class htx extends htxRest {
6
6
  requestId(): any;
7
7
  /**
8
8
  * @method
9
- * @name huobi#watchTicker
9
+ * @name htx#watchTicker
10
10
  * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
11
11
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53561-7773-11ed-9966-0242ac110003
12
12
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=28c33ab2-77ae-11ed-9966-0242ac110003
@@ -18,7 +18,7 @@ export default class htx extends htxRest {
18
18
  handleTicker(client: Client, message: any): any;
19
19
  /**
20
20
  * @method
21
- * @name huobi#watchTrades
21
+ * @name htx#watchTrades
22
22
  * @description get the list of most recent trades for a particular symbol
23
23
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53b69-7773-11ed-9966-0242ac110003
24
24
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=28c33c21-77ae-11ed-9966-0242ac110003
@@ -33,7 +33,7 @@ export default class htx extends htxRest {
33
33
  handleTrades(client: Client, message: any): any;
34
34
  /**
35
35
  * @method
36
- * @name huobi#watchOHLCV
36
+ * @name htx#watchOHLCV
37
37
  * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
38
38
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53241-7773-11ed-9966-0242ac110003
39
39
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=28c3346a-77ae-11ed-9966-0242ac110003
@@ -49,7 +49,7 @@ export default class htx extends htxRest {
49
49
  handleOHLCV(client: Client, message: any): void;
50
50
  /**
51
51
  * @method
52
- * @name huobi#watchOrderBook
52
+ * @name htx#watchOrderBook
53
53
  * @see https://huobiapi.github.io/docs/dm/v1/en/#subscribe-market-depth-data
54
54
  * @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#subscribe-incremental-market-depth-data
55
55
  * @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-subscribe-incremental-market-depth-data
@@ -69,7 +69,7 @@ export default class htx extends htxRest {
69
69
  handleOrderBookSubscription(client: Client, message: any, subscription: any): void;
70
70
  /**
71
71
  * @method
72
- * @name huobi#watchMyTrades
72
+ * @name htx#watchMyTrades
73
73
  * @description watches information on multiple trades made by the user
74
74
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53dd5-7773-11ed-9966-0242ac110003
75
75
  * @param {string} symbol unified market symbol of the market trades were made in
@@ -82,7 +82,7 @@ export default class htx extends htxRest {
82
82
  getOrderChannelAndMessageHash(type: any, subType: any, market?: any, params?: {}): any[];
83
83
  /**
84
84
  * @method
85
- * @name huobi#watchOrders
85
+ * @name htx#watchOrders
86
86
  * @description watches information on multiple orders made by the user
87
87
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53c8f-7773-11ed-9966-0242ac110003
88
88
  * @param {string} symbol unified market symbol of the market orders were made in
@@ -97,7 +97,7 @@ export default class htx extends htxRest {
97
97
  parseOrderTrade(trade: any, market?: any): Trade;
98
98
  /**
99
99
  * @method
100
- * @name huobi#watchPositions
100
+ * @name htx#watchPositions
101
101
  * @see https://www.huobi.com/en-in/opend/newApiPages/?id=8cb7de1c-77b5-11ed-9966-0242ac110003
102
102
  * @see https://www.huobi.com/en-in/opend/newApiPages/?id=8cb7df0f-77b5-11ed-9966-0242ac110003
103
103
  * @see https://www.huobi.com/en-in/opend/newApiPages/?id=28c34a7d-77ae-11ed-9966-0242ac110003
@@ -113,7 +113,7 @@ export default class htx extends htxRest {
113
113
  handlePositions(client: any, message: any): void;
114
114
  /**
115
115
  * @method
116
- * @name huobi#watchBalance
116
+ * @name htx#watchBalance
117
117
  * @description watch balance and get the amount of funds available for trading or funds locked in orders
118
118
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec52e28-7773-11ed-9966-0242ac110003
119
119
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=10000084-77b7-11ed-9966-0242ac110003
package/js/src/pro/htx.js CHANGED
@@ -132,7 +132,7 @@ export default class htx extends htxRest {
132
132
  }
133
133
  /**
134
134
  * @method
135
- * @name huobi#watchTicker
135
+ * @name htx#watchTicker
136
136
  * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
137
137
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53561-7773-11ed-9966-0242ac110003
138
138
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=28c33ab2-77ae-11ed-9966-0242ac110003
@@ -202,7 +202,7 @@ export default class htx extends htxRest {
202
202
  }
203
203
  /**
204
204
  * @method
205
- * @name huobi#watchTrades
205
+ * @name htx#watchTrades
206
206
  * @description get the list of most recent trades for a particular symbol
207
207
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53b69-7773-11ed-9966-0242ac110003
208
208
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=28c33c21-77ae-11ed-9966-0242ac110003
@@ -268,7 +268,7 @@ export default class htx extends htxRest {
268
268
  }
269
269
  /**
270
270
  * @method
271
- * @name huobi#watchOHLCV
271
+ * @name htx#watchOHLCV
272
272
  * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
273
273
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53241-7773-11ed-9966-0242ac110003
274
274
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=28c3346a-77ae-11ed-9966-0242ac110003
@@ -331,7 +331,7 @@ export default class htx extends htxRest {
331
331
  }
332
332
  /**
333
333
  * @method
334
- * @name huobi#watchOrderBook
334
+ * @name htx#watchOrderBook
335
335
  * @see https://huobiapi.github.io/docs/dm/v1/en/#subscribe-market-depth-data
336
336
  * @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#subscribe-incremental-market-depth-data
337
337
  * @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-subscribe-incremental-market-depth-data
@@ -677,7 +677,7 @@ export default class htx extends htxRest {
677
677
  }
678
678
  /**
679
679
  * @method
680
- * @name huobi#watchMyTrades
680
+ * @name htx#watchMyTrades
681
681
  * @description watches information on multiple trades made by the user
682
682
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53dd5-7773-11ed-9966-0242ac110003
683
683
  * @param {string} symbol unified market symbol of the market trades were made in
@@ -781,7 +781,7 @@ export default class htx extends htxRest {
781
781
  }
782
782
  /**
783
783
  * @method
784
- * @name huobi#watchOrders
784
+ * @name htx#watchOrders
785
785
  * @description watches information on multiple orders made by the user
786
786
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec53c8f-7773-11ed-9966-0242ac110003
787
787
  * @param {string} symbol unified market symbol of the market orders were made in
@@ -1235,7 +1235,7 @@ export default class htx extends htxRest {
1235
1235
  }
1236
1236
  /**
1237
1237
  * @method
1238
- * @name huobi#watchPositions
1238
+ * @name htx#watchPositions
1239
1239
  * @see https://www.huobi.com/en-in/opend/newApiPages/?id=8cb7de1c-77b5-11ed-9966-0242ac110003
1240
1240
  * @see https://www.huobi.com/en-in/opend/newApiPages/?id=8cb7df0f-77b5-11ed-9966-0242ac110003
1241
1241
  * @see https://www.huobi.com/en-in/opend/newApiPages/?id=28c34a7d-77ae-11ed-9966-0242ac110003
@@ -1358,7 +1358,7 @@ export default class htx extends htxRest {
1358
1358
  }
1359
1359
  /**
1360
1360
  * @method
1361
- * @name huobi#watchBalance
1361
+ * @name htx#watchBalance
1362
1362
  * @description watch balance and get the amount of funds available for trading or funds locked in orders
1363
1363
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=7ec52e28-7773-11ed-9966-0242ac110003
1364
1364
  * @see https://www.htx.com/en-us/opend/newApiPages/?id=10000084-77b7-11ed-9966-0242ac110003
@@ -112,6 +112,7 @@ export default class probit extends Exchange {
112
112
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
113
113
  * @param {int} [limit] the maximum amount of candles to fetch
114
114
  * @param {object} [params] extra parameters specific to the exchange API endpoint
115
+ * @param {string} [params.until] timestamp in ms of the earliest candle to fetch
115
116
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
116
117
  */
117
118
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
package/js/src/probit.js CHANGED
@@ -1002,6 +1002,7 @@ export default class probit extends Exchange {
1002
1002
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
1003
1003
  * @param {int} [limit] the maximum amount of candles to fetch
1004
1004
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1005
+ * @param {string} [params.until] timestamp in ms of the earliest candle to fetch
1005
1006
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1006
1007
  */
1007
1008
  async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
@@ -1018,21 +1019,21 @@ export default class probit extends Exchange {
1018
1019
  'limit': requestLimit, // max 1000
1019
1020
  };
1020
1021
  const now = this.milliseconds();
1021
- const duration = this.parseTimeframe(timeframe);
1022
+ const until = this.safeInteger(params, 'until');
1023
+ const durationMilliseconds = this.parseTimeframe(timeframe) * 1000;
1022
1024
  let startTime = since;
1023
- let endTime = now;
1025
+ let endTime = (until !== undefined) ? until - durationMilliseconds : now;
1024
1026
  if (since === undefined) {
1025
1027
  if (limit === undefined) {
1026
1028
  limit = requestLimit;
1027
1029
  }
1028
- startTime = now - limit * duration * 1000;
1030
+ const startLimit = limit - 1;
1031
+ startTime = endTime - startLimit * durationMilliseconds;
1029
1032
  }
1030
1033
  else {
1031
- if (limit === undefined) {
1032
- endTime = now;
1033
- }
1034
- else {
1035
- endTime = this.sum(since, this.sum(limit, 1) * duration * 1000);
1034
+ if (limit !== undefined) {
1035
+ const endByLimit = this.sum(since, limit * durationMilliseconds);
1036
+ endTime = Math.min(endTime, endByLimit);
1036
1037
  }
1037
1038
  }
1038
1039
  const startTimeNormalized = this.normalizeOHLCVTimestamp(startTime, timeframe);
package/js/src/vertex.js CHANGED
@@ -324,6 +324,69 @@ export default class vertex extends Exchange {
324
324
  'timeDifference': 0,
325
325
  'brokerId': 5930043274845996,
326
326
  },
327
+ 'features': {
328
+ 'default': {
329
+ 'sandbox': true,
330
+ 'createOrder': {
331
+ 'marginMode': false,
332
+ 'triggerPrice': true,
333
+ 'triggerDirection': false,
334
+ 'triggerPriceType': undefined,
335
+ 'stopLossPrice': true,
336
+ 'takeProfitPrice': true,
337
+ 'attachedStopLossTakeProfit': undefined,
338
+ 'timeInForce': {
339
+ 'IOC': false,
340
+ 'FOK': false,
341
+ 'PO': true,
342
+ 'GTD': true,
343
+ },
344
+ 'hedged': false,
345
+ 'trailing': false,
346
+ 'leverage': false,
347
+ 'marketBuyByCost': true,
348
+ 'marketBuyRequiresPrice': true,
349
+ 'selfTradePrevention': false,
350
+ 'iceberg': false,
351
+ },
352
+ 'createOrders': undefined,
353
+ 'fetchMyTrades': {
354
+ 'marginMode': false,
355
+ 'limit': 500,
356
+ 'daysBack': 100000,
357
+ 'untilDays': undefined,
358
+ },
359
+ 'fetchOrder': {
360
+ 'marginMode': false,
361
+ 'trigger': false,
362
+ 'trailing': false,
363
+ },
364
+ 'fetchOpenOrders': {
365
+ 'marginMode': false,
366
+ 'limit': 500,
367
+ 'trigger': true,
368
+ 'trailing': false,
369
+ },
370
+ 'fetchOrders': undefined,
371
+ 'fetchClosedOrders': undefined,
372
+ 'fetchOHLCV': {
373
+ 'limit': 1000,
374
+ },
375
+ },
376
+ 'spot': {
377
+ 'extends': 'default',
378
+ },
379
+ 'swap': {
380
+ 'linear': {
381
+ 'extends': 'default',
382
+ },
383
+ 'inverse': undefined,
384
+ },
385
+ 'future': {
386
+ 'linear': undefined,
387
+ 'inverse': undefined,
388
+ },
389
+ },
327
390
  });
328
391
  }
329
392
  setSandboxMode(enabled) {
@@ -2169,7 +2232,7 @@ export default class vertex extends Exchange {
2169
2232
  // "product_id": 1,
2170
2233
  // "orders": [
2171
2234
  // {
2172
- // "product_id": 1,
2235
+ // "product_id": 2,
2173
2236
  // "sender": "0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43000000000000000000000000",
2174
2237
  // "price_x18": "1000000000000000000",
2175
2238
  // "amount": "1000000000000000000",
@@ -2178,7 +2241,7 @@ export default class vertex extends Exchange {
2178
2241
  // "order_type": "default",
2179
2242
  // "unfilled_amount": "1000000000000000000",
2180
2243
  // "digest": "0x0000000000000000000000000000000000000000000000000000000000000000",
2181
- // "placed_at": 1682437739,
2244
+ // "placed_at": 1682437737,
2182
2245
  // "order_type": "ioc"
2183
2246
  // }
2184
2247
  // ]
@@ -347,6 +347,79 @@ export default class wavesexchange extends Exchange {
347
347
  'BEP20': 'BSC',
348
348
  },
349
349
  },
350
+ 'features': {
351
+ 'spot': {
352
+ 'sandbox': true,
353
+ 'createOrder': {
354
+ 'marginMode': false,
355
+ 'triggerPrice': true,
356
+ 'triggerDirection': false,
357
+ 'triggerPriceType': undefined,
358
+ 'stopLossPrice': false,
359
+ 'takeProfitPrice': false,
360
+ 'attachedStopLossTakeProfit': undefined,
361
+ 'timeInForce': {
362
+ 'IOC': false,
363
+ 'FOK': false,
364
+ 'PO': false,
365
+ 'GTD': true, // todo
366
+ },
367
+ 'hedged': false,
368
+ 'trailing': false,
369
+ 'leverage': false,
370
+ 'marketBuyByCost': false,
371
+ 'marketBuyRequiresPrice': true,
372
+ 'selfTradePrevention': false,
373
+ 'iceberg': false,
374
+ },
375
+ 'createOrders': undefined,
376
+ 'fetchMyTrades': {
377
+ 'marginMode': false,
378
+ 'limit': 100,
379
+ 'daysBack': 100000,
380
+ 'untilDays': 100000, // todo
381
+ },
382
+ 'fetchOrder': {
383
+ 'marginMode': false,
384
+ 'trigger': false,
385
+ 'trailing': false,
386
+ },
387
+ 'fetchOpenOrders': {
388
+ 'marginMode': false,
389
+ 'limit': 100,
390
+ 'trigger': false,
391
+ 'trailing': false,
392
+ },
393
+ 'fetchOrders': {
394
+ 'marginMode': false,
395
+ 'limit': 100,
396
+ 'daysBack': undefined,
397
+ 'untilDays': undefined,
398
+ 'trigger': false,
399
+ 'trailing': false,
400
+ },
401
+ 'fetchClosedOrders': {
402
+ 'marginMode': false,
403
+ 'limit': 100,
404
+ 'daysBack': 100000,
405
+ 'daysBackCanceled': 1,
406
+ 'untilDays': 100000,
407
+ 'trigger': false,
408
+ 'trailing': false,
409
+ },
410
+ 'fetchOHLCV': {
411
+ 'limit': undefined, // todo
412
+ },
413
+ },
414
+ 'swap': {
415
+ 'linear': undefined,
416
+ 'inverse': undefined,
417
+ },
418
+ 'future': {
419
+ 'linear': undefined,
420
+ 'inverse': undefined,
421
+ },
422
+ },
350
423
  'commonCurrencies': {
351
424
  'EGG': 'Waves Ducks',
352
425
  },
package/js/src/wazirx.js CHANGED
@@ -209,6 +209,62 @@ export default class wazirx extends Exchange {
209
209
  // You can get network from fetchCurrencies
210
210
  },
211
211
  },
212
+ 'features': {
213
+ 'spot': {
214
+ 'sandbox': false,
215
+ 'createOrder': {
216
+ 'marginMode': false,
217
+ 'triggerPrice': true,
218
+ 'triggerDirection': false,
219
+ 'triggerPriceType': undefined,
220
+ 'stopLossPrice': false,
221
+ 'takeProfitPrice': false,
222
+ 'attachedStopLossTakeProfit': undefined,
223
+ 'timeInForce': {
224
+ 'IOC': false,
225
+ 'FOK': false,
226
+ 'PO': false,
227
+ 'GTD': false,
228
+ },
229
+ 'hedged': false,
230
+ 'trailing': false,
231
+ 'leverage': false,
232
+ 'marketBuyByCost': false,
233
+ 'marketBuyRequiresPrice': false,
234
+ 'selfTradePrevention': false,
235
+ 'iceberg': false,
236
+ },
237
+ 'createOrders': undefined,
238
+ 'fetchMyTrades': undefined,
239
+ 'fetchOrder': undefined,
240
+ 'fetchOpenOrders': {
241
+ 'marginMode': false,
242
+ 'limit': undefined,
243
+ 'trigger': false,
244
+ 'trailing': false,
245
+ },
246
+ 'fetchOrders': {
247
+ 'marginMode': false,
248
+ 'limit': 1000,
249
+ 'daysBack': 100000,
250
+ 'untilDays': 100000,
251
+ 'trigger': false,
252
+ 'trailing': false,
253
+ },
254
+ 'fetchClosedOrders': undefined,
255
+ 'fetchOHLCV': {
256
+ 'limit': 2000,
257
+ },
258
+ },
259
+ 'swap': {
260
+ 'linear': undefined,
261
+ 'inverse': undefined,
262
+ },
263
+ 'future': {
264
+ 'linear': undefined,
265
+ 'inverse': undefined,
266
+ },
267
+ },
212
268
  });
213
269
  }
214
270
  /**
@@ -889,10 +945,10 @@ export default class wazirx extends Exchange {
889
945
  'type': 'limit',
890
946
  };
891
947
  request['price'] = this.priceToPrecision(symbol, price);
892
- const stopPrice = this.safeString(params, 'stopPrice');
893
- if (stopPrice !== undefined) {
948
+ const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
949
+ if (triggerPrice !== undefined) {
894
950
  request['type'] = 'stop_limit';
895
- request['stopPrice'] = this.priceToPrecision(symbol, stopPrice);
951
+ request['stopPrice'] = this.priceToPrecision(symbol, triggerPrice);
896
952
  }
897
953
  const response = await this.privatePostOrder(this.extend(request, params));
898
954
  // {
@@ -281,6 +281,75 @@ export default class whitebit extends Exchange {
281
281
  'defaultType': 'spot',
282
282
  'brokerId': 'ccxt',
283
283
  },
284
+ 'features': {
285
+ 'default': {
286
+ 'sandbox': false,
287
+ 'createOrder': {
288
+ 'marginMode': true,
289
+ 'triggerPrice': true,
290
+ 'triggerDirection': false,
291
+ 'triggerPriceType': undefined,
292
+ 'stopLossPrice': false,
293
+ 'takeProfitPrice': false,
294
+ 'attachedStopLossTakeProfit': undefined,
295
+ 'timeInForce': {
296
+ 'IOC': true,
297
+ 'FOK': false,
298
+ 'PO': true,
299
+ 'GTD': false,
300
+ },
301
+ 'hedged': false,
302
+ 'trailing': false,
303
+ 'leverage': false,
304
+ 'marketBuyByCost': true,
305
+ 'marketBuyRequiresPrice': false,
306
+ 'selfTradePrevention': false,
307
+ 'iceberg': false,
308
+ },
309
+ 'createOrders': undefined,
310
+ 'fetchMyTrades': {
311
+ 'marginMode': false,
312
+ 'limit': 100,
313
+ 'daysBack': undefined,
314
+ 'untilDays': undefined,
315
+ },
316
+ 'fetchOrder': undefined,
317
+ 'fetchOpenOrders': {
318
+ 'marginMode': false,
319
+ 'limit': 100,
320
+ 'trigger': false,
321
+ 'trailing': false,
322
+ },
323
+ 'fetchOrders': undefined,
324
+ 'fetchClosedOrders': {
325
+ 'marginMode': false,
326
+ 'limit': 100,
327
+ 'daysBack': undefined,
328
+ 'daysBackCanceled': undefined,
329
+ 'untilDays': undefined,
330
+ 'trigger': false,
331
+ 'trailing': false,
332
+ },
333
+ 'fetchOHLCV': {
334
+ 'limit': 1440,
335
+ },
336
+ },
337
+ 'spot': {
338
+ 'extends': 'default',
339
+ },
340
+ 'swap': {
341
+ 'linear': {
342
+ 'extends': 'default',
343
+ },
344
+ 'inverse': {
345
+ 'extends': 'default',
346
+ },
347
+ },
348
+ 'future': {
349
+ 'linear': undefined,
350
+ 'inverse': undefined,
351
+ },
352
+ },
284
353
  'precisionMode': TICK_SIZE,
285
354
  'exceptions': {
286
355
  'exact': {
package/js/src/xt.js CHANGED
@@ -676,6 +676,118 @@ export default class xt extends Exchange {
676
676
  'createMarketBuyOrderRequiresPrice': true,
677
677
  'recvWindow': '5000', // in milliseconds, spot only
678
678
  },
679
+ 'features': {
680
+ 'default': {
681
+ 'sandbox': false,
682
+ 'createOrder': {
683
+ 'marginMode': false,
684
+ 'triggerPrice': false,
685
+ 'triggerDirection': false,
686
+ 'triggerPriceType': undefined,
687
+ 'stopLossPrice': false,
688
+ 'takeProfitPrice': false,
689
+ 'attachedStopLossTakeProfit': undefined,
690
+ 'timeInForce': {
691
+ 'IOC': true,
692
+ 'FOK': true,
693
+ 'PO': true,
694
+ 'GTD': false,
695
+ },
696
+ 'hedged': false,
697
+ 'trailing': false,
698
+ 'leverage': false,
699
+ 'marketBuyByCost': true,
700
+ 'marketBuyRequiresPrice': false,
701
+ 'selfTradePrevention': false,
702
+ 'iceberg': false,
703
+ },
704
+ 'createOrders': undefined,
705
+ 'fetchMyTrades': {
706
+ 'marginMode': true,
707
+ 'limit': 100,
708
+ 'daysBack': 100000,
709
+ 'untilDays': 100000,
710
+ 'marketType': true,
711
+ 'subType': true,
712
+ },
713
+ 'fetchOrder': {
714
+ 'marginMode': false,
715
+ 'trigger': true,
716
+ 'trailing': false,
717
+ 'marketType': true,
718
+ 'subType': true,
719
+ },
720
+ 'fetchOpenOrders': {
721
+ 'marginMode': true,
722
+ 'limit': 100,
723
+ 'trigger': true,
724
+ 'trailing': false,
725
+ 'marketType': true,
726
+ 'subType': true,
727
+ },
728
+ 'fetchOrders': {
729
+ 'marginMode': true,
730
+ 'limit': 100,
731
+ 'daysBack': 100000,
732
+ 'untilDays': 100000,
733
+ 'trigger': true,
734
+ 'trailing': false,
735
+ 'marketType': true,
736
+ 'subType': true,
737
+ },
738
+ 'fetchClosedOrders': {
739
+ 'marginMode': true,
740
+ 'limit': 100,
741
+ 'daysBack': 100000,
742
+ 'daysBackCanceled': 1,
743
+ 'untilDays': 100000,
744
+ 'trigger': true,
745
+ 'trailing': false,
746
+ 'marketType': true,
747
+ 'subType': true,
748
+ },
749
+ 'fetchOHLCV': {
750
+ 'limit': 1000, // todo for derivatives
751
+ },
752
+ },
753
+ 'spot': {
754
+ 'extends': 'default',
755
+ },
756
+ 'forDerivatives': {
757
+ 'extends': 'default',
758
+ 'createOrder': {
759
+ 'triggerPrice': true,
760
+ // todo
761
+ 'triggerPriceType': {
762
+ 'last': true,
763
+ 'mark': true,
764
+ 'index': true,
765
+ },
766
+ 'stopLossPrice': true,
767
+ 'takeProfitPrice': true,
768
+ },
769
+ 'fetchMyTrades': {
770
+ 'daysBack': undefined,
771
+ 'untilDays': undefined,
772
+ },
773
+ },
774
+ 'swap': {
775
+ 'linear': {
776
+ 'extends': 'forDerivatives',
777
+ },
778
+ 'inverse': {
779
+ 'extends': 'forDerivatives',
780
+ },
781
+ },
782
+ 'future': {
783
+ 'linear': {
784
+ 'extends': 'forDerivatives',
785
+ },
786
+ 'inverse': {
787
+ 'extends': 'forDerivatives',
788
+ },
789
+ },
790
+ },
679
791
  });
680
792
  }
681
793
  nonce() {