ccxt 4.2.49 → 4.2.50
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 +3 -3
- package/dist/ccxt.browser.js +220 -17
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +5 -0
- package/dist/cjs/src/binance.js +2 -1
- package/dist/cjs/src/bl3p.js +47 -0
- package/dist/cjs/src/pro/bequant.js +3 -4
- package/dist/cjs/src/pro/binance.js +29 -2
- package/dist/cjs/src/pro/gemini.js +89 -1
- package/dist/cjs/src/pro/whitebit.js +9 -8
- package/dist/cjs/src/timex.js +35 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/base/Exchange.d.ts +1 -0
- package/js/src/base/Exchange.js +5 -0
- package/js/src/binance.js +2 -1
- package/js/src/bl3p.d.ts +15 -1
- package/js/src/bl3p.js +47 -0
- package/js/src/pro/bequant.js +3 -4
- package/js/src/pro/binance.d.ts +1 -0
- package/js/src/pro/binance.js +29 -2
- package/js/src/pro/gemini.d.ts +3 -1
- package/js/src/pro/gemini.js +89 -1
- package/js/src/pro/whitebit.js +9 -8
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/timex.d.ts +1 -0
- package/js/src/timex.js +35 -1
- package/package.json +1 -1
- package/skip-tests.json +0 -1
package/README.md
CHANGED
|
@@ -210,13 +210,13 @@ console.log(version, Object.keys(exchanges));
|
|
|
210
210
|
|
|
211
211
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
|
212
212
|
|
|
213
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
|
214
|
-
* unpkg: https://unpkg.com/ccxt@4.2.
|
|
213
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.50/dist/ccxt.browser.js
|
|
214
|
+
* unpkg: https://unpkg.com/ccxt@4.2.50/dist/ccxt.browser.js
|
|
215
215
|
|
|
216
216
|
CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
|
|
217
217
|
|
|
218
218
|
```HTML
|
|
219
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
|
219
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.50/dist/ccxt.browser.js"></script>
|
|
220
220
|
```
|
|
221
221
|
|
|
222
222
|
Creates a global `ccxt` object:
|
package/dist/ccxt.browser.js
CHANGED
|
@@ -9296,6 +9296,11 @@ class Exchange {
|
|
|
9296
9296
|
this.codes = Object.keys(currenciesSortedByCode);
|
|
9297
9297
|
return this.markets;
|
|
9298
9298
|
}
|
|
9299
|
+
getDescribeForExtendedWsExchange(currentRestInstance, parentRestInstance, wsBaseDescribe) {
|
|
9300
|
+
const extendedRestDescribe = this.deepExtend(parentRestInstance.describe(), currentRestInstance.describe());
|
|
9301
|
+
const superWithRestDescribe = this.deepExtend(extendedRestDescribe, wsBaseDescribe);
|
|
9302
|
+
return superWithRestDescribe;
|
|
9303
|
+
}
|
|
9299
9304
|
safeBalance(balance) {
|
|
9300
9305
|
const balances = this.omit(balance, ['info', 'timestamp', 'datetime', 'free', 'used', 'total']);
|
|
9301
9306
|
const codes = Object.keys(balances);
|
|
@@ -18105,6 +18110,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
18105
18110
|
'createMarketSellOrderWithCost': true,
|
|
18106
18111
|
'createOrder': true,
|
|
18107
18112
|
'createOrders': true,
|
|
18113
|
+
'createOrderWithTakeProfitAndStopLoss': true,
|
|
18108
18114
|
'createPostOnlyOrder': true,
|
|
18109
18115
|
'createReduceOnlyOrder': true,
|
|
18110
18116
|
'createStopLimitOrder': true,
|
|
@@ -18178,7 +18184,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
18178
18184
|
'fetchTradingFee': true,
|
|
18179
18185
|
'fetchTradingFees': true,
|
|
18180
18186
|
'fetchTradingLimits': undefined,
|
|
18181
|
-
'fetchTransactionFee':
|
|
18187
|
+
'fetchTransactionFee': 'emulated',
|
|
18182
18188
|
'fetchTransactionFees': true,
|
|
18183
18189
|
'fetchTransactions': false,
|
|
18184
18190
|
'fetchTransfers': true,
|
|
@@ -75492,6 +75498,7 @@ class bl3p extends _abstract_bl3p_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
75492
75498
|
'cancelOrder': true,
|
|
75493
75499
|
'closeAllPositions': false,
|
|
75494
75500
|
'closePosition': false,
|
|
75501
|
+
'createDepositAddress': true,
|
|
75495
75502
|
'createOrder': true,
|
|
75496
75503
|
'createReduceOnlyOrder': false,
|
|
75497
75504
|
'createStopLimitOrder': false,
|
|
@@ -75502,6 +75509,9 @@ class bl3p extends _abstract_bl3p_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
75502
75509
|
'fetchBorrowRateHistory': false,
|
|
75503
75510
|
'fetchCrossBorrowRate': false,
|
|
75504
75511
|
'fetchCrossBorrowRates': false,
|
|
75512
|
+
'fetchDepositAddress': false,
|
|
75513
|
+
'fetchDepositAddresses': false,
|
|
75514
|
+
'fetchDepositAddressesByNetwork': false,
|
|
75505
75515
|
'fetchFundingHistory': false,
|
|
75506
75516
|
'fetchFundingRate': false,
|
|
75507
75517
|
'fetchFundingRateHistory': false,
|
|
@@ -75883,6 +75893,49 @@ class bl3p extends _abstract_bl3p_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
75883
75893
|
};
|
|
75884
75894
|
return await this.privatePostMarketMoneyOrderCancel(this.extend(request, params));
|
|
75885
75895
|
}
|
|
75896
|
+
async createDepositAddress(code, params = {}) {
|
|
75897
|
+
/**
|
|
75898
|
+
* @method
|
|
75899
|
+
* @name bl3p#createDepositAddress
|
|
75900
|
+
* @description create a currency deposit address
|
|
75901
|
+
* @see https://github.com/BitonicNL/bl3p-api/blob/master/docs/authenticated_api/http.md#32---create-a-new-deposit-address
|
|
75902
|
+
* @param {string} code unified currency code of the currency for the deposit address
|
|
75903
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
75904
|
+
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
75905
|
+
*/
|
|
75906
|
+
await this.loadMarkets();
|
|
75907
|
+
const currency = this.currency(code);
|
|
75908
|
+
const request = {
|
|
75909
|
+
'currency': currency['id'],
|
|
75910
|
+
};
|
|
75911
|
+
const response = await this.privatePostGENMKTMoneyNewDepositAddress(this.extend(request, params));
|
|
75912
|
+
//
|
|
75913
|
+
// {
|
|
75914
|
+
// "result": "success",
|
|
75915
|
+
// "data": {
|
|
75916
|
+
// "address": "36Udu9zi1uYicpXcJpoKfv3bewZeok5tpk"
|
|
75917
|
+
// }
|
|
75918
|
+
// }
|
|
75919
|
+
//
|
|
75920
|
+
const data = this.safeDict(response, 'data');
|
|
75921
|
+
return this.parseDepositAddress(data, currency);
|
|
75922
|
+
}
|
|
75923
|
+
parseDepositAddress(depositAddress, currency = undefined) {
|
|
75924
|
+
//
|
|
75925
|
+
// {
|
|
75926
|
+
// "address": "36Udu9zi1uYicpXcJpoKfv3bewZeok5tpk"
|
|
75927
|
+
// }
|
|
75928
|
+
//
|
|
75929
|
+
const address = this.safeString(depositAddress, 'address');
|
|
75930
|
+
this.checkAddress(address);
|
|
75931
|
+
return {
|
|
75932
|
+
'info': depositAddress,
|
|
75933
|
+
'currency': this.safeString(currency, 'code'),
|
|
75934
|
+
'address': address,
|
|
75935
|
+
'tag': undefined,
|
|
75936
|
+
'network': undefined,
|
|
75937
|
+
};
|
|
75938
|
+
}
|
|
75886
75939
|
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
75887
75940
|
const request = this.implodeParams(path, params);
|
|
75888
75941
|
let url = this.urls['api']['rest'] + '/' + this.version + '/' + request;
|
|
@@ -220401,18 +220454,18 @@ class ascendex extends _ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
220401
220454
|
/* harmony export */ Z: () => (/* binding */ bequant)
|
|
220402
220455
|
/* harmony export */ });
|
|
220403
220456
|
/* harmony import */ var _hitbtc_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5189);
|
|
220457
|
+
/* harmony import */ var _hitbtc_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4714);
|
|
220404
220458
|
/* harmony import */ var _bequant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2049);
|
|
220405
220459
|
// ---------------------------------------------------------------------------
|
|
220406
220460
|
|
|
220407
220461
|
|
|
220462
|
+
|
|
220408
220463
|
// ---------------------------------------------------------------------------
|
|
220409
220464
|
class bequant extends _hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
220410
220465
|
describe() {
|
|
220411
220466
|
// eslint-disable-next-line new-cap
|
|
220412
|
-
const
|
|
220413
|
-
|
|
220414
|
-
const extended = this.deepExtend(super.describe(), restDescribe);
|
|
220415
|
-
return this.deepExtend(extended, {
|
|
220467
|
+
const describeExtended = this.getDescribeForExtendedWsExchange(new _bequant_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z(), new _hitbtc_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z(), super.describe());
|
|
220468
|
+
return this.deepExtend(describeExtended, {
|
|
220416
220469
|
'id': 'bequant',
|
|
220417
220470
|
'name': 'Bequant',
|
|
220418
220471
|
'countries': ['MT'],
|
|
@@ -220486,10 +220539,15 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
220486
220539
|
'cancelOrderWs': true,
|
|
220487
220540
|
'cancelOrdersWs': false,
|
|
220488
220541
|
'cancelAllOrdersWs': true,
|
|
220489
|
-
'fetchOrderWs': true,
|
|
220490
|
-
'fetchOrdersWs': true,
|
|
220491
220542
|
'fetchBalanceWs': true,
|
|
220543
|
+
'fetchDepositsWs': false,
|
|
220544
|
+
'fetchMarketsWs': false,
|
|
220492
220545
|
'fetchMyTradesWs': true,
|
|
220546
|
+
'fetchOpenOrdersWs': true,
|
|
220547
|
+
'fetchOrderWs': true,
|
|
220548
|
+
'fetchOrdersWs': true,
|
|
220549
|
+
'fetchTradingFeesWs': false,
|
|
220550
|
+
'fetchWithdrawalsWs': false,
|
|
220493
220551
|
},
|
|
220494
220552
|
'urls': {
|
|
220495
220553
|
'test': {
|
|
@@ -222390,6 +222448,28 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
222390
222448
|
const orders = await this.watch(url, messageHash, message, messageHash, subscription);
|
|
222391
222449
|
return this.filterBySymbolSinceLimit(orders, symbol, since, limit);
|
|
222392
222450
|
}
|
|
222451
|
+
async fetchClosedOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
222452
|
+
/**
|
|
222453
|
+
* @method
|
|
222454
|
+
* @name binance#fetchClosedOrdersWs
|
|
222455
|
+
* @see https://binance-docs.github.io/apidocs/websocket_api/en/#account-order-history-user_data
|
|
222456
|
+
* @description fetch closed orders
|
|
222457
|
+
* @param {string} symbol unified market symbol
|
|
222458
|
+
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
222459
|
+
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
222460
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
222461
|
+
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
222462
|
+
*/
|
|
222463
|
+
const orders = await this.fetchOrdersWs(symbol, since, limit, params);
|
|
222464
|
+
const closedOrders = [];
|
|
222465
|
+
for (let i = 0; i < orders.length; i++) {
|
|
222466
|
+
const order = orders[i];
|
|
222467
|
+
if (order['status'] === 'closed') {
|
|
222468
|
+
closedOrders.push(order);
|
|
222469
|
+
}
|
|
222470
|
+
}
|
|
222471
|
+
return closedOrders;
|
|
222472
|
+
}
|
|
222393
222473
|
async fetchOpenOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
222394
222474
|
/**
|
|
222395
222475
|
* @method
|
|
@@ -246239,6 +246319,7 @@ class gemini extends _gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
246239
246319
|
'watchBalance': false,
|
|
246240
246320
|
'watchTicker': false,
|
|
246241
246321
|
'watchTickers': false,
|
|
246322
|
+
'watchBidsAsks': true,
|
|
246242
246323
|
'watchTrades': true,
|
|
246243
246324
|
'watchTradesForSymbols': true,
|
|
246244
246325
|
'watchMyTrades': false,
|
|
@@ -246638,6 +246719,79 @@ class gemini extends _gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
246638
246719
|
const orderbook = await this.helperForWatchMultipleConstruct('orderbook', symbols, params);
|
|
246639
246720
|
return orderbook.limit();
|
|
246640
246721
|
}
|
|
246722
|
+
async watchBidsAsks(symbols, limit = undefined, params = {}) {
|
|
246723
|
+
/**
|
|
246724
|
+
* @method
|
|
246725
|
+
* @name gemini#watchBidsAsks
|
|
246726
|
+
* @description watches best bid & ask for symbols
|
|
246727
|
+
* @see https://docs.gemini.com/websocket-api/#multi-market-data
|
|
246728
|
+
* @param {string[]} symbols unified symbol of the market to fetch the ticker for
|
|
246729
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
246730
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
246731
|
+
*/
|
|
246732
|
+
return await this.helperForWatchMultipleConstruct('bidsasks', symbols, params);
|
|
246733
|
+
}
|
|
246734
|
+
handleBidsAsksForMultidata(client, rawBidAskChanges, timestamp, nonce) {
|
|
246735
|
+
//
|
|
246736
|
+
// {
|
|
246737
|
+
// eventId: '1683002916916153',
|
|
246738
|
+
// events: [
|
|
246739
|
+
// {
|
|
246740
|
+
// price: '50945.37',
|
|
246741
|
+
// reason: 'top-of-book',
|
|
246742
|
+
// remaining: '0.0',
|
|
246743
|
+
// side: 'bid',
|
|
246744
|
+
// symbol: 'BTCUSDT',
|
|
246745
|
+
// type: 'change'
|
|
246746
|
+
// },
|
|
246747
|
+
// {
|
|
246748
|
+
// price: '50947.75',
|
|
246749
|
+
// reason: 'top-of-book',
|
|
246750
|
+
// remaining: '0.11725',
|
|
246751
|
+
// side: 'bid',
|
|
246752
|
+
// symbol: 'BTCUSDT',
|
|
246753
|
+
// type: 'change'
|
|
246754
|
+
// }
|
|
246755
|
+
// ],
|
|
246756
|
+
// socket_sequence: 322,
|
|
246757
|
+
// timestamp: 1708674495,
|
|
246758
|
+
// timestampms: 1708674495174,
|
|
246759
|
+
// type: 'update'
|
|
246760
|
+
// }
|
|
246761
|
+
//
|
|
246762
|
+
const marketId = rawBidAskChanges[0]['symbol'];
|
|
246763
|
+
const market = this.safeMarket(marketId.toLowerCase());
|
|
246764
|
+
const symbol = market['symbol'];
|
|
246765
|
+
if (!(symbol in this.bidsasks)) {
|
|
246766
|
+
this.bidsasks[symbol] = this.parseTicker({});
|
|
246767
|
+
this.bidsasks[symbol]['symbol'] = symbol;
|
|
246768
|
+
}
|
|
246769
|
+
const currentBidAsk = this.bidsasks[symbol];
|
|
246770
|
+
const messageHash = 'bidsasks:' + symbol;
|
|
246771
|
+
// last update always overwrites the previous state and is the latest state
|
|
246772
|
+
for (let i = 0; i < rawBidAskChanges.length; i++) {
|
|
246773
|
+
const entry = rawBidAskChanges[i];
|
|
246774
|
+
const rawSide = this.safeString(entry, 'side');
|
|
246775
|
+
const price = this.safeNumber(entry, 'price');
|
|
246776
|
+
const size = this.safeNumber(entry, 'remaining');
|
|
246777
|
+
if (size === 0) {
|
|
246778
|
+
continue;
|
|
246779
|
+
}
|
|
246780
|
+
if (rawSide === 'bid') {
|
|
246781
|
+
currentBidAsk['bid'] = price;
|
|
246782
|
+
currentBidAsk['bidVolume'] = size;
|
|
246783
|
+
}
|
|
246784
|
+
else {
|
|
246785
|
+
currentBidAsk['ask'] = price;
|
|
246786
|
+
currentBidAsk['askVolume'] = size;
|
|
246787
|
+
}
|
|
246788
|
+
}
|
|
246789
|
+
currentBidAsk['timestamp'] = timestamp;
|
|
246790
|
+
currentBidAsk['datetime'] = this.iso8601(timestamp);
|
|
246791
|
+
currentBidAsk['info'] = rawBidAskChanges;
|
|
246792
|
+
this.bidsasks[symbol] = currentBidAsk;
|
|
246793
|
+
client.resolve(currentBidAsk, messageHash);
|
|
246794
|
+
}
|
|
246641
246795
|
async helperForWatchMultipleConstruct(itemHashName, symbols, params = {}) {
|
|
246642
246796
|
await this.loadMarkets();
|
|
246643
246797
|
symbols = this.marketSymbols(symbols, undefined, false, true, true);
|
|
@@ -246659,6 +246813,9 @@ class gemini extends _gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
246659
246813
|
if (itemHashName === 'orderbook') {
|
|
246660
246814
|
url += 'trades=false&bids=true&offers=true';
|
|
246661
246815
|
}
|
|
246816
|
+
else if (itemHashName === 'bidsasks') {
|
|
246817
|
+
url += 'trades=false&bids=true&offers=true&top_of_book=true';
|
|
246818
|
+
}
|
|
246662
246819
|
else if (itemHashName === 'trades') {
|
|
246663
246820
|
url += 'trades=true&bids=false&offers=false';
|
|
246664
246821
|
}
|
|
@@ -247001,18 +247158,29 @@ class gemini extends _gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
247001
247158
|
const eventId = this.safeInteger(message, 'eventId');
|
|
247002
247159
|
const events = this.safeList(message, 'events');
|
|
247003
247160
|
const orderBookItems = [];
|
|
247161
|
+
const bidaskItems = [];
|
|
247004
247162
|
const collectedEventsOfTrades = [];
|
|
247163
|
+
const eventsLength = events.length;
|
|
247005
247164
|
for (let i = 0; i < events.length; i++) {
|
|
247006
247165
|
const event = events[i];
|
|
247007
247166
|
const eventType = this.safeString(event, 'type');
|
|
247008
247167
|
const isOrderBook = (eventType === 'change') && ('side' in event) && this.inArray(event['side'], ['ask', 'bid']);
|
|
247009
|
-
|
|
247168
|
+
const eventReason = this.safeString(event, 'reason');
|
|
247169
|
+
const isBidAsk = (eventReason === 'top-of-book') || (isOrderBook && (eventReason === 'initial') && eventsLength === 2);
|
|
247170
|
+
if (isBidAsk) {
|
|
247171
|
+
bidaskItems.push(event);
|
|
247172
|
+
}
|
|
247173
|
+
else if (isOrderBook) {
|
|
247010
247174
|
orderBookItems.push(event);
|
|
247011
247175
|
}
|
|
247012
247176
|
else if (eventType === 'trade') {
|
|
247013
247177
|
collectedEventsOfTrades.push(events[i]);
|
|
247014
247178
|
}
|
|
247015
247179
|
}
|
|
247180
|
+
const lengthBa = bidaskItems.length;
|
|
247181
|
+
if (lengthBa > 0) {
|
|
247182
|
+
this.handleBidsAsksForMultidata(client, bidaskItems, ts, eventId);
|
|
247183
|
+
}
|
|
247016
247184
|
const lengthOb = orderBookItems.length;
|
|
247017
247185
|
if (lengthOb > 0) {
|
|
247018
247186
|
this.handleOrderBookForMultidata(client, orderBookItems, ts, eventId);
|
|
@@ -270775,6 +270943,7 @@ class whitebit extends _whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
270775
270943
|
// "params":[
|
|
270776
270944
|
// true,
|
|
270777
270945
|
// {
|
|
270946
|
+
// "timestamp": 1708679568.940867,
|
|
270778
270947
|
// "asks":[
|
|
270779
270948
|
// [ "21252.45","0.01957"],
|
|
270780
270949
|
// ["21252.55","0.126205"],
|
|
@@ -270811,14 +270980,14 @@ class whitebit extends _whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
270811
270980
|
const market = this.safeMarket(marketId);
|
|
270812
270981
|
const symbol = market['symbol'];
|
|
270813
270982
|
const data = this.safeValue(params, 1);
|
|
270814
|
-
|
|
270815
|
-
if (symbol in this.orderbooks) {
|
|
270816
|
-
|
|
270817
|
-
|
|
270818
|
-
else {
|
|
270819
|
-
orderbook = this.orderBook();
|
|
270820
|
-
this.orderbooks[symbol] = orderbook;
|
|
270983
|
+
const timestamp = this.safeTimestamp(data, 'timestamp');
|
|
270984
|
+
if (!(symbol in this.orderbooks)) {
|
|
270985
|
+
const ob = this.orderBook();
|
|
270986
|
+
this.orderbooks[symbol] = ob;
|
|
270821
270987
|
}
|
|
270988
|
+
const orderbook = this.orderbooks[symbol];
|
|
270989
|
+
orderbook['timestamp'] = timestamp;
|
|
270990
|
+
orderbook['datetime'] = this.iso8601(timestamp);
|
|
270822
270991
|
if (isSnapshot) {
|
|
270823
270992
|
const snapshot = this.parseOrderBook(data, symbol);
|
|
270824
270993
|
orderbook.reset(snapshot);
|
|
@@ -283332,6 +283501,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283332
283501
|
'fetchPremiumIndexOHLCV': false,
|
|
283333
283502
|
'fetchTicker': true,
|
|
283334
283503
|
'fetchTickers': true,
|
|
283504
|
+
'fetchTime': true,
|
|
283335
283505
|
'fetchTrades': true,
|
|
283336
283506
|
'fetchTradingFee': true,
|
|
283337
283507
|
'fetchWithdrawal': false,
|
|
@@ -283527,11 +283697,26 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283527
283697
|
},
|
|
283528
283698
|
});
|
|
283529
283699
|
}
|
|
283700
|
+
async fetchTime(params = {}) {
|
|
283701
|
+
/**
|
|
283702
|
+
* @method
|
|
283703
|
+
* @name timex#fetchTime
|
|
283704
|
+
* @description fetches the current integer timestamp in milliseconds from the exchange server
|
|
283705
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
283706
|
+
* @returns {int} the current integer timestamp in milliseconds from the exchange server
|
|
283707
|
+
*/
|
|
283708
|
+
const response = await this.tradingviewGetTime(params);
|
|
283709
|
+
//
|
|
283710
|
+
// 1708682617
|
|
283711
|
+
//
|
|
283712
|
+
return this.parseToInt(response) * 1000;
|
|
283713
|
+
}
|
|
283530
283714
|
async fetchMarkets(params = {}) {
|
|
283531
283715
|
/**
|
|
283532
283716
|
* @method
|
|
283533
283717
|
* @name timex#fetchMarkets
|
|
283534
283718
|
* @description retrieves data on all markets for timex
|
|
283719
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listMarkets
|
|
283535
283720
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
283536
283721
|
* @returns {object[]} an array of objects representing market data
|
|
283537
283722
|
*/
|
|
@@ -283564,6 +283749,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283564
283749
|
* @method
|
|
283565
283750
|
* @name timex#fetchCurrencies
|
|
283566
283751
|
* @description fetches all available currencies on an exchange
|
|
283752
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listCurrencies
|
|
283567
283753
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
283568
283754
|
* @returns {object} an associative dictionary of currencies
|
|
283569
283755
|
*/
|
|
@@ -283605,6 +283791,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283605
283791
|
* @method
|
|
283606
283792
|
* @name timex#fetchDeposits
|
|
283607
283793
|
* @description fetch all deposits made to an account
|
|
283794
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Manager/getDeposits
|
|
283608
283795
|
* @param {string} code unified currency code
|
|
283609
283796
|
* @param {int} [since] the earliest time in ms to fetch deposits for
|
|
283610
283797
|
* @param {int} [limit] the maximum number of deposits structures to retrieve
|
|
@@ -283640,6 +283827,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283640
283827
|
* @method
|
|
283641
283828
|
* @name timex#fetchWithdrawals
|
|
283642
283829
|
* @description fetch all withdrawals made to an account
|
|
283830
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Manager/getWithdraws
|
|
283643
283831
|
* @param {string} code unified currency code
|
|
283644
283832
|
* @param {int} [since] the earliest time in ms to fetch withdrawals for
|
|
283645
283833
|
* @param {int} [limit] the maximum number of transaction structures to retrieve
|
|
@@ -283724,6 +283912,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283724
283912
|
* @method
|
|
283725
283913
|
* @name timex#fetchTickers
|
|
283726
283914
|
* @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
283915
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listTickers
|
|
283727
283916
|
* @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
283728
283917
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
283729
283918
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
@@ -283758,6 +283947,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283758
283947
|
* @method
|
|
283759
283948
|
* @name timex#fetchTicker
|
|
283760
283949
|
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
283950
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listTickers
|
|
283761
283951
|
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
283762
283952
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
283763
283953
|
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
@@ -283795,6 +283985,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283795
283985
|
* @method
|
|
283796
283986
|
* @name timex#fetchOrderBook
|
|
283797
283987
|
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
283988
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/orderbookV2
|
|
283798
283989
|
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
283799
283990
|
* @param {int} [limit] the maximum amount of order book entries to return
|
|
283800
283991
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -283841,6 +284032,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283841
284032
|
* @method
|
|
283842
284033
|
* @name timex#fetchTrades
|
|
283843
284034
|
* @description get the list of most recent trades for a particular symbol
|
|
284035
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listTrades
|
|
283844
284036
|
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
283845
284037
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
283846
284038
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
@@ -283888,6 +284080,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283888
284080
|
* @method
|
|
283889
284081
|
* @name timex#fetchOHLCV
|
|
283890
284082
|
* @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
284083
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Public/listCandles
|
|
283891
284084
|
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
283892
284085
|
* @param {string} timeframe the length of time each candle represents
|
|
283893
284086
|
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
@@ -283953,6 +284146,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283953
284146
|
* @method
|
|
283954
284147
|
* @name timex#fetchBalance
|
|
283955
284148
|
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
284149
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/getBalances
|
|
283956
284150
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
283957
284151
|
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
283958
284152
|
*/
|
|
@@ -283974,6 +284168,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
283974
284168
|
* @method
|
|
283975
284169
|
* @name timex#createOrder
|
|
283976
284170
|
* @description create a trade order
|
|
284171
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/createOrder
|
|
283977
284172
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
283978
284173
|
* @param {string} type 'market' or 'limit'
|
|
283979
284174
|
* @param {string} side 'buy' or 'sell'
|
|
@@ -284102,6 +284297,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284102
284297
|
* @method
|
|
284103
284298
|
* @name timex#cancelOrder
|
|
284104
284299
|
* @description cancels an open order
|
|
284300
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/deleteOrders
|
|
284105
284301
|
* @param {string} id order id
|
|
284106
284302
|
* @param {string} symbol not used by timex cancelOrder ()
|
|
284107
284303
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -284115,6 +284311,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284115
284311
|
* @method
|
|
284116
284312
|
* @name timex#cancelOrders
|
|
284117
284313
|
* @description cancel multiple orders
|
|
284314
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/deleteOrders
|
|
284118
284315
|
* @param {string[]} ids order ids
|
|
284119
284316
|
* @param {string} symbol unified market symbol, default is undefined
|
|
284120
284317
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -284156,6 +284353,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284156
284353
|
* @method
|
|
284157
284354
|
* @name timex#fetchOrder
|
|
284158
284355
|
* @description fetches information on an order made by the user
|
|
284356
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/History/getOrderDetails
|
|
284159
284357
|
* @param {string} symbol not used by timex fetchOrder
|
|
284160
284358
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
284161
284359
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -284207,6 +284405,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284207
284405
|
* @method
|
|
284208
284406
|
* @name timex#fetchOpenOrders
|
|
284209
284407
|
* @description fetch all unfilled currently open orders
|
|
284408
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/getOpenOrders
|
|
284210
284409
|
* @param {string} symbol unified market symbol
|
|
284211
284410
|
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
284212
284411
|
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
@@ -284261,6 +284460,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284261
284460
|
* @method
|
|
284262
284461
|
* @name timex#fetchClosedOrders
|
|
284263
284462
|
* @description fetches information on multiple closed orders made by the user
|
|
284463
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/History/getOrders
|
|
284264
284464
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
284265
284465
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
284266
284466
|
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
@@ -284320,6 +284520,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284320
284520
|
* @method
|
|
284321
284521
|
* @name timex#fetchMyTrades
|
|
284322
284522
|
* @description fetch all trades made by the user
|
|
284523
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/History/getTrades_1
|
|
284323
284524
|
* @param {string} symbol unified market symbol
|
|
284324
284525
|
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
284325
284526
|
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
@@ -284398,6 +284599,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284398
284599
|
* @method
|
|
284399
284600
|
* @name timex#fetchTradingFee
|
|
284400
284601
|
* @description fetch the trading fees for a market
|
|
284602
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Trading/getFees
|
|
284401
284603
|
* @param {string} symbol unified market symbol
|
|
284402
284604
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
284403
284605
|
* @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
|
|
@@ -284791,6 +284993,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284791
284993
|
* @method
|
|
284792
284994
|
* @name timex#fetchDepositAddress
|
|
284793
284995
|
* @description fetch the deposit address for a currency associated with this account, does not accept params["network"]
|
|
284996
|
+
* @see https://plasma-relay-backend.timex.io/swagger-ui/index.html?urls.primaryName=Relay#/Currency/selectCurrencyBySymbol
|
|
284794
284997
|
* @param {string} code unified currency code
|
|
284795
284998
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
284796
284999
|
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
@@ -284853,7 +285056,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
284853
285056
|
if (Object.keys(params).length) {
|
|
284854
285057
|
url += '?' + this.urlencodeWithArrayRepeat(params);
|
|
284855
285058
|
}
|
|
284856
|
-
if (api !== 'public') {
|
|
285059
|
+
if (api !== 'public' && api !== 'tradingview') {
|
|
284857
285060
|
this.checkRequiredCredentials();
|
|
284858
285061
|
const auth = this.stringToBase64(this.apiKey + ':' + this.secret);
|
|
284859
285062
|
const secret = 'Basic ' + auth;
|
|
@@ -307665,7 +307868,7 @@ SOFTWARE.
|
|
|
307665
307868
|
|
|
307666
307869
|
//-----------------------------------------------------------------------------
|
|
307667
307870
|
// this is updated by vss.js when building
|
|
307668
|
-
const version = '4.2.
|
|
307871
|
+
const version = '4.2.50';
|
|
307669
307872
|
_src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
|
|
307670
307873
|
//-----------------------------------------------------------------------------
|
|
307671
307874
|
|