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