基于宋建文,《炒股怎能不懂波段》
宋建文的《炒波段的技术》是一本针对中国A股市场专门设计的波段/摆动交易实用指南。核心论点是,A股以其独特的结构性特征(T+1结算、10%涨跌停限制、散户主导),非常适合波段交易——一种捕捉持续数天到数周价格波动的策略,而非试图穿越整个牛市/熊市周期或日内交易个别交易日。
波段交易论点:
1. 股价不是直线移动——它们呈波浪运动(振荡)
2. 即使在上升趋势中,也有回调;在下降趋势中,也有反弹
3. 每个波段都有可识别的起点和终点
4. 通过在波段底部买入、在波段顶部卖出,交易者可以捕获大部分利润,
同时避免大部分痛苦的回撤
5. 波段交易在A股特别有效,因为:
- 散户主导的市场创造更剧烈的波动
- T+1结算抑制超短期交易(自然的波段时间框架)
- 10%涨跌停创造可定义的风险边界
- 政策驱动的波动性创造频繁的波段机会
方法 | 时间框架 | A股适用性 | 关键优势
----------------|-------------|-----------|---------------------------
日内交易 | 当日 | 差(T+1限制)| 快速利润
波段/摆动 | 3-20天 | 优秀 | 捕获趋势,避免噪音
仓位交易 | 1-12个月 | 良好 | 维护成本低
买入持有 | 1-10+年 | 中等 | 简单,但波动大
宋关于波段交易为何在A股最优的论点:
上升趋势中的完整波段周期:
高点2
/\
/ \ 高点3(更高)
/ \ /\
/ \ / \
/ 波段 \ / \
/ 2上 \ / 波段 \
高点1 \ / 3上 \
/\ 波段 谷2 ...
/ \ 2下 (更高)
/ \ /
波段 \ /
1上 \/
谷1
上升趋势 = 更高的波段高点序列和更高的波段低点序列
每个"波段" = 从谷到峰(上涨波段)或从峰到谷(下跌波段)的一次摆动
目标:在低点附近买入,在高点附近卖出
波段类型 | 持续时间 | 典型幅度 | 频率
-----------------|-----------|--------------|------------------
次级波段 | 1-3天 | 3-8% | 非常频繁
中级波段 | 5-15天 | 10-25% | 中等
主要波段 | 20-60天 | 25-50%+ | 较不频繁
循环波段 | 3-12个月 | 50-100%+ | 罕见
宋的主要关注点:中级波段(5-15个交易日)
这些提供最佳平衡:
- 足够大的幅度在扣除成本后产生有意义利润
- 足够短以保持每季度多次机会
- 足够频繁以保持资本积极部署
A股波段特征与西方市场不同:
1. 更剧烈的振荡:散户从众在两个方向创造更暴力的波动
→ 波段幅度往往比同等美股更大
2. 成交量峰值:波段高点通常以极端成交量标记(散户FOMO买入)
→ 成交量是A股波段定时的特别可靠工具
3. 政策驱动波段:政府公告可触发多日波段
→ 波段交易者必须监控政策日历
4. 板块轮动波段:资金以可预测模式在板块间轮动
→ 板块级波段分析增加时机维度
5. 涨跌停压缩:10%涨跌停将多日波动压缩到集中的波段
→ 连续涨停或跌停日创造独特的波段模式
为什么波段交易在A股具有正期望:
1. 趋势对齐:通过仅在上升趋势中的上涨波段买入,你与主导力量对齐。
趋势完成了大部分工作。
2. 风险定义:波段谷提供明确的止损水平。如果谷被跌破,
波段论点错误。立即退出,损失定义明确。
3. 利润潜力:波段高点提供明确的获利了结区域。
你捕获移动的肉段,而不需要捕捉精确顶部或底部。
4. 行为优势:大多数散户在波段高点买入(FOMO)
在波段低点卖出(恐慌)。系统化波段交易者做相反的事。
预期胜率:45-55%(不高,但足够)
预期回报/风险:2:1到3:1(盈利的关键)
预期期望:每笔交易0.4到0.8R
波段高点:
高点高于两侧蜡烛的高点。
最小资格:蜡烛高点超过前后各2根蜡烛的高点
(仅在 hindsight 由2根蜡烛确认)。
严格定义(3根蜡烛波段高点):
高点[今天] > 高点[昨天] AND 高点[今天] > 高点[明天]
AND 高点[今天] > 高点[2天前] AND 高点[今天] > 高点[2天后]
波段低点:
低点低于两侧蜡烛的低点。
同样最小资格:各两侧2根蜡烛确认。
严格定义(3根蜡烛波段低点):
低点[今天] < 低点[昨天] AND 低点[今天] < 低点[明天]
AND 低点[今天] < 低点[2天前] AND 低点[今天] < 低点[2天后]
上升趋势:连续的波段高点更高,波段低点更高
SH1 < SH2 < SH3 AND SL1 < SL2 < SL3
下降趋势:连续的波段高点更低,波段低点更低
SH1 > SH2 > SH3 AND SL1 > SL2 > SL3
横盘:波段高点/低点无一致模式
(高点升高后低点降低,或反之)
交易含义:
上升趋势: 在波段低点买入,在波段高点卖出
下降趋势: 离场(或有经验者可做空,但A股做空有限)
横盘: 在区间边界交易或离场
可靠的波段低点:
- 价格在波段中创出新低
- 成交量在低点时萎缩(卖盘衰竭)
- 次日:价格以增加的成交量反弹(买家回归)
- 此模式标记波段底部有高可靠性
不可靠的波段模式:
- 高成交量时创出新低(被迫卖出,可能继续下跌)
- 低成交量时创出新高(无信念,可能继续上涨)
- 这些需要在行动前额外确认
宋的波段识别均线框架:
5日均线: 追踪次级波段(对主要信号太嘈杂,用于入场微调)
10日均线: 主要波段信号——"波段线"
20日均线: 中期趋势确认
60日均线: 主要趋势方向
波段买入信号:
价格从下方穿越10日均线,且10日均线在20日均线上方
(波段低点确认,新上涨波段开始)
波段卖出信号:
价格从上方穿越10日均线,且成交量萎缩
(波段高点确认,新下跌波段开始)
方法1:波段谷入场(最高回报,中等难度)
时机:在波段低点确认后(价格从谷底反弹)
如何:在价格收于10日均线上方后买入(先前曾跌至其下方)
止损:在确认的波段低点下方
目标:前期波段高点或更高
风险/回报:通常2:1到3:1
方法2:波段延续入场(中等回报,较低难度)
时机:在已建立的上涨波段中,在短暂停顿期间
如何:在波段内3-5天盘整向上突破时买入
止损:在盘整低点下方
目标:测量移动(盘整高度向上投射)
风险/回报:通常1.5:1到2:1
方法3:突破入场(最高风险,最高潜力)
时机:价格突破前期波段高点至新波段高点
如何:在突破棒以成交量 > 2倍均值时买入
止损:在突破棒低点或前期波段高点(现支撑)下方
目标:测量移动(从前突破投射的先前波段高度)
风险/回报:通常1.5:1到2.5:1
实时识别有效波段谷:
步骤1:前提条件——股票处于上升趋势(20日均线上升,在60日均线上方)
步骤2:回调——价格从近期波段高点向支撑区回落
步骤3:支撑区——识别谷可能形成的区域:
a) 前期波段低点区域
b) 20日移动均线
c) 前上涨波段的斐波那契38.2%或50%回撤
d) 前波段的高成交量节点(成交量档案支撑)
步骤4:衰竭——成交量在回调低点时枯竭(卖家衰竭)
步骤5:反转——价格开始反弹:
- 收于前日高点上方
- 反弹日成交量增加
- 5日均线转向上
步骤6:确认——价格收于10日均线上方
→ 这是入场点(不是精确底部,而是确认的谷)
A股波段入场的时机:
首选:在确认日的最后30分钟买入。
为什么:减少隔夜缺口风险(你已经看到了全天的走势)。
如果股票在下午2:30仍高于10日均线且成交量良好,信号有效。
可接受:在确认日后次日开盘买入。
为什么:隔夜缺口可能增加或减少入场成本,但信号已确认。
避免:在任何一天的最初30分钟买入。
为什么:A股开盘波动大,往往反转。开盘价不可靠。
T+1规则意味着如果开盘入场失败,你当天不能退出。
实时识别波段高点:
步骤1:股票已在上涨波段中持续5+天,价格上涨
步骤2:出现高潮信号:
a) 成交量放大至2倍+日均(买入高潮)
b) 大范围棒(高低价差大)
c) 开盘向上跳空(衰竭缺口)
d) 价格达到前期波段高点阻力区
e) 5日均线走平并开始向下
步骤3:反转棒:价格收于当日区间下半部分
或:价格首次在该波段收于5日均线下方
步骤4:确认:次日收盘低于反转日低点
→ 这是出场点
注意:你不会在精确顶部卖出。目标是捕获波段的60-80%。
出场信号(按紧急程度排序):
紧急(立即出场,不等确认):
1. 止损触发
2. 财报冲击或重大负面新闻
3. 股票触及跌停(次日第一时间卖出)
4. 板块范围政策负面公告
标准(下次机会出场):
1. 在确认的上涨波段后,价格收于10日均线下方
2. 成交量高潮 + 反转棒(波段高点形态)
3. 价格目标达到(在前期波段高点或测量移动处)
可选(收紧止损,准备出场):
1. 价格(新高的成交量低于先前高点之间的分歧)
2. 股票达到上升通道上轨
3. 市场指数显示派发形态
对较大仓位或较高信念波段:
在第一目标(1.5R或前期波段高点):
卖出仓位的50%。将剩余的止损移动至盈亏平衡。
在延展目标(2.5R或测量移动目标):
卖出剩余50%。或以紧跟踪止损持有(在5日均线下方)。
理由:部分出场锁定利润,同时允许参与延伸波段。
在A股,上涨波段偶尔剧烈延伸(连续涨停日)。
剩余仓位捕获这些异常事件。
市场层面:
□ 上证指数高于20日均线(有利波段环境)
□ 市场未处于确认下降趋势(60日均线下降)
□ 3天内无重大政策风险事件
股票层面:
□ 股票处于上升趋势(更高的波段高点和更高的波段低点)
□ 股票在60日均线上方
□ 20日均线上升且在60日均线上方
波段识别:
□ 波段低点已确认(按第4.2节协议)
□ 价格从支撑区反弹,成交量增加
□ 价格已收于10日均线上方(波段谷确认)
风险评估:
□ 止损水平已确定(在波段低点下方)
□ 止损距离小于入场价的8%
□ 每笔交易风险小于组合的2%
□ 目标(前期波段高点)提供至少2:1回报/风险
组合:
□ 开放波段仓位少于5个
□ 总组合风险小于8%
□ 不在同只股票上追加现有仓位
板块轮动增加强大的时机维度:
强劲板块信号:股票板块指数本身处于上涨波段
→ 更高概率交易。使用全仓。
中性板块信号:板块横盘或不确定
→ 中等概率。使用正常仓位的70%。
弱势板块信号:板块处于下跌波段,但个股强势
→ 较低概率。使用正常仓位的50%。
→ 个股必须有非常强的相对强度才能覆盖板块弱势。
宋主张精确入场而非市价单:
首选入场方法:
在10日均线上方1-2%处设置限价买单。
这确保你仅在波段确认信号有效时入场。
如果股票跳空超过你限价的3%以上,不要追。
等待回调至10日均线区域。如果永远不回调,
错过这笔交易。还有下一个波段。
避免:
- 开盘市价单
- 在上涨5%+后买入
- 追已处于上涨波段3+天的股票
初始止损:在入场时设定
波段谷入场:
止损 = 确认波段低点 × 0.98(波段低点下方2%)
原理:如果波段低点被跌破,上涨波段论点错误
波段延续入场:
止损 = 盘整低点 × 0.99(盘整低点下方1%)
原理:如果盘整向下突破,延续论点错误
突破入场:
止损 = 突破棒低点或前期波段高点(现支撑)
原理:如果突破失败,突破论点错误
最大止损:无论波段点位置,入场价下方8%
如果波段低点需要更宽的止损,减少仓位规模而非扩大止损。
随着波段进展,向上移动止损:
阶段1(入场到+1R):
保持止损在初始水平。在波段交易中,不要过早移动到盈亏平衡
(波段需要日内振荡空间)。
阶段2(+1R到+2R):
将止损移动到盈亏平衡(入场价)。
这创造了一个"免费交易"——你在这仓位上不可能再亏损。
阶段3(超过+2R):
跟踪止损在最近次级波段低点(1-2天回调低点)下方。
替代:跟踪至5日均线下方。
阶段4(峰值信号出现):
积极收紧止损:在昨日低点下方。
任何收于昨日低点下方 = 退出。
波段交易不应无限期持续。时间止损:
如果股票在5个交易日内未达到+1R:
→ 波段可能比预期弱。将止损收紧至10日均线下方。
如果股票在8个交易日内未达到+1R:
→ 以收盘价退出。波段论点已失败(即使未达到止损水平)。
如果股票达到+1R但横盘振荡5+天:
→ 卖出50%,用止损跟踪剩余仓位(在横盘区间下方)。
理由:困在停滞波段中的资本有机会成本。
更好的是为下一个波段释放资本。
步骤1:确定止损距离
入场:¥30
止损:¥27.80(波段低点下方)
每份风险:¥2.20
步骤2:应用2%规则
资本:¥400,000
最大风险:¥400,000 × 0.02 = ¥8,000
步骤3:计算股数
股数:¥8,000 / ¥2.20 = 3,636 → 取整到3,600(36手)
仓位价值:3,600 × ¥30 = ¥108,000(资本的27%)
步骤4:验证组合热度
当前开放风险:¥15,000(来自另外2个仓位)
新风险:¥8,000
总风险:¥23,000 / ¥400,000 = 5.75%
最大值:8% → 可接受
步骤5:验证板块集中度
该板块当前敞口:15%
本次交易后:15% + 27% = 42% → 超过30%限制
→ 减少仓位以符合规定:约¥60,000(资本的15%)
→ 股数:2,000 at ¥30 = ¥60,000
→ 调整后风险:2,000 × ¥2.20 = ¥4,400(资本的1.1%)——可接受
波段交易者应始终保持可用于新机会的资本:
全仓:绝不。始终保持至少20%现金储备。
正常部署:组合中60-80%,现金20-40%
连续亏损后:组合中40-60%,现金40-60%
差波段环境:组合中20-40%,现金60-80%(市场震荡,波段不清)
现金储备有两个目的:
1. 新波段入场的资本(你无法在波段谷可用现金的情况下捕捉波段)
2. 心理缓冲(知道你有现金减少情绪压力)
连亏协议:
3连亏:将下一笔交易仓位减少30%,用于接下来的5笔交易
原因:对50%胜率系统来说是正常连亏。轻微调整。
5连亏:将下一笔交易仓位减少50%,用于接下来的10笔交易
原因:可能市场制度不利于波段交易。减少敞口。
7连亏:停止交易1周。仅纸上交易。
原因:系统可能在当前环境不工作,或执行错误已渗入。
复盘所有近期交易。识别问题。
10连亏:停止交易1个月。全面系统复盘。
原因:某处根本错误。市场环境可能已改变。
在识别并解决根本原因之前不要恢复。
波段交易永远不使用杠杆。
波段交易有45-55%胜率。这意味着在一年交易中,5-10连亏是统计上正常的。
使用杠杆,这样的连亏可能导致强制清算。
无杠杆,10连亏在每笔交易2%风险下损失20%资本。
痛苦但可存活。使用2倍杠杆,同样连亏损失40%。潜在致命。
前晚(30分钟):
1. 扫描观察列表中正在形成的波段谷设置(100-150只股票)
2. 识别接近买入区(接近支撑,成交量萎缩)的股票
3. 计算潜在入场的仓位和止损水平
4. 为入场和止损价格设置警报
5. 写出明天的计划:"如果股票A达到¥X,买Y股。止损在¥Z。"
早上(10分钟):
1. 检查隔夜新闻对持仓或设置的影响
2. 验证所有开放仓位的止损单是否活跃
3. 回顾计划——根据盘前信息是否需要更改?
盘中:
1. 在9:30(开盘):观察开盘走势。前15分钟不要交易。
2. 在14:00:检查入场信号(波段谷确认)
3. 在14:30:如果信号确认,执行计划的入场
4. 在15:00(收盘):记录所有持仓和观察列表的收盘价
收盘后(15分钟):
1. 用所有行动更新交易日志
2. 为每个决策打分(A/B/F)
3. 记录关键时刻的情绪状态
4. 扫描明天正在形成的新波段设置
规则1:每波段每股票一次入场
不要在同一波段的同一股票上多次买入。
如果错过入场,等待下一个波段。
规则2:波段交易中不要向下摊平
如果股票对你不利,波段论点在失败。
向下摊平使你的敞口翻倍于失败论点。
规则3:不要追
如果股票移动超过你预期入场点5%+, 让它走。
追导致糟糕的风险/回报和情绪化入场。
规则4:机械出场
当止损触发或出场信号触发时,在下一个可用价格卖出。
不要等待"更好的价格"或"再等一天。"
规则5:尊重市场环境
在震荡、横盘、没有清晰波段的市场中,减少活动。
波段交易需要波段。如果海洋平静,没有什么可乘。
规则6:保持日志
每笔交易记录。每次情绪备注。每个过程打分。
日志是你改进的方式。没有它,你重复同样的错误。
接受:你会接近上涨波段底部卖出(在回调中被止损)。
这是保护的成本。一些止损后立即恢复是正常的。
这不是加宽止损的理由。
接受:你将错过每个波段的精确顶部。
没有人能持续在顶部卖出。捕获波段的60-70%是优秀的。
接受:你会有连亏。
50%胜率意味着统计上会发生10连亏。当发生时,
这不是恐慌或改变系统的理由。
接受:一些波段会很小(小额盈利或打平)。
并非每个波段都发展成大移动。小赢和打平是可接受的,
只要偶尔的大波段足以补偿。
接受:错过一个波段永远比强迫糟糕交易好。
每年有数百个波段机会。错过一个没有成本。
强迫糟糕交易可能让你的资本付出代价。
错误1:在波段中间买入
在上涨波段已经5-8天且高于波段低点15-20%时买入。
结果:入场差,止损宽(至波段低点下方),糟糕的风险/回报。
修复:仅在确认波段低点后2-3天内入场。
错误2:在波段中间卖出
因上涨波段内的正常1-2天回调而退出。
结果:错过后续波段的50-70%潜力。
修复:仅在确认波段高点信号或止损触发时出场。
错误3:对抗趋势方向
试图在下降趋势中买入波段低点。
结果:每次"反弹"都比上一次低。累积亏损。
修复:仅在上升趋势(更高高点和更高低点)中买入波段低点。
错误4:忽视成交量信号
在无成交量确认(卖盘衰竭)的情况下入场"波段低点"。
结果:许多假波段低点——价格"反弹"后继续下跌。
修复:要求在谷的成交量收缩 + 反弹时成交量扩大。
错误5:过度交易波段
交易每个微小振荡(1-3天微波段)。
结果:交易成本和滑点消耗所有利润。T+1增加隔夜风险。
修复:专注于中级波段(5-15天)。忽略微小波动。
错误6:时间框架不一致
用60日均线判断趋势但用5分钟图把握入场时机。
结果:矛盾信号、困惑、情绪化决策。
修复:选择一个时间框架并始终如一地用于所有决策。
错误7:未考虑T+1
在"确认日"收盘买入,次日早上被套牢在向下跳空。
结果:不能卖出,直到次日,届时亏损可能更大。
修复:在所有入场计划中考虑T+1。如果你不能承受隔夜持有,跳过。
波段识别
日期:第0天(周一)
股票:ABC制造,价格¥35.20
背景:股票2个月处于上升趋势(更高高点和更高低点)
60日均线:¥32(上升),20日均线:¥34(上升),10日均线:¥35.50(平)
最近波段高点:¥38(8个交易日前达到)
股票一直在回调:¥38 → ¥37 → ¥36 → ¥35.20
回调时成交量萎缩(好——卖盘衰竭)
支撑区:¥34的20日均线 + ¥33.50的前期波段低点
观察波段谷形成
第1天(周二):股票跌至¥34.30(接近20日均线)。成交量极低。守住支撑。
第2天(周三):股票跌至¥33.80,反弹收于¥34.50。
成交量:低位时低,反弹时放大。看涨反转蜡烛。
5日均线开始走平。
第3天(周四):股票收于¥35.20。回到10日均线(¥35.00)上方。
成交量:扩大。✓ 这是波段谷确认信号。
入场计划(周四晚)
入场:¥35.20(或如果周五跳空¥35.50限价)
波段低点:¥33.80(第2天低点)
止损:¥33.10(¥33.80 × 0.98,波段低点下方2%)
每份风险:¥35.20 - ¥33.10 = ¥2.10
目标1:¥38(前期波段高点)= ¥2.80盈利 → 1.3R
目标2:¥40(测量移动高于前期高点)= ¥4.80盈利 → 2.3R
资本:¥500,000
最大风险(2%):¥10,000
股数:¥10,000 / ¥2.10 = 4,761 → 取整到4,700股(47手)
仓位价值:4,700 × ¥35.20 = ¥165,440(资本的33%)
入场执行
第4天(周五)14:30:
股票在¥35.40,高于10日均线,成交量良好。
以¥35.40买入4,700股(从计划的¥35.20轻微滑点)
实际每份风险:¥35.40 - ¥33.10 = ¥2.30
实际风险:4,700 × ¥2.30 = ¥10,810(2.16%——略高于2%,可接受)
交易管理
第5天(周一):股票开盘¥35.80,收盘¥36.20。波段发展中。持有。
第6天(周二):股票达到¥37.00。+¥1.60/份(0.7R)。持有。
止损仍在¥33.10(尚未达到+1R以移动至盈亏平衡)。
第7天(周三):股票达到¥37.70。+¥2.30/份(1.0R)。✓
将止损移动至¥35.40(盈亏平衡)。免费交易。
第8天(周四):股票收¥38.20。达到前期波段高点(¥38)。
这是目标1。卖出50%(2,350股)at ¥38.20。
锁定利润:2,350 × (¥38.20 - ¥35.40) = ¥6,580
剩余:2,350股。将跟踪止损移动至¥36.50(低于次级波段低点)。
第9天(周五):股票以扩大成交量推至¥39.50。
将跟踪止损移动至¥37.80(低于第8天低点)。
第10天(周一):股票在巨大成交量(2.5倍均值)跳空至¥40.20。
成交量高潮 + 跳空 = 警告信号。收紧止损至¥39.00。
第11天(周二):股票开盘¥40.50,反转收¥39.30。
成交量仍然偏高。反转棒从高潮。波段高点可能。
第12天(周三):股票开盘¥39.00,跌至¥38.80。触发跟踪止损。
以¥39.00卖出剩余2,350股。
最终账户
第一批:2,350股 × (¥38.20 - ¥35.40) = ¥6,580
第二批:2,350股 × (¥39.00 - ¥35.40) = ¥8,460
总利润:¥15,040
承担风险:¥10,810
R倍数:1.39R
持续时间:8个交易日
过程评级:A(遵循所有规则,无即兴发挥)
class WaveTradingSystem:
"""
宋建文的A股波段/摆动交易系统。
"""
# 均线参数
MA_FAST = 5 # 次级波段
MA_WAVE = 10 # 主要波段信号("波段线")
MA_INTERMEDIATE = 20 # 中期趋势
MA_MAJOR = 60 # 主要趋势
# 风险参数
RISK_PER_TRADE = 0.02
MAX_PORTFOLIO_HEAT = 0.08
MAX_OPEN_POSITIONS = 5
MAX_STOP_PCT = 0.08
MAX_SECTOR_WEIGHT = 0.30
MIN_CASH_RESERVE = 0.20
# 波段参数
VOLUME_CLIMAX = 2.0 # 成交量 > 2倍均值 = 高潮
VOLUME_EXHAUSTION = 0.6 # 成交量 < 0.6倍均值 = 衰竭
MIN_REWARD_RISK = 2.0 # 最低2:1 R/R
def identify_swing_points(self, bars, lookback=2):
"""识别确认的波段高点和低点。"""
swing_highs = []
swing_lows = []
for i in range(lookback, len(bars) - lookback):
# 波段高点
is_high = all(bars[i].high > bars[i-j].high for j in range(1, lookback+1)) and \
all(bars[i].high > bars[i+j].high for j in range(1, lookback+1))
if is_high:
swing_highs.append((i, bars[i].high))
# 波段低点
is_low = all(bars[i].low < bars[i-j].low for j in range(1, lookback+1)) and \
all(bars[i].low < bars[i+j].low for j in range(1, lookback+1))
if is_low:
swing_lows.append((i, bars[i].low))
return swing_highs, swing_lows
def determine_trend(self, swing_highs, swing_lows):
"""从摆动点序列确定趋势。"""
if len(swing_highs) < 2 or len(swing_lows) < 2:
return "INDETERMINATE"
hh = swing_highs[-1][1] > swing_highs[-2][1] # 更高高点
hl = swing_lows[-1][1] > swing_lows[-2][1] # 更高低点
if hh and hl:
return "UPTREND"
elif not hh and not hl:
return "DOWNTREND"
else:
return "SIDEWAYS"
def detect_wave_trough(self, stock):
"""检测确认的波段谷以入场。"""
# 前提条件
if stock.close < stock.sma(self.MA_MAJOR):
return False, "在主要趋势均线下方"
if not stock.sma_rising(self.MA_INTERMEDIATE):
return False, "中期均线未上升"
trend = self.determine_trend(
*self.identify_swing_points(stock.recent_bars(60))
)
if trend != "UPTREND":
return False, f"趋势是{trend},非上升趋势"
# 低位时成交量衰竭
recent_low_idx = stock.lowest_low_index(10)
vol_at_low = stock.volume_at(recent_low_idx)
avg_vol = stock.avg_volume(self.MA_INTERMEDIATE)
if vol_at_low > avg_vol * self.VOLUME_EXHAUSTION:
pass # 不具决定性,但降低信心
# 价格穿越波段线上方(10日均线)
crossed_above = (stock.close > stock.sma(self.MA_WAVE)
and stock.prev_close < stock.prev_sma(self.MA_WAVE))
# 反弹时成交量扩大
bounce_vol = stock.volume > avg_vol * 1.2
if crossed_above and bounce_vol:
return True, "波段谷确认:价格位于波段线上方伴成交量"
return False, "无确认的谷信号"
def detect_wave_peak(self, stock, position):
"""检测波段高点以出场时机。"""
signals = []
# 成交量高潮
if stock.volume > stock.avg_volume(self.MA_INTERMEDIATE) * self.VOLUME_CLIMAX:
signals.append("VOLUME_CLIMAX")
# 价格收于波段线下方
if stock.close < stock.sma(self.MA_WAVE) and stock.prev_close > stock.prev_sma(self.MA_WAVE):
signals.append("BELOW_WAVE_LINE")
# 反转棒(收于区间下半部分)
bar_range = stock.high - stock.low
if bar_range > 0 and (stock.close - stock.low) / bar_range < 0.3:
signals.append("REVERSAL_BAR")
# 衰竭缺口
if stock.open > stock.prev_high * 1.02: # 跳空 > 2%
signals.append("EXHAUSTION_GAP")
return signals
def calculate_entry(self, stock, capital, portfolio):
"""计算完整入场参数。"""
# 找到止损水平
swing_lows = self.identify_swing_points(stock.recent_bars(30))[1]
if not swing_lows:
return None, "无波段低点识别"
recent_swing_low = swing_lows[-1][1]
stop_price = recent_swing_low * 0.98 # 波段低点下方2%
entry_price = stock.close
# 硬性限制止损距离
if (entry_price - stop_price) / entry_price > self.MAX_STOP_PCT:
stop_price = entry_price * (1 - self.MAX_STOP_PCT)
risk_per_share = entry_price - stop_price
if risk_per_share <= 0:
return None, "无效止损水平"
# 仓位配置
max_risk = capital * self.RISK_PER_TRADE
# 检查组合热度
current_heat = portfolio.total_risk
available_risk = (capital * self.MAX_PORTFOLIO_HEAT) - current_heat
max_risk = min(max_risk, available_risk)
if max_risk <= 0:
return None, "达到组合热度限制"
shares = int(max_risk / risk_per_share)
shares = (shares // 100) * 100 # A股手数
# 检查板块限制
position_value = shares * entry_price
sector_weight = (portfolio.sector_value(stock.sector) + position_value) / capital
if sector_weight > self.MAX_SECTOR_WEIGHT:
max_value = (self.MAX_SECTOR_WEIGHT * capital) - portfolio.sector_value(stock.sector)
shares = int(max_value / entry_price / 100) * 100
if shares <= 0:
return None, "限制后仓位太小"
# 目标计算
swing_highs = self.identify_swing_points(stock.recent_bars(30))[0]
if swing_highs:
target_1 = swing_highs[-1][1] # 前期波段高点
target_2 = entry_price + (target_1 - entry_price) * 1.5 # 测量移动
else:
target_1 = entry_price * 1.10
target_2 = entry_price * 1.15
reward = target_1 - entry_price
risk = entry_price - stop_price
rr_ratio = reward / risk if risk > 0 else 0
if rr_ratio < self.MIN_REWARD_RISK:
return None, f"R/R比率{rr_ratio:.1f}低于最低{self.MIN_REWARD_RISK}"
return {
"entry_price": entry_price,
"stop_price": stop_price,
"shares": shares,
"risk_per_share": risk_per_share,
"total_risk": shares * risk_per_share,
"target_1": target_1,
"target_2": target_2,
"reward_risk": rr_ratio,
}, "入场有效"
def manage_position(self, trade, stock):
"""积极波段仓位管理。"""
entry = trade.entry_price
risk = trade.risk_per_share
current = stock.close
r_multiple = (current - entry) / risk if risk > 0 else 0
# 检查止损
if current <= trade.stop_loss:
return "EXIT_ALL", f"止损触发于{trade.stop_loss:.2f}"
# 时间止损
if trade.days_held > 8 and r_multiple < 1.0:
return "EXIT_ALL", "时间止损:8天未达到1R"
# 在目标1部分出场
if current >= trade.target_1 and not trade.partial_exit_done:
trade.partial_exit_done = True
trade.stop_loss = entry # 移动至盈亏平衡
return "EXIT_HALF", f"目标1达到于{current:.2f}"
# 部分出场后跟踪止损
if trade.partial_exit_done:
# 检查峰值信号
peak_signals = self.detect_wave_peak(stock, trade)
if "BELOW_WAVE_LINE" in peak_signals:
return "EXIT_ALL", "波段高点:收于波段线下方"
# 提高跟踪止损
minor_swing_low = stock.lowest_low(3) # 3日低点
if minor_swing_low > trade.stop_loss:
trade.stop_loss = minor_swing_low
# 高潮警告——收紧止损
if "VOLUME_CLIMAX" in peak_signals:
trade.stop_loss = max(trade.stop_loss, stock.low)
# 在1R时移动至盈亏平衡
elif r_multiple >= 1.0:
if trade.stop_loss < entry:
trade.stop_loss = entry
return "HOLD", f"R: {r_multiple:.1f}, 止损: {trade.stop_loss:.2f}"
def weekly_system_review(self, trades_this_week, portfolio):
"""每周绩效和过程复盘。"""
wins = [t for t in trades_this_week if t.pnl > 0]
losses = [t for t in trades_this_week if t.pnl <= 0]
win_rate = len(wins) / len(trades_this_week) if trades_this_week else 0
avg_win_r = sum(t.r_multiple for t in wins) / len(wins) if wins else 0
avg_loss_r = sum(t.r_multiple for t in losses) / len(losses) if losses else 0
expectancy = (win_rate * avg_win_r) + ((1 - win_rate) * avg_loss_r)
process_grades = [t.process_grade for t in trades_this_week]
a_pct = process_grades.count("A") / len(process_grades) if process_grades else 0
return {
"trades": len(trades_this_week),
"win_rate": win_rate,
"avg_win_r": avg_win_r,
"avg_loss_r": avg_loss_r,
"expectancy": expectancy,
"process_a_pct": a_pct,
"portfolio_return": portfolio.weekly_return,
}
"股价不是直线移动。它们呈波浪运动。理解波段的交易者
比只看趋势的交易者有固有优势。"
"在A股,波段交易不仅仅是众多策略之一——它是自然的策略。
T+1结算、日涨跌停限制和散户从众都创造了一个以可定义、可交易
波段振荡的市场。"
"波段谷是赚钱的地方。波段高点是保护资金的地方。
大多数散户把这个完全搞反了——他们在高点买入,在低点卖出。"
"成交量告诉你价格无法告诉你的关于波段的一切。
谷的成交量衰竭说'卖家完了'。高点的成交量高潮说'买家完了'。
听成交量的。"
"不要试图捕捉波段的确切底部。等确认——价格收于10日均线上方。
你牺牲了波段的前10-20%以换取波段真实性的显著更高概率。"
"最好的波段交易在入场时感觉不舒服。你在股票下跌时买入。
你在别人卖出时买入。如果感觉容易和明显,波段已经走了。"
"在波段交易中,错过一个波段是免费的。强迫糟糕交易要花钱。
明天、下周、下个月会有另一个波段。不着急。"
"你的止损不是建议。这是与你自己的合约。打破合约一次,
你的大脑会找到一次又一次打破它的理由。"
"中级波段——5到15个交易日——是A股散户交易者的最佳点。
短到可以每季度保持多次机会。长到在交易成本后产生有意义利润。"
"波段交易不是日内交易,也不是投资。它是捕获两者最好的中间路径:
积极交易的参与和投资的耐心。"
"你的仓位大小必须由止损距离决定,
不是你想要拥有多少或股票价格多少决定。
这是风险管理与赌博的区别。"
"保存你最好和最差波段交易的图表册。模式会出现。
你最好的交易有共同特征。你最差的交易有不同的共同特征。
这个图册是你个性化的交易教育。"
实施规范编译自宋建文,《炒股怎能不懂波段》。本文档是实际应用的系统提炼, 不替代阅读原作。