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
package/js/src/lbank.js CHANGED
@@ -299,6 +299,76 @@ export default class lbank extends Exchange {
299
299
  'USDT': 'TRC20',
300
300
  },
301
301
  },
302
+ 'features': {
303
+ 'default': {
304
+ 'sandbox': false,
305
+ 'createOrder': {
306
+ 'marginMode': false,
307
+ 'triggerPrice': false,
308
+ 'triggerPriceType': undefined,
309
+ 'triggerDirection': false,
310
+ 'stopLossPrice': false,
311
+ 'takeProfitPrice': false,
312
+ 'attachedStopLossTakeProfit': undefined,
313
+ 'timeInForce': {
314
+ 'IOC': true,
315
+ 'FOK': true,
316
+ 'PO': false,
317
+ 'GTD': false,
318
+ },
319
+ 'hedged': false,
320
+ 'selfTradePrevention': false,
321
+ 'trailing': false,
322
+ 'leverage': false,
323
+ 'marketBuyByCost': true,
324
+ 'marketBuyRequiresPrice': false,
325
+ 'iceberg': false,
326
+ },
327
+ 'createOrders': undefined,
328
+ 'fetchMyTrades': {
329
+ 'marginMode': false,
330
+ 'limit': 100,
331
+ 'daysBack': 100000,
332
+ 'untilDays': 2,
333
+ },
334
+ 'fetchOrder': {
335
+ 'marginMode': false,
336
+ 'trigger': false,
337
+ 'trailing': false,
338
+ },
339
+ 'fetchOpenOrders': {
340
+ 'marginMode': false,
341
+ 'limit': 200,
342
+ 'trigger': false,
343
+ 'trailing': false,
344
+ },
345
+ 'fetchOrders': {
346
+ 'marginMode': false,
347
+ 'limit': 200,
348
+ 'daysBack': undefined,
349
+ 'untilDays': undefined,
350
+ 'trigger': false,
351
+ 'trailing': false,
352
+ },
353
+ 'fetchClosedOrders': undefined,
354
+ 'fetchOHLCV': {
355
+ 'limit': 2000,
356
+ },
357
+ },
358
+ 'spot': {
359
+ 'extends': 'default',
360
+ },
361
+ 'swap': {
362
+ 'linear': {
363
+ 'extends': 'default',
364
+ },
365
+ 'inverse': undefined,
366
+ },
367
+ 'future': {
368
+ 'linear': undefined,
369
+ 'inverse': undefined,
370
+ },
371
+ },
302
372
  });
303
373
  }
