From 999fd9b0a3be7d8392b09fe7d36e2448e1cde68e Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Thu, 4 Dec 2025 14:02:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20K=E7=BA=BF=E6=B7=BB=E5=8A=A0mock?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mocks/data/kline.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/mocks/data/kline.js b/src/mocks/data/kline.js index f614143b..1929db9f 100644 --- a/src/mocks/data/kline.js +++ b/src/mocks/data/kline.js @@ -61,6 +61,20 @@ export const generateDailyData = (indexCode, days = 30) => { return data; }; +/** + * 计算简单移动均价(用于分时图均价线) + * @param {Array} data - 已有数据 + * @param {number} currentPrice - 当前价格 + * @param {number} period - 均线周期(默认5) + * @returns {number} 均价 + */ +function calculateAvgPrice(data, currentPrice, period = 5) { + const recentPrices = data.slice(-period).map(d => d.price || d.close); + recentPrices.push(currentPrice); + const sum = recentPrices.reduce((acc, p) => acc + p, 0); + return parseFloat((sum / recentPrices.length).toFixed(2)); +} + /** * 生成时间范围内的数据 */ @@ -80,6 +94,11 @@ function generateTimeRange(data, startTime, endTime, basePrice, session) { // ✅ 修复:为分时图添加完整的 OHLC 字段 const closePrice = parseFloat(price.toFixed(2)); + + // 计算均价和涨跌幅 + const avgPrice = calculateAvgPrice(data, closePrice); + const changePercent = parseFloat(((closePrice - basePrice) / basePrice * 100).toFixed(2)); + data.push({ time: formatTime(current), timestamp: current.getTime(), // ✅ 新增:毫秒时间戳 @@ -88,6 +107,8 @@ function generateTimeRange(data, startTime, endTime, basePrice, session) { low: parseFloat((price * 0.9997).toFixed(2)), // ✅ 新增:最低价(略低于收盘) close: closePrice, // ✅ 保留:收盘价 price: closePrice, // ✅ 保留:兼容字段(供 MiniTimelineChart 使用) + avg_price: avgPrice, // ✅ 新增:均价(供 TimelineChartModal 使用) + change_percent: changePercent, // ✅ 新增:涨跌幅(供 TimelineChartModal 使用) volume: volume, prev_close: basePrice });