@yuants/vendor-binance 0.14.4 → 0.14.5
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/dist/api/client.js +28 -21
- package/dist/api/client.js.map +1 -1
- package/dist/api/private-api.js +28 -28
- package/dist/api/private-api.js.map +1 -1
- package/dist/api/public-api.js +8 -8
- package/dist/api/public-api.js.map +1 -1
- package/lib/api/client.d.ts +3 -0
- package/lib/api/client.d.ts.map +1 -1
- package/lib/api/client.js +29 -21
- package/lib/api/client.js.map +1 -1
- package/lib/api/private-api.d.ts.map +1 -1
- package/lib/api/private-api.js +27 -27
- package/lib/api/private-api.js.map +1 -1
- package/lib/api/public-api.js +7 -7
- package/lib/api/public-api.js.map +1 -1
- package/package.json +6 -6
- package/temp/build/typescript/ts_tQj2bmGB.json +1 -1
- package/temp/package-deps.json +7 -7
- package/temp/test/jest/haste-map-f37bc94525b36254e573de220443d250-dc922b21f2d35e7315abf4c3159e25a5-63b40dbcff306581344a73f9073894a1 +0 -0
package/lib/api/public-api.js
CHANGED
|
@@ -16,7 +16,7 @@ const getFutureExchangeInfo = () => {
|
|
|
16
16
|
const weight = 1;
|
|
17
17
|
const requestContext = (0, client_1.createRequestContext)();
|
|
18
18
|
const bucketKey = (0, client_1.buildTokenBucketKey)(url.host, requestContext.ip);
|
|
19
|
-
(0, utils_1.scopeError)('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => (0, utils_1.tokenBucket)(bucketKey).acquireSync(weight));
|
|
19
|
+
(0, utils_1.scopeError)('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => (0, utils_1.tokenBucket)(bucketKey, (0, client_1.getTokenBucketOptions)(url.host)).acquireSync(weight));
|
|
20
20
|
return (0, client_1.requestPublic)('GET', endpoint, undefined, requestContext);
|
|
21
21
|
};
|
|
22
22
|
exports.getFutureExchangeInfo = getFutureExchangeInfo;
|
|
@@ -85,7 +85,7 @@ const getFuturePremiumIndex = (params) => {
|
|
|
85
85
|
bucketId: bucketKey,
|
|
86
86
|
weight,
|
|
87
87
|
hasSymbol: !!(params === null || params === void 0 ? void 0 : params.symbol),
|
|
88
|
-
}, () => (0, utils_1.tokenBucket)(bucketKey).acquireSync(weight));
|
|
88
|
+
}, () => (0, utils_1.tokenBucket)(bucketKey, (0, client_1.getTokenBucketOptions)(url.host)).acquireSync(weight));
|
|
89
89
|
return (0, client_1.requestPublic)('GET', endpoint, params, requestContext);
|
|
90
90
|
};
|
|
91
91
|
exports.getFuturePremiumIndex = getFuturePremiumIndex;
|
|
@@ -112,7 +112,7 @@ const getFutureBookTicker = (params) => {
|
|
|
112
112
|
bucketId: bucketKey,
|
|
113
113
|
weight,
|
|
114
114
|
hasSymbol: !!(params === null || params === void 0 ? void 0 : params.symbol),
|
|
115
|
-
}, () => (0, utils_1.tokenBucket)(bucketKey).acquireSync(weight));
|
|
115
|
+
}, () => (0, utils_1.tokenBucket)(bucketKey, (0, client_1.getTokenBucketOptions)(url.host)).acquireSync(weight));
|
|
116
116
|
return (0, client_1.requestPublic)('GET', endpoint, params, requestContext);
|
|
117
117
|
};
|
|
118
118
|
exports.getFutureBookTicker = getFutureBookTicker;
|
|
@@ -131,7 +131,7 @@ const getFutureOpenInterest = (params) => {
|
|
|
131
131
|
const weight = 1;
|
|
132
132
|
const requestContext = (0, client_1.createRequestContext)();
|
|
133
133
|
const bucketKey = (0, client_1.buildTokenBucketKey)(url.host, requestContext.ip);
|
|
134
|
-
(0, utils_1.scopeError)('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => (0, utils_1.tokenBucket)(bucketKey).acquireSync(weight));
|
|
134
|
+
(0, utils_1.scopeError)('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => (0, utils_1.tokenBucket)(bucketKey, (0, client_1.getTokenBucketOptions)(url.host)).acquireSync(weight));
|
|
135
135
|
return (0, client_1.requestPublic)('GET', endpoint, params, requestContext);
|
|
136
136
|
};
|
|
137
137
|
exports.getFutureOpenInterest = getFutureOpenInterest;
|
|
@@ -156,7 +156,7 @@ const getSpotBookTicker = (params) => {
|
|
|
156
156
|
bucketId: bucketKey,
|
|
157
157
|
weight,
|
|
158
158
|
hasSymbol: !!(params === null || params === void 0 ? void 0 : params.symbol),
|
|
159
|
-
}, () => (0, utils_1.tokenBucket)(bucketKey).acquireSync(weight));
|
|
159
|
+
}, () => (0, utils_1.tokenBucket)(bucketKey, (0, client_1.getTokenBucketOptions)(url.host)).acquireSync(weight));
|
|
160
160
|
return (0, client_1.requestPublic)('GET', endpoint, params, requestContext);
|
|
161
161
|
};
|
|
162
162
|
exports.getSpotBookTicker = getSpotBookTicker;
|
|
@@ -173,7 +173,7 @@ const getSpotExchangeInfo = () => {
|
|
|
173
173
|
const weight = 20;
|
|
174
174
|
const requestContext = (0, client_1.createRequestContext)();
|
|
175
175
|
const bucketKey = (0, client_1.buildTokenBucketKey)(url.host, requestContext.ip);
|
|
176
|
-
(0, utils_1.scopeError)('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => (0, utils_1.tokenBucket)(bucketKey).acquireSync(weight));
|
|
176
|
+
(0, utils_1.scopeError)('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => (0, utils_1.tokenBucket)(bucketKey, (0, client_1.getTokenBucketOptions)(url.host)).acquireSync(weight));
|
|
177
177
|
return (0, client_1.requestPublic)('GET', endpoint, undefined, requestContext);
|
|
178
178
|
};
|
|
179
179
|
exports.getSpotExchangeInfo = getSpotExchangeInfo;
|
|
@@ -190,7 +190,7 @@ const getSpotTickerPrice = (params) => {
|
|
|
190
190
|
const weight = (params === null || params === void 0 ? void 0 : params.symbol) ? 2 : 4;
|
|
191
191
|
const requestContext = (0, client_1.createRequestContext)();
|
|
192
192
|
const bucketKey = (0, client_1.buildTokenBucketKey)(url.host, requestContext.ip);
|
|
193
|
-
(0, utils_1.scopeError)('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => (0, utils_1.tokenBucket)(bucketKey).acquireSync(weight));
|
|
193
|
+
(0, utils_1.scopeError)('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => (0, utils_1.tokenBucket)(bucketKey, (0, client_1.getTokenBucketOptions)(url.host)).acquireSync(weight));
|
|
194
194
|
return (0, client_1.requestPublic)('GET', endpoint, params, requestContext);
|
|
195
195
|
};
|
|
196
196
|
exports.getSpotTickerPrice = getSpotTickerPrice;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/api/public-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { scopeError, tokenBucket } from '@yuants/utils';\nimport { buildTokenBucketKey, createRequestContext, requestPublic } from './client';\n\nexport interface IFutureExchangeFilter extends Record<string, string | number | boolean | undefined> {\n filterType: string;\n}\n\nexport interface IFutureExchangeSymbol {\n symbol: string;\n pair: string;\n contractType: string;\n deliveryDate: number;\n onboardDate: number;\n status: string;\n maintMarginPercent: string;\n requiredMarginPercent: string;\n baseAsset: string;\n quoteAsset: string;\n marginAsset: string;\n pricePrecision: number;\n quantityPrecision: number;\n baseAssetPrecision: number;\n quotePrecision: number;\n underlyingType: string;\n underlyingSubType: string[];\n settlePlan: number;\n triggerProtect: string;\n liquidationFee: string;\n marketTakeBound: string;\n maxMoveOrderLimit: number;\n filters: IFutureExchangeFilter[];\n orderTypes: string[];\n timeInForce: string[];\n}\n\nexport interface IFutureExchangeInfo {\n timezone: string;\n serverTime: number;\n futuresType: string;\n rateLimits: {\n rateLimitType: string;\n interval: string;\n intervalNum: number;\n limit: number;\n }[];\n exchangeFilters: unknown[];\n assets: {\n asset: string;\n marginAvailable: boolean;\n autoAssetExchange: string;\n }[];\n symbols: IFutureExchangeSymbol[];\n}\n\nexport interface IFutureFundingRateEntry {\n symbol: string;\n fundingTime: number;\n fundingRate: string;\n markPrice: string;\n}\n\nexport interface IFutureFundingInfoEntry {\n symbol: string;\n adjustedFundingRateCap: string;\n adjustedFundingRateFloor: string;\n fundingIntervalHours: number;\n disclaimer: boolean;\n}\n\nexport interface IFuturePremiumIndexEntry {\n symbol: string;\n markPrice: string;\n indexPrice: string;\n estimatedSettlePrice: string;\n lastFundingRate: string;\n interestRate: string;\n nextFundingTime: number;\n time: number;\n}\n\nexport interface IFutureBookTickerEntry {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n time: number;\n}\n\nexport interface IFutureOpenInterest {\n openInterest: string;\n symbol: string;\n time: number;\n}\n\nexport interface IMarginPair {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n}\n\n/**\n * 获取交易规则和交易对\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Exchange-Information\n */\nexport const getFutureExchangeInfo = (): Promise<IFutureExchangeInfo> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/exchangeInfo';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<IFutureExchangeInfo>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 查询资金费率历史\n *\n * 权重: /fapi/v1/fundingInfo共享500/5min/IP\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-History\n */\nexport const getFutureFundingRate = (params: {\n symbol?: string;\n startTime?: number;\n endTime?: number;\n limit?: number;\n}): Promise<IFutureFundingRateEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/fundingRate';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () =>\n tokenBucket(bucketKey, {\n capacity: 500,\n refillAmount: 500,\n refillInterval: 300_000,\n }).acquireSync(weight),\n );\n return requestPublic<IFutureFundingRateEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 查询资金费率信息\n *\n * 权重: /fapi/v1/fundingRate共享500/5min/IP\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-Info\n */\nexport const getFutureFundingInfo = (): Promise<IFutureFundingInfoEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/fundingInfo';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () =>\n tokenBucket(bucketKey, {\n capacity: 500,\n refillAmount: 500,\n refillInterval: 300_000,\n }).acquireSync(weight),\n );\n return requestPublic<IFutureFundingInfoEntry[]>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 最新标记价格和资金费率\n *\n * 采集各大交易所数据加权平均\n *\n * 权重: 带symbol为1;不带symbol为10\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Mark-Price\n */\nexport const getFuturePremiumIndex = (params: { symbol?: string }): Promise<IFuturePremiumIndexEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/premiumIndex';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 1 : 10;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<IFuturePremiumIndexEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 当前最优挂单\n *\n * 返回当前最优的挂单(最高买单,最低卖单)\n *\n * 权重: 单交易对2,无交易对5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Symbol-Order-Book-Ticker\n */\nexport const getFutureBookTicker = (params?: { symbol?: string }): Promise<IFutureBookTickerEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/ticker/bookTicker';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 5;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<IFutureBookTickerEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 获取未平仓合约数\n *\n * 权重: 1\n *\n * 更新速率: 3s\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Open-Interest\n */\nexport const getFutureOpenInterest = (params: { symbol: string }): Promise<IFutureOpenInterest> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/openInterest';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<IFutureOpenInterest>('GET', endpoint, params, requestContext);\n};\nexport interface ISpotBookTickerEntry {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n}\n\n/**\n * 当前最优挂单 (Spot)\n *\n * 权重: 单交易对 2,不带 symbol 4\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E4%BC%98%E6%8C%82%E5%8D%95%E6%8E%A5%E5%8F%A3\n */\nexport const getSpotBookTicker = (params?: { symbol?: string }): Promise<ISpotBookTickerEntry[]> => {\n const endpoint = 'https://api.binance.com/api/v3/ticker/bookTicker';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 4;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<ISpotBookTickerEntry[]>('GET', endpoint, params, requestContext);\n};\n\nexport interface ISpotExchangeFilter extends Record<string, string | number | boolean | undefined> {\n filterType: string;\n}\n\nexport interface ISpotExchangeSymbol {\n symbol: string;\n status: string;\n baseAsset: string;\n baseAssetPrecision: number;\n quoteAsset: string;\n quotePrecision: number;\n baseCommissionPrecision: number;\n quoteCommissionPrecision: number;\n orderTypes: string[];\n icebergAllowed: boolean;\n ocoAllowed: boolean;\n quoteOrderQtyMarketAllowed: boolean;\n allowTrailingStop: boolean;\n cancelReplaceAllowed: boolean;\n isSpotTradingAllowed: boolean;\n isMarginTradingAllowed: boolean;\n filters: ISpotExchangeFilter[];\n permissions: string[];\n}\n\nexport interface ISpotExchangeInfo {\n timezone: string;\n serverTime: number;\n rateLimits: {\n rateLimitType: string;\n interval: string;\n intervalNum: number;\n limit: number;\n }[];\n exchangeFilters: unknown[];\n symbols: ISpotExchangeSymbol[];\n}\n\n/**\n * 获取现货交易规则和交易对\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/general-endpoints#%E4%BA%A4%E6%98%93%E8%A7%84%E8%8C%83%E4%BF%A1%E6%81%AF\n */\nexport const getSpotExchangeInfo = (): Promise<ISpotExchangeInfo> => {\n const endpoint = 'https://api.binance.com/api/v3/exchangeInfo';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<ISpotExchangeInfo>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 获取当前现货报价\n *\n * 权重: 单交易对 2,不带 symbol 4\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E6%96%B0%E4%BB%B7%E6%A0%BC%E6%8E%A5%E5%8F%A3\n */\nexport const getSpotTickerPrice = (params?: {\n symbol?: string;\n symbols?: string;\n symbolStatus?: string;\n}): Promise<\n {\n symbol: string;\n price: string;\n }[]\n> => {\n const endpoint = 'https://api.binance.com/api/v3/ticker/price';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 4;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic('GET', endpoint, params, requestContext);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/api/public-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { scopeError, tokenBucket } from '@yuants/utils';\nimport { buildTokenBucketKey, createRequestContext, getTokenBucketOptions, requestPublic } from './client';\n\nexport interface IFutureExchangeFilter extends Record<string, string | number | boolean | undefined> {\n filterType: string;\n}\n\nexport interface IFutureExchangeSymbol {\n symbol: string;\n pair: string;\n contractType: string;\n deliveryDate: number;\n onboardDate: number;\n status: string;\n maintMarginPercent: string;\n requiredMarginPercent: string;\n baseAsset: string;\n quoteAsset: string;\n marginAsset: string;\n pricePrecision: number;\n quantityPrecision: number;\n baseAssetPrecision: number;\n quotePrecision: number;\n underlyingType: string;\n underlyingSubType: string[];\n settlePlan: number;\n triggerProtect: string;\n liquidationFee: string;\n marketTakeBound: string;\n maxMoveOrderLimit: number;\n filters: IFutureExchangeFilter[];\n orderTypes: string[];\n timeInForce: string[];\n}\n\nexport interface IFutureExchangeInfo {\n timezone: string;\n serverTime: number;\n futuresType: string;\n rateLimits: {\n rateLimitType: string;\n interval: string;\n intervalNum: number;\n limit: number;\n }[];\n exchangeFilters: unknown[];\n assets: {\n asset: string;\n marginAvailable: boolean;\n autoAssetExchange: string;\n }[];\n symbols: IFutureExchangeSymbol[];\n}\n\nexport interface IFutureFundingRateEntry {\n symbol: string;\n fundingTime: number;\n fundingRate: string;\n markPrice: string;\n}\n\nexport interface IFutureFundingInfoEntry {\n symbol: string;\n adjustedFundingRateCap: string;\n adjustedFundingRateFloor: string;\n fundingIntervalHours: number;\n disclaimer: boolean;\n}\n\nexport interface IFuturePremiumIndexEntry {\n symbol: string;\n markPrice: string;\n indexPrice: string;\n estimatedSettlePrice: string;\n lastFundingRate: string;\n interestRate: string;\n nextFundingTime: number;\n time: number;\n}\n\nexport interface IFutureBookTickerEntry {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n time: number;\n}\n\nexport interface IFutureOpenInterest {\n openInterest: string;\n symbol: string;\n time: number;\n}\n\nexport interface IMarginPair {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n}\n\n/**\n * 获取交易规则和交易对\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Exchange-Information\n */\nexport const getFutureExchangeInfo = (): Promise<IFutureExchangeInfo> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/exchangeInfo';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<IFutureExchangeInfo>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 查询资金费率历史\n *\n * 权重: /fapi/v1/fundingInfo共享500/5min/IP\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-History\n */\nexport const getFutureFundingRate = (params: {\n symbol?: string;\n startTime?: number;\n endTime?: number;\n limit?: number;\n}): Promise<IFutureFundingRateEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/fundingRate';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () =>\n tokenBucket(bucketKey, {\n capacity: 500,\n refillAmount: 500,\n refillInterval: 300_000,\n }).acquireSync(weight),\n );\n return requestPublic<IFutureFundingRateEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 查询资金费率信息\n *\n * 权重: /fapi/v1/fundingRate共享500/5min/IP\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-Info\n */\nexport const getFutureFundingInfo = (): Promise<IFutureFundingInfoEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/fundingInfo';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () =>\n tokenBucket(bucketKey, {\n capacity: 500,\n refillAmount: 500,\n refillInterval: 300_000,\n }).acquireSync(weight),\n );\n return requestPublic<IFutureFundingInfoEntry[]>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 最新标记价格和资金费率\n *\n * 采集各大交易所数据加权平均\n *\n * 权重: 带symbol为1;不带symbol为10\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Mark-Price\n */\nexport const getFuturePremiumIndex = (params: { symbol?: string }): Promise<IFuturePremiumIndexEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/premiumIndex';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 1 : 10;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<IFuturePremiumIndexEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 当前最优挂单\n *\n * 返回当前最优的挂单(最高买单,最低卖单)\n *\n * 权重: 单交易对2,无交易对5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Symbol-Order-Book-Ticker\n */\nexport const getFutureBookTicker = (params?: { symbol?: string }): Promise<IFutureBookTickerEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/ticker/bookTicker';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 5;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<IFutureBookTickerEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 获取未平仓合约数\n *\n * 权重: 1\n *\n * 更新速率: 3s\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Open-Interest\n */\nexport const getFutureOpenInterest = (params: { symbol: string }): Promise<IFutureOpenInterest> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/openInterest';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<IFutureOpenInterest>('GET', endpoint, params, requestContext);\n};\nexport interface ISpotBookTickerEntry {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n}\n\n/**\n * 当前最优挂单 (Spot)\n *\n * 权重: 单交易对 2,不带 symbol 4\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E4%BC%98%E6%8C%82%E5%8D%95%E6%8E%A5%E5%8F%A3\n */\nexport const getSpotBookTicker = (params?: { symbol?: string }): Promise<ISpotBookTickerEntry[]> => {\n const endpoint = 'https://api.binance.com/api/v3/ticker/bookTicker';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 4;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<ISpotBookTickerEntry[]>('GET', endpoint, params, requestContext);\n};\n\nexport interface ISpotExchangeFilter extends Record<string, string | number | boolean | undefined> {\n filterType: string;\n}\n\nexport interface ISpotExchangeSymbol {\n symbol: string;\n status: string;\n baseAsset: string;\n baseAssetPrecision: number;\n quoteAsset: string;\n quotePrecision: number;\n baseCommissionPrecision: number;\n quoteCommissionPrecision: number;\n orderTypes: string[];\n icebergAllowed: boolean;\n ocoAllowed: boolean;\n quoteOrderQtyMarketAllowed: boolean;\n allowTrailingStop: boolean;\n cancelReplaceAllowed: boolean;\n isSpotTradingAllowed: boolean;\n isMarginTradingAllowed: boolean;\n filters: ISpotExchangeFilter[];\n permissions: string[];\n}\n\nexport interface ISpotExchangeInfo {\n timezone: string;\n serverTime: number;\n rateLimits: {\n rateLimitType: string;\n interval: string;\n intervalNum: number;\n limit: number;\n }[];\n exchangeFilters: unknown[];\n symbols: ISpotExchangeSymbol[];\n}\n\n/**\n * 获取现货交易规则和交易对\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/general-endpoints#%E4%BA%A4%E6%98%93%E8%A7%84%E8%8C%83%E4%BF%A1%E6%81%AF\n */\nexport const getSpotExchangeInfo = (): Promise<ISpotExchangeInfo> => {\n const endpoint = 'https://api.binance.com/api/v3/exchangeInfo';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<ISpotExchangeInfo>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 获取当前现货报价\n *\n * 权重: 单交易对 2,不带 symbol 4\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E6%96%B0%E4%BB%B7%E6%A0%BC%E6%8E%A5%E5%8F%A3\n */\nexport const getSpotTickerPrice = (params?: {\n symbol?: string;\n symbols?: string;\n symbolStatus?: string;\n}): Promise<\n {\n symbol: string;\n price: string;\n }[]\n> => {\n const endpoint = 'https://api.binance.com/api/v3/ticker/price';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 4;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic('GET', endpoint, params, requestContext);\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuants/vendor-binance",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.5",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -14,16 +14,16 @@
|
|
|
14
14
|
"@yuants/cache": "0.3.13",
|
|
15
15
|
"@yuants/data-quote": "0.4.10",
|
|
16
16
|
"@yuants/utils": "0.19.5",
|
|
17
|
-
"@yuants/sql": "0.9.41",
|
|
18
|
-
"@yuants/data-ohlc": "0.6.6",
|
|
19
17
|
"@yuants/data-series": "0.3.63",
|
|
20
|
-
"@yuants/data-order": "0.7.11",
|
|
21
18
|
"@yuants/data-product": "0.5.11",
|
|
19
|
+
"@yuants/data-ohlc": "0.6.6",
|
|
20
|
+
"@yuants/sql": "0.9.41",
|
|
21
|
+
"@yuants/data-order": "0.7.11",
|
|
22
22
|
"@yuants/data-interest-rate": "0.2.11",
|
|
23
23
|
"@yuants/transfer": "0.2.50",
|
|
24
|
-
"@yuants/exchange": "0.8.21",
|
|
25
24
|
"@yuants/data-trade": "0.1.36",
|
|
26
|
-
"@yuants/http-services": "0.4.0"
|
|
25
|
+
"@yuants/http-services": "0.4.0",
|
|
26
|
+
"@yuants/exchange": "0.8.21"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@microsoft/api-extractor": "~7.55.2",
|