61e8da1e8b
Read-only 1H index candles, point amplitude metrics, history save and CSV export; no order-path changes. Co-authored-by: Cursor <cursoragent@cursor.com>
9.0 KiB
9.0 KiB
标的时段振幅统计 — 开发方案
状态:方案冻结(按本文实现;改需求先改本文).
范围:中控新增只读统计工具;不改开平仓、不接 AI 教练(首版).
数据源:仅 OKX.
相关:交易执行手册-期权与Gate.md(16:00 会话窗纪律) · 振幅统计说明.md
1. 目标
在中控提供 自定义时段、固定 16:00 收窗 的历史振幅档案:
- 标的下拉:
ETH/BTC(默认 ETH) - 按整点起点 + 终点固定北京时间 16:00 切出每日统计窗
- 回溯周期可选(1 月 / 2 月 / 3 月 / 半年 / 1 年 / 自定义)
- 日表明细分页展示;下方为汇总统计
- 每次有效计算可写入 历史;支持 下载(明细 + 统计摘要)
定位:服务一天期期权开仓前的「空间」判断(已实现波动点数档案),不算 IV / 权利金 / Greeks.
2. 不做(首版外)
- 币安 / Gate 等非 OKX 价源
- 百分比振幅列(可后加「参考 %」,不进必须统计)
- 未完成窗(当天尚未到 16:00)计入样本
- 自动推送企业微信 / 注入交易教练
- 中控代下单或改期权仓
3. 时间与样本规则
3.1 时区与终点
- 时区:Asia/Shanghai(北京时间)
- 到期/收窗时刻固定
16:00,不可改 - 起点时刻:仅整点
00:00~23:00(下拉选择)
3.2 跨天切窗(结算日 D)
对每个结算日 D(窗终点 = D 日 16:00):
| 起点整点 T | 窗起点 | 窗终点 |
|---|---|---|
T >= 16:00 |
D-1 日 T:00 | D 日 16:00 |
T < 16:00 |
D 日 T:00 | D 日 16:00 |
示例:
| 用户选择 | 某一结算日 D 的实际窗 |
|---|---|
| 16:00 → 16:00 | D-1 16:00 → D 16:00 |
| 22:00 → 16:00 | D-1 22:00 → D 16:00 |
| 08:00 → 16:00 | D 08:00 → D 16:00 |
3.3 回溯周期
| 选项 | 含义(完整收窗个数,约) |
|---|---|
| 1 个月 | 约 30 个结算日 |
| 2 个月 | 约 60 个结算日(默认推荐) |
| 3 个月 | 约 90 个结算日 |
| 半年 | 约 180 个结算日 |
| 1 年 | 约 365 个结算日 |
| 自定义 | 用户输入天数 N(7~400,可配置上下限) |
说明:
- 「月」按 日历回溯 + 完整 16:00 收窗 计数,不足整天的末日不入样
- 仅纳入 已结束 的窗(
now >= D 16:00);进行中的今天不入样
3.4 标的与价源(OKX)
| UI 下拉 | 价源(优先) | 降级(仅指数失败时) |
|---|---|---|
| ETH | OKX ETH-USD 指数 | OKX ETH/USDT 永续标记 |
| BTC | OKX BTC-USD 指数 | OKX BTC/USDT 永续标记 |
约束:
- 交易所固定 OKX,UI 不提供其它所
- 具体指数/合约符号以实现时 OKX 接口与
hub_ohlcv对齐为准;结果与下载须标注exchange=okx+ 实际价源 - K 线粒度:1H(与整点起止对齐,优先);同一作业内不得混用粒度.若后续要更细高低点,可升 5m/1m(P2)
4. 指标口径(点数,非百分比)
全部为 绝对价格点数(标的报价差;BTC/ETH 各自用自身价格刻度).
设窗内:
O= 起点时刻价(或起点分钟 K 的 open)H= 窗内最高L= 窗内最低C= 终点 16:00 价(或该分钟 close)
| 字段 | 算法 | 例(O=2000,H=2500,L=1800) |
|---|---|---|
| 开盘价 | O |
2000 |
| 最高价 | H |
2500 |
| 最低价 | L |
1800 |
| 收盘/窗末价 | C |
(另算) |
| 开→高距离 | H − O |
500 |
| 开→低距离 | O − L |
200 |
| 振幅 | (H−O)+(O−L) = H−L |
700 |
| 涨跌值 | C − O(可正负) |
可选列,首版建议保留 |
必须统计(汇总层):
- 最大振幅(值 + 对应结算日)
- 开→高距离:最大、均值(建议)
- 开→低距离:最大、均值(建议)
可选汇总(首版建议带上,成本低):
- 振幅均值 / 中位数
- 上涨窗占比(
C>O)、下跌窗占比 - 振幅 ≥ 用户阈值 X 点数的天数(X 可填,默认空=不算)
5. 界面(中控)
5.1 入口
- 顶栏新增导航项:**「振幅统计」**或 「期权统计」(最终文案实现时定一处;设置里可隐藏)
- 手机端进「更多」
5.2 Tab
| Tab | 作用 |
|---|---|
| 统计 | 配参数 → 计算 → 看日表+汇总 → 下载 / 存历史 |
| 历史 | 过往作业列表;打开复看;再下载 |
5.3 「统计」页布局
- 参数区
- 标的:下拉
ETH/BTC(默认 ETH) - 数据源:只读展示
OKX - 起点整点:下拉
00~23(默认16) - 终点:固定展示
16:00(不可改) - 周期:单选
1月 / 2月 / 3月 / 半年 / 1年 / 自定义 - 自定义天数:仅自定义时显示
- 按钮:
计算·保存到历史·下载
- 标的:下拉
- 日表明细(分页,如每页 20 行;排序默认结算日倒序)
- 下方汇总区(本次全样本,不是当前页)
5.4 「历史」页
每条记录至少:
- 创建时间、标的、起点整点、周期/天数、价源(OKX+指数/标记)、样本数
- 最大振幅(+日期)
- 操作:查看 / 下载 / 删除
写入规则(建议): 用户点击 「保存到历史」 才入库;仅点「计算」不自动灌历史(避免误点刷屏).若产品坚持「输入一次就算进历史」,可改为计算成功自动写入——实现前在本文改为冻结口径.
当前方案冻结倾向:显式「保存到历史」.
6. 下载
格式:优先 CSV(UTF-8 BOM,Excel 可开);或单文件双段.
必须包含:
- 日表明细(本次全部结算日,非当前页)
- 统计摘要:标的、交易所 OKX、价源、最大振幅(+日)、开→高最大/均值、开→低最大/均值、样本数、起点整点、终点 16:00、周期、生成时间
文件名示例:okx_eth_amp_22to16_60d_20260723.csv / okx_btc_amp_16to16_90d_20260723.csv
7. 数据与实现要点
7.1 复用
- 优先复用中控
hub_ohlcv/hub_kline_store,按exchange_key=okx+ 标的对应指数/合约拉齐历史 K 线并本地缓存 - 首次 1 年 × 1m 数据量较大:计算前检查缓存覆盖;缺口再增量拉取;UI 显示进度/耗时提示
- BTC / ETH 缓存键分离
7.2 后端模块(建议)
| 路径 | 职责 |
|---|---|
lib/hub/amp_stats_lib.py |
标的映射、切窗、算日行、汇总 |
manual_trading_hub/ 路由 + 静态页 |
UI / API |
manual_trading_hub/amp_stats_history.json(或 sqlite) |
历史作业 |
7.3 API 草稿
| 方法 | 路径 | 说明 |
|---|---|---|
POST |
/api/amp-stats/compute |
body: symbol(eth|btc), start_hour, period|days → 日表+汇总 |
GET |
/api/amp-stats/history |
历史列表(可按 symbol 筛选) |
POST |
/api/amp-stats/history |
保存当前结果 |
GET |
/api/amp-stats/history/{id} |
详情 |
DELETE |
/api/amp-stats/history/{id} |
删除 |
GET |
/api/amp-stats/export |
query 或 history id → 文件下载 |
7.4 性能
- 2 个月 × 1m:可接受同步(数十秒级需有 loading)
- 1 年:建议异步任务或分块拉齐后再算;首版可限制「自定义 > 180 天」需确认二次点击
8. 验收清单
- 标的下拉 ETH / BTC 可切换;数据源固定 OKX
- 起点仅整点;终点 UI 固定 16:00
22→16/16→16/08→16跨天规则与 §3.2 一致- 周期六档 + 自定义天数生效;默认 2 个月
- 日表含:开高低收、开→高、开→低、振幅(点数)、涨跌值
- 例:O=2000,H=2500,L=1800 → 开→高 500、开→低 200、振幅 700
- 汇总含最大振幅(+日)、开→高/开→低统计
- 分页只影响展示;汇总与下载用全样本
- 未到 16:00 的当日不入样
- 保存历史含标的字段 / 回看 / 删除
- 下载含明细 + 统计摘要(含标的与 OKX)
- 电脑与手机均可完成计算与下载(手机下载走系统分享/保存即可)
9. 分期
| 阶段 | 内容 |
|---|---|
| P0 | 统计 Tab:标的下拉(ETH/BTC) + 参数 + 计算 + 日表分页 + 汇总 + 下载(不经历史) |
| P1 | 历史 Tab:保存 / 列表 / 回看 / 再下载 / 删除 |
| P2 | 缓存加速、长周期异步、振幅阈值天数、可选 % 参考列 |
10. 待冻结(实现前确认)
| # | 问题 | 当前倾向 |
|---|---|---|
| 1 | 历史写入:自动 vs 点保存 | 点保存 |
| 2 | 下载 CSV vs Excel | CSV |
| 3 | 价源 | OKX 指数优先(ETH-USD / BTC-USD);失败再降级永续标记 |
| 4 | K 线 1m vs 5m vs 1H | 1H(整点窗) |
| 5 | 导航文案 | 「振幅统计」 |
已冻结(开工口径): 点保存进历史 · CSV · OKX 指数优先 · 1H K 线(整点对齐,降低拉取量;与整点窗一致) · 导航「振幅统计」.
确认后将本文状态改为 方案冻结,再开工实现.
11. 修订记录
| 日期 | 说明 |
|---|---|
| 2026-07-23 | 初稿:中控 ETH 时段振幅统计;点数口径;周期档位;16:00 固定收窗;历史+下载 |
| 2026-07-23 | 支持 BTC/ETH 下拉;数据源固定 OKX 指数(可降级永续标记);模块/API 改名为 amp-stats |