Files
stock/stock-html/docs/价格与刷新说明.md
freedakgmail 9c7d7abdd4 Initial commit
2026-07-17 18:49:35 +08:00

3.3 KiB
Raw Permalink Blame History

提醒和交易中的刷新 — 如何获取股票现价

一、提醒(自动提醒)刷新

哪些股票会参与

  • 关注列表searchHistory(用户添加的关注股票)
  • 持有股票holdingStocks(从交易记录里计算出的当前持仓代码)
  • 两者合并去重后得到 allStocks,只对这些股票请求信号与价格。

价格从哪里来

  1. 主流程POST /api/signal_alerts

    • 后端从 stock_signal_scan 取当日扫描结果(信号、推荐等)。
    • stock_realtime_price 表按 code IN (请求的股票)pricechange_pct 作为初值。
    • 接口返回后,前端会再跑一遍实时价:调用 refreshAlertPricesFromRealtime(),对每条提醒分批请求 GET /api/realtime_price/{code},用实时接口返回的价格覆盖显示。
    • 因此最终展示的现价为实时价(麦蕊等),不是表里旧数据。
  2. 回退流程(批量失败、逐个分析且 forceRefresh

    • 前端对每只股票再请求 GET /api/realtime_price/{code} 更新价格,同样是实时接口。

小结

  • 刷新提醒:股票范围 = 关注 + 持仓;现价 = 先来自表,随后由 实时 API 后台更新为最新价。

二、交易中的刷新

哪些股票会参与

  • 当前持仓holdingPositionsquantity > 0 的股票(即 holdingStocks 对应的持仓)。

价格从哪里来

  1. 先从不发请求的缓存更新

    • updateHoldingPricesFromAlerts():用 stockAlerts 里对应 codealert.price 更新持仓的 currentPrice
    • 即:若之前加载过提醒,交易里会先用提醒结果里的价格(该价格本身来自 stock_realtime_price 或单只实时 API)。
  2. 用户点击「刷新」refreshHoldingPrices()

    • 对每个持仓 code 调用 GET /api/realtime_price/{code}
    • 后端 realtime_price 使用 实时 API(如 get_realtime_price → 麦蕊智数等),不读 stock_realtime_price 表。
    • 拿到的价格会写回:
      • holdingPositions[code].currentPrice
      • 以及 stockAlerts 里该 code 的 price(并可能触发保存提醒缓存)。

小结

  • 交易中的「现价」:
    • 未点刷新时:来自 提醒缓存(提醒的数据又来自 stock_realtime_price 或单只实时 API)。
    • 点击刷新后:来自 实时 API/api/realtime_price/:code),与数据库表无关。

三、实施价格(现价)来源汇总

场景 股票范围 现价/实施价格来源
提醒主流程 关注 + 持仓 先表后 实时 API 覆盖(refreshAlertPricesFromRealtime
提醒回退+强制刷新 同上,逐只 GET /api/realtime_price/:code
交易-不点刷新 持仓 提醒缓存 stockAlerts[].price(已含实时价)
交易-点刷新 持仓 GET /api/realtime_price/:code与提醒刷新为同一接口

说明:提醒里更新现价与交易里「刷新价格」都调用 同一个接口 GET /api/realtime_price/:code,后端均为 get_realtime_price(stock_code)(如麦蕊智数等)。