方法论专题: 威廉·欧奈尔 William O'Neil CANSLIM · 马克·米勒维尼 Mark Minervini SEPA
仓位金额 = (账户总额 × 单笔风险百分比) ÷ 止损百分比
`
示例:账户 10万,单笔风险 1%(1000元),买入价 50,止损 47(亏 6%)
→ 仓位 = 1000 ÷ 6% = 16,667 元 ≈ 账户 16.7%
精髓:止损越紧,可以买得越重;止损越宽,仓位越小。
---
二、组合仓位结构(集中而非分散)
| 账户规模 | 持股数量 |
|---|---|
| < 2 万 | 2–3 只 |
| 2 万 – 20 万 | 4–5 只 |
| 20 万 – 100 万 | 5–6 只 |
| > 100 万 | 通常 ≤ 6–7 只 |
- Minervini 实战组合:4–8 只,单只最大可达 20%–25%
- 两人都反对持有 15 只以上股票
---
三、分批建仓与金字塔加码
- 初始仓位:先建立计划仓位的一半
- 加码节奏:每上涨 2%–3% 加一笔,5% 以内完成全部建仓
- 关键原则:每次加仓金额 < 前一次(底大顶小)
- 自由套利(Free-roll):浮盈覆盖整体止损后,止损上移到成本价 → 零风险持仓
---
四、止损纪律
- O'Neil 铁律:买入后下跌 7%–8% 无条件卖出
- Minervini 严格版:平均止损 3%–5%(要求精确枢轴点买入)
- 止损位选择:突破平台下沿 / 10日或21日均线 / 最近放量阳线低点,取最近者
---
五、获利了结
- 20%–25% 法则:上涨 20%–25% 考虑兑现
- 例外:三周内涨 20% 以上的"超强势股",至少持有 8 周
- Sell into Strength:在向上过程中分批卖出,而不是等顶部回落
- 减仓信号:
- 单日异常大涨后疲软(climax run)
- 跌破 50 日均线且不能快速收回
- 放量下跌(分销迹象)
- RS 线开始走弱
---
六、大盘状态判断(方向盘核心)
6.1 跟踪指数
- A股:沪深300、创业板指、上证综指
- 判断口径:每个指数独立计数,以最弱的指数为准
6.2 分销日(Distribution Day)
定义:指数收盘下跌 > 0.2%(部分版本 0.25%)+ 成交量 > 前一日
计数规则:
- 滚动 25 个交易日(约 5 周)窗口
- 单个分销日寿命 25 个交易日,到期自动失效
- 指数从某分销日收盘价上涨 ≥ 5%,该分销日提前作废
- Inside Day(高低点都在前一日范围内)即使放量下跌也不算
危险阈值:
| 分销日数 | 状态 | 操作 |
|---|---|---|
| 1–2 | 健康 | 正常做多 |
| 3–4 | 警惕 | 减仓获利股、收紧止损 |
| 5 | 高危 | 显著降低仓位 |
| ≥ 6 | 必修正 | 大幅清仓或空仓 |
6.3 停滞日(Stalling Day)
定义:指数轻微上涨 + 成交量 > 前一日 + 涨幅明显小于前一日 / 收盘接近当日低点 / 长上影
→ 也计入分销日总数
6.4 Follow-Through Day(FTD,跟进确认日)
前置条件:市场已处于修正(从近期高点跌 8%–10%+)
判定步骤:
1. 出现"反弹尝试日"(Day 1):指数收盘上涨 / 或下探后强势收回
2. 在 Day 1 之后的第 4 – 7 个交易日内出现"大涨日"
3. 大涨日满足:
- 涨幅 ≥ 1.5%(IBD 标准,部分版本接受 1.25%)
- 成交量 > 前一日
- 收盘价接近当日高点
强化信号:
- 多个指数同日 FTD → 信号更强
- FTD 后领涨股开始放量突破 → 二次确认
- FTD 历史成功率 ~70–80%;所有真实牛市起点都有 FTD
FTD 失败判定:
- 指数跌破反弹起点低点
- 2 周内出现 2–3 个新的分销日
6.5 三种市场状态
| 状态 | 触发条件 | 操作建议 |
|---|---|---|
| Confirmed Uptrend(确认上升) | FTD 触发,分销日 ≤ 4 | 满仓做多,金字塔加码 |
| Uptrend Under Pressure(上升承压) | 分销日 4–5 个,或跌破 21 日均线 | 停止新建仓,收紧止损,现金 30–50% |
| Market in Correction(修正中) | 分销日 ≥ 6 / 从高点跌 8%–10%+ / 跌破 200 日均线放量 / FTD 失败 | 清仓或极小仓位,等下一个 FTD |
6.6 辅助指标
- 新高/新低股票数:健康市场中新高 >> 新低
- 领涨股行为:领涨股集体破位往往早于指数见顶 2–4 周
- 均线结构:指数 > 50 日均线 > 200 日均线,均向上倾斜
- 市场宽度(A/D Line):与指数同步创新高才是健康;背离 = 顶背离
---
七、方向盘日常使用流程
每天收盘后 5 分钟:
1. 记录三大指数当日涨跌幅 + 成交量变化
2. 判断是否产生新的分销日 / 停滞日
3. 更新滚动 25 日内分销日总数
4. 检查是否处于"反弹尝试中",记录 Day 数
5. 若是 Day 4–7 且当日符合 FTD 条件 → 标记 FTD
6. 综合得出当前市场状态
7. 据此决定明天的仓位策略
---
八、项目实现要点
数据接口约定
输入统一为 pandas DataFrame,列名:
`
date | open | high | low | close | volume
`
数据源用 Tushare Pro(pro.index_daily),需在适配层把 Tushare 字段映射为上述标准列名:
- trade_date → date
- vol → volume
- 其他字段名一致
模块划分
`
market_compass/
├── data_adapter.py # Tushare Pro 适配层
├── distribution_day.py # 分销日 / 停滞日识别
├── follow_through.py # FTD 判定
├── state_machine.py # 三态状态机
├── visualizer.py # 方向盘可视化(仪表盘)
└── report.py # 日报生成
`
关键参数(可配置)
`python
CONFIG = {
"distribution_drop_pct": 0.002, # 分销日跌幅阈值 0.2%
"distribution_window": 25, # 滚动窗口
"distribution_expire_pct": 0.05, # 5% 上涨作废
"ftd_window_min": 4, # FTD 窗口起点
"ftd_window_max": 7, # FTD 窗口终点(可放宽到 10)
"ftd_gain_pct": 0.015, # FTD 涨幅阈值 1.5%
"correction_drop_pct": 0.08, # 修正定义:从高点跌 8%
}
``