Merge pull request #9 from awayings/fix/bars-dialog-pagination

fix: K线取数翻页浪费——弹窗只取近2年 + fetchBars 停页判断取错端点
This commit is contained in:
Jason Zhang
2026-09-11 17:05:13 +08:00
committed by GitHub
3 changed files with 14 additions and 4 deletions
+4 -2
View File
@@ -113,9 +113,11 @@ export async function fetchBars(
allBars = allBars.concat(pageBars)
// 若已覆盖到 startDate(本页最早一根 ≤ startDate),停止翻页
// 若已覆盖到 startDate(本页最早一根 ≤ startDate),停止翻页
// 页内升序:首根才是本页最早(此前取末根=最新根,判断恒假,每个带
// startDate 的请求都多翻一页)
if (startDate && pageBars.length > 0) {
const oldest = pageBars[pageBars.length - 1].datetime.slice(0, 10)
const oldest = pageBars[0].datetime.slice(0, 10)
if (oldest <= startDate) break
}
// 不足 800 根说明已到数据起点
+5 -1
View File
@@ -74,7 +74,11 @@ async function loadMinute() {
async function loadDaily() {
dailyError.value = ''
try {
const bars = await fetchBars('SH', props.code, 'DAY', undefined, undefined)
// 日K只展示最近 250 根:取近 2 年(/bars 单页 800 根即可覆盖,避免全历史分页);
// 长期停牌取不到再退回全历史。
const since = new Date(Date.now() - 2 * 365 * 86400_000).toISOString().slice(0, 10)
let bars = await fetchBars('SH', props.code, 'DAY', since, undefined)
if (bars.length === 0) bars = await fetchBars('SH', props.code, 'DAY', undefined, undefined)
if (bars.length === 0) throw new Error('该板块无日K数据')
dailyBars.value = bars.slice(-250)
} catch (e) {
+5 -1
View File
@@ -106,7 +106,11 @@ watch(minuteDays, loadMinute)
async function loadDaily() {
dailyError.value = ''
try {
let bars = await fetchBars(props.market, props.code, 'DAY', undefined, undefined)
// 日K只展示最近 250 根:取近 2 年(/bars 单页 800 根即可覆盖,避免全历史
// 分页 5+ 页 + 深层 QFQ 负价重算);长期停牌取不到再退回全历史。
const since = new Date(Date.now() - 2 * 365 * 86400_000).toISOString().slice(0, 10)
let bars = await fetchBars(props.market, props.code, 'DAY', since, undefined)
if (bars.length === 0) bars = await fetchBars(props.market, props.code, 'DAY', undefined, undefined)
// 指数(或 /bars 空数据的服务器)回退指数接口
if (bars.length === 0) bars = await fetchIndexBars(props.market, props.code, 250)
if (bars.length === 0) throw new Error('无日K数据(可能为新股或代码有误)')