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.
- package/README.md +5 -6
- package/dist/ccxt.browser.js +965 -2559
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -4
- package/dist/cjs/src/binance.js +36 -1
- package/dist/cjs/src/bingx.js +41 -4
- package/dist/cjs/src/bitbank.js +11 -0
- package/dist/cjs/src/bitfinex.js +12 -8
- package/dist/cjs/src/bitflyer.js +39 -10
- package/dist/cjs/src/bitforex.js +0 -8
- package/dist/cjs/src/bitget.js +15 -5
- package/dist/cjs/src/bitmart.js +69 -0
- package/dist/cjs/src/bitstamp1.js +22 -0
- package/dist/cjs/src/bl3p.js +32 -0
- package/dist/cjs/src/bybit.js +147 -48
- package/dist/cjs/src/coinbasepro.js +11 -0
- package/dist/cjs/src/currencycom.js +1 -1
- package/dist/cjs/src/gemini.js +1 -0
- package/dist/cjs/src/huobi.js +1 -1
- package/dist/cjs/src/huobijp.js +1 -1
- package/dist/cjs/src/idex.js +1 -1
- package/dist/cjs/src/kucoinfutures.js +46 -51
- package/dist/cjs/src/lbank.js +1 -1
- package/dist/cjs/src/lbank2.js +1 -1
- package/dist/cjs/src/pro/binance.js +7 -7
- package/dist/cjs/src/pro/bybit.js +18 -17
- package/dist/cjs/src/pro/coinbasepro.js +10 -10
- package/dist/cjs/src/pro/huobijp.js +1 -2
- package/dist/cjs/src/pro/krakenfutures.js +7 -7
- package/dist/cjs/src/pro/kucoin.js +51 -2
- package/dist/cjs/src/pro/kucoinfutures.js +3 -3
- package/dist/cjs/src/pro/phemex.js +2 -2
- package/js/ccxt.d.ts +2 -5
- package/js/ccxt.js +2 -4
- package/js/src/abstract/binance.d.ts +8 -0
- package/js/src/abstract/binancecoinm.d.ts +8 -0
- package/js/src/abstract/binanceus.d.ts +8 -0
- package/js/src/abstract/binanceusdm.d.ts +8 -0
- package/js/src/abstract/bingx.d.ts +16 -1
- package/js/src/binance.js +36 -1
- package/js/src/bingx.js +41 -4
- package/js/src/bitbank.js +11 -0
- package/js/src/bitfinex.js +12 -8
- package/js/src/bitflyer.js +39 -10
- package/js/src/bitforex.js +0 -8
- package/js/src/bitget.js +15 -5
- package/js/src/bitmart.d.ts +38 -0
- package/js/src/bitmart.js +69 -0
- package/js/src/bitstamp1.js +22 -0
- package/js/src/bl3p.js +32 -0
- package/js/src/bybit.js +147 -48
- package/js/src/coinbasepro.js +11 -0
- package/js/src/currencycom.js +1 -1
- package/js/src/gemini.js +1 -0
- package/js/src/huobi.js +1 -1
- package/js/src/huobijp.js +1 -1
- package/js/src/idex.js +1 -1
- package/js/src/kucoinfutures.js +46 -51
- package/js/src/lbank.js +1 -1
- package/js/src/lbank2.js +1 -1
- package/js/src/pro/binance.js +7 -7
- package/js/src/pro/bybit.js +18 -17
- package/js/src/pro/coinbasepro.js +10 -10
- package/js/src/pro/huobijp.js +1 -2
- package/js/src/pro/krakenfutures.js +7 -7
- package/js/src/pro/kucoin.d.ts +1 -0
- package/js/src/pro/kucoin.js +51 -2
- package/js/src/pro/kucoinfutures.js +3 -3
- package/js/src/pro/phemex.js +2 -2
- package/package.json +1 -1
- package/skip-tests.json +3 -7
- package/js/src/abstract/bkex.d.ts +0 -61
- 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 {
|
|
1493
|
-
* @param {float} [params.stopLossPrice] stop loss trigger price
|
|
1494
|
-
* @param {float} [params.takeProfitPrice] take profit trigger price
|
|
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');
|
package/js/src/bitfinex.js
CHANGED
|
@@ -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 = {}) {
|
package/js/src/bitflyer.js
CHANGED
|
@@ -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 = {}) {
|
package/js/src/bitforex.js
CHANGED
|
@@ -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
|
|
2988
|
-
request['presetStopLossPrice'] = this.priceToPrecision(symbol,
|
|
2997
|
+
const slTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice');
|
|
2998
|
+
request['presetStopLossPrice'] = this.priceToPrecision(symbol, slTriggerPrice);
|
|
2989
2999
|
}
|
|
2990
3000
|
if (isTakeProfit) {
|
|
2991
|
-
const
|
|
2992
|
-
request['presetTakeProfitPrice'] = this.priceToPrecision(symbol,
|
|
3001
|
+
const tpTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice');
|
|
3002
|
+
request['presetTakeProfitPrice'] = this.priceToPrecision(symbol, tpTriggerPrice);
|
|
2993
3003
|
}
|
|
2994
3004
|
}
|
|
2995
3005
|
}
|
package/js/src/bitmart.d.ts
CHANGED
|
@@ -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
|
}
|
package/js/src/bitstamp1.js
CHANGED
|
@@ -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);
|