3.3 KiB
3.3 KiB
提醒和交易中的刷新 — 如何获取股票现价
一、提醒(自动提醒)刷新
哪些股票会参与
- 关注列表:
searchHistory(用户添加的关注股票) - 持有股票:
holdingStocks(从交易记录里计算出的当前持仓代码) - 两者合并去重后得到
allStocks,只对这些股票请求信号与价格。
价格从哪里来
-
主流程(
POST /api/signal_alerts)- 后端从
stock_signal_scan取当日扫描结果(信号、推荐等)。 - 从
stock_realtime_price表按code IN (请求的股票)取price、change_pct作为初值。 - 接口返回后,前端会再跑一遍实时价:调用
refreshAlertPricesFromRealtime(),对每条提醒分批请求GET /api/realtime_price/{code},用实时接口返回的价格覆盖显示。 - 因此最终展示的现价为实时价(麦蕊等),不是表里旧数据。
- 后端从
-
回退流程(批量失败、逐个分析且
forceRefresh)- 前端对每只股票再请求
GET /api/realtime_price/{code}更新价格,同样是实时接口。
- 前端对每只股票再请求
小结
- 刷新提醒:股票范围 = 关注 + 持仓;现价 = 先来自表,随后由 实时 API 后台更新为最新价。
二、交易中的刷新
哪些股票会参与
- 仅 当前持仓:
holdingPositions里quantity > 0的股票(即holdingStocks对应的持仓)。
价格从哪里来
-
先从不发请求的缓存更新
updateHoldingPricesFromAlerts():用stockAlerts里对应code的alert.price更新持仓的currentPrice。- 即:若之前加载过提醒,交易里会先用提醒结果里的价格(该价格本身来自
stock_realtime_price或单只实时 API)。
-
用户点击「刷新」(
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)(如麦蕊智数等)。