docs: 港股接入文档——SYSTEM_ARCHITECTURE加五.6节(市场抽象层/数据层/温区双市场/币种规范/现状边界)+CHANGELOG记阶段0-4变更

This commit is contained in:
hmo
2026-08-14 18:14:24 +08:00
parent 54814bb257
commit 0a1a951b18
2 changed files with 81 additions and 0 deletions
+38
View File
@@ -1,3 +1,41 @@
## 2026-08-14 — 港股接入(多市场支持,阶段0-4)
参照 A 股全链路接入港股(港股通范围)。原则:不另起炉灶(复用 A 股代码,差异收敛到市场抽象层)+ 币种统一(个股存原币 HKD,汇总转 CNY)。
### 阶段0:币种规范修复
- import_holding_xls 导入港股从"转 CNY 存"改为"存 HKD 原币"(对齐 v3 设计)
- strategy_lifecycle 删"拉港股价格即转 CNY"(价格比较与行情 HKD 原值单位一致;顺带修 price 转 CNY 但 close/high/low 未转的单位不一致 bug
- strategy_summary 删硬编码汇率 0.867 → get_hk_rate()
- mo_models.validate_portfolio 校验对齐 v3(个股 HKD 合法)
- refresh_macro_context 修恒指前缀 bugszHSI/szHSCEI → hkHSI/hkHSCEI
### 阶段1:市场抽象层(market_config.py,唯一事实源)
- market_for_code / kline_symbol / MARKETS / is_trading_now
- 收敛 6 处散落的市场前缀判断(market_data/price_monitor x2/stale_push_wlin/technical_analysis/strategy_lab),纯重构行为等价
### 阶段2:数据层
- hk_connect_list.py:港股通名单采集器(东财 MK0146 板块 620 只,push2delay 镜像避开主 host 封禁;调/调出检测;hk_connect_stocks 表)
- get_stock_pool(market='a'|'hk'|'all') 参数化(默认 'a' 行为不变)
- daily_kline_collector 港股批(hk 子命令,腾讯 hk 前缀日K;实测 608/620 成功)
### 阶段3:温区双市场
- 表迁移(migrate_regime_market.py):market_regime/strategy_regime_perf/market_indicators 重建加 (.,market) 联合主键,regime_cycles ALTER 加列;历史数据 market='a',备份 xxx_bak_20260814
- compute_regime/temp_band/regime_tracker/regime_perf 全部 market 参数化
- 恒指 hkHSI 历史回填 12 年(2014 起 3005 条日Kbackfill_hk_index.py+ 港股温区回填 2975 条(backfill_hk_regime.py
- **验证:A股 trend_down / 港股 trend_up(两市场温区相反)**
- 向后兼容:market_regime_smoothed.json 顶层键=A股,markets dict 双市场详情
### 阶段4:温区感知(买卖/重评链路)
- market_config.get_regime_temp(code):温区+温度按标的市场
- stale_push_wlin / price_monitor 信号溯源按市场
- strategy_lifecycleregenerate_all 批量 + reassess_with_context 单票重评,港股持仓用港股温区(A股路径逐字节不变)
### 待落地(依赖港股策略路线)
- strategy_router 按市场激活、港股全市场选股(scanner 扫港股通池需先有港股策略)
- cron 挂载(港股日K采集 16:30、名单周刷新)
---
## 2026-08-12 — Cron 架构梳理(3+1 环节×3+1 层 + cron 体系统一 hermes
### 背景
+43
View File
@@ -166,6 +166,49 @@ mofin_health(健康采集) → F健康 Dashboard(三层架构健康 + cron来
| */30 盘中 | strategy_executor.py | 按激活策略调度选股 scanner |
| 周五 17:00 | strategy_alert.py | 三振出局失效预警(滚动胜率/盈亏比) |
## 五.6 港股接入(多市场支持,2026-08-14 落地)
参照 A 股全链路接入港股(港股通范围)。设计原则:**不另起炉灶**——复用 A 股代码结构,市场差异点收敛到市场抽象层;**币种统一**——个股存原币(港股 HKD),计算/汇总统一转 CNY。
### 市场抽象层(market_config.py,唯一事实源)
所有市场判断/符号映射收敛于此,替代原先散落 6 处的各自实现:
| 接口 | 作用 | 规则 |
|------|------|------|
| `market_for_code(code)` | 市场判断 | 5位0/1开头 → `hk`6位 → `a`(委托 mo_models.is_hk_stock |
| `kline_symbol(code)` | 行情/K线符号 | `600519`→sh、`000001`→sz、`00700`→hk |
| `MARKETS` dict | 市场配置 | index_code / currency / has_price_limit / trading_hours(港股含午休 12:00-13:00 |
| `is_trading_now(market)` | 交易时段 | A股 9:30-11:30/13:00-15:00,港股 9:30-12:00/13:00-16:00 |
| `get_regime_temp(code)` | 温区+温度溯源 | 按标的市场返回(A股=smoothed 顶层,港股=markets.hk |
### 数据层
- **港股通名单**hk_connect_list.py → hk_connect_stocks 表):东财 MK0146 板块(push2delay 镜像,主 host push2 对 246 封禁),620 只标的,支持调入/调出检测,周级刷新。**港股通名单本身是数据层定期采集数据**(老莫定)
- **股票池**`get_stock_pool(market='a'|'hk'|'all')` 参数化(默认 'a' 行为不变;'hk'=港股通名单+港股持仓/自选)
- **港股日K**daily_kline_collector hk 批(腾讯 hk 前缀,入 stock_daily,与 A 股同表靠 code 长度区分)
### 温区双市场
- **market_regime 表**(date, market) 联合主键,同日 A/港股各一条(迁移脚本 migrate_regime_market.py4 表加 market 列+备份)
- **温区判定**compute_regime 按市场用对应指数(A股 sh000001 / 港股 hkHSI 恒生指数)
- **温度/平滑/归因**temp_band、regime_tracker、regime_perf 全部 market 参数化
- **恒指历史**hkHSI 回填 12 年(2014 起,3005 条日K + 2975 条温区)
- **向后兼容**market_regime_smoothed.json 顶层键= A 股(既有消费方 regime_gate/strategy_router 不受影响),markets dict 含双市场详情
### 币种规范(v3 重申)
- **个股一律存原币**:港股 price/cost/mv 存 HKD 原值,A 股存 CNY
- **汇总统一折算**:市值/盈亏/总资产经 mo_models.to_cny/calc_total_mv 转 CNY
- **价格比较用原值**:止损止盈/目标价与行情源(HKD)单位一致,不折算
- **显示区分币种**:港股价格带 HKD/HK$ 标识
### 现状与边界
已落地:港股通名单采集、港股日K、温区双市场(A股 trend_down / 港股 trend_up 已验证相反)、温区感知买卖/重评、币种规范。
**待落地**(依赖港股策略):strategy_router 按市场激活、港股全市场选股(scanner 扫港股通池需先有港股策略)。
**不做**:港股资金流/板块 enrichmentcninfo/sina 不支持港股)、TDX relay(已归档)。
## 六、开发原则(自动任务强约束)
1. **单例守卫**:每个定时脚本必须 `_singleton_guard`fcntl flock /tmp/mofin_locks/),防重复实例并发写(2026-08-05 进程堆积事故后统一加装)