ccxt 4.4.47 → 4.4.49

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 (135) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +16 -16
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/ace.js +1 -1
  5. package/dist/cjs/src/binance.js +18 -14
  6. package/dist/cjs/src/bingx.js +88 -30
  7. package/dist/cjs/src/bitget.js +16 -12
  8. package/dist/cjs/src/bitmart.js +7 -2
  9. package/dist/cjs/src/bitmex.js +8 -5
  10. package/dist/cjs/src/bybit.js +7 -2
  11. package/dist/cjs/src/coinbase.js +11 -1
  12. package/dist/cjs/src/coincatch.js +86 -2
  13. package/dist/cjs/src/coincheck.js +52 -0
  14. package/dist/cjs/src/coinlist.js +77 -0
  15. package/dist/cjs/src/coinmate.js +63 -0
  16. package/dist/cjs/src/coinmetro.js +68 -0
  17. package/dist/cjs/src/coinone.js +56 -0
  18. package/dist/cjs/src/coinsph.js +85 -10
  19. package/dist/cjs/src/coinspot.js +47 -0
  20. package/dist/cjs/src/currencycom.js +72 -0
  21. package/dist/cjs/src/defx.js +93 -6
  22. package/dist/cjs/src/delta.js +83 -1
  23. package/dist/cjs/src/deribit.js +82 -0
  24. package/dist/cjs/src/digifinex.js +131 -11
  25. package/dist/cjs/src/ellipx.js +61 -0
  26. package/dist/cjs/src/exmo.js +58 -0
  27. package/dist/cjs/src/gate.js +10 -1
  28. package/dist/cjs/src/hitbtc.js +99 -0
  29. package/dist/cjs/src/hollaex.js +73 -0
  30. package/dist/cjs/src/htx.js +10 -2
  31. package/dist/cjs/src/huobijp.js +73 -0
  32. package/dist/cjs/src/hyperliquid.js +28 -2
  33. package/dist/cjs/src/idex.js +71 -0
  34. package/dist/cjs/src/independentreserve.js +124 -0
  35. package/dist/cjs/src/indodax.js +61 -0
  36. package/dist/cjs/src/kraken.js +1 -1
  37. package/dist/cjs/src/krakenfutures.js +4 -4
  38. package/dist/cjs/src/kuna.js +60 -1
  39. package/dist/cjs/src/latoken.js +64 -0
  40. package/dist/cjs/src/lbank.js +70 -0
  41. package/dist/cjs/src/luno.js +73 -0
  42. package/dist/cjs/src/lykke.js +64 -0
  43. package/dist/cjs/src/mercado.js +65 -0
  44. package/dist/cjs/src/mexc.js +1 -1
  45. package/dist/cjs/src/myokx.js +10 -0
  46. package/dist/cjs/src/ndax.js +71 -0
  47. package/dist/cjs/src/novadax.js +74 -0
  48. package/dist/cjs/src/oceanex.js +69 -0
  49. package/dist/cjs/src/okcoin.js +79 -2
  50. package/dist/cjs/src/okx.js +9 -1
  51. package/dist/cjs/src/onetrading.js +66 -0
  52. package/dist/cjs/src/oxfun.js +66 -0
  53. package/dist/cjs/src/p2b.js +63 -1
  54. package/dist/cjs/src/paradex.js +73 -2
  55. package/dist/cjs/src/phemex.js +103 -0
  56. package/dist/cjs/src/poloniex.js +61 -0
  57. package/dist/cjs/src/poloniexfutures.js +74 -0
  58. package/dist/cjs/src/pro/bitmart.js +6 -0
  59. package/dist/cjs/src/upbit.js +61 -0
  60. package/dist/cjs/src/woo.js +6 -1
  61. package/js/ccxt.d.ts +1 -1
  62. package/js/ccxt.js +1 -1
  63. package/js/src/abstract/independentreserve.d.ts +6 -0
  64. package/js/src/ace.js +1 -1
  65. package/js/src/binance.d.ts +7 -0
  66. package/js/src/binance.js +18 -14
  67. package/js/src/bingx.d.ts +8 -0
  68. package/js/src/bingx.js +88 -30
  69. package/js/src/bitget.d.ts +1 -0
  70. package/js/src/bitget.js +16 -12
  71. package/js/src/bitmart.js +7 -2
  72. package/js/src/bitmex.js +8 -5
  73. package/js/src/bybit.d.ts +1 -1
  74. package/js/src/bybit.js +7 -2
  75. package/js/src/coinbase.d.ts +1 -0
  76. package/js/src/coinbase.js +11 -1
  77. package/js/src/coincatch.d.ts +1 -2
  78. package/js/src/coincatch.js +86 -2
  79. package/js/src/coincheck.js +52 -0
  80. package/js/src/coinlist.js +77 -0
  81. package/js/src/coinmate.js +63 -0
  82. package/js/src/coinmetro.js +68 -0
  83. package/js/src/coinone.js +56 -0
  84. package/js/src/coinsph.d.ts +2 -1
  85. package/js/src/coinsph.js +85 -10
  86. package/js/src/coinspot.js +47 -0
  87. package/js/src/currencycom.js +72 -0
  88. package/js/src/defx.js +93 -6
  89. package/js/src/delta.js +83 -1
  90. package/js/src/deribit.js +82 -0
  91. package/js/src/digifinex.d.ts +1 -0
  92. package/js/src/digifinex.js +131 -11
  93. package/js/src/ellipx.d.ts +1 -0
  94. package/js/src/ellipx.js +61 -0
  95. package/js/src/exmo.js +58 -0
  96. package/js/src/gate.d.ts +1 -0
  97. package/js/src/gate.js +10 -1
  98. package/js/src/hitbtc.js +99 -0
  99. package/js/src/hollaex.js +73 -0
  100. package/js/src/htx.d.ts +1 -0
  101. package/js/src/htx.js +10 -2
  102. package/js/src/huobijp.js +73 -0
  103. package/js/src/hyperliquid.d.ts +1 -0
  104. package/js/src/hyperliquid.js +28 -2
  105. package/js/src/idex.js +71 -0
  106. package/js/src/independentreserve.js +124 -0
  107. package/js/src/indodax.js +61 -0
  108. package/js/src/kraken.js +1 -1
  109. package/js/src/krakenfutures.js +4 -4
  110. package/js/src/kuna.js +60 -1
  111. package/js/src/latoken.js +64 -0
  112. package/js/src/lbank.js +70 -0
  113. package/js/src/luno.js +73 -0
  114. package/js/src/lykke.js +64 -0
  115. package/js/src/mercado.js +65 -0
  116. package/js/src/mexc.js +1 -1
  117. package/js/src/myokx.js +10 -0
  118. package/js/src/ndax.js +71 -0
  119. package/js/src/novadax.js +74 -0
  120. package/js/src/oceanex.js +69 -0
  121. package/js/src/okcoin.js +79 -2
  122. package/js/src/okx.d.ts +1 -0
  123. package/js/src/okx.js +9 -1
  124. package/js/src/onetrading.js +66 -0
  125. package/js/src/oxfun.js +66 -0
  126. package/js/src/p2b.js +63 -1
  127. package/js/src/paradex.js +73 -2
  128. package/js/src/phemex.js +103 -0
  129. package/js/src/poloniex.js +61 -0
  130. package/js/src/poloniexfutures.js +74 -0
  131. package/js/src/pro/bitmart.d.ts +1 -0
  132. package/js/src/pro/bitmart.js +6 -0
  133. package/js/src/upbit.js +61 -0
  134. package/js/src/woo.js +6 -1
  135. package/package.json +2 -2
