@yuants/vendor-binance 0.7.0 → 0.7.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/dist/api.js +2 -4
- package/dist/api.js.map +1 -1
- package/dist/quote.js +45 -18
- package/dist/quote.js.map +1 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +2 -4
- package/lib/api.js.map +1 -1
- package/lib/quote.js +44 -17
- package/lib/quote.js.map +1 -1
- package/package.json +14 -13
- package/temp/package-deps.json +19 -18
package/dist/api.js
CHANGED
|
@@ -209,10 +209,9 @@ export class ApiClient {
|
|
|
209
209
|
if (!this.config.auth) {
|
|
210
210
|
console.info(formatTime(Date.now()), method, url.href);
|
|
211
211
|
const res = await fetch(url.href, { method });
|
|
212
|
-
console.info(formatTime(Date.now()), 'response', method, url.href, res.status);
|
|
213
212
|
const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');
|
|
213
|
+
console.info(formatTime(Date.now()), 'response', method, url.href, res.status, `usedWeight1M=${usedWeight1M !== null && usedWeight1M !== void 0 ? usedWeight1M : 'N/A'}`);
|
|
214
214
|
if (usedWeight1M) {
|
|
215
|
-
// console.info('usedWeight1M', method, url.href, usedWeight1M);
|
|
216
215
|
MetricBinanceApiUsedWeight.set(+usedWeight1M, {});
|
|
217
216
|
}
|
|
218
217
|
return res.json();
|
|
@@ -231,9 +230,8 @@ export class ApiClient {
|
|
|
231
230
|
headers,
|
|
232
231
|
});
|
|
233
232
|
const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');
|
|
234
|
-
console.info(formatTime(Date.now()), 'response', method, url.href, res.status);
|
|
233
|
+
console.info(formatTime(Date.now()), 'response', method, url.href, res.status, `usedWeight1M=${usedWeight1M !== null && usedWeight1M !== void 0 ? usedWeight1M : 'N/A'}`);
|
|
235
234
|
if (usedWeight1M) {
|
|
236
|
-
// console.info('usedWeight1M', method, url.href, res.status, usedWeight1M);
|
|
237
235
|
MetricBinanceApiUsedWeight.set(+usedWeight1M, {});
|
|
238
236
|
}
|
|
239
237
|
return res.json();
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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","sourcesContent":["import { PromRegistry } from '@yuants/protocol';\nimport { formatTime } from '@yuants/utils';\n// @ts-ignore\nimport CryptoJS from 'crypto-js';\n\nconst MetricBinanceApiUsedWeight = PromRegistry.create('gauge', 'binance_api_used_weight');\n\ninterface errorResult {\n code: number;\n msg: string;\n}\n\nexport const isError = <T>(x: T | errorResult): x is errorResult => (x as errorResult).code !== undefined;\n\n/**\n * Binance 币安 API\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/CHANGELOG\n */\nexport class ApiClient {\n constructor(\n public config: {\n auth?: {\n public_key: string;\n secret_key: string;\n };\n },\n ) {}\n\n async request(method: string, path: string, params: any = {}) {\n const url = new URL(path);\n params.recvWindow = 5000;\n params.timestamp = Date.now();\n for (const key in params) {\n if (params[key] === undefined) continue;\n url.searchParams.set(key, params[key]);\n }\n if (!this.config.auth) {\n console.info(formatTime(Date.now()), method, url.href);\n const res = await fetch(url.href, { method });\n console.info(formatTime(Date.now()), 'response', method, url.href, res.status);\n const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');\n if (usedWeight1M) {\n // console.info('usedWeight1M', method, url.href, usedWeight1M);\n MetricBinanceApiUsedWeight.set(+usedWeight1M, {});\n }\n return res.json();\n }\n const secret_key = this.config.auth.secret_key;\n const signData = url.search.slice(1);\n const str = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(signData, secret_key));\n url.searchParams.set('signature', str);\n\n const headers = {\n 'Content-Type': 'application/json;charset=utf-8',\n 'X-MBX-APIKEY': this.config.auth.public_key!,\n };\n\n console.info(\n formatTime(Date.now()),\n method,\n url.href,\n JSON.stringify(headers),\n url.searchParams.toString(),\n signData,\n );\n const res = await fetch(url.href, {\n method,\n headers,\n });\n const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');\n console.info(formatTime(Date.now()), 'response', method, url.href, res.status);\n if (usedWeight1M) {\n // console.info('usedWeight1M', method, url.href, res.status, usedWeight1M);\n MetricBinanceApiUsedWeight.set(+usedWeight1M, {});\n }\n return res.json();\n }\n\n /**\n * 获取交易规则和交易对\n *\n * https://binance-docs.github.io/apidocs/futures/cn/#0f3f2d5ee7\n */\n getFutureExchangeInfo = (): Promise<{\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: any[];\n assets: {\n asset: string;\n marginAvailable: boolean;\n autoAssetExchange: string;\n }[];\n symbols: {\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: {\n filterType: string;\n maxPrice?: string;\n minPrice?: string;\n tickSize?: string;\n maxQty?: string;\n stepSize?: string;\n minQty?: string;\n limit?: number;\n notional?: string;\n multiplierDecimal?: string;\n multiplierUp?: string;\n multiplierDown?: string;\n }[];\n orderTypes: string[];\n timeInForce: string[];\n }[];\n }> => this.request('GET', 'https://fapi.binance.com/fapi/v1/exchangeInfo');\n\n /**\n * 查询资金费率历史\n *\n * https://binance-docs.github.io/apidocs/futures/cn/#31dbeb24c4\n */\n getFutureFundingRate = (params: {\n symbol?: string;\n startTime?: number;\n endTime?: number;\n limit?: number;\n }): Promise<\n {\n symbol: string;\n fundingTime: number;\n fundingRate: string;\n markPrice: string;\n }[]\n > => this.request('GET', 'https://fapi.binance.com/fapi/v1/fundingRate', params);\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 */\n getFuturePremiumIndex = (params: {\n symbol?: string;\n }): Promise<\n {\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 > => this.request('GET', 'https://fapi.binance.com/fapi/v1/premiumIndex', params);\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 */\n getFutureBookTicker = (params?: {\n symbol?: string;\n }): Promise<\n {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n time: number;\n }[]\n > => this.request('GET', 'https://fapi.binance.com/fapi/v1/ticker/bookTicker', params);\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 */\n getFutureOpenInterest = (params: {\n symbol: string;\n }): Promise<{\n openInterest: string;\n symbol: string;\n time: number;\n }> => this.request('GET', 'https://fapi.binance.com/fapi/v1/openInterest', params);\n\n /**\n * 查询账户信息(USER_DATA)\n *\n * 查询账户信息\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Information\n */\n getUnifiedAccountInfo = (): Promise<\n | {\n uniMMR: string;\n accountEquity: string;\n actualEquity: string;\n accountInitialMargin: string;\n accountMaintMargin: string;\n accountStatus: string;\n virtualMaxWithdrawAmount: string;\n totalAvailableBalance: string;\n totalMarginOpenLoss: string;\n updateTime: number;\n }\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/account');\n\n /**\n * 获取UM账户信息\n *\n * 现有UM账户资产和仓位信息\n *\n * 权重: 5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Account-Detail\n */\n getUnifiedUmAccount = (): Promise<\n | {\n assets: {\n asset: string;\n crossWalletBalance: string;\n crossUnPnl: string;\n maintMargin: string;\n initialMargin: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n updateTime: number;\n }[];\n positions: {\n symbol: string;\n initialMargin: string;\n maintMargin: string;\n unrealizedProfit: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n leverage: string;\n entryPrice: string;\n maxNotional: string;\n bidNotional: string;\n askNotional: string;\n positionSide: string;\n positionAmt: string;\n updateTime: number;\n }[];\n }\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/um/account');\n\n /**\n * 查看当前全部UM挂单(USER_DATA)\n *\n * 查看当前全部UM挂单,请小心使用不带symbol参数的调用\n *\n * 权重: 带symbol 1 - 不带 40\n */\n getUnifiedUmOpenOrders = (params?: {\n symbol?: string;\n }): Promise<\n {\n avgPrice: string;\n clientOrderId: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n origType: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n time: number;\n timeInForce: string;\n type: string;\n updateTime: number;\n selfTradePreventionMode: string;\n goodTillDate: number;\n }[]\n > => this.request('GET', 'https://papi.binance.com/papi/v1/um/openOrders', params);\n\n /**\n * 查询账户余额(USER_DATA)\n *\n * 查询账户余额\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Balance\n */\n getUnifiedAccountBalance = (params?: {\n assets?: string;\n }): Promise<\n | {\n asset: string;\n totalWalletBalance: string;\n crossMarginAsset: string;\n crossMarginBorrowed: string;\n crossMarginFree: string;\n crossMarginInterest: string;\n crossMarginLocked: string;\n umWalletBalance: string;\n umUnrealizedPNL: string;\n cmWalletBalance: string;\n cmUnrealizedPNL: string;\n updateTime: number;\n }[]\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/balance', params);\n\n /**\n * 账户信息 (USER_DATA)\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data\n */\n getSpotAccountInfo = (params?: {\n omitZeroBalances?: boolean;\n }): Promise<\n | {\n makerCommission: number;\n takerCommission: number;\n buyerCommission: number;\n sellerCommission: number;\n commissionRates: {\n maker: string;\n taker: string;\n buyer: string;\n seller: string;\n };\n canTrade: boolean;\n canWithdraw: boolean;\n canDeposit: boolean;\n brokered: boolean;\n requireSelfTradePrevention: boolean;\n preventSor: boolean;\n updateTime: number;\n balances: {\n asset: string;\n free: string;\n locked: string;\n }[];\n permissions: string[];\n uid: number;\n }\n | errorResult\n > => this.request('GET', 'https://api.binance.com/api/v3/account', params);\n\n /**\n * 用户万向划转(USER_DATA)\n *\n * 用户万向划转\n *\n * 您需要开通api key 允许万向划转权限来调用此接口。\n *\n * 权重: 900\n *\n * https://developers.binance.com/docs/zh-CN/wallet/asset/user-universal-transfer\n */\n postAssetTransfer = (params: {\n type: string;\n asset: string;\n amount: number;\n fromSymbol?: string;\n toSymbol?: string;\n }): Promise<\n | {\n tranId: number;\n }\n | errorResult\n > => this.request('POST', 'https://api.binance.com/sapi/v1/asset/transfer', params);\n\n /**\n * 统一账户资金归集(TRADE)\n *\n * 资金归集到统一账户钱包\n *\n * 权重: 750\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Fund-Auto-collection\n *\n * ISSUE(2024-07-18): 目前这是唯一能够将资金从原 U 本位合约账户转入统一账户的接口。\n */\n postUnifiedAccountAutoCollection = (): Promise<{\n msg: string;\n }> => this.request('POST', 'https://papi.binance.com/papi/v1/auto-collection');\n\n /**\n * 获取充值地址(支持多网络)(USER_DATA)\n *\n * 获取充值地址\n *\n * 权重: 10\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-address\n */\n getDepositAddress = (params: {\n coin: string;\n network?: string;\n amount?: number;\n }): Promise<{\n address: string;\n coin: string;\n tag: string;\n url: string;\n }> => this.request('GET', 'https://api.binance.com/sapi/v1/capital/deposit/address', params);\n\n /**\n * 查询子账户列表(适用主账户)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/sub_account/account-management/Query-Sub-account-List\n */\n getSubAccountList = (params?: {\n email?: string;\n isFreeze?: number;\n page?: number;\n limit?: number;\n }): Promise<\n | {\n subAccounts: {\n email: string;\n isFreeze: boolean;\n createTime: number;\n isManagedSubAccount: boolean;\n isAssetManagementSubAccount: boolean;\n }[];\n }\n | errorResult\n > => this.request('GET', 'https://api.binance.com/sapi/v1/sub-account/list');\n\n /**\n * 提币(USER_DATA)\n *\n * 权重: 600\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw\n */\n postWithdraw = (\n params:\n | {\n coin: string;\n withdrawOrderId?: string;\n network?: string;\n address: string;\n addressTag?: string;\n amount: number;\n transactionFeeFlag?: boolean;\n name?: string;\n walletType?: number;\n }\n | errorResult,\n ): Promise<{\n id: string;\n }> => this.request('POST', 'https://api.binance.com/sapi/v1/capital/withdraw/apply', params);\n\n /**\n * 获取提币历史(支持多网络)(USER_DATA)\n *\n * 获取提币历史 (支持多网络)\n *\n * 请求权重(IP)#\n * 18000 请求限制: 每秒10次\n *\n * 本接口特别采用每秒UID速率限制,用户的总秒级 UID 速率限制为180000/秒。从该接口收到的响应包含key X-SAPI-USED-UID-WEIGHT-1S,该key定义了当前 UID 使用的权重\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw-history\n */\n getWithdrawHistory = (params?: {\n coin?: string;\n withdrawOrderId?: string;\n status?: number;\n offset?: number;\n limit?: number;\n startTime?: number;\n endTime?: number;\n }): Promise<\n {\n id: string;\n amount: string;\n transactionFee: string;\n coin: string;\n status: number;\n address: string;\n txId: string;\n applyTime: Date;\n network: string;\n transferType: number;\n info: string;\n confirmNo: number;\n walletType: number;\n txKey: string;\n completeTime: Date;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/capital/withdraw/history', params);\n\n /**\n * 获取充值历史(支持多网络)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-history\n */\n getDepositHistory = (params?: {\n includeSource?: boolean;\n coin?: string;\n status?: number;\n startTime?: number;\n endTime?: number;\n offset?: number;\n limit?: number;\n txId?: string;\n }): Promise<\n {\n id: string;\n amount: string;\n coin: string;\n network: string;\n status: number;\n address: string;\n addressTag: string;\n txId: string;\n insertTime: number;\n transferType: number;\n confirmTimes: string;\n unlockConfirm: number;\n walletType: number;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/capital/deposit/hisrec', params);\n\n /**\n * UM下单(TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/New-UM-Order\n */\n postUmOrder = (params: {\n symbol: string;\n side: string;\n positionSide?: string;\n type: string;\n timeInForce?: string;\n quantity: number;\n reduceOnly?: string;\n price?: number;\n newClientOrderId?: string;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n goodTillDate?: number;\n }): Promise<\n | {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n avgPrice: string;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n selfTradePreventionMode: string;\n goodTillDate: number;\n updateTime: number;\n }\n | errorResult\n > => this.request('POST', 'https://papi.binance.com/papi/v1/um/order', params);\n\n deleteUmOrder = (params: {\n symbol: string;\n orderId?: string | number;\n origClientOrderId?: string;\n }): Promise<\n | {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n updateTime: number;\n }\n | errorResult\n > => this.request('DELETE', 'https://papi.binance.com/papi/v1/um/order', params);\n\n /**\n * 获取所有全仓杠杆交易对(MARKET_DATA)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/market-data/Get-All-Cross-Margin-Pairs\n */\n getMarginAllPairs = (params?: {\n symbol?: string;\n }): Promise<\n {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/margin/allPairs', params);\n\n /**\n * 获取UM损益资金流水(USER_DATA)\n *\n * 权重: 30\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Income-History\n */\n getUMIncome = (params?: {\n symbol?: string;\n incomeType?: string;\n startTime?: number;\n endTime?: number;\n recvWindow?: number;\n limit?: number;\n timestamp: number;\n }): Promise<\n {\n symbol: string; // 交易对,仅针对涉及交易对的资金流\n incomeType: string; // 资金流类型\n income: string; // 资金流数量,正数代表流入,负数代表流出\n asset: string; // 资产内容\n info: string; // 备注信息,取决于流水类型\n time: number;\n tranId: string; // 划转ID\n tradeId: string; // 引起流水产生的原始交易ID\n }[]\n > => this.request('GET', 'https://api.binance.com/papi/v1/um/income', params);\n}\nexport const client = new ApiClient({\n auth: process.env.PUBLIC_ONLY\n ? undefined\n : {\n public_key: process.env.ACCESS_KEY!,\n secret_key: process.env.SECRET_KEY!,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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","sourcesContent":["import { PromRegistry } from '@yuants/protocol';\nimport { formatTime } from '@yuants/utils';\n// @ts-ignore\nimport CryptoJS from 'crypto-js';\n\nconst MetricBinanceApiUsedWeight = PromRegistry.create('gauge', 'binance_api_used_weight');\n\ninterface errorResult {\n code: number;\n msg: string;\n}\n\nexport const isError = <T>(x: T | errorResult): x is errorResult => (x as errorResult).code !== undefined;\n\n/**\n * Binance 币安 API\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/CHANGELOG\n */\nexport class ApiClient {\n constructor(\n public config: {\n auth?: {\n public_key: string;\n secret_key: string;\n };\n },\n ) {}\n\n async request(method: string, path: string, params: any = {}) {\n const url = new URL(path);\n params.recvWindow = 5000;\n params.timestamp = Date.now();\n for (const key in params) {\n if (params[key] === undefined) continue;\n url.searchParams.set(key, params[key]);\n }\n if (!this.config.auth) {\n console.info(formatTime(Date.now()), method, url.href);\n const res = await fetch(url.href, { method });\n const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');\n console.info(\n formatTime(Date.now()),\n 'response',\n method,\n url.href,\n res.status,\n `usedWeight1M=${usedWeight1M ?? 'N/A'}`,\n );\n if (usedWeight1M) {\n MetricBinanceApiUsedWeight.set(+usedWeight1M, {});\n }\n return res.json();\n }\n const secret_key = this.config.auth.secret_key;\n const signData = url.search.slice(1);\n const str = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(signData, secret_key));\n url.searchParams.set('signature', str);\n\n const headers = {\n 'Content-Type': 'application/json;charset=utf-8',\n 'X-MBX-APIKEY': this.config.auth.public_key!,\n };\n\n console.info(\n formatTime(Date.now()),\n method,\n url.href,\n JSON.stringify(headers),\n url.searchParams.toString(),\n signData,\n );\n const res = await fetch(url.href, {\n method,\n headers,\n });\n const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');\n console.info(\n formatTime(Date.now()),\n 'response',\n method,\n url.href,\n res.status,\n `usedWeight1M=${usedWeight1M ?? 'N/A'}`,\n );\n if (usedWeight1M) {\n MetricBinanceApiUsedWeight.set(+usedWeight1M, {});\n }\n return res.json();\n }\n\n /**\n * 获取交易规则和交易对\n *\n * https://binance-docs.github.io/apidocs/futures/cn/#0f3f2d5ee7\n */\n getFutureExchangeInfo = (): Promise<{\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: any[];\n assets: {\n asset: string;\n marginAvailable: boolean;\n autoAssetExchange: string;\n }[];\n symbols: {\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: {\n filterType: string;\n maxPrice?: string;\n minPrice?: string;\n tickSize?: string;\n maxQty?: string;\n stepSize?: string;\n minQty?: string;\n limit?: number;\n notional?: string;\n multiplierDecimal?: string;\n multiplierUp?: string;\n multiplierDown?: string;\n }[];\n orderTypes: string[];\n timeInForce: string[];\n }[];\n }> => this.request('GET', 'https://fapi.binance.com/fapi/v1/exchangeInfo');\n\n /**\n * 查询资金费率历史\n *\n * https://binance-docs.github.io/apidocs/futures/cn/#31dbeb24c4\n */\n getFutureFundingRate = (params: {\n symbol?: string;\n startTime?: number;\n endTime?: number;\n limit?: number;\n }): Promise<\n {\n symbol: string;\n fundingTime: number;\n fundingRate: string;\n markPrice: string;\n }[]\n > => this.request('GET', 'https://fapi.binance.com/fapi/v1/fundingRate', params);\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 */\n getFuturePremiumIndex = (params: {\n symbol?: string;\n }): Promise<\n {\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 > => this.request('GET', 'https://fapi.binance.com/fapi/v1/premiumIndex', params);\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 */\n getFutureBookTicker = (params?: {\n symbol?: string;\n }): Promise<\n {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n time: number;\n }[]\n > => this.request('GET', 'https://fapi.binance.com/fapi/v1/ticker/bookTicker', params);\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 */\n getFutureOpenInterest = (params: {\n symbol: string;\n }): Promise<{\n openInterest: string;\n symbol: string;\n time: number;\n }> => this.request('GET', 'https://fapi.binance.com/fapi/v1/openInterest', params);\n\n /**\n * 查询账户信息(USER_DATA)\n *\n * 查询账户信息\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Information\n */\n getUnifiedAccountInfo = (): Promise<\n | {\n uniMMR: string;\n accountEquity: string;\n actualEquity: string;\n accountInitialMargin: string;\n accountMaintMargin: string;\n accountStatus: string;\n virtualMaxWithdrawAmount: string;\n totalAvailableBalance: string;\n totalMarginOpenLoss: string;\n updateTime: number;\n }\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/account');\n\n /**\n * 获取UM账户信息\n *\n * 现有UM账户资产和仓位信息\n *\n * 权重: 5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Account-Detail\n */\n getUnifiedUmAccount = (): Promise<\n | {\n assets: {\n asset: string;\n crossWalletBalance: string;\n crossUnPnl: string;\n maintMargin: string;\n initialMargin: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n updateTime: number;\n }[];\n positions: {\n symbol: string;\n initialMargin: string;\n maintMargin: string;\n unrealizedProfit: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n leverage: string;\n entryPrice: string;\n maxNotional: string;\n bidNotional: string;\n askNotional: string;\n positionSide: string;\n positionAmt: string;\n updateTime: number;\n }[];\n }\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/um/account');\n\n /**\n * 查看当前全部UM挂单(USER_DATA)\n *\n * 查看当前全部UM挂单,请小心使用不带symbol参数的调用\n *\n * 权重: 带symbol 1 - 不带 40\n */\n getUnifiedUmOpenOrders = (params?: {\n symbol?: string;\n }): Promise<\n {\n avgPrice: string;\n clientOrderId: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n origType: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n time: number;\n timeInForce: string;\n type: string;\n updateTime: number;\n selfTradePreventionMode: string;\n goodTillDate: number;\n }[]\n > => this.request('GET', 'https://papi.binance.com/papi/v1/um/openOrders', params);\n\n /**\n * 查询账户余额(USER_DATA)\n *\n * 查询账户余额\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Balance\n */\n getUnifiedAccountBalance = (params?: {\n assets?: string;\n }): Promise<\n | {\n asset: string;\n totalWalletBalance: string;\n crossMarginAsset: string;\n crossMarginBorrowed: string;\n crossMarginFree: string;\n crossMarginInterest: string;\n crossMarginLocked: string;\n umWalletBalance: string;\n umUnrealizedPNL: string;\n cmWalletBalance: string;\n cmUnrealizedPNL: string;\n updateTime: number;\n }[]\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/balance', params);\n\n /**\n * 账户信息 (USER_DATA)\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data\n */\n getSpotAccountInfo = (params?: {\n omitZeroBalances?: boolean;\n }): Promise<\n | {\n makerCommission: number;\n takerCommission: number;\n buyerCommission: number;\n sellerCommission: number;\n commissionRates: {\n maker: string;\n taker: string;\n buyer: string;\n seller: string;\n };\n canTrade: boolean;\n canWithdraw: boolean;\n canDeposit: boolean;\n brokered: boolean;\n requireSelfTradePrevention: boolean;\n preventSor: boolean;\n updateTime: number;\n balances: {\n asset: string;\n free: string;\n locked: string;\n }[];\n permissions: string[];\n uid: number;\n }\n | errorResult\n > => this.request('GET', 'https://api.binance.com/api/v3/account', params);\n\n /**\n * 用户万向划转(USER_DATA)\n *\n * 用户万向划转\n *\n * 您需要开通api key 允许万向划转权限来调用此接口。\n *\n * 权重: 900\n *\n * https://developers.binance.com/docs/zh-CN/wallet/asset/user-universal-transfer\n */\n postAssetTransfer = (params: {\n type: string;\n asset: string;\n amount: number;\n fromSymbol?: string;\n toSymbol?: string;\n }): Promise<\n | {\n tranId: number;\n }\n | errorResult\n > => this.request('POST', 'https://api.binance.com/sapi/v1/asset/transfer', params);\n\n /**\n * 统一账户资金归集(TRADE)\n *\n * 资金归集到统一账户钱包\n *\n * 权重: 750\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Fund-Auto-collection\n *\n * ISSUE(2024-07-18): 目前这是唯一能够将资金从原 U 本位合约账户转入统一账户的接口。\n */\n postUnifiedAccountAutoCollection = (): Promise<{\n msg: string;\n }> => this.request('POST', 'https://papi.binance.com/papi/v1/auto-collection');\n\n /**\n * 获取充值地址(支持多网络)(USER_DATA)\n *\n * 获取充值地址\n *\n * 权重: 10\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-address\n */\n getDepositAddress = (params: {\n coin: string;\n network?: string;\n amount?: number;\n }): Promise<{\n address: string;\n coin: string;\n tag: string;\n url: string;\n }> => this.request('GET', 'https://api.binance.com/sapi/v1/capital/deposit/address', params);\n\n /**\n * 查询子账户列表(适用主账户)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/sub_account/account-management/Query-Sub-account-List\n */\n getSubAccountList = (params?: {\n email?: string;\n isFreeze?: number;\n page?: number;\n limit?: number;\n }): Promise<\n | {\n subAccounts: {\n email: string;\n isFreeze: boolean;\n createTime: number;\n isManagedSubAccount: boolean;\n isAssetManagementSubAccount: boolean;\n }[];\n }\n | errorResult\n > => this.request('GET', 'https://api.binance.com/sapi/v1/sub-account/list');\n\n /**\n * 提币(USER_DATA)\n *\n * 权重: 600\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw\n */\n postWithdraw = (\n params:\n | {\n coin: string;\n withdrawOrderId?: string;\n network?: string;\n address: string;\n addressTag?: string;\n amount: number;\n transactionFeeFlag?: boolean;\n name?: string;\n walletType?: number;\n }\n | errorResult,\n ): Promise<{\n id: string;\n }> => this.request('POST', 'https://api.binance.com/sapi/v1/capital/withdraw/apply', params);\n\n /**\n * 获取提币历史(支持多网络)(USER_DATA)\n *\n * 获取提币历史 (支持多网络)\n *\n * 请求权重(IP)#\n * 18000 请求限制: 每秒10次\n *\n * 本接口特别采用每秒UID速率限制,用户的总秒级 UID 速率限制为180000/秒。从该接口收到的响应包含key X-SAPI-USED-UID-WEIGHT-1S,该key定义了当前 UID 使用的权重\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw-history\n */\n getWithdrawHistory = (params?: {\n coin?: string;\n withdrawOrderId?: string;\n status?: number;\n offset?: number;\n limit?: number;\n startTime?: number;\n endTime?: number;\n }): Promise<\n {\n id: string;\n amount: string;\n transactionFee: string;\n coin: string;\n status: number;\n address: string;\n txId: string;\n applyTime: Date;\n network: string;\n transferType: number;\n info: string;\n confirmNo: number;\n walletType: number;\n txKey: string;\n completeTime: Date;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/capital/withdraw/history', params);\n\n /**\n * 获取充值历史(支持多网络)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-history\n */\n getDepositHistory = (params?: {\n includeSource?: boolean;\n coin?: string;\n status?: number;\n startTime?: number;\n endTime?: number;\n offset?: number;\n limit?: number;\n txId?: string;\n }): Promise<\n {\n id: string;\n amount: string;\n coin: string;\n network: string;\n status: number;\n address: string;\n addressTag: string;\n txId: string;\n insertTime: number;\n transferType: number;\n confirmTimes: string;\n unlockConfirm: number;\n walletType: number;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/capital/deposit/hisrec', params);\n\n /**\n * UM下单(TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/New-UM-Order\n */\n postUmOrder = (params: {\n symbol: string;\n side: string;\n positionSide?: string;\n type: string;\n timeInForce?: string;\n quantity: number;\n reduceOnly?: string;\n price?: number;\n newClientOrderId?: string;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n goodTillDate?: number;\n }): Promise<\n | {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n avgPrice: string;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n selfTradePreventionMode: string;\n goodTillDate: number;\n updateTime: number;\n }\n | errorResult\n > => this.request('POST', 'https://papi.binance.com/papi/v1/um/order', params);\n\n deleteUmOrder = (params: {\n symbol: string;\n orderId?: string | number;\n origClientOrderId?: string;\n }): Promise<\n | {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n updateTime: number;\n }\n | errorResult\n > => this.request('DELETE', 'https://papi.binance.com/papi/v1/um/order', params);\n\n /**\n * 获取所有全仓杠杆交易对(MARKET_DATA)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/market-data/Get-All-Cross-Margin-Pairs\n */\n getMarginAllPairs = (params?: {\n symbol?: string;\n }): Promise<\n {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/margin/allPairs', params);\n\n /**\n * 获取UM损益资金流水(USER_DATA)\n *\n * 权重: 30\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Income-History\n */\n getUMIncome = (params?: {\n symbol?: string;\n incomeType?: string;\n startTime?: number;\n endTime?: number;\n recvWindow?: number;\n limit?: number;\n timestamp: number;\n }): Promise<\n {\n symbol: string; // 交易对,仅针对涉及交易对的资金流\n incomeType: string; // 资金流类型\n income: string; // 资金流数量,正数代表流入,负数代表流出\n asset: string; // 资产内容\n info: string; // 备注信息,取决于流水类型\n time: number;\n tranId: string; // 划转ID\n tradeId: string; // 引起流水产生的原始交易ID\n }[]\n > => this.request('GET', 'https://api.binance.com/papi/v1/um/income', params);\n}\nexport const client = new ApiClient({\n auth: process.env.PUBLIC_ONLY\n ? undefined\n : {\n public_key: process.env.ACCESS_KEY!,\n secret_key: process.env.SECRET_KEY!,\n },\n});\n"]}
|
package/dist/quote.js
CHANGED
|
@@ -1,27 +1,54 @@
|
|
|
1
|
+
import { createCache } from '@yuants/cache';
|
|
1
2
|
import { Terminal } from '@yuants/protocol';
|
|
2
3
|
import { writeToSQL } from '@yuants/sql';
|
|
3
4
|
import { decodePath, encodePath } from '@yuants/utils';
|
|
4
|
-
import {
|
|
5
|
+
import { defer, filter, from, groupBy, map, merge, mergeMap, repeat, retry, scan, share, shareReplay, } from 'rxjs';
|
|
5
6
|
import { client } from './api';
|
|
6
7
|
const terminal = Terminal.fromNodeEnv();
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
const OPEN_INTEREST_TTL = process.env.OPEN_INTEREST_TTL ? Number(process.env.OPEN_INTEREST_TTL) : 120000;
|
|
9
|
+
const openInterestCache = createCache(async (symbol) => {
|
|
10
|
+
var _a;
|
|
11
|
+
try {
|
|
12
|
+
const data = await client.getFutureOpenInterest({ symbol });
|
|
13
|
+
return Number((_a = data.openInterest) !== null && _a !== void 0 ? _a : 0);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
console.warn('getFutureOpenInterest failed', symbol, err);
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
}, {
|
|
20
|
+
expire: OPEN_INTEREST_TTL,
|
|
21
|
+
});
|
|
22
|
+
const futurePremiumIndex$ = defer(() => client.getFuturePremiumIndex({})).pipe(repeat({ delay: 1000 }), retry({ delay: 30000 }), shareReplay({ bufferSize: 1, refCount: true }));
|
|
23
|
+
const futureBookTicker$ = defer(() => client.getFutureBookTicker({})).pipe(repeat({ delay: 1000 }), retry({ delay: 30000 }), shareReplay({ bufferSize: 1, refCount: true }));
|
|
24
|
+
const quoteFromPremiumIndex$ = futurePremiumIndex$.pipe(mergeMap((entries) => from(entries || [])), map((entry) => {
|
|
25
|
+
var _a;
|
|
26
|
+
return ({
|
|
17
27
|
datasource_id: 'BINANCE',
|
|
18
|
-
product_id: encodePath('usdt-future', symbol),
|
|
19
|
-
last_price:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
product_id: encodePath('usdt-future', entry.symbol),
|
|
29
|
+
last_price: entry.markPrice,
|
|
30
|
+
updated_at: new Date((_a = entry.time) !== null && _a !== void 0 ? _a : Date.now()).toISOString(),
|
|
31
|
+
});
|
|
32
|
+
}));
|
|
33
|
+
const quoteFromBookTicker$ = futureBookTicker$.pipe(mergeMap((entries) => from(entries || [])), map((entry) => {
|
|
34
|
+
var _a;
|
|
35
|
+
return ({
|
|
36
|
+
datasource_id: 'BINANCE',
|
|
37
|
+
product_id: encodePath('usdt-future', entry.symbol),
|
|
38
|
+
bid_price: entry.bidPrice,
|
|
39
|
+
ask_price: entry.askPrice,
|
|
40
|
+
updated_at: new Date((_a = entry.time) !== null && _a !== void 0 ? _a : Date.now()).toISOString(),
|
|
41
|
+
});
|
|
42
|
+
}));
|
|
43
|
+
const quoteFromOpenInterest$ = futureBookTicker$.pipe(mergeMap((entries) => from(entries || [])), mergeMap((entry) => from(openInterestCache.query(entry.symbol)).pipe(map((openInterest) => ({
|
|
44
|
+
datasource_id: 'BINANCE',
|
|
45
|
+
product_id: encodePath('usdt-future', entry.symbol),
|
|
46
|
+
open_interest: `${openInterest !== null && openInterest !== void 0 ? openInterest : 0}`,
|
|
47
|
+
}))), 5));
|
|
48
|
+
const quote$ = merge(quoteFromPremiumIndex$, quoteFromBookTicker$, quoteFromOpenInterest$).pipe(groupBy((quote) => quote.product_id), mergeMap((group$) => group$.pipe(scan((acc, cur) => Object.assign(acc, cur, {
|
|
49
|
+
datasource_id: 'BINANCE',
|
|
50
|
+
product_id: group$.key,
|
|
51
|
+
}), {}))), share(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
25
52
|
if (process.env.WRITE_QUOTE_TO_SQL === 'true') {
|
|
26
53
|
quote$
|
|
27
54
|
.pipe(writeToSQL({
|
package/dist/quote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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","sourcesContent":["import { createCache } from '@yuants/cache';\nimport { IQuote } from '@yuants/data-quote';\nimport { Terminal } from '@yuants/protocol';\nimport { writeToSQL } from '@yuants/sql';\nimport { decodePath, encodePath } from '@yuants/utils';\nimport {\n defer,\n filter,\n from,\n groupBy,\n map,\n merge,\n mergeMap,\n repeat,\n retry,\n scan,\n share,\n shareReplay,\n} from 'rxjs';\nimport { client } from './api';\n\nconst terminal = Terminal.fromNodeEnv();\nconst OPEN_INTEREST_TTL = process.env.OPEN_INTEREST_TTL ? Number(process.env.OPEN_INTEREST_TTL) : 120_000;\n\nconst openInterestCache = createCache<number>(\n async (symbol: string) => {\n try {\n const data = await client.getFutureOpenInterest({ symbol });\n return Number(data.openInterest ?? 0);\n } catch (err) {\n console.warn('getFutureOpenInterest failed', symbol, err);\n return undefined;\n }\n },\n {\n expire: OPEN_INTEREST_TTL,\n },\n);\n\nconst futurePremiumIndex$ = defer(() => client.getFuturePremiumIndex({})).pipe(\n repeat({ delay: 1_000 }),\n retry({ delay: 30_000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nconst futureBookTicker$ = defer(() => client.getFutureBookTicker({})).pipe(\n repeat({ delay: 1_000 }),\n retry({ delay: 30_000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nconst quoteFromPremiumIndex$ = futurePremiumIndex$.pipe(\n mergeMap((entries) => from(entries || [])),\n map(\n (entry): Partial<IQuote> => ({\n datasource_id: 'BINANCE',\n product_id: encodePath('usdt-future', entry.symbol),\n last_price: entry.markPrice,\n updated_at: new Date(entry.time ?? Date.now()).toISOString(),\n }),\n ),\n);\n\nconst quoteFromBookTicker$ = futureBookTicker$.pipe(\n mergeMap((entries) => from(entries || [])),\n map(\n (entry): Partial<IQuote> => ({\n datasource_id: 'BINANCE',\n product_id: encodePath('usdt-future', entry.symbol),\n bid_price: entry.bidPrice,\n ask_price: entry.askPrice,\n updated_at: new Date(entry.time ?? Date.now()).toISOString(),\n }),\n ),\n);\n\nconst quoteFromOpenInterest$ = futureBookTicker$.pipe(\n mergeMap((entries) => from(entries || [])),\n mergeMap(\n (entry) =>\n from(openInterestCache.query(entry.symbol)).pipe(\n map(\n (openInterest): Partial<IQuote> => ({\n datasource_id: 'BINANCE',\n product_id: encodePath('usdt-future', entry.symbol),\n open_interest: `${openInterest ?? 0}`,\n }),\n ),\n ),\n 5,\n ),\n);\n\nconst quote$ = merge(quoteFromPremiumIndex$, quoteFromBookTicker$, quoteFromOpenInterest$).pipe(\n groupBy((quote) => quote.product_id),\n mergeMap((group$) =>\n group$.pipe(\n scan(\n (acc, cur) =>\n Object.assign(acc, cur, {\n datasource_id: 'BINANCE',\n product_id: group$.key,\n }),\n {} as Partial<IQuote>,\n ),\n ),\n ),\n share(),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nif (process.env.WRITE_QUOTE_TO_SQL === 'true') {\n quote$\n .pipe(\n writeToSQL({\n terminal,\n tableName: 'quote',\n writeInterval: 1_000,\n conflictKeys: ['datasource_id', 'product_id'],\n }),\n )\n .subscribe();\n\n terminal.channel.publishChannel('quote', { pattern: '^BINANCE/' }, (channel_id) => {\n const [datasourceId, productId] = decodePath(channel_id);\n if (!datasourceId || !productId) {\n throw new Error(`Invalid channel_id: ${channel_id}`);\n }\n return quote$.pipe(filter((quote) => quote.product_id === productId));\n });\n}\n"]}
|
package/lib/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/lib/api.js
CHANGED
|
@@ -216,10 +216,9 @@ class ApiClient {
|
|
|
216
216
|
if (!this.config.auth) {
|
|
217
217
|
console.info((0, utils_1.formatTime)(Date.now()), method, url.href);
|
|
218
218
|
const res = await fetch(url.href, { method });
|
|
219
|
-
console.info((0, utils_1.formatTime)(Date.now()), 'response', method, url.href, res.status);
|
|
220
219
|
const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');
|
|
220
|
+
console.info((0, utils_1.formatTime)(Date.now()), 'response', method, url.href, res.status, `usedWeight1M=${usedWeight1M !== null && usedWeight1M !== void 0 ? usedWeight1M : 'N/A'}`);
|
|
221
221
|
if (usedWeight1M) {
|
|
222
|
-
// console.info('usedWeight1M', method, url.href, usedWeight1M);
|
|
223
222
|
MetricBinanceApiUsedWeight.set(+usedWeight1M, {});
|
|
224
223
|
}
|
|
225
224
|
return res.json();
|
|
@@ -238,9 +237,8 @@ class ApiClient {
|
|
|
238
237
|
headers,
|
|
239
238
|
});
|
|
240
239
|
const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');
|
|
241
|
-
console.info((0, utils_1.formatTime)(Date.now()), 'response', method, url.href, res.status);
|
|
240
|
+
console.info((0, utils_1.formatTime)(Date.now()), 'response', method, url.href, res.status, `usedWeight1M=${usedWeight1M !== null && usedWeight1M !== void 0 ? usedWeight1M : 'N/A'}`);
|
|
242
241
|
if (usedWeight1M) {
|
|
243
|
-
// console.info('usedWeight1M', method, url.href, res.status, usedWeight1M);
|
|
244
242
|
MetricBinanceApiUsedWeight.set(+usedWeight1M, {});
|
|
245
243
|
}
|
|
246
244
|
return res.json();
|
package/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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","sourcesContent":["import { PromRegistry } from '@yuants/protocol';\nimport { formatTime } from '@yuants/utils';\n// @ts-ignore\nimport CryptoJS from 'crypto-js';\n\nconst MetricBinanceApiUsedWeight = PromRegistry.create('gauge', 'binance_api_used_weight');\n\ninterface errorResult {\n code: number;\n msg: string;\n}\n\nexport const isError = <T>(x: T | errorResult): x is errorResult => (x as errorResult).code !== undefined;\n\n/**\n * Binance 币安 API\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/CHANGELOG\n */\nexport class ApiClient {\n constructor(\n public config: {\n auth?: {\n public_key: string;\n secret_key: string;\n };\n },\n ) {}\n\n async request(method: string, path: string, params: any = {}) {\n const url = new URL(path);\n params.recvWindow = 5000;\n params.timestamp = Date.now();\n for (const key in params) {\n if (params[key] === undefined) continue;\n url.searchParams.set(key, params[key]);\n }\n if (!this.config.auth) {\n console.info(formatTime(Date.now()), method, url.href);\n const res = await fetch(url.href, { method });\n console.info(formatTime(Date.now()), 'response', method, url.href, res.status);\n const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');\n if (usedWeight1M) {\n // console.info('usedWeight1M', method, url.href, usedWeight1M);\n MetricBinanceApiUsedWeight.set(+usedWeight1M, {});\n }\n return res.json();\n }\n const secret_key = this.config.auth.secret_key;\n const signData = url.search.slice(1);\n const str = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(signData, secret_key));\n url.searchParams.set('signature', str);\n\n const headers = {\n 'Content-Type': 'application/json;charset=utf-8',\n 'X-MBX-APIKEY': this.config.auth.public_key!,\n };\n\n console.info(\n formatTime(Date.now()),\n method,\n url.href,\n JSON.stringify(headers),\n url.searchParams.toString(),\n signData,\n );\n const res = await fetch(url.href, {\n method,\n headers,\n });\n const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');\n console.info(formatTime(Date.now()), 'response', method, url.href, res.status);\n if (usedWeight1M) {\n // console.info('usedWeight1M', method, url.href, res.status, usedWeight1M);\n MetricBinanceApiUsedWeight.set(+usedWeight1M, {});\n }\n return res.json();\n }\n\n /**\n * 获取交易规则和交易对\n *\n * https://binance-docs.github.io/apidocs/futures/cn/#0f3f2d5ee7\n */\n getFutureExchangeInfo = (): Promise<{\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: any[];\n assets: {\n asset: string;\n marginAvailable: boolean;\n autoAssetExchange: string;\n }[];\n symbols: {\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: {\n filterType: string;\n maxPrice?: string;\n minPrice?: string;\n tickSize?: string;\n maxQty?: string;\n stepSize?: string;\n minQty?: string;\n limit?: number;\n notional?: string;\n multiplierDecimal?: string;\n multiplierUp?: string;\n multiplierDown?: string;\n }[];\n orderTypes: string[];\n timeInForce: string[];\n }[];\n }> => this.request('GET', 'https://fapi.binance.com/fapi/v1/exchangeInfo');\n\n /**\n * 查询资金费率历史\n *\n * https://binance-docs.github.io/apidocs/futures/cn/#31dbeb24c4\n */\n getFutureFundingRate = (params: {\n symbol?: string;\n startTime?: number;\n endTime?: number;\n limit?: number;\n }): Promise<\n {\n symbol: string;\n fundingTime: number;\n fundingRate: string;\n markPrice: string;\n }[]\n > => this.request('GET', 'https://fapi.binance.com/fapi/v1/fundingRate', params);\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 */\n getFuturePremiumIndex = (params: {\n symbol?: string;\n }): Promise<\n {\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 > => this.request('GET', 'https://fapi.binance.com/fapi/v1/premiumIndex', params);\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 */\n getFutureBookTicker = (params?: {\n symbol?: string;\n }): Promise<\n {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n time: number;\n }[]\n > => this.request('GET', 'https://fapi.binance.com/fapi/v1/ticker/bookTicker', params);\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 */\n getFutureOpenInterest = (params: {\n symbol: string;\n }): Promise<{\n openInterest: string;\n symbol: string;\n time: number;\n }> => this.request('GET', 'https://fapi.binance.com/fapi/v1/openInterest', params);\n\n /**\n * 查询账户信息(USER_DATA)\n *\n * 查询账户信息\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Information\n */\n getUnifiedAccountInfo = (): Promise<\n | {\n uniMMR: string;\n accountEquity: string;\n actualEquity: string;\n accountInitialMargin: string;\n accountMaintMargin: string;\n accountStatus: string;\n virtualMaxWithdrawAmount: string;\n totalAvailableBalance: string;\n totalMarginOpenLoss: string;\n updateTime: number;\n }\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/account');\n\n /**\n * 获取UM账户信息\n *\n * 现有UM账户资产和仓位信息\n *\n * 权重: 5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Account-Detail\n */\n getUnifiedUmAccount = (): Promise<\n | {\n assets: {\n asset: string;\n crossWalletBalance: string;\n crossUnPnl: string;\n maintMargin: string;\n initialMargin: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n updateTime: number;\n }[];\n positions: {\n symbol: string;\n initialMargin: string;\n maintMargin: string;\n unrealizedProfit: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n leverage: string;\n entryPrice: string;\n maxNotional: string;\n bidNotional: string;\n askNotional: string;\n positionSide: string;\n positionAmt: string;\n updateTime: number;\n }[];\n }\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/um/account');\n\n /**\n * 查看当前全部UM挂单(USER_DATA)\n *\n * 查看当前全部UM挂单,请小心使用不带symbol参数的调用\n *\n * 权重: 带symbol 1 - 不带 40\n */\n getUnifiedUmOpenOrders = (params?: {\n symbol?: string;\n }): Promise<\n {\n avgPrice: string;\n clientOrderId: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n origType: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n time: number;\n timeInForce: string;\n type: string;\n updateTime: number;\n selfTradePreventionMode: string;\n goodTillDate: number;\n }[]\n > => this.request('GET', 'https://papi.binance.com/papi/v1/um/openOrders', params);\n\n /**\n * 查询账户余额(USER_DATA)\n *\n * 查询账户余额\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Balance\n */\n getUnifiedAccountBalance = (params?: {\n assets?: string;\n }): Promise<\n | {\n asset: string;\n totalWalletBalance: string;\n crossMarginAsset: string;\n crossMarginBorrowed: string;\n crossMarginFree: string;\n crossMarginInterest: string;\n crossMarginLocked: string;\n umWalletBalance: string;\n umUnrealizedPNL: string;\n cmWalletBalance: string;\n cmUnrealizedPNL: string;\n updateTime: number;\n }[]\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/balance', params);\n\n /**\n * 账户信息 (USER_DATA)\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data\n */\n getSpotAccountInfo = (params?: {\n omitZeroBalances?: boolean;\n }): Promise<\n | {\n makerCommission: number;\n takerCommission: number;\n buyerCommission: number;\n sellerCommission: number;\n commissionRates: {\n maker: string;\n taker: string;\n buyer: string;\n seller: string;\n };\n canTrade: boolean;\n canWithdraw: boolean;\n canDeposit: boolean;\n brokered: boolean;\n requireSelfTradePrevention: boolean;\n preventSor: boolean;\n updateTime: number;\n balances: {\n asset: string;\n free: string;\n locked: string;\n }[];\n permissions: string[];\n uid: number;\n }\n | errorResult\n > => this.request('GET', 'https://api.binance.com/api/v3/account', params);\n\n /**\n * 用户万向划转(USER_DATA)\n *\n * 用户万向划转\n *\n * 您需要开通api key 允许万向划转权限来调用此接口。\n *\n * 权重: 900\n *\n * https://developers.binance.com/docs/zh-CN/wallet/asset/user-universal-transfer\n */\n postAssetTransfer = (params: {\n type: string;\n asset: string;\n amount: number;\n fromSymbol?: string;\n toSymbol?: string;\n }): Promise<\n | {\n tranId: number;\n }\n | errorResult\n > => this.request('POST', 'https://api.binance.com/sapi/v1/asset/transfer', params);\n\n /**\n * 统一账户资金归集(TRADE)\n *\n * 资金归集到统一账户钱包\n *\n * 权重: 750\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Fund-Auto-collection\n *\n * ISSUE(2024-07-18): 目前这是唯一能够将资金从原 U 本位合约账户转入统一账户的接口。\n */\n postUnifiedAccountAutoCollection = (): Promise<{\n msg: string;\n }> => this.request('POST', 'https://papi.binance.com/papi/v1/auto-collection');\n\n /**\n * 获取充值地址(支持多网络)(USER_DATA)\n *\n * 获取充值地址\n *\n * 权重: 10\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-address\n */\n getDepositAddress = (params: {\n coin: string;\n network?: string;\n amount?: number;\n }): Promise<{\n address: string;\n coin: string;\n tag: string;\n url: string;\n }> => this.request('GET', 'https://api.binance.com/sapi/v1/capital/deposit/address', params);\n\n /**\n * 查询子账户列表(适用主账户)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/sub_account/account-management/Query-Sub-account-List\n */\n getSubAccountList = (params?: {\n email?: string;\n isFreeze?: number;\n page?: number;\n limit?: number;\n }): Promise<\n | {\n subAccounts: {\n email: string;\n isFreeze: boolean;\n createTime: number;\n isManagedSubAccount: boolean;\n isAssetManagementSubAccount: boolean;\n }[];\n }\n | errorResult\n > => this.request('GET', 'https://api.binance.com/sapi/v1/sub-account/list');\n\n /**\n * 提币(USER_DATA)\n *\n * 权重: 600\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw\n */\n postWithdraw = (\n params:\n | {\n coin: string;\n withdrawOrderId?: string;\n network?: string;\n address: string;\n addressTag?: string;\n amount: number;\n transactionFeeFlag?: boolean;\n name?: string;\n walletType?: number;\n }\n | errorResult,\n ): Promise<{\n id: string;\n }> => this.request('POST', 'https://api.binance.com/sapi/v1/capital/withdraw/apply', params);\n\n /**\n * 获取提币历史(支持多网络)(USER_DATA)\n *\n * 获取提币历史 (支持多网络)\n *\n * 请求权重(IP)#\n * 18000 请求限制: 每秒10次\n *\n * 本接口特别采用每秒UID速率限制,用户的总秒级 UID 速率限制为180000/秒。从该接口收到的响应包含key X-SAPI-USED-UID-WEIGHT-1S,该key定义了当前 UID 使用的权重\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw-history\n */\n getWithdrawHistory = (params?: {\n coin?: string;\n withdrawOrderId?: string;\n status?: number;\n offset?: number;\n limit?: number;\n startTime?: number;\n endTime?: number;\n }): Promise<\n {\n id: string;\n amount: string;\n transactionFee: string;\n coin: string;\n status: number;\n address: string;\n txId: string;\n applyTime: Date;\n network: string;\n transferType: number;\n info: string;\n confirmNo: number;\n walletType: number;\n txKey: string;\n completeTime: Date;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/capital/withdraw/history', params);\n\n /**\n * 获取充值历史(支持多网络)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-history\n */\n getDepositHistory = (params?: {\n includeSource?: boolean;\n coin?: string;\n status?: number;\n startTime?: number;\n endTime?: number;\n offset?: number;\n limit?: number;\n txId?: string;\n }): Promise<\n {\n id: string;\n amount: string;\n coin: string;\n network: string;\n status: number;\n address: string;\n addressTag: string;\n txId: string;\n insertTime: number;\n transferType: number;\n confirmTimes: string;\n unlockConfirm: number;\n walletType: number;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/capital/deposit/hisrec', params);\n\n /**\n * UM下单(TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/New-UM-Order\n */\n postUmOrder = (params: {\n symbol: string;\n side: string;\n positionSide?: string;\n type: string;\n timeInForce?: string;\n quantity: number;\n reduceOnly?: string;\n price?: number;\n newClientOrderId?: string;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n goodTillDate?: number;\n }): Promise<\n | {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n avgPrice: string;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n selfTradePreventionMode: string;\n goodTillDate: number;\n updateTime: number;\n }\n | errorResult\n > => this.request('POST', 'https://papi.binance.com/papi/v1/um/order', params);\n\n deleteUmOrder = (params: {\n symbol: string;\n orderId?: string | number;\n origClientOrderId?: string;\n }): Promise<\n | {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n updateTime: number;\n }\n | errorResult\n > => this.request('DELETE', 'https://papi.binance.com/papi/v1/um/order', params);\n\n /**\n * 获取所有全仓杠杆交易对(MARKET_DATA)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/market-data/Get-All-Cross-Margin-Pairs\n */\n getMarginAllPairs = (params?: {\n symbol?: string;\n }): Promise<\n {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/margin/allPairs', params);\n\n /**\n * 获取UM损益资金流水(USER_DATA)\n *\n * 权重: 30\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Income-History\n */\n getUMIncome = (params?: {\n symbol?: string;\n incomeType?: string;\n startTime?: number;\n endTime?: number;\n recvWindow?: number;\n limit?: number;\n timestamp: number;\n }): Promise<\n {\n symbol: string; // 交易对,仅针对涉及交易对的资金流\n incomeType: string; // 资金流类型\n income: string; // 资金流数量,正数代表流入,负数代表流出\n asset: string; // 资产内容\n info: string; // 备注信息,取决于流水类型\n time: number;\n tranId: string; // 划转ID\n tradeId: string; // 引起流水产生的原始交易ID\n }[]\n > => this.request('GET', 'https://api.binance.com/papi/v1/um/income', params);\n}\nexport const client = new ApiClient({\n auth: process.env.PUBLIC_ONLY\n ? undefined\n : {\n public_key: process.env.ACCESS_KEY!,\n secret_key: process.env.SECRET_KEY!,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAgD;AAChD,yCAA2C;AAC3C,aAAa;AACb,0DAAiC;AAEjC,MAAM,0BAA0B,GAAG,uBAAY,CAAC,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;AAOpF,MAAM,OAAO,GAAG,CAAI,CAAkB,EAAoB,EAAE,CAAE,CAAiB,CAAC,IAAI,KAAK,SAAS,CAAC;AAA7F,QAAA,OAAO,WAAsF;AAE1G;;;;GAIG;AACH,MAAa,SAAS;IACpB,YACS,MAKN;QALM,WAAM,GAAN,MAAM,CAKZ;QAiEH;;;;WAIG;QACH,0BAAqB,GAAG,GAwDrB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,+CAA+C,CAAC,CAAC;QAE3E;;;;WAIG;QACH,yBAAoB,GAAG,CAAC,MAKvB,EAOC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,8CAA8C,EAAE,MAAM,CAAC,CAAC;QAEjF;;;;;;;;WAQG;QACH,0BAAqB,GAAG,CAAC,MAExB,EAWC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,+CAA+C,EAAE,MAAM,CAAC,CAAC;QAElF;;;;;;;;WAQG;QACH,wBAAmB,GAAG,CAAC,MAEtB,EASC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,oDAAoD,EAAE,MAAM,CAAC,CAAC;QAEvF;;;;;;;;WAQG;QACH,0BAAqB,GAAG,CAAC,MAExB,EAIE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,+CAA+C,EAAE,MAAM,CAAC,CAAC;QAEnF;;;;;;;;WAQG;QACH,0BAAqB,GAAG,GActB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;QAErE;;;;;;;;WAQG;QACH,wBAAmB,GAAG,GA8BpB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;QAExE;;;;;;WAMG;QACH,2BAAsB,GAAG,CAAC,MAEzB,EAsBC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gDAAgD,EAAE,MAAM,CAAC,CAAC;QAEnF;;;;;;;;WAQG;QACH,6BAAwB,GAAG,CAAC,MAE3B,EAgBC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,0CAA0C,EAAE,MAAM,CAAC,CAAC;QAE7E;;;;;;WAMG;QACH,uBAAkB,GAAG,CAAC,MAErB,EA4BC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wCAAwC,EAAE,MAAM,CAAC,CAAC;QAE3E;;;;;;;;;;WAUG;QACH,sBAAiB,GAAG,CAAC,MAMpB,EAKC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gDAAgD,EAAE,MAAM,CAAC,CAAC;QAEpF;;;;;;;;;;WAUG;QACH,qCAAgC,GAAG,GAEhC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAAC;QAE/E;;;;;;;;WAQG;QACH,sBAAiB,GAAG,CAAC,MAIpB,EAKE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,yDAAyD,EAAE,MAAM,CAAC,CAAC;QAE7F;;;;;;WAMG;QACH,sBAAiB,GAAG,CAAC,MAKpB,EAWC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC;QAE7E;;;;;;WAMG;QACH,iBAAY,GAAG,CACb,MAYe,EAGd,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,wDAAwD,EAAE,MAAM,CAAC,CAAC;QAE7F;;;;;;;;;;;WAWG;QACH,uBAAkB,GAAG,CAAC,MAQrB,EAkBC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,0DAA0D,EAAE,MAAM,CAAC,CAAC;QAE7F;;;;;;WAMG;QACH,sBAAiB,GAAG,CAAC,MASpB,EAgBC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wDAAwD,EAAE,MAAM,CAAC,CAAC;QAE3F;;;;;;WAMG;QACH,gBAAW,GAAG,CAAC,MAad,EAsBC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,2CAA2C,EAAE,MAAM,CAAC,CAAC;QAE/E,kBAAa,GAAG,CAAC,MAIhB,EAmBC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,2CAA2C,EAAE,MAAM,CAAC,CAAC;QAEjF;;;;;;WAMG;QACH,sBAAiB,GAAG,CAAC,MAEpB,EAUC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,iDAAiD,EAAE,MAAM,CAAC,CAAC;QAEpF;;;;;;WAMG;QACH,gBAAW,GAAG,CAAC,MAQd,EAWC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,2CAA2C,EAAE,MAAM,CAAC,CAAC;IAnqB3E,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,IAAY,EAAE,SAAc,EAAE;QAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,SAAS;YACxC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CACV,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EACtB,UAAU,EACV,MAAM,EACN,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,EACV,gBAAgB,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,KAAK,EAAE,CACxC,CAAC;YACF,IAAI,YAAY,EAAE;gBAChB,0BAA0B,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;aACnD;YACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;SACnB;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,mBAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QAClF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG;YACd,cAAc,EAAE,gCAAgC;YAChD,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAW;SAC7C,CAAC;QAEF,OAAO,CAAC,IAAI,CACV,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EACtB,MAAM,EACN,GAAG,CAAC,IAAI,EACR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,EAC3B,QAAQ,CACT,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;YAChC,MAAM;YACN,OAAO;SACR,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CACV,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EACtB,UAAU,EACV,MAAM,EACN,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,EACV,gBAAgB,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,KAAK,EAAE,CACxC,CAAC;QACF,IAAI,YAAY,EAAE;YAChB,0BAA0B,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;SACnD;QACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;CAsmBF;AA5qBD,8BA4qBC;AACY,QAAA,MAAM,GAAG,IAAI,SAAS,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QAC3B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW;YACnC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW;SACpC;CACN,CAAC,CAAC","sourcesContent":["import { PromRegistry } from '@yuants/protocol';\nimport { formatTime } from '@yuants/utils';\n// @ts-ignore\nimport CryptoJS from 'crypto-js';\n\nconst MetricBinanceApiUsedWeight = PromRegistry.create('gauge', 'binance_api_used_weight');\n\ninterface errorResult {\n code: number;\n msg: string;\n}\n\nexport const isError = <T>(x: T | errorResult): x is errorResult => (x as errorResult).code !== undefined;\n\n/**\n * Binance 币安 API\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/CHANGELOG\n */\nexport class ApiClient {\n constructor(\n public config: {\n auth?: {\n public_key: string;\n secret_key: string;\n };\n },\n ) {}\n\n async request(method: string, path: string, params: any = {}) {\n const url = new URL(path);\n params.recvWindow = 5000;\n params.timestamp = Date.now();\n for (const key in params) {\n if (params[key] === undefined) continue;\n url.searchParams.set(key, params[key]);\n }\n if (!this.config.auth) {\n console.info(formatTime(Date.now()), method, url.href);\n const res = await fetch(url.href, { method });\n const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');\n console.info(\n formatTime(Date.now()),\n 'response',\n method,\n url.href,\n res.status,\n `usedWeight1M=${usedWeight1M ?? 'N/A'}`,\n );\n if (usedWeight1M) {\n MetricBinanceApiUsedWeight.set(+usedWeight1M, {});\n }\n return res.json();\n }\n const secret_key = this.config.auth.secret_key;\n const signData = url.search.slice(1);\n const str = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(signData, secret_key));\n url.searchParams.set('signature', str);\n\n const headers = {\n 'Content-Type': 'application/json;charset=utf-8',\n 'X-MBX-APIKEY': this.config.auth.public_key!,\n };\n\n console.info(\n formatTime(Date.now()),\n method,\n url.href,\n JSON.stringify(headers),\n url.searchParams.toString(),\n signData,\n );\n const res = await fetch(url.href, {\n method,\n headers,\n });\n const usedWeight1M = res.headers.get('x-mbx-used-weight-1m');\n console.info(\n formatTime(Date.now()),\n 'response',\n method,\n url.href,\n res.status,\n `usedWeight1M=${usedWeight1M ?? 'N/A'}`,\n );\n if (usedWeight1M) {\n MetricBinanceApiUsedWeight.set(+usedWeight1M, {});\n }\n return res.json();\n }\n\n /**\n * 获取交易规则和交易对\n *\n * https://binance-docs.github.io/apidocs/futures/cn/#0f3f2d5ee7\n */\n getFutureExchangeInfo = (): Promise<{\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: any[];\n assets: {\n asset: string;\n marginAvailable: boolean;\n autoAssetExchange: string;\n }[];\n symbols: {\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: {\n filterType: string;\n maxPrice?: string;\n minPrice?: string;\n tickSize?: string;\n maxQty?: string;\n stepSize?: string;\n minQty?: string;\n limit?: number;\n notional?: string;\n multiplierDecimal?: string;\n multiplierUp?: string;\n multiplierDown?: string;\n }[];\n orderTypes: string[];\n timeInForce: string[];\n }[];\n }> => this.request('GET', 'https://fapi.binance.com/fapi/v1/exchangeInfo');\n\n /**\n * 查询资金费率历史\n *\n * https://binance-docs.github.io/apidocs/futures/cn/#31dbeb24c4\n */\n getFutureFundingRate = (params: {\n symbol?: string;\n startTime?: number;\n endTime?: number;\n limit?: number;\n }): Promise<\n {\n symbol: string;\n fundingTime: number;\n fundingRate: string;\n markPrice: string;\n }[]\n > => this.request('GET', 'https://fapi.binance.com/fapi/v1/fundingRate', params);\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 */\n getFuturePremiumIndex = (params: {\n symbol?: string;\n }): Promise<\n {\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 > => this.request('GET', 'https://fapi.binance.com/fapi/v1/premiumIndex', params);\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 */\n getFutureBookTicker = (params?: {\n symbol?: string;\n }): Promise<\n {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n time: number;\n }[]\n > => this.request('GET', 'https://fapi.binance.com/fapi/v1/ticker/bookTicker', params);\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 */\n getFutureOpenInterest = (params: {\n symbol: string;\n }): Promise<{\n openInterest: string;\n symbol: string;\n time: number;\n }> => this.request('GET', 'https://fapi.binance.com/fapi/v1/openInterest', params);\n\n /**\n * 查询账户信息(USER_DATA)\n *\n * 查询账户信息\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Information\n */\n getUnifiedAccountInfo = (): Promise<\n | {\n uniMMR: string;\n accountEquity: string;\n actualEquity: string;\n accountInitialMargin: string;\n accountMaintMargin: string;\n accountStatus: string;\n virtualMaxWithdrawAmount: string;\n totalAvailableBalance: string;\n totalMarginOpenLoss: string;\n updateTime: number;\n }\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/account');\n\n /**\n * 获取UM账户信息\n *\n * 现有UM账户资产和仓位信息\n *\n * 权重: 5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Account-Detail\n */\n getUnifiedUmAccount = (): Promise<\n | {\n assets: {\n asset: string;\n crossWalletBalance: string;\n crossUnPnl: string;\n maintMargin: string;\n initialMargin: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n updateTime: number;\n }[];\n positions: {\n symbol: string;\n initialMargin: string;\n maintMargin: string;\n unrealizedProfit: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n leverage: string;\n entryPrice: string;\n maxNotional: string;\n bidNotional: string;\n askNotional: string;\n positionSide: string;\n positionAmt: string;\n updateTime: number;\n }[];\n }\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/um/account');\n\n /**\n * 查看当前全部UM挂单(USER_DATA)\n *\n * 查看当前全部UM挂单,请小心使用不带symbol参数的调用\n *\n * 权重: 带symbol 1 - 不带 40\n */\n getUnifiedUmOpenOrders = (params?: {\n symbol?: string;\n }): Promise<\n {\n avgPrice: string;\n clientOrderId: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n origType: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n time: number;\n timeInForce: string;\n type: string;\n updateTime: number;\n selfTradePreventionMode: string;\n goodTillDate: number;\n }[]\n > => this.request('GET', 'https://papi.binance.com/papi/v1/um/openOrders', params);\n\n /**\n * 查询账户余额(USER_DATA)\n *\n * 查询账户余额\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Balance\n */\n getUnifiedAccountBalance = (params?: {\n assets?: string;\n }): Promise<\n | {\n asset: string;\n totalWalletBalance: string;\n crossMarginAsset: string;\n crossMarginBorrowed: string;\n crossMarginFree: string;\n crossMarginInterest: string;\n crossMarginLocked: string;\n umWalletBalance: string;\n umUnrealizedPNL: string;\n cmWalletBalance: string;\n cmUnrealizedPNL: string;\n updateTime: number;\n }[]\n | errorResult\n > => this.request('GET', 'https://papi.binance.com/papi/v1/balance', params);\n\n /**\n * 账户信息 (USER_DATA)\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data\n */\n getSpotAccountInfo = (params?: {\n omitZeroBalances?: boolean;\n }): Promise<\n | {\n makerCommission: number;\n takerCommission: number;\n buyerCommission: number;\n sellerCommission: number;\n commissionRates: {\n maker: string;\n taker: string;\n buyer: string;\n seller: string;\n };\n canTrade: boolean;\n canWithdraw: boolean;\n canDeposit: boolean;\n brokered: boolean;\n requireSelfTradePrevention: boolean;\n preventSor: boolean;\n updateTime: number;\n balances: {\n asset: string;\n free: string;\n locked: string;\n }[];\n permissions: string[];\n uid: number;\n }\n | errorResult\n > => this.request('GET', 'https://api.binance.com/api/v3/account', params);\n\n /**\n * 用户万向划转(USER_DATA)\n *\n * 用户万向划转\n *\n * 您需要开通api key 允许万向划转权限来调用此接口。\n *\n * 权重: 900\n *\n * https://developers.binance.com/docs/zh-CN/wallet/asset/user-universal-transfer\n */\n postAssetTransfer = (params: {\n type: string;\n asset: string;\n amount: number;\n fromSymbol?: string;\n toSymbol?: string;\n }): Promise<\n | {\n tranId: number;\n }\n | errorResult\n > => this.request('POST', 'https://api.binance.com/sapi/v1/asset/transfer', params);\n\n /**\n * 统一账户资金归集(TRADE)\n *\n * 资金归集到统一账户钱包\n *\n * 权重: 750\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Fund-Auto-collection\n *\n * ISSUE(2024-07-18): 目前这是唯一能够将资金从原 U 本位合约账户转入统一账户的接口。\n */\n postUnifiedAccountAutoCollection = (): Promise<{\n msg: string;\n }> => this.request('POST', 'https://papi.binance.com/papi/v1/auto-collection');\n\n /**\n * 获取充值地址(支持多网络)(USER_DATA)\n *\n * 获取充值地址\n *\n * 权重: 10\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-address\n */\n getDepositAddress = (params: {\n coin: string;\n network?: string;\n amount?: number;\n }): Promise<{\n address: string;\n coin: string;\n tag: string;\n url: string;\n }> => this.request('GET', 'https://api.binance.com/sapi/v1/capital/deposit/address', params);\n\n /**\n * 查询子账户列表(适用主账户)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/sub_account/account-management/Query-Sub-account-List\n */\n getSubAccountList = (params?: {\n email?: string;\n isFreeze?: number;\n page?: number;\n limit?: number;\n }): Promise<\n | {\n subAccounts: {\n email: string;\n isFreeze: boolean;\n createTime: number;\n isManagedSubAccount: boolean;\n isAssetManagementSubAccount: boolean;\n }[];\n }\n | errorResult\n > => this.request('GET', 'https://api.binance.com/sapi/v1/sub-account/list');\n\n /**\n * 提币(USER_DATA)\n *\n * 权重: 600\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw\n */\n postWithdraw = (\n params:\n | {\n coin: string;\n withdrawOrderId?: string;\n network?: string;\n address: string;\n addressTag?: string;\n amount: number;\n transactionFeeFlag?: boolean;\n name?: string;\n walletType?: number;\n }\n | errorResult,\n ): Promise<{\n id: string;\n }> => this.request('POST', 'https://api.binance.com/sapi/v1/capital/withdraw/apply', params);\n\n /**\n * 获取提币历史(支持多网络)(USER_DATA)\n *\n * 获取提币历史 (支持多网络)\n *\n * 请求权重(IP)#\n * 18000 请求限制: 每秒10次\n *\n * 本接口特别采用每秒UID速率限制,用户的总秒级 UID 速率限制为180000/秒。从该接口收到的响应包含key X-SAPI-USED-UID-WEIGHT-1S,该key定义了当前 UID 使用的权重\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw-history\n */\n getWithdrawHistory = (params?: {\n coin?: string;\n withdrawOrderId?: string;\n status?: number;\n offset?: number;\n limit?: number;\n startTime?: number;\n endTime?: number;\n }): Promise<\n {\n id: string;\n amount: string;\n transactionFee: string;\n coin: string;\n status: number;\n address: string;\n txId: string;\n applyTime: Date;\n network: string;\n transferType: number;\n info: string;\n confirmNo: number;\n walletType: number;\n txKey: string;\n completeTime: Date;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/capital/withdraw/history', params);\n\n /**\n * 获取充值历史(支持多网络)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-history\n */\n getDepositHistory = (params?: {\n includeSource?: boolean;\n coin?: string;\n status?: number;\n startTime?: number;\n endTime?: number;\n offset?: number;\n limit?: number;\n txId?: string;\n }): Promise<\n {\n id: string;\n amount: string;\n coin: string;\n network: string;\n status: number;\n address: string;\n addressTag: string;\n txId: string;\n insertTime: number;\n transferType: number;\n confirmTimes: string;\n unlockConfirm: number;\n walletType: number;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/capital/deposit/hisrec', params);\n\n /**\n * UM下单(TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/New-UM-Order\n */\n postUmOrder = (params: {\n symbol: string;\n side: string;\n positionSide?: string;\n type: string;\n timeInForce?: string;\n quantity: number;\n reduceOnly?: string;\n price?: number;\n newClientOrderId?: string;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n goodTillDate?: number;\n }): Promise<\n | {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n avgPrice: string;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n selfTradePreventionMode: string;\n goodTillDate: number;\n updateTime: number;\n }\n | errorResult\n > => this.request('POST', 'https://papi.binance.com/papi/v1/um/order', params);\n\n deleteUmOrder = (params: {\n symbol: string;\n orderId?: string | number;\n origClientOrderId?: string;\n }): Promise<\n | {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n updateTime: number;\n }\n | errorResult\n > => this.request('DELETE', 'https://papi.binance.com/papi/v1/um/order', params);\n\n /**\n * 获取所有全仓杠杆交易对(MARKET_DATA)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/market-data/Get-All-Cross-Margin-Pairs\n */\n getMarginAllPairs = (params?: {\n symbol?: string;\n }): Promise<\n {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n }[]\n > => this.request('GET', 'https://api.binance.com/sapi/v1/margin/allPairs', params);\n\n /**\n * 获取UM损益资金流水(USER_DATA)\n *\n * 权重: 30\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Income-History\n */\n getUMIncome = (params?: {\n symbol?: string;\n incomeType?: string;\n startTime?: number;\n endTime?: number;\n recvWindow?: number;\n limit?: number;\n timestamp: number;\n }): Promise<\n {\n symbol: string; // 交易对,仅针对涉及交易对的资金流\n incomeType: string; // 资金流类型\n income: string; // 资金流数量,正数代表流入,负数代表流出\n asset: string; // 资产内容\n info: string; // 备注信息,取决于流水类型\n time: number;\n tranId: string; // 划转ID\n tradeId: string; // 引起流水产生的原始交易ID\n }[]\n > => this.request('GET', 'https://api.binance.com/papi/v1/um/income', params);\n}\nexport const client = new ApiClient({\n auth: process.env.PUBLIC_ONLY\n ? undefined\n : {\n public_key: process.env.ACCESS_KEY!,\n secret_key: process.env.SECRET_KEY!,\n },\n});\n"]}
|
package/lib/quote.js
CHANGED
|
@@ -1,29 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cache_1 = require("@yuants/cache");
|
|
3
4
|
const protocol_1 = require("@yuants/protocol");
|
|
4
5
|
const sql_1 = require("@yuants/sql");
|
|
5
6
|
const utils_1 = require("@yuants/utils");
|
|
6
7
|
const rxjs_1 = require("rxjs");
|
|
7
8
|
const api_1 = require("./api");
|
|
8
9
|
const terminal = protocol_1.Terminal.fromNodeEnv();
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
const OPEN_INTEREST_TTL = process.env.OPEN_INTEREST_TTL ? Number(process.env.OPEN_INTEREST_TTL) : 120000;
|
|
11
|
+
const openInterestCache = (0, cache_1.createCache)(async (symbol) => {
|
|
12
|
+
var _a;
|
|
13
|
+
try {
|
|
14
|
+
const data = await api_1.client.getFutureOpenInterest({ symbol });
|
|
15
|
+
return Number((_a = data.openInterest) !== null && _a !== void 0 ? _a : 0);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
console.warn('getFutureOpenInterest failed', symbol, err);
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}, {
|
|
22
|
+
expire: OPEN_INTEREST_TTL,
|
|
23
|
+
});
|
|
24
|
+
const futurePremiumIndex$ = (0, rxjs_1.defer)(() => api_1.client.getFuturePremiumIndex({})).pipe((0, rxjs_1.repeat)({ delay: 1000 }), (0, rxjs_1.retry)({ delay: 30000 }), (0, rxjs_1.shareReplay)({ bufferSize: 1, refCount: true }));
|
|
25
|
+
const futureBookTicker$ = (0, rxjs_1.defer)(() => api_1.client.getFutureBookTicker({})).pipe((0, rxjs_1.repeat)({ delay: 1000 }), (0, rxjs_1.retry)({ delay: 30000 }), (0, rxjs_1.shareReplay)({ bufferSize: 1, refCount: true }));
|
|
26
|
+
const quoteFromPremiumIndex$ = futurePremiumIndex$.pipe((0, rxjs_1.mergeMap)((entries) => (0, rxjs_1.from)(entries || [])), (0, rxjs_1.map)((entry) => {
|
|
27
|
+
var _a;
|
|
28
|
+
return ({
|
|
19
29
|
datasource_id: 'BINANCE',
|
|
20
|
-
product_id: (0, utils_1.encodePath)('usdt-future', symbol),
|
|
21
|
-
last_price:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
product_id: (0, utils_1.encodePath)('usdt-future', entry.symbol),
|
|
31
|
+
last_price: entry.markPrice,
|
|
32
|
+
updated_at: new Date((_a = entry.time) !== null && _a !== void 0 ? _a : Date.now()).toISOString(),
|
|
33
|
+
});
|
|
34
|
+
}));
|
|
35
|
+
const quoteFromBookTicker$ = futureBookTicker$.pipe((0, rxjs_1.mergeMap)((entries) => (0, rxjs_1.from)(entries || [])), (0, rxjs_1.map)((entry) => {
|
|
36
|
+
var _a;
|
|
37
|
+
return ({
|
|
38
|
+
datasource_id: 'BINANCE',
|
|
39
|
+
product_id: (0, utils_1.encodePath)('usdt-future', entry.symbol),
|
|
40
|
+
bid_price: entry.bidPrice,
|
|
41
|
+
ask_price: entry.askPrice,
|
|
42
|
+
updated_at: new Date((_a = entry.time) !== null && _a !== void 0 ? _a : Date.now()).toISOString(),
|
|
43
|
+
});
|
|
44
|
+
}));
|
|
45
|
+
const quoteFromOpenInterest$ = futureBookTicker$.pipe((0, rxjs_1.mergeMap)((entries) => (0, rxjs_1.from)(entries || [])), (0, rxjs_1.mergeMap)((entry) => (0, rxjs_1.from)(openInterestCache.query(entry.symbol)).pipe((0, rxjs_1.map)((openInterest) => ({
|
|
46
|
+
datasource_id: 'BINANCE',
|
|
47
|
+
product_id: (0, utils_1.encodePath)('usdt-future', entry.symbol),
|
|
48
|
+
open_interest: `${openInterest !== null && openInterest !== void 0 ? openInterest : 0}`,
|
|
49
|
+
}))), 5));
|
|
50
|
+
const quote$ = (0, rxjs_1.merge)(quoteFromPremiumIndex$, quoteFromBookTicker$, quoteFromOpenInterest$).pipe((0, rxjs_1.groupBy)((quote) => quote.product_id), (0, rxjs_1.mergeMap)((group$) => group$.pipe((0, rxjs_1.scan)((acc, cur) => Object.assign(acc, cur, {
|
|
51
|
+
datasource_id: 'BINANCE',
|
|
52
|
+
product_id: group$.key,
|
|
53
|
+
}), {}))), (0, rxjs_1.share)(), (0, rxjs_1.shareReplay)({ bufferSize: 1, refCount: true }));
|
|
27
54
|
if (process.env.WRITE_QUOTE_TO_SQL === 'true') {
|
|
28
55
|
quote$
|
|
29
56
|
.pipe((0, sql_1.writeToSQL)({
|
package/lib/quote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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","sourcesContent":["import { createCache } from '@yuants/cache';\nimport { IQuote } from '@yuants/data-quote';\nimport { Terminal } from '@yuants/protocol';\nimport { writeToSQL } from '@yuants/sql';\nimport { decodePath, encodePath } from '@yuants/utils';\nimport {\n defer,\n filter,\n from,\n groupBy,\n map,\n merge,\n mergeMap,\n repeat,\n retry,\n scan,\n share,\n shareReplay,\n} from 'rxjs';\nimport { client } from './api';\n\nconst terminal = Terminal.fromNodeEnv();\nconst OPEN_INTEREST_TTL = process.env.OPEN_INTEREST_TTL ? Number(process.env.OPEN_INTEREST_TTL) : 120_000;\n\nconst openInterestCache = createCache<number>(\n async (symbol: string) => {\n try {\n const data = await client.getFutureOpenInterest({ symbol });\n return Number(data.openInterest ?? 0);\n } catch (err) {\n console.warn('getFutureOpenInterest failed', symbol, err);\n return undefined;\n }\n },\n {\n expire: OPEN_INTEREST_TTL,\n },\n);\n\nconst futurePremiumIndex$ = defer(() => client.getFuturePremiumIndex({})).pipe(\n repeat({ delay: 1_000 }),\n retry({ delay: 30_000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nconst futureBookTicker$ = defer(() => client.getFutureBookTicker({})).pipe(\n repeat({ delay: 1_000 }),\n retry({ delay: 30_000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nconst quoteFromPremiumIndex$ = futurePremiumIndex$.pipe(\n mergeMap((entries) => from(entries || [])),\n map(\n (entry): Partial<IQuote> => ({\n datasource_id: 'BINANCE',\n product_id: encodePath('usdt-future', entry.symbol),\n last_price: entry.markPrice,\n updated_at: new Date(entry.time ?? Date.now()).toISOString(),\n }),\n ),\n);\n\nconst quoteFromBookTicker$ = futureBookTicker$.pipe(\n mergeMap((entries) => from(entries || [])),\n map(\n (entry): Partial<IQuote> => ({\n datasource_id: 'BINANCE',\n product_id: encodePath('usdt-future', entry.symbol),\n bid_price: entry.bidPrice,\n ask_price: entry.askPrice,\n updated_at: new Date(entry.time ?? Date.now()).toISOString(),\n }),\n ),\n);\n\nconst quoteFromOpenInterest$ = futureBookTicker$.pipe(\n mergeMap((entries) => from(entries || [])),\n mergeMap(\n (entry) =>\n from(openInterestCache.query(entry.symbol)).pipe(\n map(\n (openInterest): Partial<IQuote> => ({\n datasource_id: 'BINANCE',\n product_id: encodePath('usdt-future', entry.symbol),\n open_interest: `${openInterest ?? 0}`,\n }),\n ),\n ),\n 5,\n ),\n);\n\nconst quote$ = merge(quoteFromPremiumIndex$, quoteFromBookTicker$, quoteFromOpenInterest$).pipe(\n groupBy((quote) => quote.product_id),\n mergeMap((group$) =>\n group$.pipe(\n scan(\n (acc, cur) =>\n Object.assign(acc, cur, {\n datasource_id: 'BINANCE',\n product_id: group$.key,\n }),\n {} as Partial<IQuote>,\n ),\n ),\n ),\n share(),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nif (process.env.WRITE_QUOTE_TO_SQL === 'true') {\n quote$\n .pipe(\n writeToSQL({\n terminal,\n tableName: 'quote',\n writeInterval: 1_000,\n conflictKeys: ['datasource_id', 'product_id'],\n }),\n )\n .subscribe();\n\n terminal.channel.publishChannel('quote', { pattern: '^BINANCE/' }, (channel_id) => {\n const [datasourceId, productId] = decodePath(channel_id);\n if (!datasourceId || !productId) {\n throw new Error(`Invalid channel_id: ${channel_id}`);\n }\n return quote$.pipe(filter((quote) => quote.product_id === productId));\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuants/vendor-binance",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"bin": "lib/cli.js",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"files": [
|
|
@@ -9,17 +9,18 @@
|
|
|
9
9
|
"temp"
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@yuants/protocol": "0.50.
|
|
13
|
-
"@yuants/data-account": "0.6.
|
|
14
|
-
"@yuants/
|
|
15
|
-
"@yuants/
|
|
16
|
-
"@yuants/
|
|
17
|
-
"@yuants/
|
|
18
|
-
"@yuants/
|
|
19
|
-
"@yuants/data-
|
|
20
|
-
"@yuants/data-
|
|
21
|
-
"@yuants/data-
|
|
22
|
-
"@yuants/
|
|
12
|
+
"@yuants/protocol": "0.50.3",
|
|
13
|
+
"@yuants/data-account": "0.6.13",
|
|
14
|
+
"@yuants/cache": "0.2.4",
|
|
15
|
+
"@yuants/data-quote": "0.2.36",
|
|
16
|
+
"@yuants/utils": "0.11.0",
|
|
17
|
+
"@yuants/data-series": "0.3.44",
|
|
18
|
+
"@yuants/sql": "0.9.23",
|
|
19
|
+
"@yuants/data-product": "0.4.14",
|
|
20
|
+
"@yuants/data-ohlc": "0.4.15",
|
|
21
|
+
"@yuants/data-order": "0.3.11",
|
|
22
|
+
"@yuants/data-interest-rate": "0.1.41",
|
|
23
|
+
"@yuants/transfer": "0.2.32",
|
|
23
24
|
"rxjs": "~7.5.6",
|
|
24
25
|
"crypto-js": "^4.2.0"
|
|
25
26
|
},
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"@rushstack/heft-node-rig": "~1.10.7",
|
|
31
32
|
"@types/heft-jest": "1.0.3",
|
|
32
33
|
"@types/node": "22",
|
|
33
|
-
"@yuants/extension": "0.2.
|
|
34
|
+
"@yuants/extension": "0.2.28",
|
|
34
35
|
"@yuants/tool-kit": "0.2.1",
|
|
35
36
|
"typescript": "~4.7.4",
|
|
36
37
|
"ts-node": "~10.9.2"
|
package/temp/package-deps.json
CHANGED
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
{
|
|
2
|
-
"apps/vendor-binance/CHANGELOG.json": "
|
|
3
|
-
"apps/vendor-binance/CHANGELOG.md": "
|
|
2
|
+
"apps/vendor-binance/CHANGELOG.json": "dd16300714b44255d7e8fc74e8a8a48f9a7d3304",
|
|
3
|
+
"apps/vendor-binance/CHANGELOG.md": "3064d218ca77b5045c54a66a8d920ca59adfd4a5",
|
|
4
4
|
"apps/vendor-binance/README.md": "4ab94c08b3d07398aee74c3264a4f87d554d20fa",
|
|
5
5
|
"apps/vendor-binance/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
|
|
6
6
|
"apps/vendor-binance/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
|
|
7
7
|
"apps/vendor-binance/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
|
|
8
8
|
"apps/vendor-binance/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
|
|
9
9
|
"apps/vendor-binance/etc/vendor-binance.api.md": "2094b84e9b5e7503f5c42b31fffee8d7db47fe7b",
|
|
10
|
-
"apps/vendor-binance/package.json": "
|
|
11
|
-
"apps/vendor-binance/src/api.ts": "
|
|
10
|
+
"apps/vendor-binance/package.json": "41eda41b65f4fcfa3dc95f0ad6fd3cee44b4ad5e",
|
|
11
|
+
"apps/vendor-binance/src/api.ts": "0c5cd2afada60d8e7ab20be65230e16aa8256921",
|
|
12
12
|
"apps/vendor-binance/src/cli.ts": "9bf6b5559a6c6f33da20e74cc6c5d702c60ec891",
|
|
13
13
|
"apps/vendor-binance/src/index.ts": "7573aa8600e289793c2e834dee11fef5a664efae",
|
|
14
14
|
"apps/vendor-binance/src/interest_rate.ts": "ee82ea130495c151b67850a8b90ca972cb8a8d84",
|
|
15
15
|
"apps/vendor-binance/src/legacy_index.ts": "4a240f03ae64527d1e73ab56af4056529b217ce5",
|
|
16
16
|
"apps/vendor-binance/src/product.ts": "ea88fc2e6d0e57ee01d13131b26eb052d8f29fb7",
|
|
17
|
-
"apps/vendor-binance/src/quote.ts": "
|
|
17
|
+
"apps/vendor-binance/src/quote.ts": "3184973a00240676040c8a4898c6a20563a9a6a6",
|
|
18
18
|
"apps/vendor-binance/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
|
|
19
|
-
"apps/vendor-binance/.rush/temp/shrinkwrap-deps.json": "
|
|
20
|
-
"libraries/protocol/temp/package-deps.json": "
|
|
21
|
-
"libraries/data-account/temp/package-deps.json": "
|
|
22
|
-
"libraries/
|
|
23
|
-
"libraries/
|
|
24
|
-
"libraries/
|
|
25
|
-
"libraries/
|
|
26
|
-
"libraries/
|
|
27
|
-
"libraries/data-
|
|
28
|
-
"libraries/data-
|
|
29
|
-
"libraries/data-
|
|
30
|
-
"libraries/
|
|
31
|
-
"libraries/
|
|
19
|
+
"apps/vendor-binance/.rush/temp/shrinkwrap-deps.json": "7b773443e30eca79d696c3c880b16f7ffcb15b02",
|
|
20
|
+
"libraries/protocol/temp/package-deps.json": "d5619e41337bc3cb7603dad78c3a2487fb6b4246",
|
|
21
|
+
"libraries/data-account/temp/package-deps.json": "a0e200bac55f413109ee3a2d49da850d8e3e8e04",
|
|
22
|
+
"libraries/cache/temp/package-deps.json": "b00b0ced57796602fd9432b4a906bf7859714443",
|
|
23
|
+
"libraries/data-quote/temp/package-deps.json": "147a06007483a4798d54c606846902d903829345",
|
|
24
|
+
"libraries/utils/temp/package-deps.json": "c58f1ca8f498315d9a0219ca8c498299a41d297b",
|
|
25
|
+
"libraries/data-series/temp/package-deps.json": "fca1fdd3f626f5db5d8e2cc69ec8c81e543541a4",
|
|
26
|
+
"libraries/sql/temp/package-deps.json": "676b90e32d2cf44d01f4e14ec0bdea08fa2a425a",
|
|
27
|
+
"libraries/data-product/temp/package-deps.json": "8a3d9080547bcd7a2515acf9f7e44bd49e585c96",
|
|
28
|
+
"libraries/data-ohlc/temp/package-deps.json": "42af211cdf8342985283a0035f235a5d9ad61283",
|
|
29
|
+
"libraries/data-order/temp/package-deps.json": "5fd2327799b8e5d6b4813bd508799c8c0d5f820e",
|
|
30
|
+
"libraries/data-interest-rate/temp/package-deps.json": "bdbfdd4ec4288222a78ca75bbd59d20d7f59a340",
|
|
31
|
+
"libraries/transfer/temp/package-deps.json": "7b16b33d2d5114bfd6b9a2eb1ddf3938041ca1b0",
|
|
32
|
+
"libraries/extension/temp/package-deps.json": "fd20507284f9fd74b4de6f9855c8cead9cc132e8",
|
|
32
33
|
"tools/toolkit/temp/package-deps.json": "23e053490eb8feade23e4d45de4e54883e322711"
|
|
33
34
|
}
|