@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.
@@ -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.4",
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",