ccxt 4.1.75 → 4.1.77
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 +287 -235
- package/dist/ccxt.browser.min.js +5 -5
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/ace.js +2 -0
- package/dist/cjs/src/alpaca.js +2 -0
- package/dist/cjs/src/base/Exchange.js +8 -0
- package/dist/cjs/src/base/errors.js +7 -7
- package/dist/cjs/src/base/ws/Client.js +2 -0
- package/dist/cjs/src/binance.js +4 -0
- package/dist/cjs/src/binanceus.js +2 -0
- package/dist/cjs/src/bingx.js +80 -23
- package/dist/cjs/src/bit2c.js +2 -0
- package/dist/cjs/src/bitbank.js +2 -0
- package/dist/cjs/src/bithumb.js +2 -0
- package/dist/cjs/src/bitmex.js +6 -0
- package/dist/cjs/src/bitopro.js +2 -0
- package/dist/cjs/src/bitpanda.js +2 -0
- package/dist/cjs/src/bitrue.js +27 -1
- package/dist/cjs/src/bitso.js +2 -0
- package/dist/cjs/src/bitstamp.js +5 -2
- package/dist/cjs/src/bittrex.js +2 -0
- package/dist/cjs/src/bitvavo.js +2 -0
- package/dist/cjs/src/bl3p.js +2 -0
- package/dist/cjs/src/btcalpha.js +2 -0
- package/dist/cjs/src/btcbox.js +2 -0
- package/dist/cjs/src/btcmarkets.js +2 -0
- package/dist/cjs/src/btcturk.js +2 -0
- package/dist/cjs/src/bybit.js +2 -0
- package/dist/cjs/src/coinbase.js +37 -6
- package/dist/cjs/src/coincheck.js +2 -0
- package/dist/cjs/src/coinlist.js +2 -0
- package/dist/cjs/src/coinmate.js +2 -0
- package/dist/cjs/src/coinone.js +2 -0
- package/dist/cjs/src/coinsph.js +2 -0
- package/dist/cjs/src/coinspot.js +2 -0
- package/dist/cjs/src/cryptocom.js +2 -185
- package/dist/cjs/src/gate.js +1 -0
- package/dist/cjs/src/gemini.js +2 -0
- package/dist/cjs/src/idex.js +2 -0
- package/dist/cjs/src/independentreserve.js +2 -0
- package/dist/cjs/src/indodax.js +2 -0
- package/dist/cjs/src/kucoin.js +2 -0
- package/dist/cjs/src/kuna.js +2 -0
- package/dist/cjs/src/latoken.js +2 -0
- package/dist/cjs/src/luno.js +2 -0
- package/dist/cjs/src/mercado.js +2 -0
- package/dist/cjs/src/mexc.js +2 -0
- package/dist/cjs/src/ndax.js +2 -0
- package/dist/cjs/src/novadax.js +2 -0
- package/dist/cjs/src/okx.js +25 -10
- package/dist/cjs/src/p2b.js +2 -0
- package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +8 -11
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +5 -8
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +5 -12
- package/dist/cjs/src/wavesexchange.js +2 -0
- package/dist/cjs/src/wazirx.js +2 -0
- package/dist/cjs/src/woo.js +2 -0
- package/dist/cjs/src/yobit.js +2 -0
- package/dist/cjs/src/zonda.js +2 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/binance.d.ts +2 -0
- package/js/src/abstract/binancecoinm.d.ts +2 -0
- package/js/src/abstract/binanceus.d.ts +2 -0
- package/js/src/abstract/binanceusdm.d.ts +2 -0
- package/js/src/abstract/okx.d.ts +14 -0
- package/js/src/ace.js +2 -0
- package/js/src/alpaca.js +2 -0
- package/js/src/base/Exchange.d.ts +4 -0
- package/js/src/base/Exchange.js +8 -0
- package/js/src/base/errors.d.ts +4 -4
- package/js/src/base/errors.js +7 -7
- package/js/src/base/ws/Client.js +2 -0
- package/js/src/binance.js +4 -0
- package/js/src/binanceus.js +2 -0
- package/js/src/bingx.d.ts +4 -3
- package/js/src/bingx.js +80 -23
- package/js/src/bit2c.js +2 -0
- package/js/src/bitbank.js +2 -0
- package/js/src/bithumb.js +2 -0
- package/js/src/bitmex.d.ts +1 -1
- package/js/src/bitmex.js +6 -0
- package/js/src/bitopro.js +2 -0
- package/js/src/bitpanda.js +2 -0
- package/js/src/bitrue.d.ts +1 -0
- package/js/src/bitrue.js +27 -1
- package/js/src/bitso.js +2 -0
- package/js/src/bitstamp.js +5 -2
- package/js/src/bittrex.js +2 -0
- package/js/src/bitvavo.js +2 -0
- package/js/src/bl3p.js +2 -0
- package/js/src/btcalpha.js +2 -0
- package/js/src/btcbox.js +2 -0
- package/js/src/btcmarkets.js +2 -0
- package/js/src/btcturk.js +2 -0
- package/js/src/bybit.js +2 -0
- package/js/src/coinbase.d.ts +1 -0
- package/js/src/coinbase.js +37 -6
- package/js/src/coincheck.js +2 -0
- package/js/src/coinlist.js +2 -0
- package/js/src/coinmate.js +2 -0
- package/js/src/coinone.js +2 -0
- package/js/src/coinsph.js +2 -0
- package/js/src/coinspot.js +2 -0
- package/js/src/cryptocom.d.ts +0 -24
- package/js/src/cryptocom.js +2 -185
- package/js/src/gate.js +1 -0
- package/js/src/gemini.js +2 -0
- package/js/src/idex.js +2 -0
- package/js/src/independentreserve.js +2 -0
- package/js/src/indodax.js +2 -0
- package/js/src/kucoin.js +2 -0
- package/js/src/kuna.js +2 -0
- package/js/src/latoken.js +2 -0
- package/js/src/luno.js +2 -0
- package/js/src/mercado.js +2 -0
- package/js/src/mexc.js +2 -0
- package/js/src/ndax.js +2 -0
- package/js/src/novadax.js +2 -0
- package/js/src/okx.js +25 -10
- package/js/src/p2b.js +2 -0
- package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +9 -8
- package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +5 -7
- package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +5 -7
- package/js/src/wavesexchange.js +2 -0
- package/js/src/wazirx.js +2 -0
- package/js/src/woo.js +2 -0
- package/js/src/yobit.js +2 -0
- package/js/src/zonda.js +2 -0
- package/package.json +1 -1
package/dist/cjs/ccxt.js
CHANGED
|
@@ -172,7 +172,7 @@ var woo$1 = require('./src/pro/woo.js');
|
|
|
172
172
|
|
|
173
173
|
//-----------------------------------------------------------------------------
|
|
174
174
|
// this is updated by vss.js when building
|
|
175
|
-
const version = '4.1.
|
|
175
|
+
const version = '4.1.77';
|
|
176
176
|
Exchange["default"].ccxtVersion = version;
|
|
177
177
|
const exchanges = {
|
|
178
178
|
'ace': ace,
|
package/dist/cjs/src/ace.js
CHANGED
package/dist/cjs/src/alpaca.js
CHANGED
|
@@ -355,6 +355,8 @@ class Exchange {
|
|
|
355
355
|
'cancelAllOrders': undefined,
|
|
356
356
|
'cancelOrder': true,
|
|
357
357
|
'cancelOrders': undefined,
|
|
358
|
+
'closeAllPositions': undefined,
|
|
359
|
+
'closePosition': undefined,
|
|
358
360
|
'createDepositAddress': undefined,
|
|
359
361
|
'createLimitOrder': true,
|
|
360
362
|
'createMarketOrder': true,
|
|
@@ -3698,6 +3700,12 @@ class Exchange {
|
|
|
3698
3700
|
async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
3699
3701
|
throw new errors.NotSupported(this.id + ' fetchFundingHistory() is not supported yet');
|
|
3700
3702
|
}
|
|
3703
|
+
async closePosition(symbol, side = undefined, marginMode = undefined, params = {}) {
|
|
3704
|
+
throw new errors.NotSupported(this.id + ' closePositions() is not supported yet');
|
|
3705
|
+
}
|
|
3706
|
+
async closeAllPositions(params = {}) {
|
|
3707
|
+
throw new errors.NotSupported(this.id + ' closeAllPositions() is not supported yet');
|
|
3708
|
+
}
|
|
3701
3709
|
parseLastPrice(price, market = undefined) {
|
|
3702
3710
|
throw new errors.NotSupported(this.id + ' parseLastPrice() is not supported yet');
|
|
3703
3711
|
}
|
|
@@ -190,8 +190,14 @@ class NotSupported extends ExchangeError {
|
|
|
190
190
|
this.name = 'NotSupported';
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
+
class OperationFailed extends BaseError {
|
|
194
|
+
constructor(message) {
|
|
195
|
+
super(message);
|
|
196
|
+
this.name = 'OperationFailed';
|
|
197
|
+
}
|
|
198
|
+
}
|
|
193
199
|
// Network error
|
|
194
|
-
class NetworkError extends
|
|
200
|
+
class NetworkError extends OperationFailed {
|
|
195
201
|
constructor(message) {
|
|
196
202
|
super(message);
|
|
197
203
|
this.name = 'NetworkError';
|
|
@@ -233,12 +239,6 @@ class RequestTimeout extends NetworkError {
|
|
|
233
239
|
this.name = 'RequestTimeout';
|
|
234
240
|
}
|
|
235
241
|
}
|
|
236
|
-
class OperationFailed extends BaseError {
|
|
237
|
-
constructor(message) {
|
|
238
|
-
super(message);
|
|
239
|
-
this.name = 'OperationFailed';
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
242
|
/* ------------------------------------------------------------------------ */
|
|
243
243
|
// export default subclass (
|
|
244
244
|
// // Root class
|
|
@@ -200,6 +200,7 @@ class Client {
|
|
|
200
200
|
this.reset(this.error);
|
|
201
201
|
this.onErrorCallback(this, this.error);
|
|
202
202
|
}
|
|
203
|
+
/* eslint-disable no-shadow */
|
|
203
204
|
onClose(event) {
|
|
204
205
|
if (this.verbose) {
|
|
205
206
|
this.log(new Date(), 'onClose', event);
|
|
@@ -227,6 +228,7 @@ class Client {
|
|
|
227
228
|
message = (typeof message === 'string') ? message : JSON.stringify(message);
|
|
228
229
|
const future = Future.createFuture();
|
|
229
230
|
if (platform.isNode) {
|
|
231
|
+
/* eslint-disable no-inner-declarations */
|
|
230
232
|
function onSendComplete(error) {
|
|
231
233
|
if (error) {
|
|
232
234
|
future.reject(error);
|
package/dist/cjs/src/binance.js
CHANGED
|
@@ -38,6 +38,8 @@ class binance extends binance$1 {
|
|
|
38
38
|
'cancelAllOrders': true,
|
|
39
39
|
'cancelOrder': true,
|
|
40
40
|
'cancelOrders': true,
|
|
41
|
+
'closeAllPositions': false,
|
|
42
|
+
'closePosition': false,
|
|
41
43
|
'createDepositAddress': false,
|
|
42
44
|
'createOrder': true,
|
|
43
45
|
'createOrders': true,
|
|
@@ -874,6 +876,7 @@ class binance extends binance$1 {
|
|
|
874
876
|
'uiKlines': 0.4,
|
|
875
877
|
'ticker/24hr': { 'cost': 0.4, 'noSymbol': 16 },
|
|
876
878
|
'ticker': { 'cost': 0.4, 'noSymbol': 16 },
|
|
879
|
+
'ticker/tradingDay': 0.8,
|
|
877
880
|
'ticker/price': { 'cost': 0.4, 'noSymbol': 0.8 },
|
|
878
881
|
'ticker/bookTicker': { 'cost': 0.4, 'noSymbol': 0.8 },
|
|
879
882
|
'exchangeInfo': 4,
|
|
@@ -902,6 +905,7 @@ class binance extends binance$1 {
|
|
|
902
905
|
'rateLimit/order': 8,
|
|
903
906
|
'myPreventedMatches': 4,
|
|
904
907
|
'myAllocations': 4,
|
|
908
|
+
'account/commission': 4,
|
|
905
909
|
},
|
|
906
910
|
'post': {
|
|
907
911
|
'order/oco': 0.2,
|
package/dist/cjs/src/bingx.js
CHANGED
|
@@ -29,6 +29,8 @@ class bingx extends bingx$1 {
|
|
|
29
29
|
'cancelAllOrders': true,
|
|
30
30
|
'cancelOrder': true,
|
|
31
31
|
'cancelOrders': true,
|
|
32
|
+
'closeAllPosition': true,
|
|
33
|
+
'closePosition': false,
|
|
32
34
|
'createMarketBuyOrderWithCost': true,
|
|
33
35
|
'createMarketOrderWithCost': true,
|
|
34
36
|
'createMarketSellOrderWithCost': true,
|
|
@@ -80,10 +82,18 @@ class bingx extends bingx$1 {
|
|
|
80
82
|
'www': 'https://bingx.com/',
|
|
81
83
|
'doc': 'https://bingx-api.github.io/docs/',
|
|
82
84
|
'referral': 'https://bingx.com/invite/OHETOM',
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
},
|
|
86
|
+
'fees': {
|
|
87
|
+
'tierBased': true,
|
|
88
|
+
'spot': {
|
|
89
|
+
'feeSide': 'get',
|
|
90
|
+
'maker': this.parseNumber('0.001'),
|
|
91
|
+
'taker': this.parseNumber('0.001'),
|
|
92
|
+
},
|
|
93
|
+
'swap': {
|
|
94
|
+
'feeSide': 'quote',
|
|
95
|
+
'maker': this.parseNumber('0.0002'),
|
|
96
|
+
'taker': this.parseNumber('0.0005'),
|
|
87
97
|
},
|
|
88
98
|
},
|
|
89
99
|
'requiredCredentials': {
|
|
@@ -302,9 +312,6 @@ class bingx extends bingx$1 {
|
|
|
302
312
|
'1w': '1w',
|
|
303
313
|
'1M': '1M',
|
|
304
314
|
},
|
|
305
|
-
'fees': {
|
|
306
|
-
'trading': {},
|
|
307
|
-
},
|
|
308
315
|
'precisionMode': number.DECIMAL_PLACES,
|
|
309
316
|
'exceptions': {
|
|
310
317
|
'exact': {
|
|
@@ -556,11 +563,12 @@ class bingx extends bingx$1 {
|
|
|
556
563
|
if (settle !== undefined) {
|
|
557
564
|
symbol += ':' + settle;
|
|
558
565
|
}
|
|
566
|
+
const fees = this.safeValue(this.fees, type, {});
|
|
559
567
|
const contractSize = this.safeNumber(market, 'size');
|
|
560
568
|
const isActive = this.safeString(market, 'status') === '1';
|
|
561
569
|
const isInverse = (spot) ? undefined : false;
|
|
562
570
|
const isLinear = (spot) ? undefined : swap;
|
|
563
|
-
return {
|
|
571
|
+
return this.safeMarketStructure({
|
|
564
572
|
'id': id,
|
|
565
573
|
'symbol': symbol,
|
|
566
574
|
'base': base,
|
|
@@ -579,8 +587,9 @@ class bingx extends bingx$1 {
|
|
|
579
587
|
'contract': swap,
|
|
580
588
|
'linear': isLinear,
|
|
581
589
|
'inverse': isInverse,
|
|
582
|
-
'taker':
|
|
583
|
-
'maker':
|
|
590
|
+
'taker': this.safeNumber(fees, 'taker'),
|
|
591
|
+
'maker': this.safeNumber(fees, 'maker'),
|
|
592
|
+
'feeSide': this.safeString(fees, 'feeSide'),
|
|
584
593
|
'contractSize': contractSize,
|
|
585
594
|
'expiry': undefined,
|
|
586
595
|
'expiryDatetime': undefined,
|
|
@@ -610,7 +619,7 @@ class bingx extends bingx$1 {
|
|
|
610
619
|
},
|
|
611
620
|
'created': undefined,
|
|
612
621
|
'info': market,
|
|
613
|
-
};
|
|
622
|
+
});
|
|
614
623
|
}
|
|
615
624
|
async fetchMarkets(params = {}) {
|
|
616
625
|
/**
|
|
@@ -1576,23 +1585,28 @@ class bingx extends bingx$1 {
|
|
|
1576
1585
|
// "avgPrice": "2.2",
|
|
1577
1586
|
// "leverage": 10,
|
|
1578
1587
|
// }
|
|
1588
|
+
//
|
|
1579
1589
|
// standard position
|
|
1590
|
+
//
|
|
1580
1591
|
// {
|
|
1581
|
-
// "currentPrice":"82.91",
|
|
1582
|
-
// "symbol":"LTC/USDT",
|
|
1583
|
-
// "initialMargin":"5.00000000000000000000",
|
|
1584
|
-
// "unrealizedProfit":"-0.26464500",
|
|
1585
|
-
// "leverage":"20.000000000",
|
|
1586
|
-
// "isolated":true,
|
|
1587
|
-
// "entryPrice":"83.13",
|
|
1588
|
-
// "positionSide":"LONG",
|
|
1589
|
-
// "positionAmt":"1.20365912",
|
|
1592
|
+
// "currentPrice": "82.91",
|
|
1593
|
+
// "symbol": "LTC/USDT",
|
|
1594
|
+
// "initialMargin": "5.00000000000000000000",
|
|
1595
|
+
// "unrealizedProfit": "-0.26464500",
|
|
1596
|
+
// "leverage": "20.000000000",
|
|
1597
|
+
// "isolated": true,
|
|
1598
|
+
// "entryPrice": "83.13",
|
|
1599
|
+
// "positionSide": "LONG",
|
|
1600
|
+
// "positionAmt": "1.20365912",
|
|
1590
1601
|
// }
|
|
1591
1602
|
//
|
|
1592
|
-
let marketId = this.safeString(position, 'symbol');
|
|
1603
|
+
let marketId = this.safeString(position, 'symbol', '');
|
|
1593
1604
|
marketId = marketId.replace('/', '-'); // standard return different format
|
|
1594
1605
|
const isolated = this.safeValue(position, 'isolated');
|
|
1595
|
-
|
|
1606
|
+
let marginMode = undefined;
|
|
1607
|
+
if (isolated !== undefined) {
|
|
1608
|
+
marginMode = isolated ? 'isolated' : 'cross';
|
|
1609
|
+
}
|
|
1596
1610
|
return this.safePosition({
|
|
1597
1611
|
'info': position,
|
|
1598
1612
|
'id': this.safeString(position, 'positionId'),
|
|
@@ -1788,7 +1802,6 @@ class bingx extends bingx$1 {
|
|
|
1788
1802
|
* @method
|
|
1789
1803
|
* @name bingx#createOrder
|
|
1790
1804
|
* @description create a trade order
|
|
1791
|
-
* @see https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Create%20an%20Order
|
|
1792
1805
|
* @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Trade%20order
|
|
1793
1806
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
1794
1807
|
* @param {string} type 'market' or 'limit'
|
|
@@ -3409,6 +3422,50 @@ class bingx extends bingx$1 {
|
|
|
3409
3422
|
'datetime': this.iso8601(timestamp),
|
|
3410
3423
|
});
|
|
3411
3424
|
}
|
|
3425
|
+
async closeAllPositions(params = {}) {
|
|
3426
|
+
/**
|
|
3427
|
+
* @method
|
|
3428
|
+
* @name bitget#closePositions
|
|
3429
|
+
* @description closes open positions for a market
|
|
3430
|
+
* @see https://bitgetlimited.github.io/apidoc/en/mix/#close-all-position
|
|
3431
|
+
* @param {object} [params] extra parameters specific to the okx api endpoint
|
|
3432
|
+
* @param {string} [params.recvWindow] request valid time window value
|
|
3433
|
+
* @returns {[object]} [A list of position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
3434
|
+
*/
|
|
3435
|
+
await this.loadMarkets();
|
|
3436
|
+
const defaultRecvWindow = this.safeInteger(this.options, 'recvWindow');
|
|
3437
|
+
const recvWindow = this.safeInteger(this.parseParams, 'recvWindow', defaultRecvWindow);
|
|
3438
|
+
let marketType = undefined;
|
|
3439
|
+
[marketType, params] = this.handleMarketTypeAndParams('closeAllPositions', undefined, params);
|
|
3440
|
+
if (marketType === 'margin') {
|
|
3441
|
+
throw new errors.BadRequest(this.id + ' closePositions () cannot be used for ' + marketType + ' markets');
|
|
3442
|
+
}
|
|
3443
|
+
const request = {
|
|
3444
|
+
'recvWindow': recvWindow,
|
|
3445
|
+
};
|
|
3446
|
+
const response = await this.swapV2PrivatePostTradeCloseAllPositions(this.extend(request, params));
|
|
3447
|
+
//
|
|
3448
|
+
// {
|
|
3449
|
+
// "code": 0,
|
|
3450
|
+
// "msg": "",
|
|
3451
|
+
// "data": {
|
|
3452
|
+
// "success": [
|
|
3453
|
+
// 1727686766700486656,
|
|
3454
|
+
// 1727686767048613888
|
|
3455
|
+
// ],
|
|
3456
|
+
// "failed": null
|
|
3457
|
+
// }
|
|
3458
|
+
// }
|
|
3459
|
+
//
|
|
3460
|
+
const data = this.safeValue(response, 'data', {});
|
|
3461
|
+
const success = this.safeValue(data, 'success', []);
|
|
3462
|
+
const positions = [];
|
|
3463
|
+
for (let i = 0; i < success.length; i++) {
|
|
3464
|
+
const position = this.parsePosition({ 'positionId': success[i] });
|
|
3465
|
+
positions.push(position);
|
|
3466
|
+
}
|
|
3467
|
+
return positions;
|
|
3468
|
+
}
|
|
3412
3469
|
sign(path, section = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
3413
3470
|
const type = section[0];
|
|
3414
3471
|
const version = section[1];
|
package/dist/cjs/src/bit2c.js
CHANGED
package/dist/cjs/src/bitbank.js
CHANGED
package/dist/cjs/src/bithumb.js
CHANGED
package/dist/cjs/src/bitmex.js
CHANGED
|
@@ -388,6 +388,12 @@ class bitmex extends bitmex$1 {
|
|
|
388
388
|
return this.parseNumber(finalAmount);
|
|
389
389
|
}
|
|
390
390
|
convertToRealAmount(code, amount) {
|
|
391
|
+
if (code === undefined) {
|
|
392
|
+
return amount;
|
|
393
|
+
}
|
|
394
|
+
else if (amount === undefined) {
|
|
395
|
+
return undefined;
|
|
396
|
+
}
|
|
391
397
|
const currency = this.currency(code);
|
|
392
398
|
const precision = this.safeString(currency, 'precision');
|
|
393
399
|
return Precise["default"].stringMul(amount, precision);
|
package/dist/cjs/src/bitopro.js
CHANGED
package/dist/cjs/src/bitpanda.js
CHANGED
|
@@ -32,6 +32,8 @@ class bitpanda extends bitpanda$1 {
|
|
|
32
32
|
'cancelAllOrders': true,
|
|
33
33
|
'cancelOrder': true,
|
|
34
34
|
'cancelOrders': true,
|
|
35
|
+
'closeAllPositions': false,
|
|
36
|
+
'closePosition': false,
|
|
35
37
|
'createDepositAddress': true,
|
|
36
38
|
'createOrder': true,
|
|
37
39
|
'createReduceOnlyOrder': false,
|
package/dist/cjs/src/bitrue.js
CHANGED
|
@@ -32,6 +32,9 @@ class bitrue extends bitrue$1 {
|
|
|
32
32
|
'option': false,
|
|
33
33
|
'cancelAllOrders': true,
|
|
34
34
|
'cancelOrder': true,
|
|
35
|
+
'createMarketBuyOrderWithCost': true,
|
|
36
|
+
'createMarketOrderWithCost': false,
|
|
37
|
+
'createMarketSellOrderWithCost': false,
|
|
35
38
|
'createOrder': true,
|
|
36
39
|
'createStopLimitOrder': true,
|
|
37
40
|
'createStopMarketOrder': true,
|
|
@@ -1886,6 +1889,26 @@ class bitrue extends bitrue$1 {
|
|
|
1886
1889
|
'trades': fills,
|
|
1887
1890
|
}, market);
|
|
1888
1891
|
}
|
|
1892
|
+
async createMarketBuyOrderWithCost(symbol, cost, params = {}) {
|
|
1893
|
+
/**
|
|
1894
|
+
* @method
|
|
1895
|
+
* @name bitrue#createMarketBuyOrderWithCost
|
|
1896
|
+
* @description create a market buy order by providing the symbol and cost
|
|
1897
|
+
* @see https://www.bitrue.com/api-docs#new-order-trade-hmac-sha256
|
|
1898
|
+
* @see https://www.bitrue.com/api_docs_includes_file/delivery.html#new-order-trade-hmac-sha256
|
|
1899
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
1900
|
+
* @param {float} cost how much you want to trade in units of the quote currency
|
|
1901
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1902
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1903
|
+
*/
|
|
1904
|
+
await this.loadMarkets();
|
|
1905
|
+
const market = this.market(symbol);
|
|
1906
|
+
if (!market['swap']) {
|
|
1907
|
+
throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() supports swap orders only');
|
|
1908
|
+
}
|
|
1909
|
+
params['createMarketBuyOrderRequiresPrice'] = false;
|
|
1910
|
+
return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
|
|
1911
|
+
}
|
|
1889
1912
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
1890
1913
|
/**
|
|
1891
1914
|
* @method
|
|
@@ -1909,6 +1932,7 @@ class bitrue extends bitrue$1 {
|
|
|
1909
1932
|
* EXCHANGE SPECIFIC PARAMETERS
|
|
1910
1933
|
* @param {decimal} [params.icebergQty]
|
|
1911
1934
|
* @param {long} [params.recvWindow]
|
|
1935
|
+
* @param {float} [params.cost] *swap market buy only* the quote quantity that can be used as an alternative for the amount
|
|
1912
1936
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1913
1937
|
*/
|
|
1914
1938
|
await this.loadMarkets();
|
|
@@ -1945,7 +1969,9 @@ class bitrue extends bitrue$1 {
|
|
|
1945
1969
|
request['type'] = 'IOC';
|
|
1946
1970
|
}
|
|
1947
1971
|
request['contractName'] = market['id'];
|
|
1948
|
-
|
|
1972
|
+
let createMarketBuyOrderRequiresPrice = true;
|
|
1973
|
+
[createMarketBuyOrderRequiresPrice, params] = this.handleOptionAndParams(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', true);
|
|
1974
|
+
if (isMarket && (side === 'buy') && createMarketBuyOrderRequiresPrice) {
|
|
1949
1975
|
const cost = this.safeString(params, 'cost');
|
|
1950
1976
|
params = this.omit(params, 'cost');
|
|
1951
1977
|
if (price === undefined && cost === undefined) {
|
package/dist/cjs/src/bitso.js
CHANGED
package/dist/cjs/src/bitstamp.js
CHANGED
|
@@ -33,6 +33,8 @@ class bitstamp extends bitstamp$1 {
|
|
|
33
33
|
'addMargin': false,
|
|
34
34
|
'cancelAllOrders': true,
|
|
35
35
|
'cancelOrder': true,
|
|
36
|
+
'closeAllPositions': false,
|
|
37
|
+
'closePosition': false,
|
|
36
38
|
'createOrder': true,
|
|
37
39
|
'createReduceOnlyOrder': false,
|
|
38
40
|
'createStopLimitOrder': false,
|
|
@@ -1037,6 +1039,7 @@ class bitstamp extends bitstamp$1 {
|
|
|
1037
1039
|
* @method
|
|
1038
1040
|
* @name bitstamp#fetchOHLCV
|
|
1039
1041
|
* @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
1042
|
+
* @see https://www.bitstamp.net/api/#tag/Market-info/operation/GetOHLCData
|
|
1040
1043
|
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
1041
1044
|
* @param {string} timeframe the length of time each candle represents
|
|
1042
1045
|
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
@@ -1059,7 +1062,7 @@ class bitstamp extends bitstamp$1 {
|
|
|
1059
1062
|
limit = 1000;
|
|
1060
1063
|
const start = this.parseToInt(since / 1000);
|
|
1061
1064
|
request['start'] = start;
|
|
1062
|
-
request['end'] = this.sum(start,
|
|
1065
|
+
request['end'] = this.sum(start, duration * (limit - 1));
|
|
1063
1066
|
request['limit'] = limit;
|
|
1064
1067
|
}
|
|
1065
1068
|
}
|
|
@@ -1067,7 +1070,7 @@ class bitstamp extends bitstamp$1 {
|
|
|
1067
1070
|
if (since !== undefined) {
|
|
1068
1071
|
const start = this.parseToInt(since / 1000);
|
|
1069
1072
|
request['start'] = start;
|
|
1070
|
-
request['end'] = this.sum(start,
|
|
1073
|
+
request['end'] = this.sum(start, duration * (limit - 1));
|
|
1071
1074
|
}
|
|
1072
1075
|
request['limit'] = Math.min(limit, 1000); // min 1, max 1000
|
|
1073
1076
|
}
|
package/dist/cjs/src/bittrex.js
CHANGED
package/dist/cjs/src/bitvavo.js
CHANGED
package/dist/cjs/src/bl3p.js
CHANGED
package/dist/cjs/src/btcalpha.js
CHANGED
package/dist/cjs/src/btcbox.js
CHANGED
package/dist/cjs/src/btcturk.js
CHANGED
package/dist/cjs/src/bybit.js
CHANGED
|
@@ -35,6 +35,8 @@ class bybit extends bybit$1 {
|
|
|
35
35
|
'borrowCrossMargin': true,
|
|
36
36
|
'cancelAllOrders': true,
|
|
37
37
|
'cancelOrder': true,
|
|
38
|
+
'closeAllPositions': false,
|
|
39
|
+
'closePosition': false,
|
|
38
40
|
'createMarketBuyOrderWithCost': true,
|
|
39
41
|
'createMarketSellOrderWithCost': false,
|
|
40
42
|
'createOrder': true,
|
package/dist/cjs/src/coinbase.js
CHANGED
|
@@ -35,11 +35,16 @@ class coinbase extends coinbase$1 {
|
|
|
35
35
|
'addMargin': false,
|
|
36
36
|
'cancelOrder': true,
|
|
37
37
|
'cancelOrders': true,
|
|
38
|
+
'closeAllPositions': false,
|
|
39
|
+
'closePosition': false,
|
|
38
40
|
'createDepositAddress': true,
|
|
39
41
|
'createLimitBuyOrder': true,
|
|
40
42
|
'createLimitSellOrder': true,
|
|
41
43
|
'createMarketBuyOrder': true,
|
|
44
|
+
'createMarketBuyOrderWithCost': true,
|
|
45
|
+
'createMarketOrderWithCost': false,
|
|
42
46
|
'createMarketSellOrder': true,
|
|
47
|
+
'createMarketSellOrderWithCost': false,
|
|
43
48
|
'createOrder': true,
|
|
44
49
|
'createPostOnlyOrder': true,
|
|
45
50
|
'createReduceOnlyOrder': false,
|
|
@@ -2078,6 +2083,25 @@ class coinbase extends coinbase$1 {
|
|
|
2078
2083
|
}
|
|
2079
2084
|
return request;
|
|
2080
2085
|
}
|
|
2086
|
+
async createMarketBuyOrderWithCost(symbol, cost, params = {}) {
|
|
2087
|
+
/**
|
|
2088
|
+
* @method
|
|
2089
|
+
* @name coinbase#createMarketBuyOrderWithCost
|
|
2090
|
+
* @description create a market buy order by providing the symbol and cost
|
|
2091
|
+
* @see https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_postorder
|
|
2092
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
2093
|
+
* @param {float} cost how much you want to trade in units of the quote currency
|
|
2094
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2095
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2096
|
+
*/
|
|
2097
|
+
await this.loadMarkets();
|
|
2098
|
+
const market = this.market(symbol);
|
|
2099
|
+
if (!market['spot']) {
|
|
2100
|
+
throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() supports spot orders only');
|
|
2101
|
+
}
|
|
2102
|
+
params['createMarketBuyOrderRequiresPrice'] = false;
|
|
2103
|
+
return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
|
|
2104
|
+
}
|
|
2081
2105
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
2082
2106
|
/**
|
|
2083
2107
|
* @method
|
|
@@ -2098,6 +2122,7 @@ class coinbase extends coinbase$1 {
|
|
|
2098
2122
|
* @param {string} [params.timeInForce] 'GTC', 'IOC', 'GTD' or 'PO'
|
|
2099
2123
|
* @param {string} [params.stop_direction] 'UNKNOWN_STOP_DIRECTION', 'STOP_DIRECTION_STOP_UP', 'STOP_DIRECTION_STOP_DOWN' the direction the stopPrice is triggered from
|
|
2100
2124
|
* @param {string} [params.end_time] '2023-05-25T17:01:05.092Z' for 'GTD' orders
|
|
2125
|
+
* @param {float} [params.cost] *spot market buy only* the quote quantity that can be used as an alternative for the amount
|
|
2101
2126
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2102
2127
|
*/
|
|
2103
2128
|
await this.loadMarkets();
|
|
@@ -2200,21 +2225,27 @@ class coinbase extends coinbase$1 {
|
|
|
2200
2225
|
throw new errors.NotSupported(this.id + ' createOrder() only stop limit orders are supported');
|
|
2201
2226
|
}
|
|
2202
2227
|
if (side === 'buy') {
|
|
2203
|
-
const createMarketBuyOrderRequiresPrice = this.safeValue(this.options, 'createMarketBuyOrderRequiresPrice', true);
|
|
2204
2228
|
let total = undefined;
|
|
2205
|
-
|
|
2229
|
+
let createMarketBuyOrderRequiresPrice = true;
|
|
2230
|
+
[createMarketBuyOrderRequiresPrice, params] = this.handleOptionAndParams(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', true);
|
|
2231
|
+
const cost = this.safeNumber(params, 'cost');
|
|
2232
|
+
params = this.omit(params, 'cost');
|
|
2233
|
+
if (cost !== undefined) {
|
|
2234
|
+
total = this.costToPrecision(symbol, cost);
|
|
2235
|
+
}
|
|
2236
|
+
else if (createMarketBuyOrderRequiresPrice) {
|
|
2206
2237
|
if (price === undefined) {
|
|
2207
|
-
throw new errors.InvalidOrder(this.id + ' createOrder() requires a price argument for market buy orders on spot markets to calculate the total amount to spend (amount * price), alternatively set the createMarketBuyOrderRequiresPrice option to false and pass
|
|
2238
|
+
throw new errors.InvalidOrder(this.id + ' createOrder() requires a price argument for market buy orders on spot markets to calculate the total amount to spend (amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to false and pass the cost to spend in the amount argument');
|
|
2208
2239
|
}
|
|
2209
2240
|
else {
|
|
2210
2241
|
const amountString = this.numberToString(amount);
|
|
2211
2242
|
const priceString = this.numberToString(price);
|
|
2212
|
-
const
|
|
2213
|
-
total = this.
|
|
2243
|
+
const costRequest = Precise["default"].stringMul(amountString, priceString);
|
|
2244
|
+
total = this.costToPrecision(symbol, costRequest);
|
|
2214
2245
|
}
|
|
2215
2246
|
}
|
|
2216
2247
|
else {
|
|
2217
|
-
total = this.
|
|
2248
|
+
total = this.costToPrecision(symbol, amount);
|
|
2218
2249
|
}
|
|
2219
2250
|
request['order_configuration'] = {
|
|
2220
2251
|
'market_market_ioc': {
|