@solncebro/exchange-engine 0.1.1 → 0.1.2
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 +17 -0
- package/README.md +7 -7
- package/dist/auth/binanceAuth.js +3 -6
- package/dist/auth/binanceAuth.js.map +1 -1
- package/dist/auth/bybitAuth.d.ts +0 -1
- package/dist/auth/bybitAuth.d.ts.map +1 -1
- package/dist/auth/bybitAuth.js +2 -9
- package/dist/auth/bybitAuth.js.map +1 -1
- package/dist/constants/binance.d.ts +5 -1
- package/dist/constants/binance.d.ts.map +1 -1
- package/dist/constants/binance.js +7 -4
- package/dist/constants/binance.js.map +1 -1
- package/dist/constants/bybit.d.ts +3 -5
- package/dist/constants/bybit.d.ts.map +1 -1
- package/dist/constants/bybit.js +6 -9
- package/dist/constants/bybit.js.map +1 -1
- package/dist/exchanges/BaseExchangeClient.d.ts +36 -0
- package/dist/exchanges/BaseExchangeClient.d.ts.map +1 -0
- package/dist/exchanges/BaseExchangeClient.js +91 -0
- package/dist/exchanges/BaseExchangeClient.js.map +1 -0
- package/dist/exchanges/BinanceBaseClient.d.ts +21 -0
- package/dist/exchanges/BinanceBaseClient.d.ts.map +1 -0
- package/dist/exchanges/BinanceBaseClient.js +65 -0
- package/dist/exchanges/BinanceBaseClient.js.map +1 -0
- package/dist/exchanges/BinanceFutures.d.ts +7 -21
- package/dist/exchanges/BinanceFutures.d.ts.map +1 -1
- package/dist/exchanges/BinanceFutures.js +17 -94
- package/dist/exchanges/BinanceFutures.js.map +1 -1
- package/dist/exchanges/BinanceSpot.d.ts +7 -21
- package/dist/exchanges/BinanceSpot.d.ts.map +1 -1
- package/dist/exchanges/BinanceSpot.js +14 -95
- package/dist/exchanges/BinanceSpot.js.map +1 -1
- package/dist/exchanges/BybitLinear.d.ts +15 -18
- package/dist/exchanges/BybitLinear.d.ts.map +1 -1
- package/dist/exchanges/BybitLinear.js +58 -67
- package/dist/exchanges/BybitLinear.js.map +1 -1
- package/dist/exchanges/BybitSpot.d.ts +13 -17
- package/dist/exchanges/BybitSpot.d.ts.map +1 -1
- package/dist/exchanges/BybitSpot.js +36 -62
- package/dist/exchanges/BybitSpot.js.map +1 -1
- package/dist/http/BaseHttpClient.d.ts +10 -1
- package/dist/http/BaseHttpClient.d.ts.map +1 -1
- package/dist/http/BaseHttpClient.js +27 -5
- package/dist/http/BaseHttpClient.js.map +1 -1
- package/dist/http/BinanceBaseHttpClient.d.ts +49 -0
- package/dist/http/BinanceBaseHttpClient.d.ts.map +1 -0
- package/dist/http/BinanceBaseHttpClient.js +86 -0
- package/dist/http/BinanceBaseHttpClient.js.map +1 -0
- package/dist/http/BinanceFuturesHttpClient.d.ts +11 -40
- package/dist/http/BinanceFuturesHttpClient.d.ts.map +1 -1
- package/dist/http/BinanceFuturesHttpClient.js +36 -180
- package/dist/http/BinanceFuturesHttpClient.js.map +1 -1
- package/dist/http/BinanceSpotHttpClient.d.ts +5 -24
- package/dist/http/BinanceSpotHttpClient.d.ts.map +1 -1
- package/dist/http/BinanceSpotHttpClient.js +15 -90
- package/dist/http/BinanceSpotHttpClient.js.map +1 -1
- package/dist/http/BybitHttpClient.d.ts +81 -134
- package/dist/http/BybitHttpClient.d.ts.map +1 -1
- package/dist/http/BybitHttpClient.js +61 -94
- package/dist/http/BybitHttpClient.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/normalizers/binanceNormalizer.d.ts +2 -1
- package/dist/normalizers/binanceNormalizer.d.ts.map +1 -1
- package/dist/normalizers/binanceNormalizer.js +8 -5
- package/dist/normalizers/binanceNormalizer.js.map +1 -1
- package/dist/normalizers/bybitNormalizer.d.ts +7 -1
- package/dist/normalizers/bybitNormalizer.d.ts.map +1 -1
- package/dist/normalizers/bybitNormalizer.js +21 -5
- package/dist/normalizers/bybitNormalizer.js.map +1 -1
- package/dist/types/common.d.ts +4 -2
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/exchange.d.ts +6 -2
- package/dist/types/exchange.d.ts.map +1 -1
- package/dist/types/stream.d.ts +10 -0
- package/dist/types/stream.d.ts.map +1 -0
- package/dist/types/stream.js +3 -0
- package/dist/types/stream.js.map +1 -0
- package/dist/utils/crypto.d.ts +2 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +11 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/httpParams.d.ts +3 -0
- package/dist/utils/httpParams.d.ts.map +1 -0
- package/dist/utils/httpParams.js +15 -0
- package/dist/utils/httpParams.js.map +1 -0
- package/dist/utils/klineLoader.d.ts +10 -0
- package/dist/utils/klineLoader.d.ts.map +1 -0
- package/dist/utils/klineLoader.js +19 -0
- package/dist/utils/klineLoader.js.map +1 -0
- package/dist/ws/BinanceFuturesPublicStream.d.ts +6 -5
- package/dist/ws/BinanceFuturesPublicStream.d.ts.map +1 -1
- package/dist/ws/BinanceFuturesPublicStream.js +27 -56
- package/dist/ws/BinanceFuturesPublicStream.js.map +1 -1
- package/dist/ws/BinanceSpotPublicStream.d.ts +7 -5
- package/dist/ws/BinanceSpotPublicStream.d.ts.map +1 -1
- package/dist/ws/BinanceSpotPublicStream.js +17 -22
- package/dist/ws/BinanceSpotPublicStream.js.map +1 -1
- package/dist/ws/BinanceUserDataStream.d.ts +1 -1
- package/dist/ws/BinanceUserDataStream.d.ts.map +1 -1
- package/dist/ws/BinanceUserDataStream.js +7 -7
- package/dist/ws/BinanceUserDataStream.js.map +1 -1
- package/dist/ws/BybitPrivateStream.d.ts +1 -1
- package/dist/ws/BybitPrivateStream.d.ts.map +1 -1
- package/dist/ws/BybitPrivateStream.js +11 -28
- package/dist/ws/BybitPrivateStream.js.map +1 -1
- package/dist/ws/BybitPublicStream.d.ts +5 -4
- package/dist/ws/BybitPublicStream.d.ts.map +1 -1
- package/dist/ws/BybitPublicStream.js +14 -19
- package/dist/ws/BybitPublicStream.js.map +1 -1
- package/dist/ws/BybitTradeStream.d.ts +4 -2
- package/dist/ws/BybitTradeStream.d.ts.map +1 -1
- package/dist/ws/BybitTradeStream.js +24 -40
- package/dist/ws/BybitTradeStream.js.map +1 -1
- package/dist/ws/binanceWsUtils.d.ts +4 -0
- package/dist/ws/binanceWsUtils.d.ts.map +1 -0
- package/dist/ws/binanceWsUtils.js +13 -0
- package/dist/ws/binanceWsUtils.js.map +1 -0
- package/dist/ws/bybitWsUtils.d.ts +29 -0
- package/dist/ws/bybitWsUtils.d.ts.map +1 -0
- package/dist/ws/bybitWsUtils.js +29 -0
- package/dist/ws/bybitWsUtils.js.map +1 -0
- package/package.json +17 -3
|
@@ -5,74 +5,25 @@ const BinanceFuturesHttpClient_1 = require("../http/BinanceFuturesHttpClient");
|
|
|
5
5
|
const binanceNormalizer_1 = require("../normalizers/binanceNormalizer");
|
|
6
6
|
const BinanceFuturesPublicStream_1 = require("../ws/BinanceFuturesPublicStream");
|
|
7
7
|
const binance_1 = require("../constants/binance");
|
|
8
|
-
const
|
|
9
|
-
class BinanceFutures {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
httpClient;
|
|
13
|
-
publicStream;
|
|
14
|
-
userDataStream = null;
|
|
15
|
-
logger;
|
|
16
|
-
onNotify;
|
|
8
|
+
const BinanceBaseClient_1 = require("./BinanceBaseClient");
|
|
9
|
+
class BinanceFutures extends BinanceBaseClient_1.BinanceBaseClient {
|
|
10
|
+
marketLabel = 'futures';
|
|
11
|
+
klineLimit = binance_1.BINANCE_KLINE_LIMIT_FUTURES;
|
|
17
12
|
constructor(args) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const raw = await this.httpClient.fetchExchangeInfo();
|
|
30
|
-
const normalized = (0, binanceNormalizer_1.normalizeBinanceMarkets)(raw);
|
|
31
|
-
for (const [symbol, market] of normalized) {
|
|
32
|
-
this.markets.set(symbol, market);
|
|
33
|
-
}
|
|
34
|
-
this.logger.info(`Loaded ${this.markets.size} futures markets`);
|
|
35
|
-
return this.markets;
|
|
36
|
-
}
|
|
37
|
-
async fetchTickers() {
|
|
38
|
-
this.logger.debug('Fetching futures tickers');
|
|
39
|
-
const rawTickerList = await this.httpClient.fetchTickers();
|
|
40
|
-
return (0, binanceNormalizer_1.normalizeBinanceTickers)(rawTickerList);
|
|
41
|
-
}
|
|
42
|
-
async fetchKlines(symbol, interval, options) {
|
|
43
|
-
this.logger.debug(`Fetching klines for ${symbol} ${interval}`);
|
|
44
|
-
const binanceInterval = binance_1.BINANCE_KLINE_INTERVAL[interval];
|
|
45
|
-
const rawKlineList = await this.httpClient.fetchKlines(symbol, binanceInterval, {
|
|
46
|
-
startTime: options?.startTime,
|
|
47
|
-
endTime: options?.endTime,
|
|
48
|
-
limit: options?.limit,
|
|
13
|
+
const baseUrl = args.config.demoMode === true
|
|
14
|
+
? binance_1.BINANCE_DEMO_FUTURES_BASE_URL
|
|
15
|
+
: binance_1.BINANCE_FUTURES_BASE_URL;
|
|
16
|
+
const wsCombinedUrl = args.config.demoMode === true
|
|
17
|
+
? binance_1.BINANCE_DEMO_FUTURES_WS_COMBINED_URL
|
|
18
|
+
: binance_1.BINANCE_FUTURES_WS_COMBINED_URL;
|
|
19
|
+
const httpClient = new BinanceFuturesHttpClient_1.BinanceFuturesHttpClient({
|
|
20
|
+
baseUrl,
|
|
21
|
+
apiKey: args.config.apiKey,
|
|
22
|
+
secret: args.config.secret,
|
|
23
|
+
logger: args.logger,
|
|
49
24
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
async *watchTickers() {
|
|
53
|
-
this.publicStream.subscribeAllTickers(() => { });
|
|
54
|
-
yield await this.fetchTickers();
|
|
55
|
-
}
|
|
56
|
-
subscribeKlines(args) {
|
|
57
|
-
this.publicStream.subscribeKlines(args.symbol, args.interval, args.handler);
|
|
58
|
-
}
|
|
59
|
-
unsubscribeKlines(args) {
|
|
60
|
-
this.publicStream.unsubscribeKlines(args.symbol, args.interval, args.handler);
|
|
61
|
-
}
|
|
62
|
-
async createOrderWs(args) {
|
|
63
|
-
this.logger.debug(`Creating order via REST: ${args.symbol}`);
|
|
64
|
-
const orderParams = {
|
|
65
|
-
symbol: args.symbol,
|
|
66
|
-
side: args.side.toUpperCase(),
|
|
67
|
-
type: args.type.toUpperCase(),
|
|
68
|
-
quantity: this.amountToPrecision(args.symbol, args.amount),
|
|
69
|
-
...args.params,
|
|
70
|
-
};
|
|
71
|
-
if (args.price > 0) {
|
|
72
|
-
orderParams.price = this.priceToPrecision(args.symbol, args.price);
|
|
73
|
-
}
|
|
74
|
-
const raw = await this.httpClient.createOrder(orderParams);
|
|
75
|
-
return (0, binanceNormalizer_1.normalizeBinanceOrder)(raw);
|
|
25
|
+
const publicStream = new BinanceFuturesPublicStream_1.BinanceFuturesPublicStream(wsCombinedUrl, args.logger, args.onNotify);
|
|
26
|
+
super(args, httpClient, publicStream);
|
|
76
27
|
}
|
|
77
28
|
async fetchPosition(symbol) {
|
|
78
29
|
this.logger.debug(`Fetching position for ${symbol}`);
|
|
@@ -92,34 +43,6 @@ class BinanceFutures {
|
|
|
92
43
|
const marginType = marginMode === 'isolated' ? 'ISOLATED' : 'CROSSED';
|
|
93
44
|
await this.httpClient.setMarginType(symbol, marginType);
|
|
94
45
|
}
|
|
95
|
-
async fetchBalance() {
|
|
96
|
-
this.logger.debug('Fetching balance');
|
|
97
|
-
const raw = await this.httpClient.fetchAccount();
|
|
98
|
-
return (0, binanceNormalizer_1.normalizeBinanceBalance)(raw);
|
|
99
|
-
}
|
|
100
|
-
amountToPrecision(symbol, amount) {
|
|
101
|
-
const market = this.markets.get(symbol);
|
|
102
|
-
if (!market) {
|
|
103
|
-
this.logger.warn(`Market ${symbol} not found, using raw amount`);
|
|
104
|
-
return String(amount);
|
|
105
|
-
}
|
|
106
|
-
return (0, precision_1.amountToPrecision)(market, amount);
|
|
107
|
-
}
|
|
108
|
-
priceToPrecision(symbol, price) {
|
|
109
|
-
const market = this.markets.get(symbol);
|
|
110
|
-
if (!market) {
|
|
111
|
-
this.logger.warn(`Market ${symbol} not found, using raw price`);
|
|
112
|
-
return String(price);
|
|
113
|
-
}
|
|
114
|
-
return (0, precision_1.priceToPrecision)(market, price);
|
|
115
|
-
}
|
|
116
|
-
async close() {
|
|
117
|
-
this.logger.info('Closing Binance Futures connection');
|
|
118
|
-
if (this.userDataStream) {
|
|
119
|
-
this.userDataStream.close();
|
|
120
|
-
}
|
|
121
|
-
this.publicStream.close();
|
|
122
|
-
}
|
|
123
46
|
}
|
|
124
47
|
exports.BinanceFutures = BinanceFutures;
|
|
125
48
|
//# sourceMappingURL=BinanceFutures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinanceFutures.js","sourceRoot":"","sources":["../../src/exchanges/BinanceFutures.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BinanceFutures.js","sourceRoot":"","sources":["../../src/exchanges/BinanceFutures.ts"],"names":[],"mappings":";;;AAEA,+EAA4E;AAC5E,wEAA4E;AAC5E,iFAA8E;AAC9E,kDAM8B;AAC9B,2DAAwD;AAExD,MAAM,cAAe,SAAQ,qCAA2C;IACnD,WAAW,GAAG,SAAS,CAAC;IACxB,UAAU,GAAG,qCAA2B,CAAC;IAE5D,YAAY,IAAkB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI;YAC3C,CAAC,CAAC,uCAA6B;YAC/B,CAAC,CAAC,kCAAwB,CAAC;QAE7B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI;YACjD,CAAC,CAAC,8CAAoC;YACtC,CAAC,CAAC,yCAA+B,CAAC;QAEpC,MAAM,UAAU,GAAG,IAAI,mDAAwB,CAAC;YAC9C,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,uDAA0B,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE/F,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAA,4CAAwB,EAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,MAAc;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,QAAQ,SAAS,MAAM,EAAE,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAsB,EAAE,MAAc;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,UAAU,QAAQ,MAAM,EAAE,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;CACF;AAEQ,wCAAc"}
|
|
@@ -1,28 +1,14 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
private userDataStream;
|
|
9
|
-
private logger;
|
|
10
|
-
private onNotify?;
|
|
1
|
+
import type { ExchangeArgs } from '../types/exchange';
|
|
2
|
+
import type { Position, MarginMode } from '../types/common';
|
|
3
|
+
import { BinanceSpotHttpClient } from '../http/BinanceSpotHttpClient';
|
|
4
|
+
import { BinanceBaseClient } from './BinanceBaseClient';
|
|
5
|
+
declare class BinanceSpot extends BinanceBaseClient<BinanceSpotHttpClient> {
|
|
6
|
+
protected readonly marketLabel = "spot";
|
|
7
|
+
protected readonly klineLimit = 1000;
|
|
11
8
|
constructor(args: ExchangeArgs);
|
|
12
|
-
loadMarkets(reload?: boolean): Promise<MarketBySymbol>;
|
|
13
|
-
fetchTickers(): Promise<TickerBySymbol>;
|
|
14
|
-
fetchKlines(symbol: string, interval: KlineInterval, options?: FetchKlinesArgs): Promise<Kline[]>;
|
|
15
|
-
watchTickers(): AsyncGenerator<TickerBySymbol>;
|
|
16
|
-
subscribeKlines(args: SubscribeKlinesArgs): void;
|
|
17
|
-
unsubscribeKlines(args: SubscribeKlinesArgs): void;
|
|
18
|
-
createOrderWs(args: CreateOrderWsArgs): Promise<Order>;
|
|
19
9
|
fetchPosition(_symbol: string): Promise<Position>;
|
|
20
10
|
setLeverage(_leverage: number, _symbol: string): Promise<void>;
|
|
21
11
|
setMarginMode(_marginMode: MarginMode, _symbol: string): Promise<void>;
|
|
22
|
-
fetchBalance(): Promise<BalanceByAsset>;
|
|
23
|
-
amountToPrecision(symbol: string, amount: number): string;
|
|
24
|
-
priceToPrecision(symbol: string, price: number): string;
|
|
25
|
-
close(): Promise<void>;
|
|
26
12
|
}
|
|
27
13
|
export { BinanceSpot };
|
|
28
14
|
//# sourceMappingURL=BinanceSpot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinanceSpot.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceSpot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"BinanceSpot.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceSpot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAQtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAM,WAAY,SAAQ,iBAAiB,CAAC,qBAAqB,CAAC;IAChE,SAAS,CAAC,QAAQ,CAAC,WAAW,UAAU;IACxC,SAAS,CAAC,QAAQ,CAAC,UAAU,QAA4B;gBAE7C,IAAI,EAAE,YAAY;IAiBxB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIjD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7E;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -2,77 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BinanceSpot = void 0;
|
|
4
4
|
const BinanceSpotHttpClient_1 = require("../http/BinanceSpotHttpClient");
|
|
5
|
-
const binanceNormalizer_1 = require("../normalizers/binanceNormalizer");
|
|
6
5
|
const BinanceSpotPublicStream_1 = require("../ws/BinanceSpotPublicStream");
|
|
7
6
|
const binance_1 = require("../constants/binance");
|
|
8
|
-
const
|
|
9
|
-
class BinanceSpot {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
httpClient;
|
|
13
|
-
publicStream;
|
|
14
|
-
userDataStream = null;
|
|
15
|
-
logger;
|
|
16
|
-
onNotify;
|
|
7
|
+
const BinanceBaseClient_1 = require("./BinanceBaseClient");
|
|
8
|
+
class BinanceSpot extends BinanceBaseClient_1.BinanceBaseClient {
|
|
9
|
+
marketLabel = 'spot';
|
|
10
|
+
klineLimit = binance_1.BINANCE_KLINE_LIMIT_SPOT;
|
|
17
11
|
constructor(args) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return this.markets;
|
|
27
|
-
}
|
|
28
|
-
this.logger.info('Loading spot markets');
|
|
29
|
-
const raw = await this.httpClient.fetchExchangeInfo();
|
|
30
|
-
const normalized = (0, binanceNormalizer_1.normalizeBinanceMarkets)(raw);
|
|
31
|
-
for (const [symbol, market] of normalized) {
|
|
32
|
-
this.markets.set(symbol, market);
|
|
33
|
-
}
|
|
34
|
-
this.logger.info(`Loaded ${this.markets.size} spot markets`);
|
|
35
|
-
return this.markets;
|
|
36
|
-
}
|
|
37
|
-
async fetchTickers() {
|
|
38
|
-
this.logger.debug('Fetching spot tickers');
|
|
39
|
-
const rawTickerList = await this.httpClient.fetchTickers();
|
|
40
|
-
return (0, binanceNormalizer_1.normalizeBinanceTickers)(rawTickerList);
|
|
41
|
-
}
|
|
42
|
-
async fetchKlines(symbol, interval, options) {
|
|
43
|
-
this.logger.debug(`Fetching klines for ${symbol} ${interval}`);
|
|
44
|
-
const binanceInterval = binance_1.BINANCE_KLINE_INTERVAL[interval];
|
|
45
|
-
const rawKlineList = await this.httpClient.fetchKlines(symbol, binanceInterval, {
|
|
46
|
-
startTime: options?.startTime,
|
|
47
|
-
endTime: options?.endTime,
|
|
48
|
-
limit: options?.limit,
|
|
12
|
+
const baseUrl = args.config.demoMode === true
|
|
13
|
+
? binance_1.BINANCE_DEMO_SPOT_BASE_URL
|
|
14
|
+
: binance_1.BINANCE_SPOT_BASE_URL;
|
|
15
|
+
const httpClient = new BinanceSpotHttpClient_1.BinanceSpotHttpClient({
|
|
16
|
+
baseUrl,
|
|
17
|
+
apiKey: args.config.apiKey,
|
|
18
|
+
secret: args.config.secret,
|
|
19
|
+
logger: args.logger,
|
|
49
20
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
async *watchTickers() {
|
|
53
|
-
this.publicStream.subscribeAllTickers(() => { });
|
|
54
|
-
yield await this.fetchTickers();
|
|
55
|
-
}
|
|
56
|
-
subscribeKlines(args) {
|
|
57
|
-
this.publicStream.subscribeKlines(args.symbol, args.interval, args.handler);
|
|
58
|
-
}
|
|
59
|
-
unsubscribeKlines(args) {
|
|
60
|
-
this.publicStream.unsubscribeKlines(args.symbol, args.interval, args.handler);
|
|
61
|
-
}
|
|
62
|
-
async createOrderWs(args) {
|
|
63
|
-
this.logger.debug(`Creating order via REST: ${args.symbol}`);
|
|
64
|
-
const orderParams = {
|
|
65
|
-
symbol: args.symbol,
|
|
66
|
-
side: args.side.toUpperCase(),
|
|
67
|
-
type: args.type.toUpperCase(),
|
|
68
|
-
quantity: this.amountToPrecision(args.symbol, args.amount),
|
|
69
|
-
...args.params,
|
|
70
|
-
};
|
|
71
|
-
if (args.price > 0) {
|
|
72
|
-
orderParams.price = this.priceToPrecision(args.symbol, args.price);
|
|
73
|
-
}
|
|
74
|
-
const raw = await this.httpClient.createOrder(orderParams);
|
|
75
|
-
return (0, binanceNormalizer_1.normalizeBinanceOrder)(raw);
|
|
21
|
+
const publicStream = new BinanceSpotPublicStream_1.BinanceSpotPublicStream(binance_1.BINANCE_SPOT_WS_STREAM_URL, args.logger, args.onNotify);
|
|
22
|
+
super(args, httpClient, publicStream);
|
|
76
23
|
}
|
|
77
24
|
async fetchPosition(_symbol) {
|
|
78
25
|
throw new Error('Not supported for spot market');
|
|
@@ -83,34 +30,6 @@ class BinanceSpot {
|
|
|
83
30
|
async setMarginMode(_marginMode, _symbol) {
|
|
84
31
|
throw new Error('Not supported for spot market');
|
|
85
32
|
}
|
|
86
|
-
async fetchBalance() {
|
|
87
|
-
this.logger.debug('Fetching balance');
|
|
88
|
-
const raw = await this.httpClient.fetchAccount();
|
|
89
|
-
return (0, binanceNormalizer_1.normalizeBinanceBalance)(raw);
|
|
90
|
-
}
|
|
91
|
-
amountToPrecision(symbol, amount) {
|
|
92
|
-
const market = this.markets.get(symbol);
|
|
93
|
-
if (!market) {
|
|
94
|
-
this.logger.warn(`Market ${symbol} not found, using raw amount`);
|
|
95
|
-
return String(amount);
|
|
96
|
-
}
|
|
97
|
-
return (0, precision_1.amountToPrecision)(market, amount);
|
|
98
|
-
}
|
|
99
|
-
priceToPrecision(symbol, price) {
|
|
100
|
-
const market = this.markets.get(symbol);
|
|
101
|
-
if (!market) {
|
|
102
|
-
this.logger.warn(`Market ${symbol} not found, using raw price`);
|
|
103
|
-
return String(price);
|
|
104
|
-
}
|
|
105
|
-
return (0, precision_1.priceToPrecision)(market, price);
|
|
106
|
-
}
|
|
107
|
-
async close() {
|
|
108
|
-
this.logger.info('Closing Binance Spot connection');
|
|
109
|
-
if (this.userDataStream) {
|
|
110
|
-
this.userDataStream.close();
|
|
111
|
-
}
|
|
112
|
-
this.publicStream.close();
|
|
113
|
-
}
|
|
114
33
|
}
|
|
115
34
|
exports.BinanceSpot = BinanceSpot;
|
|
116
35
|
//# sourceMappingURL=BinanceSpot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinanceSpot.js","sourceRoot":"","sources":["../../src/exchanges/BinanceSpot.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BinanceSpot.js","sourceRoot":"","sources":["../../src/exchanges/BinanceSpot.ts"],"names":[],"mappings":";;;AAEA,yEAAsE;AACtE,2EAAwE;AACxE,kDAK8B;AAC9B,2DAAwD;AAExD,MAAM,WAAY,SAAQ,qCAAwC;IAC7C,WAAW,GAAG,MAAM,CAAC;IACrB,UAAU,GAAG,kCAAwB,CAAC;IAEzD,YAAY,IAAkB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI;YAC3C,CAAC,CAAC,oCAA0B;YAC5B,CAAC,CAAC,+BAAqB,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,6CAAqB,CAAC;YAC3C,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,iDAAuB,CAAC,oCAA0B,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe;QAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAuB,EAAE,OAAe;QAC1D,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;CACF;AAEQ,kCAAW"}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CreateOrderWsArgs, ExchangeArgs, FetchKlinesArgs } from '../types/exchange';
|
|
2
2
|
import type { Kline, KlineInterval, MarketBySymbol, TickerBySymbol, BalanceByAsset, Position, Order, MarginMode } from '../types/common';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
private
|
|
9
|
-
private
|
|
10
|
-
private
|
|
3
|
+
import type { PublicStreamLike } from '../types/stream';
|
|
4
|
+
import { BaseExchangeClient } from './BaseExchangeClient';
|
|
5
|
+
declare class BybitLinear extends BaseExchangeClient {
|
|
6
|
+
protected readonly marketLabel = "linear";
|
|
7
|
+
protected readonly klineLimit = 200;
|
|
8
|
+
private readonly demoMode;
|
|
9
|
+
private readonly httpClient;
|
|
10
|
+
private readonly publicStream;
|
|
11
|
+
private readonly tradeStream;
|
|
11
12
|
constructor(args: ExchangeArgs);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
unsubscribeKlines(args: SubscribeKlinesArgs): void;
|
|
13
|
+
protected getPublicStream(): PublicStreamLike;
|
|
14
|
+
protected fetchAndNormalizeMarkets(): Promise<MarketBySymbol>;
|
|
15
|
+
protected fetchAndNormalizeTickers(): Promise<TickerBySymbol>;
|
|
16
|
+
protected fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?: FetchKlinesArgs): Promise<Kline[]>;
|
|
17
|
+
protected fetchAndNormalizeBalance(): Promise<BalanceByAsset>;
|
|
18
18
|
createOrderWs(args: CreateOrderWsArgs): Promise<Order>;
|
|
19
19
|
fetchPosition(symbol: string): Promise<Position>;
|
|
20
20
|
setLeverage(leverage: number, symbol: string): Promise<void>;
|
|
21
21
|
setMarginMode(marginMode: MarginMode, symbol: string): Promise<void>;
|
|
22
|
-
fetchBalance(): Promise<BalanceByAsset>;
|
|
23
|
-
amountToPrecision(symbol: string, amount: number): string;
|
|
24
|
-
priceToPrecision(symbol: string, price: number): string;
|
|
25
22
|
close(): Promise<void>;
|
|
26
23
|
}
|
|
27
24
|
export { BybitLinear };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BybitLinear.d.ts","sourceRoot":"","sources":["../../src/exchanges/BybitLinear.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"BybitLinear.d.ts","sourceRoot":"","sources":["../../src/exchanges/BybitLinear.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,QAAQ,EACR,KAAK,EACL,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAoBxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,cAAM,WAAY,SAAQ,kBAAkB;IAC1C,SAAS,CAAC,QAAQ,CAAC,WAAW,YAAY;IAC1C,SAAS,CAAC,QAAQ,CAAC,UAAU,OAAO;IAEpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;gBAE1C,IAAI,EAAE,YAAY;IAkC9B,SAAS,CAAC,eAAe,IAAI,gBAAgB;cAI7B,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;cAMnD,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;cAMnD,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,KAAK,EAAE,CAAC;cAYH,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;IAM7D,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAyBtD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAYhD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -6,68 +6,66 @@ const bybitNormalizer_1 = require("../normalizers/bybitNormalizer");
|
|
|
6
6
|
const BybitPublicStream_1 = require("../ws/BybitPublicStream");
|
|
7
7
|
const BybitTradeStream_1 = require("../ws/BybitTradeStream");
|
|
8
8
|
const bybit_1 = require("../constants/bybit");
|
|
9
|
-
const
|
|
10
|
-
class BybitLinear {
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const BaseExchangeClient_1 = require("./BaseExchangeClient");
|
|
10
|
+
class BybitLinear extends BaseExchangeClient_1.BaseExchangeClient {
|
|
11
|
+
marketLabel = 'linear';
|
|
12
|
+
klineLimit = 200;
|
|
13
|
+
demoMode;
|
|
13
14
|
httpClient;
|
|
14
15
|
publicStream;
|
|
15
16
|
tradeStream;
|
|
16
|
-
logger;
|
|
17
|
-
onNotify;
|
|
18
17
|
constructor(args) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.
|
|
18
|
+
super(args);
|
|
19
|
+
const demo = args.config.demoMode === true;
|
|
20
|
+
this.demoMode = demo;
|
|
21
|
+
const baseUrl = demo ? bybit_1.BYBIT_DEMO_BASE_URL : bybit_1.BYBIT_BASE_URL;
|
|
22
|
+
const publicWsUrl = demo ? bybit_1.BYBIT_DEMO_PUBLIC_LINEAR_WS_URL : bybit_1.BYBIT_PUBLIC_LINEAR_WS_URL;
|
|
23
|
+
this.httpClient = new BybitHttpClient_1.BybitHttpClient({
|
|
24
|
+
baseUrl,
|
|
25
25
|
apiKey: args.config.apiKey,
|
|
26
26
|
secret: args.config.secret,
|
|
27
27
|
logger: args.logger,
|
|
28
|
-
onNotify: args.onNotify,
|
|
29
28
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return this.markets;
|
|
29
|
+
this.publicStream = new BybitPublicStream_1.BybitPublicStream(publicWsUrl, args.logger, args.onNotify);
|
|
30
|
+
if (demo) {
|
|
31
|
+
this.tradeStream = null;
|
|
34
32
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
else {
|
|
34
|
+
this.tradeStream = new BybitTradeStream_1.BybitTradeStream({
|
|
35
|
+
url: bybit_1.BYBIT_TRADE_WS_URL,
|
|
36
|
+
apiKey: args.config.apiKey,
|
|
37
|
+
secret: args.config.secret,
|
|
38
|
+
logger: args.logger,
|
|
39
|
+
onNotify: args.onNotify,
|
|
40
|
+
});
|
|
40
41
|
}
|
|
41
|
-
this.logger.info(`Loaded ${this.markets.size} linear markets`);
|
|
42
|
-
return this.markets;
|
|
43
42
|
}
|
|
44
|
-
|
|
45
|
-
this.
|
|
43
|
+
getPublicStream() {
|
|
44
|
+
return this.publicStream;
|
|
45
|
+
}
|
|
46
|
+
async fetchAndNormalizeMarkets() {
|
|
47
|
+
const raw = await this.httpClient.fetchInstrumentsInfo('linear');
|
|
48
|
+
return (0, bybitNormalizer_1.normalizeBybitMarkets)(raw.result.list);
|
|
49
|
+
}
|
|
50
|
+
async fetchAndNormalizeTickers() {
|
|
46
51
|
const raw = await this.httpClient.fetchTickers('linear');
|
|
47
52
|
return (0, bybitNormalizer_1.normalizeBybitTickers)(raw.result.list);
|
|
48
53
|
}
|
|
49
|
-
async
|
|
50
|
-
this.logger.debug(`Fetching klines for ${symbol} ${interval}`);
|
|
54
|
+
async fetchAndNormalizeKlines(symbol, interval, options) {
|
|
51
55
|
const bybitInterval = bybit_1.BYBIT_KLINE_INTERVAL[interval];
|
|
52
|
-
const raw = await this.httpClient.fetchKline(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
const raw = await this.httpClient.fetchKline({
|
|
57
|
+
category: 'linear',
|
|
58
|
+
symbol,
|
|
59
|
+
interval: bybitInterval,
|
|
60
|
+
options,
|
|
56
61
|
});
|
|
57
62
|
return (0, bybitNormalizer_1.normalizeBybitKlines)(raw.result.list);
|
|
58
63
|
}
|
|
59
|
-
async
|
|
60
|
-
this.
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
subscribeKlines(args) {
|
|
64
|
-
this.publicStream.subscribeKlines(args.symbol, args.interval, args.handler);
|
|
65
|
-
}
|
|
66
|
-
unsubscribeKlines(args) {
|
|
67
|
-
this.publicStream.unsubscribeKlines(args.symbol, args.interval, args.handler);
|
|
64
|
+
async fetchAndNormalizeBalance() {
|
|
65
|
+
const raw = await this.httpClient.fetchWalletBalance('UNIFIED');
|
|
66
|
+
return (0, bybitNormalizer_1.normalizeBybitBalance)(raw.result);
|
|
68
67
|
}
|
|
69
68
|
async createOrderWs(args) {
|
|
70
|
-
this.logger.debug(`Creating order via WS: ${args.symbol}`);
|
|
71
69
|
const orderParams = {
|
|
72
70
|
category: 'linear',
|
|
73
71
|
symbol: args.symbol,
|
|
@@ -79,7 +77,13 @@ class BybitLinear {
|
|
|
79
77
|
if (args.price > 0) {
|
|
80
78
|
orderParams.price = this.priceToPrecision(args.symbol, args.price);
|
|
81
79
|
}
|
|
82
|
-
|
|
80
|
+
if (this.tradeStream !== null) {
|
|
81
|
+
this.logger.debug(`Creating order via WS: ${args.symbol}`);
|
|
82
|
+
return this.tradeStream.createOrder(orderParams);
|
|
83
|
+
}
|
|
84
|
+
this.logger.debug(`Creating order via REST: ${args.symbol}`);
|
|
85
|
+
const raw = await this.httpClient.createOrder(orderParams);
|
|
86
|
+
return (0, bybitNormalizer_1.buildBybitOrderFromCreateResponse)(args, raw.result.orderId);
|
|
83
87
|
}
|
|
84
88
|
async fetchPosition(symbol) {
|
|
85
89
|
this.logger.debug(`Fetching position for ${symbol}`);
|
|
@@ -92,38 +96,25 @@ class BybitLinear {
|
|
|
92
96
|
}
|
|
93
97
|
async setLeverage(leverage, symbol) {
|
|
94
98
|
this.logger.info(`Setting leverage to ${leverage}x for ${symbol}`);
|
|
95
|
-
await this.httpClient.setLeverage('linear', symbol, leverage, leverage);
|
|
99
|
+
await this.httpClient.setLeverage({ category: 'linear', symbol, buyLeverage: leverage, sellLeverage: leverage });
|
|
96
100
|
}
|
|
97
101
|
async setMarginMode(marginMode, symbol) {
|
|
98
102
|
this.logger.info(`Setting margin mode to ${marginMode} for ${symbol}`);
|
|
99
103
|
const tradeMode = marginMode === 'isolated' ? 1 : 0;
|
|
100
104
|
const defaultLeverage = 10;
|
|
101
|
-
await this.httpClient.switchIsolated(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
amountToPrecision(symbol, amount) {
|
|
109
|
-
const market = this.markets.get(symbol);
|
|
110
|
-
if (!market) {
|
|
111
|
-
this.logger.warn(`Market ${symbol} not found, using raw amount`);
|
|
112
|
-
return String(amount);
|
|
113
|
-
}
|
|
114
|
-
return (0, precision_1.amountToPrecision)(market, amount);
|
|
115
|
-
}
|
|
116
|
-
priceToPrecision(symbol, price) {
|
|
117
|
-
const market = this.markets.get(symbol);
|
|
118
|
-
if (!market) {
|
|
119
|
-
this.logger.warn(`Market ${symbol} not found, using raw price`);
|
|
120
|
-
return String(price);
|
|
121
|
-
}
|
|
122
|
-
return (0, precision_1.priceToPrecision)(market, price);
|
|
105
|
+
await this.httpClient.switchIsolated({
|
|
106
|
+
category: 'linear',
|
|
107
|
+
symbol,
|
|
108
|
+
tradeMode,
|
|
109
|
+
buyLeverage: defaultLeverage,
|
|
110
|
+
sellLeverage: defaultLeverage,
|
|
111
|
+
});
|
|
123
112
|
}
|
|
124
113
|
async close() {
|
|
125
114
|
this.logger.info('Closing Bybit Linear connection');
|
|
126
|
-
this.tradeStream
|
|
115
|
+
if (this.tradeStream !== null) {
|
|
116
|
+
this.tradeStream.disconnect();
|
|
117
|
+
}
|
|
127
118
|
this.publicStream.close();
|
|
128
119
|
}
|
|
129
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BybitLinear.js","sourceRoot":"","sources":["../../src/exchanges/BybitLinear.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BybitLinear.js","sourceRoot":"","sources":["../../src/exchanges/BybitLinear.ts"],"names":[],"mappings":"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"}
|