304
374
  /**
package/js/src/luno.js CHANGED
@@ -183,6 +183,79 @@ export default class luno extends Exchange {
183
183
  },
184
184
  },
185
185
  'precisionMode': TICK_SIZE,
186
+ 'features': {
187
+ 'spot': {
188
+ 'sandbox': false,
189
+ 'createOrder': {
190
+ 'marginMode': false,
191
+ 'triggerPrice': true,
192
+ 'triggerPriceType': undefined,
193
+ 'triggerDirection': true,
194
+ 'stopLossPrice': false,
195
+ 'takeProfitPrice': false,
196
+ 'attachedStopLossTakeProfit': undefined,
197
+ 'timeInForce': {
198
+ 'IOC': true,
199
+ 'FOK': true,
200
+ 'PO': true,
201
+ 'GTD': false,
202
+ },
203
+ 'hedged': false,
204
+ 'trailing': false,
205
+ 'leverage': false,
206
+ 'marketBuyByCost': true,
207
+ 'marketBuyRequiresPrice': false,
208
+ 'selfTradePrevention': false,
209
+ 'iceberg': false,
210
+ },
211
+ 'createOrders': undefined,
212
+ 'fetchMyTrades': {
213
+ 'marginMode': false,
214
+ 'limit': 1000,
215
+ 'daysBack': 100000,
216
+ 'untilDays': 100000, // todo
217
+ },
218
+ 'fetchOrder': {
219
+ 'marginMode': false,
220
+ 'trigger': false,
221
+ 'trailing': false,
222
+ },
223
+ 'fetchOpenOrders': {
224
+ 'marginMode': false,
225
+ 'limit': 1000,
226
+ 'trigger': false,
227
+ 'trailing': false,
228
+ },
229
+ 'fetchOrders': {
230
+ 'marginMode': false,
231
+ 'limit': 1000,
232
+ 'daysBack': 100000,
233
+ 'untilDays': undefined,
234
+ 'trigger': false,
235
+ 'trailing': false,
236
+ },
237
+ 'fetchClosedOrders': {
238
+ 'marginMode': false,
239
+ 'limit': 1000,
240
+ 'daysBack': 100000,
241
+ 'daysBackCanceled': 1,
242
+ 'untilDays': undefined,
243
+ 'trigger': false,
244
+ 'trailing': false,
245
+ },
246
+ 'fetchOHLCV': {
247
+ 'limit': undefined,
248
+ },
249
+ },
250
+ 'swap': {
251
+ 'linear': undefined,
252
+ 'inverse': undefined,
253
+ },
254
+ 'future': {
255
+ 'linear': undefined,
256
+ 'inverse': undefined,
257
+ },
258
+ },
186
259
  });
187
260
  }
188
261
  /**
package/js/src/lykke.js CHANGED
@@ -187,6 +187,70 @@ export default class lykke extends Exchange {
187
187
  'broad': {},
188
188
  },
189
189
  'commonCurrencies': {},
190
+ 'features': {
191
+ 'spot': {
192
+ 'sandbox': false,
193
+ 'createOrder': {
194
+ 'marginMode': false,
195
+ 'triggerPrice': false,
196
+ 'triggerPriceType': undefined,
197
+ 'triggerDirection': false,
198
+ 'stopLossPrice': false,
199
+ 'takeProfitPrice': false,
200
+ 'attachedStopLossTakeProfit': undefined,
201
+ 'timeInForce': {
202
+ 'IOC': false,
203
+ 'FOK': false,
204
+ 'PO': false,
205
+ 'GTD': false,
206
+ },
207
+ 'hedged': false,
208
+ 'trailing': false,
209
+ 'leverage': false,
210
+ 'marketBuyByCost': false,
211
+ 'marketBuyRequiresPrice': false,
212
+ 'selfTradePrevention': false,
213
+ 'iceberg': false,
214
+ },
215
+ 'createOrders': undefined,
216
+ 'fetchMyTrades': {
217
+ 'marginMode': false,
218
+ 'limit': 1000,
219
+ 'daysBack': 100000,
220
+ 'untilDays': 100000, // todo
221
+ },
222
+ 'fetchOrder': {
223
+ 'marginMode': false,
224
+ 'trigger': false,
225
+ 'trailing': false,
226
+ },
227
+ 'fetchOpenOrders': {
228
+ 'marginMode': false,
229
+ 'limit': 1000,
230
+ 'trigger': false,
231
+ 'trailing': false,
232
+ },
233
+ 'fetchOrders': undefined,
234
+ 'fetchClosedOrders': {
235
+ 'marginMode': false,
236
+ 'limit': 1000,
237
+ 'daysBack': undefined,
238
+ 'daysBackCanceled': undefined,
239
+ 'untilDays': undefined,
240
+ 'trigger': false,
241
+ 'trailing': false,
242
+ },
243
+ 'fetchOHLCV': undefined,
244
+ },
245
+ 'swap': {
246
+ 'linear': undefined,
247
+ 'inverse': undefined,
248
+ },
249
+ 'future': {
250
+ 'linear': undefined,
251
+ 'inverse': undefined,
252
+ },
253
+ },
190
254
  });
191
255
  }
192
256
  /**
package/js/src/mercado.js CHANGED
@@ -161,6 +161,71 @@ export default class mercado extends Exchange {
161
161
  'XRP': 0.1,
162
162
  },
163
163
  },
164
+ 'features': {
165
+ 'spot': {
166
+ 'sandbox': false,
167
+ 'createOrder': {
168
+ 'marginMode': false,
169
+ 'triggerPrice': false,
170
+ 'triggerPriceType': undefined,
171
+ 'triggerDirection': false,
172
+ 'stopLossPrice': false,
173
+ 'takeProfitPrice': false,
174
+ 'attachedStopLossTakeProfit': undefined,
175
+ 'timeInForce': {
176
+ 'IOC': false,
177
+ 'FOK': false,
178
+ 'PO': true,
179
+ 'GTD': false,
180
+ },
181
+ 'hedged': false,
182
+ 'trailing': false,
183
+ 'leverage': false,
184
+ 'marketBuyByCost': true,
185
+ 'marketBuyRequiresPrice': true,
186
+ 'selfTradePrevention': false,
187
+ 'iceberg': false,
188
+ },
189
+ 'createOrders': undefined,
190
+ 'fetchMyTrades': {
191
+ 'marginMode': false,
192
+ 'limit': undefined,
193
+ 'daysBack': 100000,
194
+ 'untilDays': 100000, // todo
195
+ },
196
+ 'fetchOrder': {
197
+ 'marginMode': false,
198
+ 'trigger': false,
199
+ 'trailing': false,
200
+ },
201
+ 'fetchOpenOrders': {
202
+ 'marginMode': false,
203
+ 'limit': undefined,
204
+ 'trigger': false,
205
+ 'trailing': false,
206
+ },
207
+ 'fetchOrders': {
208
+ 'marginMode': false,
209
+ 'limit': 500,
210
+ 'daysBack': 100000,
211
+ 'untilDays': 100000,
212
+ 'trigger': false,
213
+ 'trailing': false,
214
+ },
215
+ 'fetchClosedOrders': undefined,
216
+ 'fetchOHLCV': {
217
+ 'limit': 1000,
218
+ },
219
+ },
220
+ 'swap': {
221
+ 'linear': undefined,
222
+ 'inverse': undefined,
223
+ },
224
+ 'future': {
225
+ 'linear': undefined,
226
+ 'inverse': undefined,
227
+ },
228
+ },
164
229
  'precisionMode': TICK_SIZE,
165
230
  });
166
231
  }
package/js/src/mexc.js CHANGED
@@ -4698,7 +4698,7 @@ export default class mexc extends Exchange {
4698
4698
  return {
4699
4699
  'info': depositAddress,
4700
4700
  'currency': this.safeCurrencyCode(currencyId, currency),
4701
- 'network': this.networkIdToCode(networkId),
4701
+ 'network': this.networkIdToCode(networkId, currencyId),
4702
4702
  'address': address,
4703
4703
  'tag': this.safeString(depositAddress, 'memo'),
4704
4704
  };
package/js/src/myokx.js CHANGED
@@ -39,6 +39,16 @@ export default class myokx extends okx {
39
39
  'future': false,
40
40
  'option': false,
41
41
  },
42
+ 'features': {
43
+ 'swap': {
44
+ 'linear': undefined,
45
+ 'inverse': undefined,
46
+ },
47
+ 'future': {
48
+ 'linear': undefined,
49
+ 'inverse': undefined,
50
+ },
51
+ },
42
52
  });
43
53
  }
44
54
  }
package/js/src/ndax.js CHANGED
@@ -261,6 +261,77 @@ export default class ndax extends Exchange {
261
261
  },
262
262
  },
263
263
  },
264
+ 'features': {
265
+ 'spot': {
266
+ 'sandbox': true,
267
+ 'createOrder': {
268
+ 'marginMode': false,
269
+ 'triggerPrice': true,
270
+ 'triggerDirection': false,
271
+ 'triggerPriceType': {
272
+ 'last': true,
273
+ 'mark': false,
274
+ 'index': false,
275
+ // bid & ask
276
+ },
277
+ 'stopLossPrice': false,
278
+ 'takeProfitPrice': false,
279
+ 'attachedStopLossTakeProfit': undefined,
280
+ // todo
281
+ 'timeInForce': {
282
+ 'IOC': true,
283
+ 'FOK': true,
284
+ 'PO': true,
285
+ 'GTD': false,
286
+ },
287
+ 'hedged': false,
288
+ 'trailing': false,
289
+ 'leverage': false,
290
+ 'marketBuyByCost': false,
291
+ 'marketBuyRequiresPrice': false,
292
+ 'selfTradePrevention': false,
293
+ 'iceberg': true, // todo
294
+ },
295
+ 'createOrders': undefined,
296
+ 'fetchMyTrades': {
297
+ 'marginMode': false,
298
+ 'limit': 100,
299
+ 'daysBack': 100000,
300
+ 'untilDays': 100000, // todo
301
+ },
302
+ 'fetchOrder': {
303
+ 'marginMode': false,
304
+ 'trigger': false,
305
+ 'trailing': false,
306
+ },
307
+ 'fetchOpenOrders': {
308
+ 'marginMode': false,
309
+ 'limit': undefined,
310
+ 'trigger': false,
311
+ 'trailing': false,
312
+ },
313
+ 'fetchOrders': {
314
+ 'marginMode': false,
315
+ 'limit': undefined,
316
+ 'daysBack': undefined,
317
+ 'untilDays': undefined,
318
+ 'trigger': false,
319
+ 'trailing': false,
320
+ },
321
+ 'fetchClosedOrders': undefined,
322
+ 'fetchOHLCV': {
323
+ 'limit': undefined,
324
+ },
325
+ },
326
+ 'swap': {
327
+ 'linear': undefined,
328
+ 'inverse': undefined,
329
+ },
330
+ 'future': {
331
+ 'linear': undefined,
332
+ 'inverse': undefined,
333
+ },
334
+ },
264
335
  'fees': {
265
336
  'trading': {
266
337
  'tierBased': false,
package/js/src/novadax.js CHANGED
@@ -211,6 +211,80 @@ export default class novadax extends Exchange {
211
211
  'fillResponseFromRequest': true,
212
212
  },
213
213
  },
214
+ 'features': {
215
+ 'spot': {
216
+ 'sandbox': false,
217
+ 'createOrder': {
218
+ 'marginMode': false,
219
+ 'triggerPrice': true,
220
+ 'triggerDirection': true,
221
+ 'triggerPriceType': undefined,
222
+ 'stopLossPrice': false,
223
+ 'takeProfitPrice': false,
224
+ 'attachedStopLossTakeProfit': undefined,
225
+ // todo
226
+ 'timeInForce': {
227
+ 'IOC': false,
228
+ 'FOK': false,
229
+ 'PO': false,
230
+ 'GTD': false,
231
+ },
232
+ 'hedged': false,
233
+ 'trailing': false,
234
+ 'leverage': false,
235
+ 'marketBuyByCost': true,
236
+ 'marketBuyRequiresPrice': false,
237
+ 'selfTradePrevention': false,
238
+ 'iceberg': true, // todo
239
+ },
240
+ 'createOrders': undefined,
241
+ 'fetchMyTrades': {
242
+ 'marginMode': false,
243
+ 'limit': 100,
244
+ 'daysBack': 100000,
245
+ 'untilDays': 100000, // todo
246
+ },
247
+ 'fetchOrder': {
248
+ 'marginMode': false,
249
+ 'trigger': false,
250
+ 'trailing': false,
251
+ },
252
+ 'fetchOpenOrders': {
253
+ 'marginMode': false,
254
+ 'limit': undefined,
255
+ 'trigger': false,
256
+ 'trailing': false,
257
+ },
258
+ 'fetchOrders': {
259
+ 'marginMode': false,
260
+ 'limit': 100,
261
+ 'daysBack': 100000,
262
+ 'untilDays': 100000,
263
+ 'trigger': false,
264
+ 'trailing': false,
265
+ },
266
+ 'fetchClosedOrders': {
267
+ 'marginMode': false,
268
+ 'limit': 100,
269
+ 'daysBack': 100000,
270
+ 'daysBackCanceled': 1,
271
+ 'untilDays': 100000,
272
+ 'trigger': false,
273
+ 'trailing': false,
274
+ },
275
+ 'fetchOHLCV': {
276
+ 'limit': undefined, // todo max 3000
277
+ },
278
+ },
279
+ 'swap': {
280
+ 'linear': undefined,
281
+ 'inverse': undefined,
282
+ },
283
+ 'future': {
284
+ 'linear': undefined,
285
+ 'inverse': undefined,
286
+ },
287
+ },
214
288
  });
215
289
  }
216
290
  /**
package/js/src/oceanex.js CHANGED
@@ -135,6 +135,75 @@ export default class oceanex extends Exchange {
135
135
  'PLA': 'Plair',
136
136
  },
137
137
  'precisionMode': TICK_SIZE,
138
+ 'features': {
139
+ 'spot': {
140
+ 'sandbox': false,
141
+ 'createOrder': {
142
+ 'marginMode': false,
143
+ 'triggerPrice': true,
144
+ 'triggerDirection': true,
145
+ 'triggerPriceType': undefined,
146
+ 'stopLossPrice': false,
147
+ 'takeProfitPrice': false,
148
+ 'attachedStopLossTakeProfit': undefined,
149
+ 'timeInForce': {
150
+ 'IOC': false,
151
+ 'FOK': false,
152
+ 'PO': false,
153
+ 'GTD': false,
154
+ },
155
+ 'hedged': false,
156
+ 'trailing': false,
157
+ 'leverage': false,
158
+ 'marketBuyByCost': false,
159
+ 'marketBuyRequiresPrice': false,
160
+ 'selfTradePrevention': false,
161
+ 'iceberg': false,
162
+ },
163
+ 'createOrders': undefined,
164
+ 'fetchMyTrades': undefined,
165
+ 'fetchOrder': {
166
+ 'marginMode': false,
167
+ 'trigger': false,
168
+ 'trailing': false,
169
+ },
170
+ 'fetchOpenOrders': {
171
+ 'marginMode': false,
172
+ 'limit': 100,
173
+ 'trigger': false,
174
+ 'trailing': false,
175
+ },
176
+ 'fetchOrders': {
177
+ 'marginMode': false,
178
+ 'limit': 100,
179
+ 'daysBack': 100000,
180
+ 'untilDays': 100000,
181
+ 'trigger': false,
182
+ 'trailing': false,
183
+ },
184
+ 'fetchClosedOrders': {
185
+ 'marginMode': false,
186
+ 'limit': 100,
187
+ 'daysBack': 100000,
188
+ 'daysBackCanceled': 1,
189
+ 'untilDays': 100000,
190
+ 'trigger': false,
191
+ 'trailing': false,
192
+ },
193
+ 'fetchOHLCV': {
194
+ 'limit': 100,
195
+ },
196
+ },
197
+ // todo implement swap
198
+ 'swap': {
199
+ 'linear': undefined,
200
+ 'inverse': undefined,
201
+ },
202
+ 'future': {
203
+ 'linear': undefined,
204
+ 'inverse': undefined,
205
+ },
206
+ },
138
207
  'exceptions': {
139
208
  'codes': {
140
209
  '-1': BadRequest,
package/js/src/okcoin.js CHANGED
@@ -204,6 +204,83 @@ export default class okcoin extends Exchange {
204
204
  },
205
205
  },
206
206
  },
207
+ 'features': {
208
+ 'spot': {
209
+ 'sandbox': false,
210
+ 'createOrder': {
211
+ 'marginMode': true,
212
+ 'triggerPrice': true,
213
+ 'triggerDirection': true,
214
+ 'triggerPriceType': {
215
+ 'last': true,
216
+ 'mark': false,
217
+ 'index': false,
218
+ },
219
+ 'stopLossPrice': true,
220
+ 'takeProfitPrice': true,
221
+ 'attachedStopLossTakeProfit': {
222
+ 'triggerPriceType': {
223
+ 'last': true,
224
+ 'mark': false,
225
+ 'index': false,
226
+ },
227
+ 'price': true,
228
+ },
229
+ 'timeInForce': {
230
+ 'IOC': true,
231
+ 'FOK': true,
232
+ 'PO': true,
233
+ 'GTD': false,
234
+ },
235
+ 'hedged': false,
236
+ 'trailing': true,
237
+ 'leverage': false,
238
+ 'marketBuyByCost': true,
239
+ 'marketBuyRequiresPrice': true,
240
+ 'selfTradePrevention': false,
241
+ 'iceberg': true, // todo
242
+ },
243
+ 'createOrders': undefined,
244
+ 'fetchMyTrades': {
245
+ 'marginMode': false,
246
+ 'limit': 100,
247
+ 'daysBack': 90,
248
+ 'untilDays': 90, // todo
249
+ },
250
+ 'fetchOrder': {
251
+ 'marginMode': false,
252
+ 'trigger': true,
253
+ 'trailing': true, // todo
254
+ },
255
+ 'fetchOpenOrders': {
256
+ 'marginMode': false,
257
+ 'limit': 100,
258
+ 'trigger': true,
259
+ 'trailing': true,
260
+ },
261
+ 'fetchOrders': undefined,
262
+ 'fetchClosedOrders': {
263
+ 'marginMode': false,
264
+ 'limit': 100,
265
+ 'daysBack': 90,
266
+ 'daysBackCanceled': 1 / 12,
267
+ 'untilDays': 90,
268
+ 'trigger': true,
269
+ 'trailing': true,
270
+ },
271
+ 'fetchOHLCV': {
272
+ 'limit': 100, // 300 is only possible for 'recent' 1440 candles, which does not make much sense
273
+ },
274
+ },
275
+ 'swap': {
276
+ 'linear': undefined,
277
+ 'inverse': undefined,
278
+ },
279
+ 'future': {
280
+ 'linear': undefined,
281
+ 'inverse': undefined,
282
+ },
283
+ },
207
284
  'fees': {
208
285
  'trading': {
209
286
  'taker': 0.002,
@@ -1513,7 +1590,7 @@ export default class okcoin extends Exchange {
1513
1590
  if (stopLossDefined) {
1514
1591
  const stopLossTriggerPrice = this.safeValueN(stopLoss, ['triggerPrice', 'stopPrice', 'slTriggerPx']);
1515
1592
  if (stopLossTriggerPrice === undefined) {
1516
- throw new InvalidOrder(this.id + ' createOrder() requires a trigger price in params["stopLoss"]["triggerPrice"], or params["stopLoss"]["stopPrice"], or params["stopLoss"]["slTriggerPx"] for a stop loss order');
1593
+ throw new InvalidOrder(this.id + ' createOrder() requires a trigger price in params["stopLoss"]["triggerPrice"] for a stop loss order');
1517
1594
  }
1518
1595
  request['slTriggerPx'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
1519
1596
  const stopLossLimitPrice = this.safeValueN(stopLoss, ['price', 'stopLossPrice', 'slOrdPx']);
@@ -1526,7 +1603,7 @@ export default class okcoin extends Exchange {
1526
1603
  }
1527
1604
  else if (stopLossLimitOrderType) {
1528
1605
  if (stopLossLimitPrice === undefined) {
1529
- throw new InvalidOrder(this.id + ' createOrder() requires a limit price in params["stopLoss"]["price"] or params["stopLoss"]["slOrdPx"] for a stop loss limit order');
1606
+ throw new InvalidOrder(this.id + ' createOrder() requires a limit price in params["stopLoss"]["price"] for a stop loss limit order');
1530
1607
  }
1531
1608
  else {
1532
1609
  request['slOrdPx'] = this.priceToPrecision(symbol, stopLossLimitPrice);
package/js/src/okx.d.ts CHANGED
@@ -37,6 +37,7 @@ export default class okx extends Exchange {
37
37
  * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
38
38
  */
39
39
  fetchAccounts(params?: {}): Promise<Account[]>;
40
+ nonce(): number;
40
41
  /**
41
42
  * @method
42
43
  * @name okx#fetchMarkets