ccxt 4.0.99 → 4.0.101
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/CHANGELOG.md +224 -0
- package/README.md +3 -3
- package/dist/ccxt.browser.js +477 -226
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +6 -1
- package/dist/cjs/src/binance.js +28 -1
- 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/bitstamp1.js +22 -0
- package/dist/cjs/src/bl3p.js +24 -0
- package/dist/cjs/src/bybit.js +111 -36
- package/dist/cjs/src/coinbasepro.js +11 -0
- package/dist/cjs/src/currencycom.js +1 -1
- package/dist/cjs/src/deribit.js +3 -3
- 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 +3 -3
- package/dist/cjs/src/okx.js +5 -5
- package/dist/cjs/src/pro/ascendex.js +2 -2
- package/dist/cjs/src/pro/binance.js +11 -11
- package/dist/cjs/src/pro/bitfinex2.js +5 -5
- package/dist/cjs/src/pro/bitget.js +5 -5
- package/dist/cjs/src/pro/bitmex.js +2 -2
- package/dist/cjs/src/pro/bittrex.js +2 -2
- package/dist/cjs/src/pro/bitvavo.js +2 -2
- package/dist/cjs/src/pro/bybit.js +2 -2
- package/dist/cjs/src/pro/coinbase.js +5 -6
- package/dist/cjs/src/pro/cryptocom.js +4 -4
- package/dist/cjs/src/pro/currencycom.js +3 -3
- package/dist/cjs/src/pro/hitbtc.js +4 -4
- package/dist/cjs/src/pro/huobi.js +7 -8
- 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 +4 -4
- package/dist/cjs/src/pro/poloniex.js +6 -6
- package/dist/cjs/src/pro/whitebit.js +7 -7
- package/dist/cjs/src/probit.js +2 -2
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/base/Exchange.js +6 -1
- package/js/src/binance.js +28 -1
- 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/bitstamp1.js +22 -0
- package/js/src/bl3p.js +24 -0
- package/js/src/bybit.js +111 -36
- package/js/src/coinbasepro.js +11 -0
- package/js/src/currencycom.js +1 -1
- package/js/src/deribit.js +3 -3
- 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 +3 -3
- package/js/src/okx.js +5 -5
- package/js/src/pro/ascendex.js +2 -2
- package/js/src/pro/binance.js +11 -11
- package/js/src/pro/bitfinex2.js +5 -5
- package/js/src/pro/bitget.js +5 -5
- package/js/src/pro/bitmex.js +2 -2
- package/js/src/pro/bittrex.js +2 -2
- package/js/src/pro/bitvavo.js +2 -2
- package/js/src/pro/bybit.js +2 -2
- package/js/src/pro/coinbase.js +5 -6
- package/js/src/pro/cryptocom.js +4 -4
- package/js/src/pro/currencycom.js +3 -3
- package/js/src/pro/hitbtc.js +4 -4
- package/js/src/pro/huobi.js +7 -8
- 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 +4 -4
- package/js/src/pro/poloniex.js +6 -6
- package/js/src/pro/whitebit.js +7 -7
- package/js/src/probit.js +2 -2
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@ class kucoin extends kucoin$1 {
|
|
|
14
14
|
'watchOrderBook': true,
|
|
15
15
|
'watchOrders': true,
|
|
16
16
|
'watchMyTrades': true,
|
|
17
|
-
'watchTickers':
|
|
17
|
+
'watchTickers': true,
|
|
18
18
|
'watchTicker': true,
|
|
19
19
|
'watchTrades': true,
|
|
20
20
|
'watchTradesForSymbols': true,
|
|
@@ -132,6 +132,29 @@ class kucoin extends kucoin$1 {
|
|
|
132
132
|
const messageHash = 'ticker:' + symbol;
|
|
133
133
|
return await this.subscribe(url, messageHash, topic, query);
|
|
134
134
|
}
|
|
135
|
+
async watchTickers(symbols = undefined, params = {}) {
|
|
136
|
+
/**
|
|
137
|
+
* @method
|
|
138
|
+
* @name kucoin#watchTickers
|
|
139
|
+
* @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
|
140
|
+
* @param {string[]} symbols unified symbol of the market to fetch the ticker for
|
|
141
|
+
* @param {object} [params] extra parameters specific to the kucoin api endpoint
|
|
142
|
+
* @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
|
|
143
|
+
*/
|
|
144
|
+
await this.loadMarkets();
|
|
145
|
+
symbols = this.marketSymbols(symbols);
|
|
146
|
+
let messageHash = 'tickers';
|
|
147
|
+
if (symbols !== undefined) {
|
|
148
|
+
messageHash = 'tickers::' + symbols.join(',');
|
|
149
|
+
}
|
|
150
|
+
const url = await this.negotiate(false);
|
|
151
|
+
const topic = '/market/ticker:all';
|
|
152
|
+
const tickers = await this.subscribe(url, messageHash, topic, params);
|
|
153
|
+
if (this.newUpdates) {
|
|
154
|
+
return tickers;
|
|
155
|
+
}
|
|
156
|
+
return this.filterByArray(this.tickers, 'symbol', symbols);
|
|
157
|
+
}
|
|
135
158
|
handleTicker(client, message) {
|
|
136
159
|
//
|
|
137
160
|
// market/snapshot
|
|
@@ -191,7 +214,14 @@ class kucoin extends kucoin$1 {
|
|
|
191
214
|
let market = undefined;
|
|
192
215
|
if (topic !== undefined) {
|
|
193
216
|
const parts = topic.split(':');
|
|
194
|
-
const
|
|
217
|
+
const first = this.safeString(parts, 1);
|
|
218
|
+
let marketId = undefined;
|
|
219
|
+
if (first === 'all') {
|
|
220
|
+
marketId = this.safeString(message, 'subject');
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
marketId = first;
|
|
224
|
+
}
|
|
195
225
|
market = this.safeMarket(marketId, market, '-');
|
|
196
226
|
}
|
|
197
227
|
const data = this.safeValue(message, 'data', {});
|
|
@@ -201,6 +231,21 @@ class kucoin extends kucoin$1 {
|
|
|
201
231
|
this.tickers[symbol] = ticker;
|
|
202
232
|
const messageHash = 'ticker:' + symbol;
|
|
203
233
|
client.resolve(ticker, messageHash);
|
|
234
|
+
// watchTickers
|
|
235
|
+
client.resolve(ticker, 'tickers');
|
|
236
|
+
const messageHashes = this.findMessageHashes(client, 'tickers::');
|
|
237
|
+
for (let i = 0; i < messageHashes.length; i++) {
|
|
238
|
+
const messageHash = messageHashes[i];
|
|
239
|
+
const parts = messageHash.split('::');
|
|
240
|
+
const symbolsString = parts[1];
|
|
241
|
+
const symbols = symbolsString.split(',');
|
|
242
|
+
const tickers = this.filterByArray(this.tickers, 'symbol', symbols);
|
|
243
|
+
const tickersSymbols = Object.keys(tickers);
|
|
244
|
+
const numTickers = tickersSymbols.length;
|
|
245
|
+
if (numTickers > 0) {
|
|
246
|
+
client.resolve(tickers, messageHash);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
204
249
|
}
|
|
205
250
|
async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
206
251
|
/**
|
|
@@ -880,6 +925,10 @@ class kucoin extends kucoin$1 {
|
|
|
880
925
|
// }
|
|
881
926
|
// }
|
|
882
927
|
//
|
|
928
|
+
const topic = this.safeString(message, 'topic');
|
|
929
|
+
if (topic === '/market/ticker:all') {
|
|
930
|
+
return this.handleTicker(client, message);
|
|
931
|
+
}
|
|
883
932
|
const subject = this.safeString(message, 'subject');
|
|
884
933
|
const methods = {
|
|
885
934
|
'trade.l2update': this.handleOrderBook,
|
|
@@ -389,9 +389,9 @@ class kucoinfutures extends kucoinfutures$1 {
|
|
|
389
389
|
const deltaEnd = this.safeInteger(data, 'sequence');
|
|
390
390
|
if (nonce === undefined) {
|
|
391
391
|
const cacheLength = storedOrderBook.cache.length;
|
|
392
|
-
const
|
|
393
|
-
const topicSymbol = this.safeString(
|
|
394
|
-
const topicChannel = this.safeString(
|
|
392
|
+
const topicPartsNew = topic.split(':');
|
|
393
|
+
const topicSymbol = this.safeString(topicPartsNew, 1);
|
|
394
|
+
const topicChannel = this.safeString(topicPartsNew, 0);
|
|
395
395
|
const subscriptions = Object.keys(client.subscriptions);
|
|
396
396
|
let subscription = undefined;
|
|
397
397
|
for (let i = 0; i < subscriptions.length; i++) {
|
|
@@ -1123,8 +1123,8 @@ class phemex extends phemex$1 {
|
|
|
1123
1123
|
}
|
|
1124
1124
|
const keys = Object.keys(marketIds);
|
|
1125
1125
|
for (let i = 0; i < keys.length; i++) {
|
|
1126
|
-
const
|
|
1127
|
-
client.resolve(this.orders,
|
|
1126
|
+
const currentMessageHash = 'orders' + ':' + keys[i];
|
|
1127
|
+
client.resolve(this.orders, currentMessageHash);
|
|
1128
1128
|
}
|
|
1129
1129
|
// resolve generic subscription (spot or swap)
|
|
1130
1130
|
const messageHash = 'orders:' + type;
|
|
@@ -1406,8 +1406,8 @@ class phemex extends phemex$1 {
|
|
|
1406
1406
|
return method.call(this, client, message);
|
|
1407
1407
|
}
|
|
1408
1408
|
}
|
|
1409
|
-
const
|
|
1410
|
-
if (('market24h' in message) || ('spot_market24h' in message) || (
|
|
1409
|
+
const methodName = this.safeString(message, 'method', '');
|
|
1410
|
+
if (('market24h' in message) || ('spot_market24h' in message) || (methodName.indexOf('perp_market24h_pack_p') >= 0)) {
|
|
1411
1411
|
return this.handleTicker(client, message);
|
|
1412
1412
|
}
|
|
1413
1413
|
else if (('trades' in message) || ('trades_p' in message)) {
|
|
@@ -620,8 +620,8 @@ class poloniex extends poloniex$1 {
|
|
|
620
620
|
let totalCost = '0';
|
|
621
621
|
let totalAmount = '0';
|
|
622
622
|
const previousOrderTrades = previousOrder['trades'];
|
|
623
|
-
for (let
|
|
624
|
-
const previousOrderTrade = previousOrderTrades[
|
|
623
|
+
for (let j = 0; j < previousOrderTrades.length; j++) {
|
|
624
|
+
const previousOrderTrade = previousOrderTrades[j];
|
|
625
625
|
const cost = this.numberToString(previousOrderTrade['cost']);
|
|
626
626
|
const amount = this.numberToString(previousOrderTrade['amount']);
|
|
627
627
|
totalCost = Precise["default"].stringAdd(totalCost, cost);
|
|
@@ -861,16 +861,16 @@ class poloniex extends poloniex$1 {
|
|
|
861
861
|
}
|
|
862
862
|
const orderbook = this.orderbooks[symbol];
|
|
863
863
|
if (bids !== undefined) {
|
|
864
|
-
for (let
|
|
865
|
-
const bid = this.safeValue(bids,
|
|
864
|
+
for (let j = 0; j < bids.length; j++) {
|
|
865
|
+
const bid = this.safeValue(bids, j);
|
|
866
866
|
const price = this.safeNumber(bid, 0);
|
|
867
867
|
const amount = this.safeNumber(bid, 1);
|
|
868
868
|
orderbook['bids'].store(price, amount);
|
|
869
869
|
}
|
|
870
870
|
}
|
|
871
871
|
if (asks !== undefined) {
|
|
872
|
-
for (let
|
|
873
|
-
const ask = this.safeValue(asks,
|
|
872
|
+
for (let j = 0; j < asks.length; j++) {
|
|
873
|
+
const ask = this.safeValue(asks, j);
|
|
874
874
|
const price = this.safeNumber(ask, 0);
|
|
875
875
|
const amount = this.safeNumber(ask, 1);
|
|
876
876
|
orderbook['asks'].store(price, amount);
|
|
@@ -280,8 +280,8 @@ class whitebit extends whitebit$1 {
|
|
|
280
280
|
// watchTickers
|
|
281
281
|
const messageHashes = Object.keys(client.futures);
|
|
282
282
|
for (let i = 0; i < messageHashes.length; i++) {
|
|
283
|
-
const
|
|
284
|
-
if (
|
|
283
|
+
const currentMessageHash = messageHashes[i];
|
|
284
|
+
if (currentMessageHash.indexOf('tickers') >= 0 && currentMessageHash.indexOf(symbol) >= 0) {
|
|
285
285
|
// Example: user calls watchTickers with ['LTC/USDT', 'ETH/USDT']
|
|
286
286
|
// the associated messagehash will be: 'tickers:LTC/USDT:ETH/USDT'
|
|
287
287
|
// since we only have access to a single symbol at a time
|
|
@@ -291,7 +291,7 @@ class whitebit extends whitebit$1 {
|
|
|
291
291
|
// user might have multiple watchTickers promises
|
|
292
292
|
// watchTickers ( ['LTC/USDT', 'ETH/USDT'] ), watchTickers ( ['ETC/USDT', 'DOGE/USDT'] )
|
|
293
293
|
// and we want to make sure we resolve only the correct ones
|
|
294
|
-
client.resolve(ticker,
|
|
294
|
+
client.resolve(ticker, currentMessageHash);
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
297
|
return message;
|
|
@@ -749,15 +749,15 @@ class whitebit extends whitebit$1 {
|
|
|
749
749
|
}
|
|
750
750
|
else {
|
|
751
751
|
// resubscribe
|
|
752
|
-
let
|
|
753
|
-
|
|
752
|
+
let marketIdsNew = [];
|
|
753
|
+
marketIdsNew = Object.keys(subscription);
|
|
754
754
|
if (isNested) {
|
|
755
|
-
|
|
755
|
+
marketIdsNew = [marketIdsNew];
|
|
756
756
|
}
|
|
757
757
|
const resubRequest = {
|
|
758
758
|
'id': id,
|
|
759
759
|
'method': method,
|
|
760
|
-
'params':
|
|
760
|
+
'params': marketIdsNew,
|
|
761
761
|
};
|
|
762
762
|
if (method in client.subscriptions) {
|
|
763
763
|
delete client.subscriptions[method];
|
package/dist/cjs/src/probit.js
CHANGED
|
@@ -431,14 +431,14 @@ class probit extends probit$1 {
|
|
|
431
431
|
}
|
|
432
432
|
const precision = this.parsePrecision(this.safeString(network, 'precision'));
|
|
433
433
|
const withdrawFee = this.safeValue(network, 'withdrawal_fee', []);
|
|
434
|
-
const
|
|
434
|
+
const networkfee = this.safeValue(withdrawFee, 0, {});
|
|
435
435
|
networkList[networkCode] = {
|
|
436
436
|
'id': networkId,
|
|
437
437
|
'network': networkCode,
|
|
438
438
|
'active': currentActive,
|
|
439
439
|
'deposit': currentDeposit,
|
|
440
440
|
'withdraw': currentWithdraw,
|
|
441
|
-
'fee': this.safeNumber(
|
|
441
|
+
'fee': this.safeNumber(networkfee, 'amount'),
|
|
442
442
|
'precision': this.parseNumber(precision),
|
|
443
443
|
'limits': {
|
|
444
444
|
'withdraw': {
|
package/js/ccxt.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
|
|
|
4
4
|
import * as errors from './src/base/errors.js';
|
|
5
5
|
import { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position } from './src/base/types.js';
|
|
6
6
|
import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending } from './src/base/errors.js';
|
|
7
|
-
declare const version = "4.0.
|
|
7
|
+
declare const version = "4.0.100";
|
|
8
8
|
import ace from './src/ace.js';
|
|
9
9
|
import alpaca from './src/alpaca.js';
|
|
10
10
|
import ascendex from './src/ascendex.js';
|
package/js/ccxt.js
CHANGED
|
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
|
|
|
38
38
|
import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending } from './src/base/errors.js';
|
|
39
39
|
//-----------------------------------------------------------------------------
|
|
40
40
|
// this is updated by vss.js when building
|
|
41
|
-
const version = '4.0.
|
|
41
|
+
const version = '4.0.101';
|
|
42
42
|
Exchange.ccxtVersion = version;
|
|
43
43
|
//-----------------------------------------------------------------------------
|
|
44
44
|
import ace from './src/ace.js';
|
package/js/src/base/Exchange.js
CHANGED
|
@@ -1661,7 +1661,12 @@ export default class Exchange {
|
|
|
1661
1661
|
const oldNumber = this.number;
|
|
1662
1662
|
// we parse trades as strings here!
|
|
1663
1663
|
this.number = String;
|
|
1664
|
-
|
|
1664
|
+
const firstTrade = this.safeValue(rawTrades, 0);
|
|
1665
|
+
// parse trades if they haven't already been parsed
|
|
1666
|
+
const tradesAreParsed = ((firstTrade !== undefined) && ('info' in firstTrade) && ('id' in firstTrade));
|
|
1667
|
+
if (!tradesAreParsed) {
|
|
1668
|
+
trades = this.parseTrades(rawTrades, market);
|
|
1669
|
+
}
|
|
1665
1670
|
this.number = oldNumber;
|
|
1666
1671
|
let tradesLength = 0;
|
|
1667
1672
|
const isArray = Array.isArray(trades);
|
package/js/src/binance.js
CHANGED
|
@@ -3423,6 +3423,18 @@ export default class binance extends Exchange {
|
|
|
3423
3423
|
// "M": true // Was the trade the best price match?
|
|
3424
3424
|
// }
|
|
3425
3425
|
//
|
|
3426
|
+
// REST: aggregate trades for swap & future (both linear and inverse)
|
|
3427
|
+
//
|
|
3428
|
+
// {
|
|
3429
|
+
// "a": "269772814",
|
|
3430
|
+
// "p": "25864.1",
|
|
3431
|
+
// "q": "3",
|
|
3432
|
+
// "f": "662149354",
|
|
3433
|
+
// "l": "662149355",
|
|
3434
|
+
// "T": "1694209776022",
|
|
3435
|
+
// "m": false,
|
|
3436
|
+
// }
|
|
3437
|
+
//
|
|
3426
3438
|
// recent public trades and old public trades
|
|
3427
3439
|
// https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#recent-trades-list
|
|
3428
3440
|
// https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#old-trade-lookup-market_data
|
|
@@ -3676,7 +3688,8 @@ export default class binance extends Exchange {
|
|
|
3676
3688
|
}
|
|
3677
3689
|
}
|
|
3678
3690
|
if (limit !== undefined) {
|
|
3679
|
-
|
|
3691
|
+
const isFutureOrSwap = (market['swap'] || market['future']);
|
|
3692
|
+
request['limit'] = isFutureOrSwap ? Math.min(limit, 1000) : limit; // default = 500, maximum = 1000
|
|
3680
3693
|
}
|
|
3681
3694
|
params = this.omit(params, ['until', 'fetchTradesMethod']);
|
|
3682
3695
|
//
|
|
@@ -3705,6 +3718,20 @@ export default class binance extends Exchange {
|
|
|
3705
3718
|
// }
|
|
3706
3719
|
// ]
|
|
3707
3720
|
//
|
|
3721
|
+
// inverse (swap & future)
|
|
3722
|
+
//
|
|
3723
|
+
// [
|
|
3724
|
+
// {
|
|
3725
|
+
// "a": "269772814",
|
|
3726
|
+
// "p": "25864.1",
|
|
3727
|
+
// "q": "3",
|
|
3728
|
+
// "f": "662149354",
|
|
3729
|
+
// "l": "662149355",
|
|
3730
|
+
// "T": "1694209776022",
|
|
3731
|
+
// "m": false,
|
|
3732
|
+
// },
|
|
3733
|
+
// ]
|
|
3734
|
+
//
|
|
3708
3735
|
// recent public trades and historical public trades
|
|
3709
3736
|
//
|
|
3710
3737
|
// [
|
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/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
|
@@ -244,6 +244,16 @@ export default class bl3p extends Exchange {
|
|
|
244
244
|
return this.parseTicker(ticker, market);
|
|
245
245
|
}
|
|
246
246
|
parseTrade(trade, market = undefined) {
|
|
247
|
+
//
|
|
248
|
+
// fetchTrades
|
|
249
|
+
//
|
|
250
|
+
// {
|
|
251
|
+
// "trade_id": "2518789",
|
|
252
|
+
// "date": "1694348697745",
|
|
253
|
+
// "amount_int": "2959153",
|
|
254
|
+
// "price_int": "2416231440"
|
|
255
|
+
// }
|
|
256
|
+
//
|
|
247
257
|
const id = this.safeString(trade, 'trade_id');
|
|
248
258
|
const timestamp = this.safeInteger(trade, 'date');
|
|
249
259
|
const price = this.safeString(trade, 'price_int');
|
|
@@ -280,6 +290,20 @@ export default class bl3p extends Exchange {
|
|
|
280
290
|
const response = await this.publicGetMarketTrades(this.extend({
|
|
281
291
|
'market': market['id'],
|
|
282
292
|
}, params));
|
|
293
|
+
//
|
|
294
|
+
// {
|
|
295
|
+
// "result": "success",
|
|
296
|
+
// "data": {
|
|
297
|
+
// "trades": [
|
|
298
|
+
// {
|
|
299
|
+
// "trade_id": "2518789",
|
|
300
|
+
// "date": "1694348697745",
|
|
301
|
+
// "amount_int": "2959153",
|
|
302
|
+
// "price_int": "2416231440"
|
|
303
|
+
// },
|
|
304
|
+
// ]
|
|
305
|
+
// }
|
|
306
|
+
// }
|
|
283
307
|
const result = this.parseTrades(response['data']['trades'], market, since, limit);
|
|
284
308
|
return result;
|
|
285
309
|
}
|