@yuants/vendor-huobi 0.18.1 → 0.18.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/services/interest-rate-service.js +1 -9
- package/dist/services/interest-rate-service.js.map +1 -1
- package/dist/services/ohlc-service.js +5 -10
- package/dist/services/ohlc-service.js.map +1 -1
- package/lib/services/interest-rate-service.js +1 -9
- package/lib/services/interest-rate-service.js.map +1 -1
- package/lib/services/ohlc-service.js +5 -10
- package/lib/services/ohlc-service.js.map +1 -1
- package/package.json +15 -15
- package/temp/package-deps.json +19 -19
|
@@ -3,14 +3,6 @@ import { Terminal } from '@yuants/protocol';
|
|
|
3
3
|
import { decodePath, formatTime } from '@yuants/utils';
|
|
4
4
|
import { getSwapHistoricalFundingRate } from '../api/public-api';
|
|
5
5
|
const terminal = Terminal.fromNodeEnv();
|
|
6
|
-
const INGEST_SERVICE_OPTIONS = {
|
|
7
|
-
concurrent: 1,
|
|
8
|
-
max_pending_requests: 20,
|
|
9
|
-
ingress_token_capacity: 2,
|
|
10
|
-
ingress_token_refill_interval: 1000,
|
|
11
|
-
egress_token_capacity: 1,
|
|
12
|
-
egress_token_refill_interval: 1000,
|
|
13
|
-
};
|
|
14
6
|
const PAGE_SIZE = 50;
|
|
15
7
|
const computePageRangeMs = (items) => {
|
|
16
8
|
if (items.length === 0)
|
|
@@ -106,5 +98,5 @@ const fetchFundingRateBackward = async (req) => {
|
|
|
106
98
|
provideInterestRateService(terminal, {
|
|
107
99
|
product_id_prefix: 'HTX/SWAP/',
|
|
108
100
|
direction: 'backward',
|
|
109
|
-
}, fetchFundingRateBackward
|
|
101
|
+
}, fetchFundingRateBackward);
|
|
110
102
|
//# sourceMappingURL=interest-rate-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { provideInterestRateService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { decodePath, formatTime } from '@yuants/utils';\nimport { getSwapHistoricalFundingRate } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst PAGE_SIZE = 50;\n\ntype IPageRange = { minMs: number; maxMs: number };\n\nconst computePageRangeMs = (items: Array<{ funding_time: string }>): IPageRange | undefined => {\n if (items.length === 0) return undefined;\n let minMs = Infinity;\n let maxMs = -Infinity;\n for (const item of items) {\n const ms = Number(item.funding_time);\n if (isNaN(ms)) continue;\n if (ms < minMs) minMs = ms;\n if (ms > maxMs) maxMs = ms;\n }\n if (!isFinite(minMs) || !isFinite(maxMs)) return undefined;\n return { minMs, maxMs };\n};\n\nconst fetchFundingRatePage = async (params: {\n contract_code: string;\n pageIndex: number;\n}): Promise<{\n items: Array<{ funding_rate: string; funding_time: string }>;\n totalPage: number;\n}> => {\n const res = await getSwapHistoricalFundingRate({\n contract_code: params.contract_code,\n page_index: params.pageIndex,\n page_size: PAGE_SIZE,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSwapHistoricalFundingRate failed: ${res.status}`);\n }\n return {\n items: res.data.data ?? [],\n totalPage: res.data.total_page,\n };\n};\n\nconst locatePageByTimeBackward = async (params: {\n contract_code: string;\n targetMs: number;\n}): Promise<{ pageIndex: number; totalPage: number }> => {\n const first = await fetchFundingRatePage({ contract_code: params.contract_code, pageIndex: 0 });\n const totalPage = first.totalPage;\n if (!totalPage || totalPage <= 1) return { pageIndex: 0, totalPage: totalPage || 1 };\n\n const rangeCache = new Map<number, IPageRange | undefined>([[0, computePageRangeMs(first.items)]]);\n\n const getRange = async (pageIndex: number): Promise<IPageRange | undefined> => {\n if (rangeCache.has(pageIndex)) return rangeCache.get(pageIndex);\n const page = await fetchFundingRatePage({ contract_code: params.contract_code, pageIndex });\n const range = computePageRangeMs(page.items);\n rangeCache.set(pageIndex, range);\n return range;\n };\n\n let left = 0;\n let right = totalPage - 1;\n while (left <= right) {\n const mid = Math.floor((left + right) / 2);\n const range = await getRange(mid);\n if (!range) {\n right = mid - 1;\n continue;\n }\n if (params.targetMs > range.maxMs) {\n right = mid - 1;\n continue;\n }\n if (params.targetMs < range.minMs) {\n left = mid + 1;\n continue;\n }\n return { pageIndex: mid, totalPage };\n }\n\n return { pageIndex: Math.min(Math.max(0, left), totalPage - 1), totalPage };\n};\n\nconst fetchFundingRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, contract_code] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !contract_code) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const targetMs = req.time;\n const { pageIndex } = await locatePageByTimeBackward({ contract_code, targetMs });\n const page = await fetchFundingRatePage({ contract_code, pageIndex });\n\n return page.items\n .map((v): IInterestRate => {\n const ms = Number(v.funding_time);\n const rate = Number(v.funding_rate);\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'HTX',\n created_at: formatTime(ms),\n long_rate: `${-rate}`,\n short_rate: `${rate}`,\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) < targetMs);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'HTX/SWAP/',\n direction: 'backward',\n },\n fetchFundingRateBackward,\n);\n"]}
|
|
@@ -3,14 +3,6 @@ import { Terminal } from '@yuants/protocol';
|
|
|
3
3
|
import { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';
|
|
4
4
|
import { getSpotHistoryKline, getSwapHistoryKline } from '../api/public-api';
|
|
5
5
|
const terminal = Terminal.fromNodeEnv();
|
|
6
|
-
const INGEST_SERVICE_OPTIONS = {
|
|
7
|
-
concurrent: 1,
|
|
8
|
-
max_pending_requests: 20,
|
|
9
|
-
ingress_token_capacity: 2,
|
|
10
|
-
ingress_token_refill_interval: 1000,
|
|
11
|
-
egress_token_capacity: 1,
|
|
12
|
-
egress_token_refill_interval: 1000,
|
|
13
|
-
};
|
|
14
6
|
const DURATION_TO_HTX_PERIOD = {
|
|
15
7
|
PT1M: '1min',
|
|
16
8
|
PT5M: '5min',
|
|
@@ -110,10 +102,13 @@ provideOHLCService(terminal, {
|
|
|
110
102
|
product_id_prefix: 'HTX/SWAP/',
|
|
111
103
|
duration_list: Object.keys(DURATION_TO_HTX_PERIOD),
|
|
112
104
|
direction: 'backward',
|
|
113
|
-
}, fetchOHLCPageBackward
|
|
105
|
+
}, fetchOHLCPageBackward);
|
|
114
106
|
provideOHLCService(terminal, {
|
|
115
107
|
product_id_prefix: 'HTX/SPOT/',
|
|
116
108
|
duration_list: Object.keys(DURATION_TO_HTX_PERIOD),
|
|
117
109
|
direction: 'backward',
|
|
118
|
-
}, fetchSpotOHLCPageBackward,
|
|
110
|
+
}, fetchSpotOHLCPageBackward, {
|
|
111
|
+
egress_token_capacity: 4500,
|
|
112
|
+
egress_token_refill_interval: 300000,
|
|
113
|
+
});
|
|
119
114
|
//# sourceMappingURL=ohlc-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getSpotHistoryKline, getSwapHistoryKline } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst DURATION_TO_HTX_PERIOD: Record<string, string> = {\n PT1M: '1min',\n PT5M: '5min',\n PT15M: '15min',\n PT30M: '30min',\n PT1H: '60min',\n PT4H: '4hour',\n P1D: '1day',\n P1W: '1week',\n};\n\nconst DEFAULT_BAR_COUNT = 500;\n\nconst fetchSpotOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'SPOT' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSpotHistoryKline({\n symbol: symbol.toLowerCase(),\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSpotHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, contract_code] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !contract_code) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSwapHistoryKline({\n contract_code,\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSwapHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SWAP/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SPOT/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchSpotOHLCPageBackward,\n {\n egress_token_capacity: 4500,\n egress_token_refill_interval: 300_000,\n },\n);\n"]}
|
|
@@ -5,14 +5,6 @@ const protocol_1 = require("@yuants/protocol");
|
|
|
5
5
|
const utils_1 = require("@yuants/utils");
|
|
6
6
|
const public_api_1 = require("../api/public-api");
|
|
7
7
|
const terminal = protocol_1.Terminal.fromNodeEnv();
|
|
8
|
-
const INGEST_SERVICE_OPTIONS = {
|
|
9
|
-
concurrent: 1,
|
|
10
|
-
max_pending_requests: 20,
|
|
11
|
-
ingress_token_capacity: 2,
|
|
12
|
-
ingress_token_refill_interval: 1000,
|
|
13
|
-
egress_token_capacity: 1,
|
|
14
|
-
egress_token_refill_interval: 1000,
|
|
15
|
-
};
|
|
16
8
|
const PAGE_SIZE = 50;
|
|
17
9
|
const computePageRangeMs = (items) => {
|
|
18
10
|
if (items.length === 0)
|
|
@@ -108,5 +100,5 @@ const fetchFundingRateBackward = async (req) => {
|
|
|
108
100
|
(0, exchange_1.provideInterestRateService)(terminal, {
|
|
109
101
|
product_id_prefix: 'HTX/SWAP/',
|
|
110
102
|
direction: 'backward',
|
|
111
|
-
}, fetchFundingRateBackward
|
|
103
|
+
}, fetchFundingRateBackward);
|
|
112
104
|
//# sourceMappingURL=interest-rate-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":";;AACA,+CAA8D;AAC9D,+
|
|
1
|
+
{"version":3,"file":"interest-rate-service.js","sourceRoot":"","sources":["../../src/services/interest-rate-service.ts"],"names":[],"mappings":";;AACA,+CAA8D;AAC9D,+CAA4C;AAC5C,yCAAuD;AACvD,kDAAiE;AAEjE,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;AAExC,MAAM,SAAS,GAAG,EAAE,CAAC;AAIrB,MAAM,kBAAkB,GAAG,CAAC,KAAsC,EAA0B,EAAE;IAC5F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,QAAQ,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS;QACxB,IAAI,EAAE,GAAG,KAAK;YAAE,KAAK,GAAG,EAAE,CAAC;QAC3B,IAAI,EAAE,GAAG,KAAK;YAAE,KAAK,GAAG,EAAE,CAAC;KAC5B;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,MAGnC,EAGE,EAAE;;IACH,MAAM,GAAG,GAAG,MAAM,IAAA,yCAA4B,EAAC;QAC7C,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;KAC3E;IACD,OAAO;QACL,KAAK,EAAE,MAAA,GAAG,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE;QAC1B,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;KAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,KAAK,EAAE,MAGvC,EAAqD,EAAE;IACtD,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAChG,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;IAErF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAiC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnG,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAiB,EAAmC,EAAE;QAC5E,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC;IAC1B,OAAO,IAAI,IAAI,KAAK,EAAE;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,SAAS;SACV;QACD,IAAI,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE;YACjC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,SAAS;SACV;QACD,IAAI,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE;YACjC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,SAAS;SACV;QACD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;KACtC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,KAAK,EAAE,GAIvC,EAA4B,EAAE;IAC7B,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/D,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAExG,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,wBAAwB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtE,OAAO,IAAI,CAAC,KAAK;SACd,GAAG,CAAC,CAAC,CAAC,EAAiB,EAAE;QACxB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACpC,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,IAAA,kBAAU,EAAC,EAAE,CAAC;YAC1B,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE;YACrB,UAAU,EAAE,GAAG,IAAI,EAAE;YACrB,gBAAgB,EAAE,EAAE;SACrB,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,IAAA,qCAA0B,EACxB,QAAQ,EACR;IACE,iBAAiB,EAAE,WAAW;IAC9B,SAAS,EAAE,UAAU;CACtB,EACD,wBAAwB,CACzB,CAAC","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { provideInterestRateService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { decodePath, formatTime } from '@yuants/utils';\nimport { getSwapHistoricalFundingRate } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst PAGE_SIZE = 50;\n\ntype IPageRange = { minMs: number; maxMs: number };\n\nconst computePageRangeMs = (items: Array<{ funding_time: string }>): IPageRange | undefined => {\n if (items.length === 0) return undefined;\n let minMs = Infinity;\n let maxMs = -Infinity;\n for (const item of items) {\n const ms = Number(item.funding_time);\n if (isNaN(ms)) continue;\n if (ms < minMs) minMs = ms;\n if (ms > maxMs) maxMs = ms;\n }\n if (!isFinite(minMs) || !isFinite(maxMs)) return undefined;\n return { minMs, maxMs };\n};\n\nconst fetchFundingRatePage = async (params: {\n contract_code: string;\n pageIndex: number;\n}): Promise<{\n items: Array<{ funding_rate: string; funding_time: string }>;\n totalPage: number;\n}> => {\n const res = await getSwapHistoricalFundingRate({\n contract_code: params.contract_code,\n page_index: params.pageIndex,\n page_size: PAGE_SIZE,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSwapHistoricalFundingRate failed: ${res.status}`);\n }\n return {\n items: res.data.data ?? [],\n totalPage: res.data.total_page,\n };\n};\n\nconst locatePageByTimeBackward = async (params: {\n contract_code: string;\n targetMs: number;\n}): Promise<{ pageIndex: number; totalPage: number }> => {\n const first = await fetchFundingRatePage({ contract_code: params.contract_code, pageIndex: 0 });\n const totalPage = first.totalPage;\n if (!totalPage || totalPage <= 1) return { pageIndex: 0, totalPage: totalPage || 1 };\n\n const rangeCache = new Map<number, IPageRange | undefined>([[0, computePageRangeMs(first.items)]]);\n\n const getRange = async (pageIndex: number): Promise<IPageRange | undefined> => {\n if (rangeCache.has(pageIndex)) return rangeCache.get(pageIndex);\n const page = await fetchFundingRatePage({ contract_code: params.contract_code, pageIndex });\n const range = computePageRangeMs(page.items);\n rangeCache.set(pageIndex, range);\n return range;\n };\n\n let left = 0;\n let right = totalPage - 1;\n while (left <= right) {\n const mid = Math.floor((left + right) / 2);\n const range = await getRange(mid);\n if (!range) {\n right = mid - 1;\n continue;\n }\n if (params.targetMs > range.maxMs) {\n right = mid - 1;\n continue;\n }\n if (params.targetMs < range.minMs) {\n left = mid + 1;\n continue;\n }\n return { pageIndex: mid, totalPage };\n }\n\n return { pageIndex: Math.min(Math.max(0, left), totalPage - 1), totalPage };\n};\n\nconst fetchFundingRateBackward = async (req: {\n product_id: string;\n time: number;\n series_id: string;\n}): Promise<IInterestRate[]> => {\n const [, instType, contract_code] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !contract_code) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const targetMs = req.time;\n const { pageIndex } = await locatePageByTimeBackward({ contract_code, targetMs });\n const page = await fetchFundingRatePage({ contract_code, pageIndex });\n\n return page.items\n .map((v): IInterestRate => {\n const ms = Number(v.funding_time);\n const rate = Number(v.funding_rate);\n return {\n series_id: req.series_id,\n product_id: req.product_id,\n datasource_id: 'HTX',\n created_at: formatTime(ms),\n long_rate: `${-rate}`,\n short_rate: `${rate}`,\n settlement_price: '',\n };\n })\n .filter((x) => Date.parse(x.created_at) < targetMs);\n};\n\nprovideInterestRateService(\n terminal,\n {\n product_id_prefix: 'HTX/SWAP/',\n direction: 'backward',\n },\n fetchFundingRateBackward,\n);\n"]}
|
|
@@ -5,14 +5,6 @@ const protocol_1 = require("@yuants/protocol");
|
|
|
5
5
|
const utils_1 = require("@yuants/utils");
|
|
6
6
|
const public_api_1 = require("../api/public-api");
|
|
7
7
|
const terminal = protocol_1.Terminal.fromNodeEnv();
|
|
8
|
-
const INGEST_SERVICE_OPTIONS = {
|
|
9
|
-
concurrent: 1,
|
|
10
|
-
max_pending_requests: 20,
|
|
11
|
-
ingress_token_capacity: 2,
|
|
12
|
-
ingress_token_refill_interval: 1000,
|
|
13
|
-
egress_token_capacity: 1,
|
|
14
|
-
egress_token_refill_interval: 1000,
|
|
15
|
-
};
|
|
16
8
|
const DURATION_TO_HTX_PERIOD = {
|
|
17
9
|
PT1M: '1min',
|
|
18
10
|
PT5M: '5min',
|
|
@@ -112,10 +104,13 @@ const fetchOHLCPageBackward = async (req) => {
|
|
|
112
104
|
product_id_prefix: 'HTX/SWAP/',
|
|
113
105
|
duration_list: Object.keys(DURATION_TO_HTX_PERIOD),
|
|
114
106
|
direction: 'backward',
|
|
115
|
-
}, fetchOHLCPageBackward
|
|
107
|
+
}, fetchOHLCPageBackward);
|
|
116
108
|
(0, exchange_1.provideOHLCService)(terminal, {
|
|
117
109
|
product_id_prefix: 'HTX/SPOT/',
|
|
118
110
|
duration_list: Object.keys(DURATION_TO_HTX_PERIOD),
|
|
119
111
|
direction: 'backward',
|
|
120
|
-
}, fetchSpotOHLCPageBackward,
|
|
112
|
+
}, fetchSpotOHLCPageBackward, {
|
|
113
|
+
egress_token_capacity: 4500,
|
|
114
|
+
egress_token_refill_interval: 300000,
|
|
115
|
+
});
|
|
121
116
|
//# sourceMappingURL=ohlc-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":";;AACA,+CAAsD;AACtD,+
|
|
1
|
+
{"version":3,"file":"ohlc-service.js","sourceRoot":"","sources":["../../src/services/ohlc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { IOHLC } from '@yuants/data-ohlc';\nimport { provideOHLCService } from '@yuants/exchange';\nimport { Terminal } from '@yuants/protocol';\nimport { convertDurationToOffset, decodePath, formatTime } from '@yuants/utils';\nimport { getSpotHistoryKline, getSwapHistoryKline } from '../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst DURATION_TO_HTX_PERIOD: Record<string, string> = {\n PT1M: '1min',\n PT5M: '5min',\n PT15M: '15min',\n PT30M: '30min',\n PT1H: '60min',\n PT4H: '4hour',\n P1D: '1day',\n P1W: '1week',\n};\n\nconst DEFAULT_BAR_COUNT = 500;\n\nconst fetchSpotOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, symbol] = decodePath(req.product_id);\n if (instType !== 'SPOT' || !symbol) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSpotHistoryKline({\n symbol: symbol.toLowerCase(),\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSpotHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nconst fetchOHLCPageBackward = async (req: {\n product_id: string;\n duration: string;\n time: number;\n series_id: string;\n}): Promise<IOHLC[]> => {\n const [, instType, contract_code] = decodePath(req.product_id);\n if (instType !== 'SWAP' || !contract_code) throw new Error(`Unsupported product_id: ${req.product_id}`);\n\n const period = DURATION_TO_HTX_PERIOD[req.duration];\n if (!period) throw new Error(`Unsupported duration: ${req.duration}`);\n\n const offset = convertDurationToOffset(req.duration);\n const endedAtMs = req.time;\n\n const to = Math.floor(endedAtMs / 1000);\n const from = Math.max(0, Math.floor((endedAtMs - DEFAULT_BAR_COUNT * offset) / 1000));\n\n const res = await getSwapHistoryKline({\n contract_code,\n period,\n size: DEFAULT_BAR_COUNT,\n from,\n to,\n });\n if (res.status !== 'ok') {\n throw new Error(`HTX getSwapHistoryKline failed: ${res.status}`);\n }\n\n return (res.data ?? [])\n .map((k): IOHLC => {\n const createdAtMs = k.id * 1000;\n return {\n series_id: req.series_id,\n datasource_id: 'HTX',\n product_id: req.product_id,\n duration: req.duration,\n created_at: formatTime(createdAtMs),\n closed_at: formatTime(createdAtMs + offset),\n open: `${k.open}`,\n high: `${k.high}`,\n low: `${k.low}`,\n close: `${k.close}`,\n volume: `${k.vol}`,\n open_interest: '0',\n };\n })\n .filter((x) => Date.parse(x.created_at) < endedAtMs);\n};\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SWAP/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchOHLCPageBackward,\n);\n\nprovideOHLCService(\n terminal,\n {\n product_id_prefix: 'HTX/SPOT/',\n duration_list: Object.keys(DURATION_TO_HTX_PERIOD),\n direction: 'backward',\n },\n fetchSpotOHLCPageBackward,\n {\n egress_token_capacity: 4500,\n egress_token_refill_interval: 300_000,\n },\n);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuants/vendor-huobi",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.2",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -8,19 +8,19 @@
|
|
|
8
8
|
"temp"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@yuants/protocol": "0.53.
|
|
12
|
-
"@yuants/data-account": "0.11.
|
|
13
|
-
"@yuants/data-order": "0.7.
|
|
14
|
-
"@yuants/data-ohlc": "0.5.
|
|
15
|
-
"@yuants/transfer": "0.2.
|
|
16
|
-
"@yuants/utils": "0.
|
|
17
|
-
"@yuants/cache": "0.3.
|
|
18
|
-
"@yuants/sql": "0.9.
|
|
19
|
-
"@yuants/data-product": "0.5.
|
|
20
|
-
"@yuants/data-series": "0.3.
|
|
21
|
-
"@yuants/data-interest-rate": "0.2.
|
|
22
|
-
"@yuants/data-quote": "0.4.
|
|
23
|
-
"@yuants/exchange": "0.8.
|
|
11
|
+
"@yuants/protocol": "0.53.5",
|
|
12
|
+
"@yuants/data-account": "0.11.2",
|
|
13
|
+
"@yuants/data-order": "0.7.3",
|
|
14
|
+
"@yuants/data-ohlc": "0.5.1",
|
|
15
|
+
"@yuants/transfer": "0.2.42",
|
|
16
|
+
"@yuants/utils": "0.17.0",
|
|
17
|
+
"@yuants/cache": "0.3.6",
|
|
18
|
+
"@yuants/sql": "0.9.33",
|
|
19
|
+
"@yuants/data-product": "0.5.3",
|
|
20
|
+
"@yuants/data-series": "0.3.55",
|
|
21
|
+
"@yuants/data-interest-rate": "0.2.1",
|
|
22
|
+
"@yuants/data-quote": "0.4.2",
|
|
23
|
+
"@yuants/exchange": "0.8.3",
|
|
24
24
|
"rxjs": "~7.5.6"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@rushstack/heft-node-rig": "~1.10.7",
|
|
31
31
|
"@types/heft-jest": "1.0.3",
|
|
32
32
|
"@types/node": "22",
|
|
33
|
-
"@yuants/extension": "0.2.
|
|
33
|
+
"@yuants/extension": "0.2.34",
|
|
34
34
|
"@yuants/tool-kit": "0.2.1",
|
|
35
35
|
"typescript": "~4.7.4"
|
|
36
36
|
},
|
package/temp/package-deps.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"apps/vendor-huobi/CHANGELOG.json": "
|
|
3
|
-
"apps/vendor-huobi/CHANGELOG.md": "
|
|
2
|
+
"apps/vendor-huobi/CHANGELOG.json": "d73b95704681b5e91682c4304dcf9db81c5fcdb7",
|
|
3
|
+
"apps/vendor-huobi/CHANGELOG.md": "357a327c939469b5c1c8aa79534c8dc95d1d1aac",
|
|
4
4
|
"apps/vendor-huobi/README.md": "d7bf0149513114eab5500a6b5c9e7cba10565572",
|
|
5
5
|
"apps/vendor-huobi/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
|
|
6
6
|
"apps/vendor-huobi/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
|
|
7
7
|
"apps/vendor-huobi/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
|
|
8
8
|
"apps/vendor-huobi/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
|
|
9
9
|
"apps/vendor-huobi/etc/vendor-huobi.api.md": "dc8cbf2a044a227b30a4ee9701b0c97328244724",
|
|
10
|
-
"apps/vendor-huobi/package.json": "
|
|
10
|
+
"apps/vendor-huobi/package.json": "8b59c9a85a4c0d637466ae1d77f3bec2c40d1b5c",
|
|
11
11
|
"apps/vendor-huobi/src/__archived/account-info.ts": "5c325d3bb8839476c11f25693326ce05f3321ebd",
|
|
12
12
|
"apps/vendor-huobi/src/__archived/api.ts": "8366151dc881b177d0478fb328a601a11e33cd35",
|
|
13
13
|
"apps/vendor-huobi/src/__archived/transfer.ts": "fd299ad82ff31344460967f2a938b8f36c879259",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"apps/vendor-huobi/src/services/accounts/super-margin.ts": "ff885947334f43085aacb6e8c37b997afee2b7f6",
|
|
19
19
|
"apps/vendor-huobi/src/services/accounts/swap.ts": "91ef044f09ed3dddd7b0d32116a16c78f74ba9be",
|
|
20
20
|
"apps/vendor-huobi/src/services/exchange.ts": "6fed94206a22c43d3c6890cf52ff054a24d98d82",
|
|
21
|
-
"apps/vendor-huobi/src/services/interest-rate-service.ts": "
|
|
21
|
+
"apps/vendor-huobi/src/services/interest-rate-service.ts": "3180227cd8fe336e187ad7a90bf3ce1bb7dfc7f7",
|
|
22
22
|
"apps/vendor-huobi/src/services/market-data/interest_rate.ts": "79aa362f9fa90e612f9813d0b45d357b96189f3e",
|
|
23
23
|
"apps/vendor-huobi/src/services/market-data/quote.ts": "2f5883a95b11cf19c1a9a595567f9369b360cccf",
|
|
24
|
-
"apps/vendor-huobi/src/services/ohlc-service.ts": "
|
|
24
|
+
"apps/vendor-huobi/src/services/ohlc-service.ts": "914f75705e0ad396b537e4b55334419206526160",
|
|
25
25
|
"apps/vendor-huobi/src/services/orders/listOrders.ts": "1cf4621727fb290f8e5fd1439765fd73387bda7a",
|
|
26
26
|
"apps/vendor-huobi/src/services/orders/submitOrder.ts": "c6b0625d4922d5188ef042893865e029f5123f24",
|
|
27
27
|
"apps/vendor-huobi/src/services/product.ts": "096feb6e1348910242e814ca45848afa3b5bff98",
|
|
@@ -29,19 +29,19 @@
|
|
|
29
29
|
"apps/vendor-huobi/src/services/uid.ts": "b71c27a6a0debdd9365dea35306f4763327aca2f",
|
|
30
30
|
"apps/vendor-huobi/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
|
|
31
31
|
"apps/vendor-huobi/.rush/temp/shrinkwrap-deps.json": "237a816d6e825b5bd2a0fc742f5d055c19e37d3d",
|
|
32
|
-
"libraries/protocol/temp/package-deps.json": "
|
|
33
|
-
"libraries/data-account/temp/package-deps.json": "
|
|
34
|
-
"libraries/data-order/temp/package-deps.json": "
|
|
35
|
-
"libraries/data-ohlc/temp/package-deps.json": "
|
|
36
|
-
"libraries/transfer/temp/package-deps.json": "
|
|
37
|
-
"libraries/utils/temp/package-deps.json": "
|
|
38
|
-
"libraries/cache/temp/package-deps.json": "
|
|
39
|
-
"libraries/sql/temp/package-deps.json": "
|
|
40
|
-
"libraries/data-product/temp/package-deps.json": "
|
|
41
|
-
"libraries/data-series/temp/package-deps.json": "
|
|
42
|
-
"libraries/data-interest-rate/temp/package-deps.json": "
|
|
43
|
-
"libraries/data-quote/temp/package-deps.json": "
|
|
44
|
-
"libraries/exchange/temp/package-deps.json": "
|
|
45
|
-
"libraries/extension/temp/package-deps.json": "
|
|
32
|
+
"libraries/protocol/temp/package-deps.json": "359ac43a7382bafa1f91541e084256baec86d40b",
|
|
33
|
+
"libraries/data-account/temp/package-deps.json": "a94782e226c47a0f5198a5cca619ae7815055f4a",
|
|
34
|
+
"libraries/data-order/temp/package-deps.json": "e89dd8f11cdbe84eb8bdf474105abccdf51abfaa",
|
|
35
|
+
"libraries/data-ohlc/temp/package-deps.json": "919692801e80ce34e9af7470712ac4d1c0086af7",
|
|
36
|
+
"libraries/transfer/temp/package-deps.json": "266da813de0fc7b8de0acb4f1a561bd5cab7f294",
|
|
37
|
+
"libraries/utils/temp/package-deps.json": "acd039ba8f5f93e664764ad2c8474878bd105c3b",
|
|
38
|
+
"libraries/cache/temp/package-deps.json": "6f7f290f9a9c2e42e937d8ce3b55a6b541d2e835",
|
|
39
|
+
"libraries/sql/temp/package-deps.json": "43f7034c83d7ac4b6c4224b8e916ac39fd78057d",
|
|
40
|
+
"libraries/data-product/temp/package-deps.json": "00c23f21d7977f38a942ed06f4812e5ddc2b6248",
|
|
41
|
+
"libraries/data-series/temp/package-deps.json": "ba6b4e5b9beec9dbe54fcdc12820d8af70356d50",
|
|
42
|
+
"libraries/data-interest-rate/temp/package-deps.json": "5f955d9b9c04936964ba20a37d5e00816fb33f67",
|
|
43
|
+
"libraries/data-quote/temp/package-deps.json": "6ee7c2a4c28dd7947039fd9561ff045400848bde",
|
|
44
|
+
"libraries/exchange/temp/package-deps.json": "a254260f066adc3e196d020f7eae7354db045404",
|
|
45
|
+
"libraries/extension/temp/package-deps.json": "89c372a6eab7dfe766edc0b102492364aa8684fe",
|
|
46
46
|
"tools/toolkit/temp/package-deps.json": "23e053490eb8feade23e4d45de4e54883e322711"
|
|
47
47
|
}
|