ccxt 4.4.67 → 4.4.69
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 -5
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +5 -3
- package/dist/cjs/src/binance.js +19 -2
- package/dist/cjs/src/bitrue.js +1 -1
- package/dist/cjs/src/bitstamp.js +2 -3
- package/dist/cjs/src/bybit.js +1 -1
- package/dist/cjs/src/coinbase.js +70 -2
- package/dist/cjs/src/cryptomus.js +214 -116
- package/dist/cjs/src/hyperliquid.js +1 -1
- package/dist/cjs/src/luno.js +112 -0
- package/dist/cjs/src/paradex.js +172 -4
- package/dist/cjs/src/phemex.js +2 -2
- package/dist/cjs/src/tradeogre.js +14 -9
- package/dist/cjs/src/whitebit.js +211 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/paradex.d.ts +23 -0
- package/js/src/abstract/tradeogre.d.ts +1 -0
- package/js/src/base/Exchange.js +6 -4
- package/js/src/binance.js +19 -2
- package/js/src/bitrue.js +1 -1
- package/js/src/bitstamp.js +2 -3
- package/js/src/bybit.js +1 -1
- package/js/src/coinbase.d.ts +11 -0
- package/js/src/coinbase.js +70 -2
- package/js/src/cryptomus.d.ts +127 -1
- package/js/src/cryptomus.js +214 -116
- package/js/src/hyperliquid.js +1 -1
- package/js/src/luno.d.ts +25 -1
- package/js/src/luno.js +112 -0
- package/js/src/paradex.d.ts +48 -1
- package/js/src/paradex.js +172 -4
- package/js/src/phemex.d.ts +1 -1
- package/js/src/phemex.js +2 -2
- package/js/src/tradeogre.d.ts +1 -0
- package/js/src/tradeogre.js +14 -9
- package/js/src/whitebit.d.ts +35 -1
- package/js/src/whitebit.js +211 -1
- package/package.json +4 -4
package/dist/cjs/src/luno.js
CHANGED
|
@@ -32,6 +32,7 @@ class luno extends luno$1 {
|
|
|
32
32
|
'cancelOrder': true,
|
|
33
33
|
'closeAllPositions': false,
|
|
34
34
|
'closePosition': false,
|
|
35
|
+
'createDepositAddress': true,
|
|
35
36
|
'createOrder': true,
|
|
36
37
|
'createReduceOnlyOrder': false,
|
|
37
38
|
'fetchAccounts': true,
|
|
@@ -40,6 +41,7 @@ class luno extends luno$1 {
|
|
|
40
41
|
'fetchClosedOrders': true,
|
|
41
42
|
'fetchCrossBorrowRate': false,
|
|
42
43
|
'fetchCrossBorrowRates': false,
|
|
44
|
+
'fetchDepositAddress': true,
|
|
43
45
|
'fetchFundingHistory': false,
|
|
44
46
|
'fetchFundingRate': false,
|
|
45
47
|
'fetchFundingRateHistory': false,
|
|
@@ -1208,6 +1210,116 @@ class luno extends luno$1 {
|
|
|
1208
1210
|
'fee': undefined,
|
|
1209
1211
|
}, currency);
|
|
1210
1212
|
}
|
|
1213
|
+
/**
|
|
1214
|
+
* @method
|
|
1215
|
+
* @name luno#createDepositAddress
|
|
1216
|
+
* @description create a currency deposit address
|
|
1217
|
+
* @see https://www.luno.com/en/developers/api#tag/Receive/operation/createFundingAddress
|
|
1218
|
+
* @param {string} code unified currency code of the currency for the deposit address
|
|
1219
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1220
|
+
* @param {string} [params.name] an optional name for the new address
|
|
1221
|
+
* @param {int} [params.account_id] an optional account id for the new address
|
|
1222
|
+
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
1223
|
+
*/
|
|
1224
|
+
async createDepositAddress(code, params = {}) {
|
|
1225
|
+
await this.loadMarkets();
|
|
1226
|
+
const currency = this.currency(code);
|
|
1227
|
+
const request = {
|
|
1228
|
+
'asset': currency['id'],
|
|
1229
|
+
};
|
|
1230
|
+
const response = await this.privatePostFundingAddress(this.extend(request, params));
|
|
1231
|
+
//
|
|
1232
|
+
// {
|
|
1233
|
+
// "account_id": "string",
|
|
1234
|
+
// "address": "string",
|
|
1235
|
+
// "address_meta": [
|
|
1236
|
+
// {
|
|
1237
|
+
// "label": "string",
|
|
1238
|
+
// "value": "string"
|
|
1239
|
+
// }
|
|
1240
|
+
// ],
|
|
1241
|
+
// "asset": "string",
|
|
1242
|
+
// "assigned_at": 0,
|
|
1243
|
+
// "name": "string",
|
|
1244
|
+
// "network": 0,
|
|
1245
|
+
// "qr_code_uri": "string",
|
|
1246
|
+
// "receive_fee": "string",
|
|
1247
|
+
// "total_received": "string",
|
|
1248
|
+
// "total_unconfirmed": "string"
|
|
1249
|
+
// }
|
|
1250
|
+
//
|
|
1251
|
+
return this.parseDepositAddress(response, currency);
|
|
1252
|
+
}
|
|
1253
|
+
/**
|
|
1254
|
+
* @method
|
|
1255
|
+
* @name luno#fetchDepositAddress
|
|
1256
|
+
* @description fetch the deposit address for a currency associated with this account
|
|
1257
|
+
* @see https://www.luno.com/en/developers/api#tag/Receive/operation/getFundingAddress
|
|
1258
|
+
* @param {string} code unified currency code
|
|
1259
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1260
|
+
* @param {string} [params.address] a specific cryptocurrency address to retrieve
|
|
1261
|
+
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
1262
|
+
*/
|
|
1263
|
+
async fetchDepositAddress(code, params = {}) {
|
|
1264
|
+
await this.loadMarkets();
|
|
1265
|
+
const currency = this.currency(code);
|
|
1266
|
+
const request = {
|
|
1267
|
+
'asset': currency['id'],
|
|
1268
|
+
};
|
|
1269
|
+
const response = await this.privateGetFundingAddress(this.extend(request, params));
|
|
1270
|
+
//
|
|
1271
|
+
// {
|
|
1272
|
+
// "account_id": "string",
|
|
1273
|
+
// "address": "string",
|
|
1274
|
+
// "address_meta": [
|
|
1275
|
+
// {
|
|
1276
|
+
// "label": "string",
|
|
1277
|
+
// "value": "string"
|
|
1278
|
+
// }
|
|
1279
|
+
// ],
|
|
1280
|
+
// "asset": "string",
|
|
1281
|
+
// "assigned_at": 0,
|
|
1282
|
+
// "name": "string",
|
|
1283
|
+
// "network": 0,
|
|
1284
|
+
// "qr_code_uri": "string",
|
|
1285
|
+
// "receive_fee": "string",
|
|
1286
|
+
// "total_received": "string",
|
|
1287
|
+
// "total_unconfirmed": "string"
|
|
1288
|
+
// }
|
|
1289
|
+
//
|
|
1290
|
+
return this.parseDepositAddress(response, currency);
|
|
1291
|
+
}
|
|
1292
|
+
parseDepositAddress(depositAddress, currency = undefined) {
|
|
1293
|
+
//
|
|
1294
|
+
// {
|
|
1295
|
+
// "account_id": "string",
|
|
1296
|
+
// "address": "string",
|
|
1297
|
+
// "address_meta": [
|
|
1298
|
+
// {
|
|
1299
|
+
// "label": "string",
|
|
1300
|
+
// "value": "string"
|
|
1301
|
+
// }
|
|
1302
|
+
// ],
|
|
1303
|
+
// "asset": "string",
|
|
1304
|
+
// "assigned_at": 0,
|
|
1305
|
+
// "name": "string",
|
|
1306
|
+
// "network": 0,
|
|
1307
|
+
// "qr_code_uri": "string",
|
|
1308
|
+
// "receive_fee": "string",
|
|
1309
|
+
// "total_received": "string",
|
|
1310
|
+
// "total_unconfirmed": "string"
|
|
1311
|
+
// }
|
|
1312
|
+
//
|
|
1313
|
+
const currencyId = this.safeStringUpper(depositAddress, 'currency');
|
|
1314
|
+
const code = this.safeCurrencyCode(currencyId, currency);
|
|
1315
|
+
return {
|
|
1316
|
+
'info': depositAddress,
|
|
1317
|
+
'currency': code,
|
|
1318
|
+
'network': undefined,
|
|
1319
|
+
'address': this.safeString(depositAddress, 'address'),
|
|
1320
|
+
'tag': this.safeString(depositAddress, 'name'),
|
|
1321
|
+
};
|
|
1322
|
+
}
|
|
1211
1323
|
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
1212
1324
|
let url = this.urls['api'][api] + '/' + this.version + '/' + this.implodeParams(path, params);
|
|
1213
1325
|
const query = this.omit(params, this.extractParams(path));
|
package/dist/cjs/src/paradex.js
CHANGED
|
@@ -76,10 +76,10 @@ class paradex extends paradex$1 {
|
|
|
76
76
|
'fetchIsolatedBorrowRate': false,
|
|
77
77
|
'fetchIsolatedBorrowRates': false,
|
|
78
78
|
'fetchLedger': false,
|
|
79
|
-
'fetchLeverage':
|
|
79
|
+
'fetchLeverage': true,
|
|
80
80
|
'fetchLeverageTiers': false,
|
|
81
81
|
'fetchLiquidations': true,
|
|
82
|
-
'fetchMarginMode':
|
|
82
|
+
'fetchMarginMode': true,
|
|
83
83
|
'fetchMarketLeverageTiers': false,
|
|
84
84
|
'fetchMarkets': true,
|
|
85
85
|
'fetchMarkOHLCV': false,
|
|
@@ -113,8 +113,8 @@ class paradex extends paradex$1 {
|
|
|
113
113
|
'repayCrossMargin': false,
|
|
114
114
|
'repayIsolatedMargin': false,
|
|
115
115
|
'sandbox': true,
|
|
116
|
-
'setLeverage':
|
|
117
|
-
'setMarginMode':
|
|
116
|
+
'setLeverage': true,
|
|
117
|
+
'setMarginMode': true,
|
|
118
118
|
'setPositionMode': false,
|
|
119
119
|
'transfer': false,
|
|
120
120
|
'withdraw': false,
|
|
@@ -156,12 +156,23 @@ class paradex extends paradex$1 {
|
|
|
156
156
|
'system/state': 1,
|
|
157
157
|
'system/time': 1,
|
|
158
158
|
'trades': 1,
|
|
159
|
+
'vaults': 1,
|
|
160
|
+
'vaults/balance': 1,
|
|
161
|
+
'vaults/config': 1,
|
|
162
|
+
'vaults/history': 1,
|
|
163
|
+
'vaults/positions': 1,
|
|
164
|
+
'vaults/summary': 1,
|
|
165
|
+
'vaults/transfers': 1,
|
|
159
166
|
},
|
|
160
167
|
},
|
|
161
168
|
'private': {
|
|
162
169
|
'get': {
|
|
163
170
|
'account': 1,
|
|
171
|
+
'account/info': 1,
|
|
172
|
+
'account/history': 1,
|
|
173
|
+
'account/margin': 1,
|
|
164
174
|
'account/profile': 1,
|
|
175
|
+
'account/subaccounts': 1,
|
|
165
176
|
'balance': 1,
|
|
166
177
|
'fills': 1,
|
|
167
178
|
'funding/payments': 1,
|
|
@@ -174,20 +185,34 @@ class paradex extends paradex$1 {
|
|
|
174
185
|
'orders/by_client_id/{client_id}': 1,
|
|
175
186
|
'orders/{order_id}': 1,
|
|
176
187
|
'points_data/{market}/{program}': 1,
|
|
188
|
+
'referrals/qr-code': 1,
|
|
177
189
|
'referrals/summary': 1,
|
|
178
190
|
'transfers': 1,
|
|
191
|
+
'algo/orders': 1,
|
|
192
|
+
'algo/orders-history': 1,
|
|
193
|
+
'algo/orders/{algo_id}': 1,
|
|
194
|
+
'vaults/account-summary': 1,
|
|
179
195
|
},
|
|
180
196
|
'post': {
|
|
197
|
+
'account/margin/{market}': 1,
|
|
198
|
+
'account/profile/max_slippage': 1,
|
|
181
199
|
'account/profile/referral_code': 1,
|
|
182
200
|
'account/profile/username': 1,
|
|
183
201
|
'auth': 1,
|
|
184
202
|
'onboarding': 1,
|
|
185
203
|
'orders': 1,
|
|
204
|
+
'orders/batch': 1,
|
|
205
|
+
'algo/orders': 1,
|
|
206
|
+
'vaults': 1,
|
|
207
|
+
},
|
|
208
|
+
'put': {
|
|
209
|
+
'orders/{order_id}': 1,
|
|
186
210
|
},
|
|
187
211
|
'delete': {
|
|
188
212
|
'orders': 1,
|
|
189
213
|
'orders/by_client_id/{client_id}': 1,
|
|
190
214
|
'orders/{order_id}': 1,
|
|
215
|
+
'algo/orders/{algo_id}': 1,
|
|
191
216
|
},
|
|
192
217
|
},
|
|
193
218
|
},
|
|
@@ -2126,6 +2151,149 @@ class paradex extends paradex$1 {
|
|
|
2126
2151
|
};
|
|
2127
2152
|
return this.safeString(statuses, status, status);
|
|
2128
2153
|
}
|
|
2154
|
+
/**
|
|
2155
|
+
* @method
|
|
2156
|
+
* @name paradex#fetchMarginMode
|
|
2157
|
+
* @description fetches the margin mode of a specific symbol
|
|
2158
|
+
* @see https://docs.api.testnet.paradex.trade/#get-account-margin-configuration
|
|
2159
|
+
* @param {string} symbol unified symbol of the market the order was made in
|
|
2160
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2161
|
+
* @returns {object} a [margin mode structure]{@link https://docs.ccxt.com/#/?id=margin-mode-structure}
|
|
2162
|
+
*/
|
|
2163
|
+
async fetchMarginMode(symbol, params = {}) {
|
|
2164
|
+
await this.authenticateRest();
|
|
2165
|
+
await this.loadMarkets();
|
|
2166
|
+
const market = this.market(symbol);
|
|
2167
|
+
const request = {
|
|
2168
|
+
'market': market['id'],
|
|
2169
|
+
};
|
|
2170
|
+
const response = await this.privateGetAccountMargin(this.extend(request, params));
|
|
2171
|
+
//
|
|
2172
|
+
// {
|
|
2173
|
+
// "account": "0x6343248026a845b39a8a73fbe9c7ef0a841db31ed5c61ec1446aa9d25e54dbc",
|
|
2174
|
+
// "configs": [
|
|
2175
|
+
// {
|
|
2176
|
+
// "market": "SOL-USD-PERP",
|
|
2177
|
+
// "leverage": 50,
|
|
2178
|
+
// "margin_type": "CROSS"
|
|
2179
|
+
// }
|
|
2180
|
+
// ]
|
|
2181
|
+
// }
|
|
2182
|
+
//
|
|
2183
|
+
const configs = this.safeList(response, 'configs');
|
|
2184
|
+
return this.parseMarginMode(this.safeDict(configs, 0), market);
|
|
2185
|
+
}
|
|
2186
|
+
parseMarginMode(rawMarginMode, market = undefined) {
|
|
2187
|
+
const marketId = this.safeString(rawMarginMode, 'market');
|
|
2188
|
+
market = this.safeMarket(marketId, market);
|
|
2189
|
+
const marginMode = this.safeStringLower(rawMarginMode, 'margin_type');
|
|
2190
|
+
return {
|
|
2191
|
+
'info': rawMarginMode,
|
|
2192
|
+
'symbol': market['symbol'],
|
|
2193
|
+
'marginMode': marginMode,
|
|
2194
|
+
};
|
|
2195
|
+
}
|
|
2196
|
+
/**
|
|
2197
|
+
* @method
|
|
2198
|
+
* @name paradex#setMarginMode
|
|
2199
|
+
* @description set margin mode to 'cross' or 'isolated'
|
|
2200
|
+
* @see https://docs.api.testnet.paradex.trade/#set-margin-configuration
|
|
2201
|
+
* @param {string} marginMode 'cross' or 'isolated'
|
|
2202
|
+
* @param {string} symbol unified market symbol
|
|
2203
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2204
|
+
* @param {float} [params.leverage] the rate of leverage
|
|
2205
|
+
* @returns {object} response from the exchange
|
|
2206
|
+
*/
|
|
2207
|
+
async setMarginMode(marginMode, symbol = undefined, params = {}) {
|
|
2208
|
+
this.checkRequiredArgument('setMarginMode', symbol, 'symbol');
|
|
2209
|
+
await this.authenticateRest();
|
|
2210
|
+
await this.loadMarkets();
|
|
2211
|
+
const market = this.market(symbol);
|
|
2212
|
+
let leverage = undefined;
|
|
2213
|
+
[leverage, params] = this.handleOptionAndParams(params, 'setMarginMode', 'leverage', 1);
|
|
2214
|
+
const request = {
|
|
2215
|
+
'market': market['id'],
|
|
2216
|
+
'leverage': leverage,
|
|
2217
|
+
'margin_type': this.encodeMarginMode(marginMode),
|
|
2218
|
+
};
|
|
2219
|
+
return await this.privatePostAccountMarginMarket(this.extend(request, params));
|
|
2220
|
+
}
|
|
2221
|
+
/**
|
|
2222
|
+
* @method
|
|
2223
|
+
* @name paradex#fetchLeverage
|
|
2224
|
+
* @description fetch the set leverage for a market
|
|
2225
|
+
* @see https://docs.api.testnet.paradex.trade/#get-account-margin-configuration
|
|
2226
|
+
* @param {string} symbol unified market symbol
|
|
2227
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2228
|
+
* @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
|
|
2229
|
+
*/
|
|
2230
|
+
async fetchLeverage(symbol, params = {}) {
|
|
2231
|
+
await this.authenticateRest();
|
|
2232
|
+
await this.loadMarkets();
|
|
2233
|
+
const market = this.market(symbol);
|
|
2234
|
+
const request = {
|
|
2235
|
+
'market': market['id'],
|
|
2236
|
+
};
|
|
2237
|
+
const response = await this.privateGetAccountMargin(this.extend(request, params));
|
|
2238
|
+
//
|
|
2239
|
+
// {
|
|
2240
|
+
// "account": "0x6343248026a845b39a8a73fbe9c7ef0a841db31ed5c61ec1446aa9d25e54dbc",
|
|
2241
|
+
// "configs": [
|
|
2242
|
+
// {
|
|
2243
|
+
// "market": "SOL-USD-PERP",
|
|
2244
|
+
// "leverage": 50,
|
|
2245
|
+
// "margin_type": "CROSS"
|
|
2246
|
+
// }
|
|
2247
|
+
// ]
|
|
2248
|
+
// }
|
|
2249
|
+
//
|
|
2250
|
+
const configs = this.safeList(response, 'configs');
|
|
2251
|
+
return this.parseLeverage(this.safeDict(configs, 0), market);
|
|
2252
|
+
}
|
|
2253
|
+
parseLeverage(leverage, market = undefined) {
|
|
2254
|
+
const marketId = this.safeString(leverage, 'market');
|
|
2255
|
+
market = this.safeMarket(marketId, market);
|
|
2256
|
+
const marginMode = this.safeStringLower(leverage, 'margin_type');
|
|
2257
|
+
return {
|
|
2258
|
+
'info': leverage,
|
|
2259
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
2260
|
+
'marginMode': marginMode,
|
|
2261
|
+
'longLeverage': this.safeInteger(leverage, 'leverage'),
|
|
2262
|
+
'shortLeverage': this.safeInteger(leverage, 'leverage'),
|
|
2263
|
+
};
|
|
2264
|
+
}
|
|
2265
|
+
encodeMarginMode(mode) {
|
|
2266
|
+
const modes = {
|
|
2267
|
+
'cross': 'CROSS',
|
|
2268
|
+
'isolated': 'ISOLATED',
|
|
2269
|
+
};
|
|
2270
|
+
return this.safeString(modes, mode, mode);
|
|
2271
|
+
}
|
|
2272
|
+
/**
|
|
2273
|
+
* @method
|
|
2274
|
+
* @name paradex#setLeverage
|
|
2275
|
+
* @description set the level of leverage for a market
|
|
2276
|
+
* @see https://docs.api.testnet.paradex.trade/#set-margin-configuration
|
|
2277
|
+
* @param {float} leverage the rate of leverage
|
|
2278
|
+
* @param {string} [symbol] unified market symbol (is mandatory for swap markets)
|
|
2279
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2280
|
+
* @param {string} [params.marginMode] 'cross' or 'isolated'
|
|
2281
|
+
* @returns {object} response from the exchange
|
|
2282
|
+
*/
|
|
2283
|
+
async setLeverage(leverage, symbol = undefined, params = {}) {
|
|
2284
|
+
this.checkRequiredArgument('setLeverage', symbol, 'symbol');
|
|
2285
|
+
await this.authenticateRest();
|
|
2286
|
+
await this.loadMarkets();
|
|
2287
|
+
const market = this.market(symbol);
|
|
2288
|
+
let marginMode = undefined;
|
|
2289
|
+
[marginMode, params] = this.handleMarginModeAndParams('setLeverage', params, 'cross');
|
|
2290
|
+
const request = {
|
|
2291
|
+
'market': market['id'],
|
|
2292
|
+
'leverage': leverage,
|
|
2293
|
+
'margin_type': this.encodeMarginMode(marginMode),
|
|
2294
|
+
};
|
|
2295
|
+
return await this.privatePostAccountMarginMarket(this.extend(request, params));
|
|
2296
|
+
}
|
|
2129
2297
|
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
2130
2298
|
let url = this.implodeHostname(this.urls['api'][this.version]) + '/' + this.implodeParams(path, params);
|
|
2131
2299
|
const query = this.omit(params, this.extractParams(path));
|
package/dist/cjs/src/phemex.js
CHANGED
|
@@ -3801,7 +3801,7 @@ class phemex extends phemex$1 {
|
|
|
3801
3801
|
* @see https://phemex-docs.github.io/#query-account-positions-with-unrealized-pnl
|
|
3802
3802
|
* @param {string[]} [symbols] list of unified market symbols
|
|
3803
3803
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3804
|
-
* @param {string} [params.code] the currency code to fetch positions for, USD, BTC or USDT,
|
|
3804
|
+
* @param {string} [params.code] the currency code to fetch positions for, USD, BTC or USDT, USDT is the default
|
|
3805
3805
|
* @param {string} [params.method] *USDT contracts only* 'privateGetGAccountsAccountPositions' or 'privateGetAccountsPositions' default is 'privateGetGAccountsAccountPositions'
|
|
3806
3806
|
* @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
3807
3807
|
*/
|
|
@@ -3809,7 +3809,7 @@ class phemex extends phemex$1 {
|
|
|
3809
3809
|
await this.loadMarkets();
|
|
3810
3810
|
symbols = this.marketSymbols(symbols);
|
|
3811
3811
|
let subType = undefined;
|
|
3812
|
-
let code = this.safeString2(params, 'currency', 'code', '
|
|
3812
|
+
let code = this.safeString2(params, 'currency', 'code', 'USDT');
|
|
3813
3813
|
params = this.omit(params, ['currency', 'code']);
|
|
3814
3814
|
let settle = undefined;
|
|
3815
3815
|
let market = undefined;
|
|
@@ -129,6 +129,7 @@ class tradeogre extends tradeogre$1 {
|
|
|
129
129
|
'ticker/{market}': 1,
|
|
130
130
|
'history/{market}': 1,
|
|
131
131
|
'chart/{interval}/{market}/{timestamp}': 1,
|
|
132
|
+
'chart/{interval}/{market}': 1,
|
|
132
133
|
},
|
|
133
134
|
},
|
|
134
135
|
'private': {
|
|
@@ -420,15 +421,15 @@ class tradeogre extends tradeogre$1 {
|
|
|
420
421
|
'ask': this.safeString(ticker, 'ask'),
|
|
421
422
|
'askVolume': undefined,
|
|
422
423
|
'vwap': undefined,
|
|
423
|
-
'open': this.safeString(ticker, '
|
|
424
|
-
'close':
|
|
424
|
+
'open': this.safeString(ticker, 'initialprice'),
|
|
425
|
+
'close': this.safeString(ticker, 'price'),
|
|
425
426
|
'last': undefined,
|
|
426
427
|
'previousClose': undefined,
|
|
427
428
|
'change': undefined,
|
|
428
429
|
'percentage': undefined,
|
|
429
430
|
'average': undefined,
|
|
430
|
-
'baseVolume':
|
|
431
|
-
'quoteVolume':
|
|
431
|
+
'baseVolume': undefined,
|
|
432
|
+
'quoteVolume': this.safeString(ticker, 'volume'),
|
|
432
433
|
'info': ticker,
|
|
433
434
|
}, market);
|
|
434
435
|
}
|
|
@@ -441,6 +442,7 @@ class tradeogre extends tradeogre$1 {
|
|
|
441
442
|
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
442
443
|
* @param {int} [limit] the maximum amount of candles to fetch
|
|
443
444
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
445
|
+
* @param {int} [params.until] timestamp of the latest candle in ms
|
|
444
446
|
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
445
447
|
*/
|
|
446
448
|
async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
@@ -450,13 +452,16 @@ class tradeogre extends tradeogre$1 {
|
|
|
450
452
|
'market': market['id'],
|
|
451
453
|
'interval': this.safeString(this.timeframes, timeframe, timeframe),
|
|
452
454
|
};
|
|
453
|
-
|
|
454
|
-
|
|
455
|
+
let response = undefined;
|
|
456
|
+
const until = this.safeInteger(params, 'until');
|
|
457
|
+
if (until !== undefined) {
|
|
458
|
+
params = this.omit(params, 'until');
|
|
459
|
+
request['timestamp'] = this.parseToInt(until / 1000);
|
|
460
|
+
response = await this.publicGetChartIntervalMarketTimestamp(this.extend(request, params));
|
|
455
461
|
}
|
|
456
462
|
else {
|
|
457
|
-
|
|
463
|
+
response = await this.publicGetChartIntervalMarket(this.extend(request, params));
|
|
458
464
|
}
|
|
459
|
-
const response = await this.publicGetChartIntervalMarketTimestamp(this.extend(request, params));
|
|
460
465
|
//
|
|
461
466
|
// [
|
|
462
467
|
// [
|
|
@@ -485,9 +490,9 @@ class tradeogre extends tradeogre$1 {
|
|
|
485
490
|
return [
|
|
486
491
|
this.safeTimestamp(ohlcv, 0),
|
|
487
492
|
this.safeNumber(ohlcv, 1),
|
|
493
|
+
this.safeNumber(ohlcv, 2),
|
|
488
494
|
this.safeNumber(ohlcv, 3),
|
|
489
495
|
this.safeNumber(ohlcv, 4),
|
|
490
|
-
this.safeNumber(ohlcv, 2),
|
|
491
496
|
this.safeNumber(ohlcv, 5),
|
|
492
497
|
];
|
|
493
498
|
}
|