ccxt 4.0.100 → 4.0.102

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 (73) hide show
  1. package/README.md +5 -6
  2. package/dist/ccxt.browser.js +965 -2559
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +1 -4
  5. package/dist/cjs/src/binance.js +36 -1
  6. package/dist/cjs/src/bingx.js +41 -4
  7. package/dist/cjs/src/bitbank.js +11 -0
  8. package/dist/cjs/src/bitfinex.js +12 -8
  9. package/dist/cjs/src/bitflyer.js +39 -10
  10. package/dist/cjs/src/bitforex.js +0 -8
  11. package/dist/cjs/src/bitget.js +15 -5
  12. package/dist/cjs/src/bitmart.js +69 -0
  13. package/dist/cjs/src/bitstamp1.js +22 -0
  14. package/dist/cjs/src/bl3p.js +32 -0
  15. package/dist/cjs/src/bybit.js +147 -48
  16. package/dist/cjs/src/coinbasepro.js +11 -0
  17. package/dist/cjs/src/currencycom.js +1 -1
  18. package/dist/cjs/src/gemini.js +1 -0
  19. package/dist/cjs/src/huobi.js +1 -1
  20. package/dist/cjs/src/huobijp.js +1 -1
  21. package/dist/cjs/src/idex.js +1 -1
  22. package/dist/cjs/src/kucoinfutures.js +46 -51
  23. package/dist/cjs/src/lbank.js +1 -1
  24. package/dist/cjs/src/lbank2.js +1 -1
  25. package/dist/cjs/src/pro/binance.js +7 -7
  26. package/dist/cjs/src/pro/bybit.js +18 -17
  27. package/dist/cjs/src/pro/coinbasepro.js +10 -10
  28. package/dist/cjs/src/pro/huobijp.js +1 -2
  29. package/dist/cjs/src/pro/krakenfutures.js +7 -7
  30. package/dist/cjs/src/pro/kucoin.js +51 -2
  31. package/dist/cjs/src/pro/kucoinfutures.js +3 -3
  32. package/dist/cjs/src/pro/phemex.js +2 -2
  33. package/js/ccxt.d.ts +2 -5
  34. package/js/ccxt.js +2 -4
  35. package/js/src/abstract/binance.d.ts +8 -0
  36. package/js/src/abstract/binancecoinm.d.ts +8 -0
  37. package/js/src/abstract/binanceus.d.ts +8 -0
  38. package/js/src/abstract/binanceusdm.d.ts +8 -0
  39. package/js/src/abstract/bingx.d.ts +16 -1
  40. package/js/src/binance.js +36 -1
  41. package/js/src/bingx.js +41 -4
  42. package/js/src/bitbank.js +11 -0
  43. package/js/src/bitfinex.js +12 -8
  44. package/js/src/bitflyer.js +39 -10
  45. package/js/src/bitforex.js +0 -8
  46. package/js/src/bitget.js +15 -5
  47. package/js/src/bitmart.d.ts +38 -0
  48. package/js/src/bitmart.js +69 -0
  49. package/js/src/bitstamp1.js +22 -0
  50. package/js/src/bl3p.js +32 -0
  51. package/js/src/bybit.js +147 -48
  52. package/js/src/coinbasepro.js +11 -0
  53. package/js/src/currencycom.js +1 -1
  54. package/js/src/gemini.js +1 -0
  55. package/js/src/huobi.js +1 -1
  56. package/js/src/huobijp.js +1 -1
  57. package/js/src/idex.js +1 -1
  58. package/js/src/kucoinfutures.js +46 -51
  59. package/js/src/lbank.js +1 -1
  60. package/js/src/lbank2.js +1 -1
  61. package/js/src/pro/binance.js +7 -7
  62. package/js/src/pro/bybit.js +18 -17
  63. package/js/src/pro/coinbasepro.js +10 -10
  64. package/js/src/pro/huobijp.js +1 -2
  65. package/js/src/pro/krakenfutures.js +7 -7
  66. package/js/src/pro/kucoin.d.ts +1 -0
  67. package/js/src/pro/kucoin.js +51 -2
  68. package/js/src/pro/kucoinfutures.js +3 -3
  69. package/js/src/pro/phemex.js +2 -2
  70. package/package.json +1 -1
  71. package/skip-tests.json +3 -7
  72. package/js/src/abstract/bkex.d.ts +0 -61
  73. package/js/src/abstract/bkex.js +0 -11
