股票交易决策助手 · XISHUI-exchange
概述
把「我该在什么价位买、买多少、跌到哪走、涨到哪卖」这个问题,交给一套可复现的量化规则回答,而不是凭感觉拍脑袋。
本技能实现一个通用的 A 股交易决策模型:输入任意 A 股的日线量价数据,输出完整的建仓/加仓/减仓/清仓价格带、做T区间、动态止损、盈亏平衡价与摊薄成本曲线,并渲染为单文件 HTML 决策仪表盘。
核心立场:模型只负责把客观量价数据翻译成结构化的价格参考,不预测涨跌、不推荐买卖。输出是"如果是这个价位、这笔金额,那么分批计划是这样",最终决策由使用者判断。
能力总览
| 能力 | 说明 | 实现文件 |
|---|---|---|
| 数据抓取 | 东方财富公开接口,免 key,自动落 CSV | scripts/fetch_data.py |
| 决策模型 | 支撑压力、止损、建仓计划、盈亏平衡 | scripts/xishui_model.py |
| HTML 仪表盘 | 单文件、无外部依赖、离线可看 | scripts/dashboard.py |
| 多标的扫描 | 批量跑模型并按低波动/低位排序 | xishui_model.py --scan |
快速开始
# 1. 抓数据(可选,模型缺失数据会自动抓)
python scripts/fetch_data.py 000426 --days 500
# 2. 跑模型
python scripts/xishui_model.py 000426 --capital 50000
# 3. 生成 HTML 仪表盘
python scripts/xishui_model.py 000426 --capital 50000 --html output/000426.html
# 4. 带持仓算盈亏平衡与摊薄成本
python scripts/xishui_model.py 000426 --cost 28.5 --shares 1000 --html output/hold.html
# 5. 多标的横向扫描
python scripts/xishui_model.py --scan 000426,002027,600519 --capital 50000
--drawdown 控制可承受回撤百分比(默认 7),直接决定止损宽度;--csv 可指定自定义数据文件。
模型逻辑
一、支撑与压力(双源交叉验证)
- 摆动高低点:以 5 日窗口找收盘价创局部高低的位置,得到真实成交转折点
- 价格聚类:把 2% 容差内的价位归并成带状(而非点状),保留成交密度权重
- 成交量分布:近 120 日按成交额在价格区间分 28 箱,找出筹码密集区
- 层级化取值:支撑位候选 = 聚类低点 + 筹码区下沿 + 60/120/250 日低点,取最近且彼此拉开 3% 以上的两个 → S1、S2
> 为什么要"拉开 3%":否则 S1 和 S2 会选到同一个价,四档分批计划退化成两档。
二、止损
止损宽度 = max(2 × ATR14, 现价 × 可承受回撤%)
硬止损价 = 现价 − 止损宽度
取 ATR 的原因是:固定百分比止损在低波动股上会被日内噪音打爆,在高波动股上又太宽。ATR 自适应。
三、四档分批建仓
| 档位 | 仓位 | 价格区间 | 逻辑 |
|---|---|---|---|
| 1 | 40% | S1 × 0.985 ~ S1 × 1.015 | 首笔试仓,验证支撑有效性 |
| 2 | 30% | S2 × 1.005 ~ S2 × 1.03 | 第二支撑位加仓 |
| 3 | 20% | S2 × 0.965 ~ S2 × 1.005 | 深度回调,摊低成本 |
| 4 | 10% | 硬止损 × 1.01 ~ S2 × 0.965 | 破位前最后试探仓 |
仓位递减(40/30/20/10)是刻意的:第一档就重仓意味着支撑判断错误时立刻大亏,越往下越轻,把"判断错了"的损失控制住。
每档股数按 A 股规则计算:100 股整数倍,扣佣金(万2.5双边)、印花税(万5卖出)、单笔最低 5 元。
四、压力与离场
- 减仓 = R1 × 0.995,清仓 = R2 × 0.995
- 压力位候选与支撑位同源:聚类高点 + 筹码区上沿 + 60/120 日高点
五、做T区间
以 BOLL 20日中轨为中枢,上下各 1.2 倍日均波幅(ATR/现价):
做T下沿 = 中轨 × (1 − 日均波幅% × 1.2)
做T上沿 = 中轨 × (1 + 日均波幅% × 1.2)
六、持仓动态盈亏平衡
传入 --cost 与 --shares 后额外计算:
- 回本价 = 成本 × (1+佣金) ÷ (1−印花税−佣金) —— 卖出手续费必须算进去,否则永远差一口气回本
- 摊薄成本曲线:按四档计划逐档模拟加仓后的加权平均成本
- 跟踪止损 = max(BOLL中轨 × 0.97, 现价 − ATR14 × 2.5) —— 盈利后自动上移
风险提示逻辑
仪表盘会自动标出四类危险信号:
| 信号 | 含义 |
|---|---|
| 现价 > 建仓区上沿 | 已错过建仓位置,不该追高 |
| 止损价 > 建仓区下沿 | 现价贴近支撑、区间极窄,等回踩 |
| 年化波动率 > 50% | 小资金账户扛不住日内波动 |
| 52 周位置 > 80% | 高位区,风险大于机会 |
选股与候选池工作流
模型解决"买不买、什么价买",选股需要另外的流程。推荐四层筛选漏斗:
- 拉候选:按主线板块获取成分股(带申万行业分类)
- 剔除:ST/*ST、次新、涨幅异常的妖股
- 板块过滤:只保留当前主线行业
- 涨幅与换手约束:剔除极端值(如单日涨幅 > 15% 或换手 > 80%)
- 资金排序:换手率 × 温和动量
- 跑模型验证:取前 3 只拉真实数据跑本模型,比对波动率与 52 周位置
- 出报告 + 仪表盘
关键判据(对 5 万级小资金尤其重要):
- 年化波动率 < 30% 优先 → 小资金最怕日内波动打爆
- 52 周位置 < 30% 优先 → 低位才有安全边际
- 单只仓位不超过总资金 50%
- 主线板块整体破位 → 无条件清仓换板块
数据纪律(踩过坑)
- 必须用不复权价。用错复权方式,止损位和支撑位会整体偏移到完全不同的价位。
- CSV 读取用
utf-8-sig(兼容有无 BOM)。 - 数据不足 60 条会直接报错 —— 指标需要足够回溯长度。
- 数据缺失时脚本会自动抓取,首次运行需网络。
注意事项
- 本技能输出不构成投资建议,是模型计算的客观参考。
- 支撑/压力位是历史统计结果,不是预测。价格可以有效击穿任何一条线。
- 模型假设流动性充足,滑点按 0.2% 估算。大宗、涨停板、ST 股的实际成交成本可能远高于此。
- 只适用于日线级别。日内交易、期权、期货不适用。
- 财报暴雷、监管政策、行业突变等事件性风险,模型完全无法捕捉。
文件索引
| 文件 | 用途 |
|---|---|
scripts/xishui_model.py |
决策模型主程序(含 --scan 多标的扫描) |
scripts/fetch_data.py |
东方财富日线抓取 |
scripts/dashboard.py |
HTML 仪表盘渲染模块 |
references/methodology.md |
指标定义、参数含义、参数调优指南 |
references/screening.md |
候选池筛选漏斗与选股判据详解 |
references/example.md |
完整实战案例(单只 + 扫描 + 持仓复盘) |