@@ -205,6 +205,83 @@ class coinlist extends coinlist$1 {
205
205
  },
206
206
  },
207
207
  },
208
+ 'features': {
209
+ 'default': {
210
+ 'sandbox': false,
211
+ 'createOrder': {
212
+ 'marginMode': false,
213
+ 'triggerPrice': true,
214
+ 'triggerPriceType': {
215
+ 'last': true,
216
+ 'mark': true,
217
+ 'index': true,
218
+ },
219
+ 'triggerDirection': false,
220
+ 'stopLossPrice': false,
221
+ 'takeProfitPrice': false,
222
+ 'attachedStopLossTakeProfit': undefined,
223
+ 'timeInForce': {
224
+ 'IOC': false,
225
+ 'FOK': false,
226
+ 'PO': true,
227
+ 'GTD': false,
228
+ },
229
+ 'hedged': false,
230
+ 'trailing': true,
231
+ 'leverage': false,
232
+ 'marketBuyByCost': false,
233
+ 'marketBuyRequiresPrice': false,
234
+ 'selfTradePrevention': true,
235
+ 'iceberg': false,
236
+ },
237
+ 'createOrders': undefined,
238
+ 'fetchMyTrades': {
239
+ 'marginMode': false,
240
+ 'limit': 500,
241
+ 'daysBack': 100000,
242
+ 'untilDays': 100000,
243
+ },
244
+ 'fetchOrder': {
245
+ 'marginMode': false,
246
+ 'trigger': false,
247
+ 'trailing': false,
248
+ },
249
+ 'fetchOpenOrders': {
250
+ 'marginMode': false,
251
+ 'limit': 500,
252
+ 'trigger': false,
253
+ 'trailing': false,
254
+ },
255
+ 'fetchOrders': {
256
+ 'marginMode': false,
257
+ 'limit': 500,
258
+ 'daysBack': 100000,
259
+ 'untilDays': 100000,
260
+ 'trigger': false,
261
+ 'trailing': false,
262
+ },
263
+ 'fetchClosedOrders': {
264
+ 'marginMode': false,
265
+ 'limit': 500,
266
+ 'daysBack': 100000,
267
+ 'daysBackCanceled': undefined,
268
+ 'untilDays': 100000,
269
+ 'trigger': false,
270
+ 'trailing': false,
271
+ },
272
+ 'fetchOHLCV': {
273
+ 'limit': 300,
274
+ },
275
+ },
276
+ 'swap': {
277
+ 'linear': undefined,
278
+ 'inverse': undefined,
279
+ },
280
+ 'future': {
281
+ 'linear': undefined,
282
+ 'inverse': undefined,
283
+ },
284
+ },
208
285
  'fees': {
209
286
  'trading': {
210
287
  'feeSide': 'get',
@@ -209,6 +209,69 @@ class coinmate extends coinmate$1 {
209
209
  },
210
210
  },
211
211
  },