package/js/src/bingx.js CHANGED
@@ -139,6 +139,7 @@ export default class bingx extends Exchange {
139
139
  'quote/klines': 1,
140
140
  'quote/openInterest': 1,
141
141
  'quote/ticker': 1,
142
+ 'quote/bookTicker': 1,
142
143
  },
143
144
  },
144
145
  'private': {
@@ -190,11 +191,17 @@ export default class bingx extends Exchange {
190
191
  'private': {
191
192
  'get': {
192
193
  'capital/config/getall': 3,
194
+ 'capital/deposit/address': 1,
195
+ 'capital/innerTransfer/records': 1,
196
+ 'capital/subAccount/deposit/address': 1,
197
+ 'capital/deposit/subHisrec': 1,
198
+ 'capital/subAccount/innerTransfer/records': 1,
193
199
  },
194
200
  'post': {
195
201
  'capital/withdraw/apply': 3,
196
202
  'capital/innerTransfer/apply': 3,
197
203
  'capital/subAccountInnerTransfer/apply': 3,
204
+ 'capital/deposit/createSubAddress': 1,
198
205
  },
199
206
  },
200
207
  },
@@ -205,6 +212,7 @@ export default class bingx extends Exchange {
205
212
  'get': {
206
213
  'list': 3,
207
214
  'assets': 3,
215
+ 'apiKey/query': 1,
208
216
  },
209
217
  'post': {
210
218
  'create': 3,
@@ -219,13 +227,42 @@ export default class bingx extends Exchange {
219
227
  'account': {
220
228
  'v1': {
221
229
  'private': {
230
+ 'get': {
231
+ 'uid': 1,
232
+ },
222
233
  'post': {
223
- 'uid': 3,
224
234
  'innerTransfer/authorizeSubAccount': 3,
225
235
  },
226
236
  },
227
237
  },
228
238
  },
239
+ 'copyTrading': {
240
+ 'v1': {
241
+ 'private': {
242
+ 'get': {
243
+ 'swap/trace/currentTrack': 1,
244
+ },
245
+ 'post': {
246
+ 'swap/trace/closeTrackOrder': 1,
247
+ 'swap/trace/setTPSL': 1,
248
+ },
249
+ },
250
+ },
251
+ },
252
+ 'api': {
253
+ 'v3': {
254
+ 'private': {
255
+ 'get': {
256
+ 'asset/transfer': 1,
257
+ 'capital/deposit/hisrec': 1,
258
+ 'capital/withdraw/history': 1,
259
+ },
260
+ 'post': {
261
+ 'post/asset/transfer': 1,
262
+ },
263
+ },
264
+ },
265
+ },
229
266
  },
230
267
  'timeframes': {
231
268
  '1m': '1m',
@@ -1489,9 +1526,9 @@ export default class bingx extends Exchange {
1489
1526
  * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1490
1527
  * @param {object} [params] extra parameters specific to the bingx api endpoint
1491
1528
  * @param {bool} [params.postOnly] true to place a post only order
1492
- * @param {object} [params.triggerPrice] triggerPrice at which the attached take profit / stop loss order will be triggered (swap markets only)
1493
- * @param {float} [params.stopLossPrice] stop loss trigger price (swap markets only)
1494
- * @param {float} [params.takeProfitPrice] take profit trigger price (swap markets only)
1529
+ * @param {float} [params.triggerPrice] *swap only* triggerPrice at which the attached take profit / stop loss order will be triggered
1530
+ * @param {float} [params.stopLossPrice] *swap only* stop loss trigger price
1531
+ * @param {float} [params.takeProfitPrice] *swap only* take profit trigger price
1495
1532
  * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1496
1533
  */
1497
1534
  await this.loadMarkets();
package/js/src/bitbank.js CHANGED
@@ -319,6 +319,17 @@ export default class bitbank extends Exchange {
319
319
  return this.parseOrderBook(orderbook, market['symbol'], timestamp);
320
320
  }
321
321
  parseTrade(trade, market = undefined) {
322
+ //
323
+ // fetchTrades
324
+ //
325
+ // {
326
+ // "transaction_id": "1143247037",
327
+ // "side": "buy",
328
+ // "price": "3836025",
329
+ // "amount": "0.0005",
330
+ // "executed_at": "1694249441593"
331
+ // }
332
+ //
322
333
  const timestamp = this.safeInteger(trade, 'executed_at');
323
334
  market = this.safeMarket(undefined, market);
324
335
  const priceString = this.safeString(trade, 'price');
@@ -922,14 +922,6 @@ export default class bitfinex extends Exchange {
922
922
  // "type":"sell"
923
923
  // }
924
924
  //
925
- // { "timestamp":1637258238,
926
- // "tid":894452800,
927
- // "price":"0.99958",
928
- // "amount":"261.90514",
929
- // "exchange":"bitfinex",
930
- // "type":"buy"
931
- // }
932
- //
933
925
  // fetchMyTrades (private) v1
934
926
  //
935
927
  // {
@@ -1008,6 +1000,18 @@ export default class bitfinex extends Exchange {
1008
1000
  request['timestamp'] = this.parseToInt(since / 1000);
1009
1001
  }
1010
1002
  const response = await this.publicGetTradesSymbol(this.extend(request, params));
1003
+ //
1004
+ // [
1005
+ // {
1006
+ // "timestamp": "1694284565",
1007
+ // "tid": "1415415034",
1008
+ // "price": "25862.0",
1009
+ // "amount": "0.00020685",
1010
+ // "exchange": "bitfinex",
1011
+ // "type": "buy"
1012
+ // },
1013
+ // ]
1014
+ //
1011
1015
  return this.parseTrades(response, market, since, limit);
1012
1016
  }
1013
1017
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -409,7 +409,7 @@ export default class bitflyer extends Exchange {
409
409
  //
410
410
  // fetchTrades (public) v1
411
411
  //
412
- // {
412
+ // {
413
413
  // "id":2278466664,
414
414
  // "side":"SELL",
415
415
  // "price":56810.7,
@@ -419,16 +419,18 @@ export default class bitflyer extends Exchange {
419
419
  // "sell_child_order_acceptance_id":"JRF20211119-114639-236919"
420
420
  // }
421
421
  //
422
- // {
423
- // "id":2278463423,
424
- // "side":"BUY",
425
- // "price":56757.83,
426
- // "size":0.6003,"exec_date":"2021-11-19T11:28:00.523",
427
- // "buy_child_order_acceptance_id":"JRF20211119-112800-236526",
428
- // "sell_child_order_acceptance_id":"JRF20211119-112734-062017"
429
- // }
430
- //
422
+ // fetchMyTrades
431
423
  //
424
+ // {
425
+ // "id": 37233,
426
+ // "side": "BUY",
427
+ // "price": 33470,
428
+ // "size": 0.01,
429
+ // "exec_date": "2015-07-07T09:57:40.397",
430
+ // "child_order_id": "JOR20150707-060559-021935",
431
+ // "child_order_acceptance_id": "JRF20150707-060559-396699"
432
+ // "commission": 0,
433
+ // },
432
434
  //
433
435
  let side = this.safeStringLower(trade, 'side');
434
436
  if (side !== undefined) {
@@ -487,6 +489,19 @@ export default class bitflyer extends Exchange {
487
489
  request['count'] = limit;
488
490
  }
489
491
  const response = await this.publicGetGetexecutions(this.extend(request, params));
492
+ //
493
+ // [
494
+ // {
495
+ // "id": 39287,
496
+ // "side": "BUY",
497
+ // "price": 31690,
498
+ // "size": 27.04,
499
+ // "exec_date": "2015-07-08T02:43:34.823",
500
+ // "buy_child_order_acceptance_id": "JRF20150707-200203-452209",
501
+ // "sell_child_order_acceptance_id": "JRF20150708-024334-060234"
502
+ // },
503
+ // ]
504
+ //
490
505
  return this.parseTrades(response, market, since, limit);
491
506
  }
492
507
  async fetchTradingFee(symbol, params = {}) {
@@ -723,6 +738,20 @@ export default class bitflyer extends Exchange {
723
738
  request['count'] = limit;
724
739
  }
725
740
  const response = await this.privateGetGetexecutions(this.extend(request, params));
741
+ //
742
+ // [
743
+ // {
744
+ // "id": 37233,
745
+ // "side": "BUY",
746
+ // "price": 33470,
747
+ // "size": 0.01,
748
+ // "exec_date": "2015-07-07T09:57:40.397",
749
+ // "child_order_id": "JOR20150707-060559-021935",
750
+ // "child_order_acceptance_id": "JRF20150707-060559-396699"
751
+ // "commission": 0,
752
+ // },
753
+ // ]
754
+ //
726
755
  return this.parseTrades(response, market, since, limit);
727
756
  }
728
757
  async fetchPositions(symbols = undefined, params = {}) {
@@ -249,14 +249,6 @@ export default class bitforex extends Exchange {
249
249
  // "tid":"1131019666"
250
250
  // }
251
251
  //
252
- // {
253
- // "price":57591.33,
254
- // "amount":0.002,
255
- // "time":1637329685322,
256
- // "direction":1,
257
- // "tid":"1131019639"
258
- // }
259
- //
260
252
  // fetchMyTrades (private)
261
253
  //
262
254
  // {
package/js/src/bitget.js CHANGED
@@ -2152,7 +2152,7 @@ export default class bitget extends Exchange {
2152
2152
  // "fillTime": "1692073691000"
2153
2153
  // }
2154
2154
  //
2155
- // swap
2155
+ // swap (public trades)
2156
2156
  //
2157
2157
  // {
2158
2158
  // "tradeId": "1075199767891652609",
@@ -2284,6 +2284,16 @@ export default class bitget extends Exchange {
2284
2284
  params = this.omit(params, 'method');
2285
2285
  if (swapMethod === 'publicMixGetMarketFillsHistory') {
2286
2286
  response = await this.publicMixGetMarketFillsHistory(this.extend(request, params));
2287
+ //
2288
+ // {
2289
+ // "tradeId": "1084459062491590657",
2290
+ // "price": "25874",
2291
+ // "size": "1.624",
2292
+ // "side": "Buy",
2293
+ // "timestamp": "1694281109000",
2294
+ // "symbol": "BTCUSDT_UMCBL",
2295
+ // }
2296
+ //
2287
2297
  }
2288
2298
  else if (swapMethod === 'publicMixGetMarketFills') {
2289
2299
  response = await this.publicMixGetMarketFills(this.extend(request, params));
@@ -2984,12 +2994,12 @@ export default class bitget extends Exchange {
2984
2994
  }
2985
2995
  else if (isStopLossOrTakeProfit) {
2986
2996
  if (isStopLoss) {
2987
- const stopLossTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice');
2988
- request['presetStopLossPrice'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
2997
+ const slTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice');
2998
+ request['presetStopLossPrice'] = this.priceToPrecision(symbol, slTriggerPrice);
2989
2999
  }
2990
3000
  if (isTakeProfit) {
2991
- const takeProfitTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice');
2992
- request['presetTakeProfitPrice'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
3001
+ const tpTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice');
3002
+ request['presetTakeProfitPrice'] = this.priceToPrecision(symbol, tpTriggerPrice);
2993
3003
  }
2994
3004
  }
2995
3005
  }
@@ -225,6 +225,44 @@ export default class bitmart extends Exchange {
225
225
  info: any;
226
226
  };
227
227
  setLeverage(leverage: any, symbol?: string, params?: {}): Promise<any>;
228
+ fetchFundingRate(symbol: string, params?: {}): Promise<{
229
+ info: any;
230
+ symbol: any;
231
+ markPrice: any;
232
+ indexPrice: any;
233
+ interestRate: any;
234
+ estimatedSettlePrice: any;
235
+ timestamp: number;
236
+ datetime: string;
237
+ fundingRate: number;
238
+ fundingTimestamp: any;
239
+ fundingDatetime: any;
240
+ nextFundingRate: any;
241
+ nextFundingTimestamp: any;
242
+ nextFundingDatetime: any;
243
+ previousFundingRate: number;
244
+ previousFundingTimestamp: any;
245
+ previousFundingDatetime: any;
246
+ }>;
247
+ parseFundingRate(contract: any, market?: any): {
248
+ info: any;
249
+ symbol: any;
250
+ markPrice: any;
251
+ indexPrice: any;
252
+ interestRate: any;
253
+ estimatedSettlePrice: any;
254
+ timestamp: number;
255
+ datetime: string;
256
+ fundingRate: number;
257
+ fundingTimestamp: any;
258
+ fundingDatetime: any;
259
+ nextFundingRate: any;
260
+ nextFundingTimestamp: any;
261
+ nextFundingDatetime: any;
262
+ previousFundingRate: number;
263
+ previousFundingTimestamp: any;
264
+ previousFundingDatetime: any;
265
+ };
228
266
  nonce(): number;
229
267
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
230
268
  url: string;
package/js/src/bitmart.js CHANGED
@@ -60,6 +60,9 @@ export default class bitmart extends Exchange {
60
60
  'fetchDepositWithdrawFee': true,
61
61
  'fetchDepositWithdrawFees': false,
62
62
  'fetchFundingHistory': undefined,
63
+ 'fetchFundingRate': true,
64
+ 'fetchFundingRateHistory': false,
65
+ 'fetchFundingRates': false,
63
66
  'fetchMarginMode': false,
64
67
  'fetchMarkets': true,
65
68
  'fetchMyTrades': true,
@@ -3253,6 +3256,72 @@ export default class bitmart extends Exchange {
3253
3256
  };
3254
3257
  return await this.privatePostContractPrivateSubmitLeverage(this.extend(request, params));
3255
3258
  }
3259
+ async fetchFundingRate(symbol, params = {}) {
3260
+ /**
3261
+ * @method
3262
+ * @name bitmart#fetchFundingRate
3263
+ * @description fetch the current funding rate
3264
+ * @see https://developer-pro.bitmart.com/en/futures/#get-current-funding-rate
3265
+ * @param {string} symbol unified market symbol
3266
+ * @param {object} [params] extra parameters specific to the bitmart api endpoint
3267
+ * @returns {object} a [funding rate structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-structure}
3268
+ */
3269
+ await this.loadMarkets();
3270
+ const market = this.market(symbol);
3271
+ if (!market['swap']) {
3272
+ throw new BadSymbol(this.id + ' fetchFundingRate() supports swap contracts only');
3273
+ }
3274
+ const request = {
3275
+ 'symbol': market['id'],
3276
+ };
3277
+ const response = await this.publicGetContractPublicFundingRate(this.extend(request, params));
3278
+ //
3279
+ // {
3280
+ // "code": 1000,
3281
+ // "message": "Ok",
3282
+ // "data": {
3283
+ // "timestamp": 1695184410697,
3284
+ // "symbol": "BTCUSDT",
3285
+ // "rate_value": "-0.00002614",
3286
+ // "expected_rate": "-0.00002"
3287
+ // },
3288
+ // "trace": "4cad855074654097ac7ba5257c47305d.54.16951844206655589"
3289
+ // }
3290
+ //
3291
+ const data = this.safeValue(response, 'data', {});
3292
+ return this.parseFundingRate(data, market);
3293
+ }
3294
+ parseFundingRate(contract, market = undefined) {
3295
+ //
3296
+ // {
3297
+ // "timestamp": 1695184410697,
3298
+ // "symbol": "BTCUSDT",
3299
+ // "rate_value": "-0.00002614",
3300
+ // "expected_rate": "-0.00002"
3301
+ // }
3302
+ //
3303
+ const marketId = this.safeString(contract, 'symbol');
3304
+ const timestamp = this.safeInteger(contract, 'timestamp');
3305
+ return {
3306
+ 'info': contract,
3307
+ 'symbol': this.safeSymbol(marketId, market),
3308
+ 'markPrice': undefined,
3309
+ 'indexPrice': undefined,
3310
+ 'interestRate': undefined,
3311
+ 'estimatedSettlePrice': undefined,
3312
+ 'timestamp': timestamp,
3313
+ 'datetime': this.iso8601(timestamp),
3314
+ 'fundingRate': this.safeNumber(contract, 'expected_rate'),
3315
+ 'fundingTimestamp': undefined,
3316
+ 'fundingDatetime': undefined,
3317
+ 'nextFundingRate': undefined,
3318
+ 'nextFundingTimestamp': undefined,
3319
+ 'nextFundingDatetime': undefined,
3320
+ 'previousFundingRate': this.safeNumber(contract, 'rate_value'),
3321
+ 'previousFundingTimestamp': undefined,
3322
+ 'previousFundingDatetime': undefined,
3323
+ };
3324
+ }
3256
3325
  nonce() {
3257
3326
  return this.milliseconds();
3258
3327
  }
@@ -218,6 +218,17 @@ export default class bitstamp1 extends Exchange {
218
218
  return this.parseTicker(ticker, market);
219
219
  }
220
220
  parseTrade(trade, market = undefined) {
221
+ //
222
+ // public trade
223
+ //
224
+ // {
225
+ // "amount": "0.00114000",
226
+ // "date": "1694287856",
227
+ // "price": "25865",
228
+ // "tid": 298730788,
229
+ // "type": 0
230
+ // }
231
+ //
221
232
  const timestamp = this.safeTimestamp2(trade, 'date', 'datetime');
222
233
  const side = (trade['type'] === 0) ? 'buy' : 'sell';
223
234
  const orderId = this.safeString(trade, 'order_id');
@@ -262,6 +273,17 @@ export default class bitstamp1 extends Exchange {
262
273
  'time': 'minute',
263
274
  };
264
275
  const response = await this.publicGetTransactions(this.extend(request, params));
276
+ //
277
+ // [
278
+ // {
279
+ // "amount": "0.00114000",
280
+ // "date": "1694287856",
281
+ // "price": "25865",
282
+ // "tid": 298730788,
283
+ // "type": 0
284
+ // },
285
+ // ]
286
+ //
265
287
  return this.parseTrades(response, market, since, limit);
266
288
  }
267
289
  parseBalance(response) {
package/js/src/bl3p.js CHANGED
@@ -35,6 +35,9 @@ export default class bl3p extends Exchange {
35
35
  'cancelOrder': true,
36
36
  'createOrder': true,
37
37
  'createReduceOnlyOrder': false,
38
+ 'createStopLimitOrder': false,
39
+ 'createStopMarketOrder': false,
40
+ 'createStopOrder': false,
38
41
  'fetchBalance': true,
39
42
  'fetchBorrowRate': false,
40
43
  'fetchBorrowRateHistories': false,
@@ -244,6 +247,16 @@ export default class bl3p extends Exchange {
244
247
  return this.parseTicker(ticker, market);
245
248
  }
246
249
  parseTrade(trade, market = undefined) {
250
+ //
251
+ // fetchTrades
252
+ //
253
+ // {
254
+ // "trade_id": "2518789",
255
+ // "date": "1694348697745",
256
+ // "amount_int": "2959153",
257
+ // "price_int": "2416231440"
258
+ // }
259
+ //
247
260
  const id = this.safeString(trade, 'trade_id');
248
261
  const timestamp = this.safeInteger(trade, 'date');
249
262
  const price = this.safeString(trade, 'price_int');
@@ -280,6 +293,20 @@ export default class bl3p extends Exchange {
280
293
  const response = await this.publicGetMarketTrades(this.extend({
281
294
  'market': market['id'],
282
295
  }, params));
296
+ //
297
+ // {
298
+ // "result": "success",
299
+ // "data": {
300
+ // "trades": [
301
+ // {
302
+ // "trade_id": "2518789",
303
+ // "date": "1694348697745",
304
+ // "amount_int": "2959153",
305
+ // "price_int": "2416231440"
306
+ // },
307
+ // ]
308
+ // }
309
+ // }
283
310
  const result = this.parseTrades(response['data']['trades'], market, since, limit);
284
311
  return result;
285
312
  }
@@ -343,12 +370,17 @@ export default class bl3p extends Exchange {
343
370
  * @method
344
371
  * @name bl3p#createOrder
345
372
  * @description create a trade order
373
+ * @see https://github.com/BitonicNL/bl3p-api/blob/master/examples/nodejs/example.md#21---create-an-order
346
374
  * @param {string} symbol unified symbol of the market to create an order in
347
375
  * @param {string} type 'market' or 'limit'
348
376
  * @param {string} side 'buy' or 'sell'
349
377
  * @param {float} amount how much of currency you want to trade in units of base currency
350
378
  * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
351
379
  * @param {object} [params] extra parameters specific to the bl3p api endpoint
380
+ *
381
+ * EXCHANGE SPECIFIC PARAMETERS
382
+ * @param {int} [params.amount_funds] maximal EUR amount to spend (*1e5)
383
+ * @param {string} [params.fee_currency] 'EUR' or 'BTC'
352
384
  * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
353
385
  */
354
386
  const market = this.market(symbol);