A股/港股择时技术分析完整框架
评分系统(梯度评分)+ 威科夫操盘法(量价分析)+ MA20框架 + ATR止损止盈 从跑数据 → 判阶段 → 定策略,一站式完成
什么时候用
- 用户发来一个股票代码(A股/港股/ETF),要求分析是不是好买点
- 用户要求"观察持仓",需要深度的量价叙事分析
- 用户想了解一只票当前处于威科夫的哪个阶段(吸筹/拉升/派发/下跌)
快速开始
# 1. 跑评分
cd ~/.hermes/skills/investment/a-stock-timing-analysis
python3 scripts/timing_analysis.py 601899 # A股
python3 scripts/timing_analysis.py 03899 --hk # 港股
python3 scripts/timing_analysis.py 515880 --etf # ETF
# 2. 再分析K线逐根解读量价关系(见"深度分析工作流"章节)
python3 -c "脚本见下方"
## 一、数据源
### A股日K线(前复权)
腾讯API: http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param={market}{code},day,,,120,qfq 市场: 沪市=sh, 深市=sz 返回: [日期, 开盘, 收盘, 最高, 最低, 成交量(手)]
### 港股日K线
腾讯: http://web.ifzq.gtimg.cn/appstock/app/hkfqkline/get?param=hk{code},day,,,120,qfq 港股格式: [date, open, close, high, low, volume, {}, change, amount] — 比A股多3个字段 港股昨收用腾讯K线数据,不用Sina的prev_close(复权差异)
### ETF处理
ETF的腾讯API返回结构与个股不同(key为day而非qfqday),需特殊处理:
```python
data = json.loads(urllib.request.urlopen(req).read())
for key in data.get('data', {}):
k = data['data'][key]
if 'qfqday' in k: klines = k['qfqday']
elif 'day' in k: klines = k['day']
实时行情
Sina (http://hq.sinajs.cn/list={market}{code}),失败时自动fallback到腾讯qt
二、评分系统(梯度评分)
基础7项满分105 + 威科夫3项40分 + 背离修正±30 = 理论最高165分
| # | 指标 | 满分 | 梯度规则 | |:-:|:----|:---:|:---------| | 1 | 趋势1:价/MA20 | 15 | ≥1.08→15 / ≥1.05→13 / ≥1.03→11 / ≥1.00→8 / ≥0.97→5 / ≥0.95→2 / <0.95→0 | | 2 | 趋势2:MA20斜率 | 10 | ≥1.5%→10 / ≥0.8%→8 / ≥0.3%→6 / ≥0%→4 / ≥-0.5%→2 / <-0.5%→0 | | 3 | MACD | 20 | 零轴上强金叉→20 / 零轴上金叉→15 / 金叉→10 / 接近金叉→5 / 死叉→0 | | 4 | 区间位置 | 20 | <30%→20 / <50%→15 / <70%→10 / <85%→5 / ≥85%→0 | | 5 | ATR收缩+稳定 | 15 | 连续收缩且无飙高→15 / 收缩→12 / 下降+稳→10 / 稳定→7 / 降但偏高→5 / 扩张→0 | | 6 | 低波(ATR%) | 10 | <3%→10 / <4%→8 / <5%→6 / <6%→4 / <7%→2 / <8%→1 / ≥8%→0 | | 7 | 涨幅安全 | 15 | 涨幅/均振<0.5→15 / <0.7→12 / <1.0→8 / <1.3→4 / ≥1.3→0 | | 8 | 量价关系(威科夫) | 15 | 量价健康→13 / 放量止跌→13 / 正常→7 / 需求枯竭→5 / 供应进场→3 / 放量滞涨→0 | | 9 | Spring弹簧(威科夫) | +15 | 弹簧出现(质量1-5)→+15 | | 10 | 回调质量(威科夫) | 10 | 缩量回调→10 / 无明显回调→5 / 放量回调→0 | | 11 | 底背离 | +20 | 有→+20 | | 12 | 顶背离 | -30 | 有→-30(一票否决) |
判断标准
| 总分 | 判定 | 威科夫含义 | |:---:|:----|:----------| | 120-165 | ✅ 强烈建议买入 | 吸筹结束+JOC突破+LPS出现 | | 90-119 | ✅ 可以买入 | 需求占优+回调健康,等LPS进场 | | 65-89 | ⏸ 关注等待 | 吸筹震荡区中,等待Spring/SOS | | 40-64 | ❌ 暂时回避 | 供应主导或阶段不明 | | <40 | ❌ 观望/空仓 | 下跌趋势,CM尚未进场 | | 出现顶背离 | ❌ 不买/减仓(优先于任何评分) |
三、威科夫操盘法完整框架
三大法则
① 供求关系:供不应求→涨,供过于求→跌,平衡→震荡 ② 因果关系:趋势反转前必须有准备过程(吸筹→牛市,派发→熊市) ③ 努力与结果:大成交量+小涨幅=停止行为;小量+小跌=供应枯竭
四阶段
吸筹(Accumulation) → 拉升(Markup) → 派发(Distribution) → 下跌(Markdown)
吸筹流程
| 步骤 | 价量特征 | 操作 | |:----|:--------|:----| | PS(初次支撑) | 放量止跌 | 观察 | | SC(恐慌抛售) | 超长阴+天量 | 开始关注 | | AR(自动反弹) | 自然反弹 | 不抄底 | | ST(二次测试) | 缩量小K线=成功 | ✅首次关注点 |
吸筹结束信号
- 终极震仓:深度跌破所有支撑后快速收回 → Spring+15
- Spring(弹簧):跌破支撑→快速收回+放量 → Spring+15
- SOS(强势出现):长阳+明显放量 → 量价关系13/15
- JOC(跳离震荡区):放量突破阻力 → 趋势1高分
LPS最安全进场点
JOC突破 → 缩量回踩到突破点 → LPS最后支撑点 → 进场
派发流程
PSY(初次供应) → BC(抢购高潮) → AR(自然回落) → 二次测试(反弹无力)
派发确认信号
- UT(上冲回落):冲高后放量回落 = 努力无结果
- SOW(熊市初显):放量跌破支撑
- LPSY(最后派发点):最后一次出逃机会
Spring弹簧交易法
价格小幅跌破支撑后快速返回上方,伴随放量。 优质:小量小K线→直接进场 普通:量略扩但收回→等二次测试 危险:熊市中→不能用
实战检查清单
买入前:市场背景?吸筹/派发?ATR收缩?量价健康?Spring/底背离? 持有期:量价同步?放量阴线?缩量回调?UT/顶背离? 卖出信号:顶背离/UT/LPSY→卖出,放量回调→预警,破SOW→强制卖出
四、MA20框架核心
三种状态:
- 强趋势:线上+均线向上,回踩立刻收回 → 持有/上车
- 短期跌破:1-3天收回,无连续放量杀跌 → 正常换手
- 趋势破坏:连续收下方+反抽无力+均线下弯1-2周 → 行情结束
五、ATR分档止损/梯度止盈
止损
| ATR/价比 | 止损倍数 | |:---------|:--------| | < 3% | 1.5× ATR | | 3-6% | 2× ATR | | > 6% | 2.5-3× ATR |
止盈(梯度收紧)
浮盈<0%→止损倍数 / +0~10%→2.5× / +10~20%→2.0× / +20~30%→1.5× / >+30%→1.0× 公式:止盈线 = 期间最高收盘 - (ATR × 当前倍数)
六、深度分析工作流
数据准备
import urllib.request, json
def get_klines(code, market):
url = f'http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param={market}{code},day,,,120,qfq'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
data = json.loads(urllib.request.urlopen(req, timeout=10).read())
for key in data.get('data', {}):
k = data['data'][key]
if 'qfqday' in k: return k['qfqday']
elif 'day' in k: return k['day']
return None
vols = [float(k[5]) for k in klines[-25:]]
avg20_vol = sum(vols[-20:]) / 20
for k in klines[-20:]:
vr = float(k[5]) / avg20_vol
print(f'{k[0]} 收{k[2]} 量{k[5]} 量比{vr:.2f}x')```
### 量比解读
<0.5x=极度缩量 / 0.5-0.8x=缩量健康 / 0.8-1.2x=正常 / 1.2-1.5x=温和放量 / >1.5x=显著放量(SOS/SC/JOC) / >2.0x=天量
### 威科夫阶段鉴别(从右向左)
⑤当前状态→④启动信号→③底部确认→②底部吸筹→①下跌背景
### 分析报告结构
一、近期走势全景(ASCII简图)
二、关键K线解读(表格)
三、威科夫阶段判断
四、评分拆解
五、关键价位
六、综合判断
### 量价关系速查
| 模式 | 得分 | 含义 |
|:----|:---:|:----|
| 量价健康 | 13/15 | 需求主导 |
| 放量止跌 | 13/15 | 需求接盘 |
| 正常 | 7/15 | 中性 |
| 供应进场 | 3/15 ⚠️ | 主力出货 |
| 放量滞涨 | 0/15 🔴 | 顶部信号 |
| 需求枯竭 | 5/15 | 动力衰减 |
### 回调质量速查
缩量回调(<0.8x)=10/10✅ / 无明显回调=5/10 / 放量回调(>1.2x)=0/10⛔
## 七、运行脚本
```bash
python3 scripts/timing_analysis.py 601899 # A股
python3 scripts/timing_analysis.py 03899 --hk # 港股
python3 scripts/timing_analysis.py 515880 --etf # ETF
Scan to join WeChat group