212
+ 'features': {
213
+ 'spot': {
214
+ 'sandbox': false,
215
+ 'createOrder': {
216
+ 'marginMode': false,
217
+ 'triggerPrice': true,
218
+ 'triggerPriceType': undefined,
219
+ 'triggerDirection': false,
220
+ 'stopLossPrice': false,
221
+ 'takeProfitPrice': false,
222
+ 'attachedStopLossTakeProfit': undefined,
223
+ 'timeInForce': {
224
+ 'IOC': true,
225
+ 'FOK': false,
226
+ 'PO': true,
227
+ 'GTD': false,
228
+ },
229
+ 'hedged': false,
230
+ 'trailing': true,
231
+ 'leverage': false,
232
+ 'marketBuyByCost': false,
233
+ 'marketBuyRequiresPrice': false,
234
+ 'selfTradePrevention': false,
235
+ 'iceberg': true, // todo
236
+ },
237
+ 'createOrders': undefined,
238
+ 'fetchMyTrades': {
239
+ 'marginMode': false,
240
+ 'limit': 1000,
241
+ 'daysBack': 100000,
242
+ 'untilDays': 100000, // todo implement
243
+ },
244
+ 'fetchOrder': {
245
+ 'marginMode': false,
246
+ 'trigger': false,
247
+ 'trailing': false,
248
+ },
249
+ 'fetchOpenOrders': {
250
+ 'marginMode': false,
251
+ 'limit': undefined,
252
+ 'trigger': false,
253
+ 'trailing': false,
254
+ },
255
+ 'fetchOrders': {
256
+ 'marginMode': false,
257
+ 'limit': 100,
258
+ 'daysBack': undefined,
259
+ 'untilDays': undefined,
260
+ 'trigger': false,
261
+ 'trailing': false,
262
+ },
263
+ 'fetchClosedOrders': undefined,
264
+ 'fetchOHLCV': undefined,
265
+ },
266
+ 'swap': {
267
+ 'linear': undefined,
268
+ 'inverse': undefined,
269
+ },
270
+ 'future': {
271
+ 'linear': undefined,
272
+ 'inverse': undefined,
273
+ },
274
+ },
212
275
  'exceptions': {
213
276
  'exact': {
214
277
  'No order with given ID': errors.OrderNotFound,
@@ -211,6 +211,74 @@ class coinmetro extends coinmetro$1 {
211
211
  'currenciesByIdForParseMarket': undefined,
212
212
  'currencyIdsListForParseMarket': undefined,
213
213
  },
214
+ 'features': {
215
+ 'spot': {
216
+ 'sandbox': true,
217
+ 'createOrder': {
218
+ 'marginMode': true,
219
+ 'triggerPrice': true,
220
+ 'triggerPriceType': undefined,
221
+ 'triggerDirection': false,
222
+ 'stopLossPrice': false,
223
+ 'takeProfitPrice': false,
224
+ 'attachedStopLossTakeProfit': {
225
+ 'triggerPriceType': undefined,
226
+ 'price': false,
227
+ },
228
+ 'timeInForce': {
229
+ 'IOC': true,
230
+ 'FOK': true,
231
+ 'PO': false,
232
+ 'GTD': true,
233
+ },
234
+ 'hedged': false,
235
+ 'trailing': false,
236
+ 'leverage': false,
237
+ 'marketBuyByCost': true,
238
+ 'marketBuyRequiresPrice': false,
239
+ 'selfTradePrevention': false,
240
+ 'iceberg': true,
241
+ },
242
+ 'createOrders': undefined,
243
+ 'fetchMyTrades': {
244
+ 'marginMode': false,
245
+ 'limit': undefined,
246
+ 'daysBack': 100000,
247
+ 'untilDays': undefined,
248
+ },
249
+ 'fetchOrder': {
250
+ 'marginMode': false,
251
+ 'trigger': false,
252
+ 'trailing': false,
253
+ },
254
+ 'fetchOpenOrders': {
255
+ 'marginMode': false,
256
+ 'limit': undefined,
257
+ 'trigger': false,
258
+ 'trailing': false,
259
+ },
260
+ 'fetchOrders': {
261
+ 'marginMode': false,
262
+ 'limit': undefined,
263
+ 'daysBack': 100000,
264
+ 'untilDays': undefined,
265
+ 'trigger': false,
266
+ 'trailing': false,
267
+ },
268
+ 'fetchClosedOrders': undefined,
269
+ 'fetchOHLCV': {
270
+ 'limit': 1000,
271
+ },
272
+ },
273
+ 'swap': {
274
+ 'linear': undefined,
275
+ 'inverse': undefined,
276
+ },
277
+ 'future': {
278
+ 'linear': undefined,
279
+ 'inverse': undefined,
280
+ },
281
+ },
214
282
  'exceptions': {
215
283
  // https://trade-docs.coinmetro.co/?javascript--nodejs#message-codes
216
284
  'exact': {
@@ -190,6 +190,62 @@ class coinone extends coinone$1 {
190
190
  'maker': 0.002,
191
191
  },
192
192
  },
193
+ 'features': {
194
+ 'spot': {
195
+ 'sandbox': false,
196
+ 'createOrder': {
197
+ 'marginMode': false,
198
+ 'triggerPrice': false,
199
+ 'triggerPriceType': undefined,
200
+ 'triggerDirection': false,
201
+ 'stopLossPrice': false,
202
+ 'takeProfitPrice': false,
203
+ 'attachedStopLossTakeProfit': undefined,
204
+ 'timeInForce': {
205
+ 'IOC': false,
206
+ 'FOK': false,
207
+ 'PO': false,
208
+ 'GTD': false,
209
+ },
210
+ 'hedged': false,
211
+ 'trailing': false,
212
+ 'leverage': false,
213
+ 'marketBuyByCost': false,
214
+ 'marketBuyRequiresPrice': false,
215
+ 'selfTradePrevention': false,
216
+ 'iceberg': false,
217
+ },
218
+ 'createOrders': undefined,
219
+ 'fetchMyTrades': {
220
+ 'marginMode': false,
221
+ 'limit': 100,
222
+ 'daysBack': 100000,
223
+ 'untilDays': 100000, // todo implement
224
+ },
225
+ 'fetchOrder': {
226
+ 'marginMode': false,
227
+ 'trigger': false,
228
+ 'trailing': false,
229
+ },
230
+ 'fetchOpenOrders': {
231
+ 'marginMode': false,
232
+ 'limit': undefined,
233
+ 'trigger': false,
234
+ 'trailing': false,
235
+ },
236
+ 'fetchOrders': undefined,
237
+ 'fetchClosedOrders': undefined,
238
+ 'fetchOHLCV': undefined, // todo implement
239
+ },
240
+ 'swap': {
241
+ 'linear': undefined,
242
+ 'inverse': undefined,
243
+ },
244
+ 'future': {
245
+ 'linear': undefined,
246
+ 'inverse': undefined,
247
+ },
248
+ },
193
249
  'precisionMode': number.TICK_SIZE,
194
250
  'exceptions': {
195
251
  '104': errors.OrderNotFound,
@@ -295,6 +295,72 @@ class coinsph extends coinsph$1 {
295
295
  'ARB': 'ARBITRUM',
296
296
  },
297
297
  },
298
+ 'features': {
299
+ 'spot': {
300
+ 'sandbox': false,
301
+ 'createOrder': {
302
+ 'marginMode': false,
303
+ 'triggerPrice': true,
304
+ 'triggerPriceType': undefined,
305
+ 'triggerDirection': false,
306
+ 'stopLossPrice': false,
307
+ 'takeProfitPrice': false,
308
+ 'attachedStopLossTakeProfit': undefined,
309
+ 'timeInForce': {
310
+ 'IOC': true,
311
+ 'FOK': true,
312
+ 'PO': false,
313
+ 'GTD': false,
314
+ },
315
+ 'hedged': false,
316
+ 'trailing': false,
317
+ 'leverage': false,
318
+ 'marketBuyByCost': true,
319
+ 'marketBuyRequiresPrice': false,
320
+ 'selfTradePrevention': true,
321
+ 'iceberg': false,
322
+ },
323
+ 'createOrders': undefined,
324
+ 'fetchMyTrades': {
325
+ 'marginMode': false,
326
+ 'limit': 1000,
327
+ 'daysBack': 100000,
328
+ 'untilDays': 100000, // todo implement
329
+ },
330
+ 'fetchOrder': {
331
+ 'marginMode': false,
332
+ 'trigger': false,
333
+ 'trailing': false,
334
+ },
335
+ 'fetchOpenOrders': {
336
+ 'marginMode': false,
337
+ 'limit': undefined,
338
+ 'trigger': false,
339
+ 'trailing': false,
340
+ },
341
+ 'fetchOrders': undefined,
342
+ 'fetchClosedOrders': {
343
+ 'marginMode': false,
344
+ 'limit': 1000,
345
+ 'daysBack': 100000,
346
+ 'daysBackCanceled': 1,
347
+ 'untilDays': 100000,
348
+ 'trigger': false,
349
+ 'trailing': false,
350
+ },
351
+ 'fetchOHLCV': {
352
+ 'limit': 1000,
353
+ },
354
+ },
355
+ 'swap': {
356
+ 'linear': undefined,
357
+ 'inverse': undefined,
358
+ },
359
+ 'future': {
360
+ 'linear': undefined,
361
+ 'inverse': undefined,
362
+ },
363
+ },
298
364
  // https://coins-docs.github.io/errors/
299
365
  'exceptions': {
300
366
  'exact': {
@@ -808,33 +874,42 @@ class coinsph extends coinsph$1 {
808
874
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
809
875
  * @param {int} [limit] the maximum amount of candles to fetch (default 500, max 1000)
810
876
  * @param {object} [params] extra parameters specific to the exchange API endpoint
877
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch
811
878
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
812
879
  */
813
880
  async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
814
881
  await this.loadMarkets();
815
882
  const market = this.market(symbol);
816
883
  const interval = this.safeString(this.timeframes, timeframe);
884
+ const until = this.safeInteger(params, 'until');
817
885
  const request = {
818
886
  'symbol': market['id'],
819
887
  'interval': interval,
820
888
  };
889
+ if (limit === undefined) {
890
+ limit = 1000;
891
+ }
821
892
  if (since !== undefined) {
822
893
  request['startTime'] = since;
823
- request['limit'] = 1000;
824
894
  // since work properly only when it is "younger" than last "limit" candle
825
- if (limit !== undefined) {
826
- const duration = this.parseTimeframe(timeframe) * 1000;
827
- request['endTime'] = this.sum(since, duration * (limit - 1));
895
+ if (until !== undefined) {
896
+ request['endTime'] = until;
828
897
  }
829
898
  else {
830
- request['endTime'] = this.milliseconds();
899
+ const duration = this.parseTimeframe(timeframe) * 1000;
900
+ const endTimeByLimit = this.sum(since, duration * (limit - 1));
901
+ const now = this.milliseconds();
902
+ request['endTime'] = Math.min(endTimeByLimit, now);
831
903
  }
832
904
  }
833
- else {
834
- if (limit !== undefined) {
835
- request['limit'] = limit;
836
- }
905
+ else if (until !== undefined) {
906
+ request['endTime'] = until;
907
+ // since work properly only when it is "younger" than last "limit" candle
908
+ const duration = this.parseTimeframe(timeframe) * 1000;
909
+ request['startTime'] = until - (duration * (limit - 1));
837
910
  }
911
+ request['limit'] = limit;
912
+ params = this.omit(params, 'until');
838
913
  const response = await this.publicGetOpenapiQuoteV1Klines(this.extend(request, params));
839
914
  //
840
915
  // [
@@ -1246,7 +1321,7 @@ class coinsph extends coinsph$1 {
1246
1321
  * @method
1247
1322
  * @name coinsph#fetchOpenOrders
1248
1323
  * @description fetch all unfilled currently open orders
1249
- * @see https://coins-docs.github.io/rest-api/#query-order-user_data
1324
+ * @see https://coins-docs.github.io/rest-api/#current-open-orders-user_data
1250
1325
  * @param {string} symbol unified market symbol
1251
1326
  * @param {int} [since] the earliest time in ms to fetch open orders for
1252
1327
  * @param {int} [limit] the maximum number of open orders structures to retrieve
@@ -141,6 +141,53 @@ class coinspot extends coinspot$1 {
141
141
  'options': {
142
142
  'fetchBalance': 'private_post_my_balances',
143
143
  },
144
+ 'features': {
145
+ 'spot': {
146
+ 'sandbox': false,
147
+ 'createOrder': {
148
+ 'marginMode': false,
149
+ 'triggerPrice': false,
150
+ 'triggerPriceType': undefined,
151
+ 'triggerDirection': false,
152
+ 'stopLossPrice': false,
153
+ 'takeProfitPrice': false,
154
+ 'attachedStopLossTakeProfit': undefined,
155
+ 'timeInForce': {
156
+ 'IOC': false,
157
+ 'FOK': false,
158
+ 'PO': false,
159
+ 'GTD': false,
160
+ },
161
+ 'hedged': false,
162
+ 'trailing': false,
163
+ 'leverage': false,
164
+ 'marketBuyByCost': false,
165
+ 'marketBuyRequiresPrice': false,
166
+ 'selfTradePrevention': false,
167
+ 'iceberg': false,
168
+ },
169
+ 'createOrders': undefined,
170
+ 'fetchMyTrades': {
171
+ 'marginMode': false,
172
+ 'limit': undefined,
173
+ 'daysBack': 100000,
174
+ 'untilDays': 100000, // todo implement
175
+ },
176
+ 'fetchOrder': undefined,
177
+ 'fetchOpenOrders': undefined,
178
+ 'fetchOrders': undefined,
179
+ 'fetchClosedOrders': undefined,
180
+ 'fetchOHLCV': undefined,
181
+ },
182
+ 'swap': {
183
+ 'linear': undefined,
184
+ 'inverse': undefined,
185
+ },
186
+ 'future': {
187
+ 'linear': undefined,
188
+ 'inverse': undefined,
189
+ },
190
+ },
144
191
  'precisionMode': number.TICK_SIZE,
145
192
  });
146
193
  }
@@ -248,6 +248,78 @@ class currencycom extends currencycom$1 {
248
248
  'leverage_markets_suffix': '_LEVERAGE',
249
249
  'collateralCurrencies': ['USD', 'EUR', 'USDT'],
250
250
  },
251
+ 'features': {
252
+ 'default': {
253
+ 'sandbox': true,
254
+ 'createOrder': {
255
+ 'marginMode': true,
256
+ 'triggerPrice': true,
257
+ 'triggerPriceType': undefined,
258
+ 'triggerDirection': false,
259
+ 'stopLossPrice': false,
260
+ 'takeProfitPrice': false,
261
+ 'attachedStopLossTakeProfit': {
262
+ 'triggerPriceType': undefined,
263
+ 'price': false,
264
+ },
265
+ 'timeInForce': {
266
+ 'IOC': true,
267
+ 'FOK': true,
268
+ 'PO': false,
269
+ 'GTD': true,
270
+ },
271
+ 'hedged': false,
272
+ 'selfTradePrevention': false,
273
+ 'trailing': false,
274
+ 'iceberg': false,
275
+ 'leverage': true,
276
+ 'marketBuyByCost': false,
277
+ 'marketBuyRequiresPrice': false,
278
+ },
279
+ 'createOrders': undefined,
280
+ 'fetchMyTrades': {
281
+ 'marginMode': false,
282
+ 'limit': 500,
283
+ 'daysBack': 100000,
284
+ 'untilDays': 100000, // todo implementation
285
+ },
286
+ 'fetchOrder': {
287
+ 'marginMode': false,
288
+ 'trigger': false,
289
+ 'trailing': false,
290
+ },
291
+ 'fetchOpenOrders': {
292
+ 'marginMode': true,
293
+ 'limit': 100,
294
+ 'trigger': false,
295
+ 'trailing': false,
296
+ },
297
+ 'fetchOrders': undefined,
298
+ 'fetchClosedOrders': undefined,
299
+ 'fetchOHLCV': {
300
+ 'limit': 1000,
301
+ },
302
+ },
303
+ 'spot': {
304
+ 'extends': 'default',
305
+ },
306
+ 'swap': {
307
+ 'linear': {
308
+ 'extends': 'default',
309
+ },
310
+ 'inverse': {
311
+ 'extends': 'default',
312
+ },
313
+ },
314
+ 'future': {
315
+ 'linear': {
316
+ 'extends': 'default',
317
+ },
318
+ 'inverse': {
319
+ 'extends': 'default',
320
+ },
321
+ },
322
+ },
251
323
  'exceptions': {
252
324
  'broad': {
253
325
  'FIELD_VALIDATION_ERROR Cancel is available only for LIMIT order': errors.InvalidOrder,