1. 涨停回踩策略的底层逻辑与设计思路
做股票有些年头的人都有一个共识:涨停板本身不稀奇,稀奇的是涨停之后还能给你一个舒服的上车机会。我最早接触涨停回踩这个思路,是在一轮题材轮动特别快的行情里,当时追涨停追得灰头土脸,买进去就炸板,第二天低开直接被闷。后来复盘了几百个涨停案例才发现,真正能走出连续行情的票,往往不是涨停当天最猛的那个,而是涨停之后缩量回踩、把浮筹洗干净再启动的那个。这个规律用肉眼盯盘效率太低,必须把它写成通达信的选股公式,让机器帮我干活。
这篇内容就是把我自己反复打磨过的涨停回踩选股公式,从思路到代码到参数调优,完整地拆一遍。核心关键词就几个:通达信选股公式、BARSLAST、缩量回调、涨停。适合已经会写基础通达信公式、但选出来的票总是不尽如人意的朋友,也适合刚接触公式选股、想找一个完整实战案例入门的新手。我不会只丢一段代码给你,而是把每一行为什么这么写、参数为什么取这个值、哪些坑我踩过,全部讲清楚。
先说清楚这个策略要解决什么问题。涨停代表有资金愿意用最高价把筹码全部吃掉,这是强势信号;但涨停当天追进去,成本高、风险大,第二天一个高开回落就被套。而涨停之后的回踩,本质是主力在拉升前做的一次洗盘,把不坚定的短线客震出去,同时测试下方承接力度。如果回踩过程中成交量明显萎缩,说明抛压很轻,筹码锁定良好,这时候介入,成本比追涨停低,胜率反而更高。这就是缩量回调四个字的含金量。
那为什么用通达信来实现?因为通达信的公式系统足够灵活,BARSLAST、REF、HHV、LLV这些函数组合起来,能精确描述“距离上次涨停过了几天”“回踩幅度是多少”“成交量缩到什么程度”这些条件。而且通达信支持盘后选股和盘中预警,实战中可以直接把公式挂上去,每天收盘后跑一遍,第二天盯着信号票操作就行。相比手动翻票,效率提升不是一点半点。
整个策略的设计思路可以拆成三个层次。第一层是涨停识别,要准确定义什么叫涨停,不同板块涨停幅度不一样,主板10%、创业板和科创板20%、ST票5%,这个必须区分处理,否则选出来的票会乱套。第二层是回踩确认,用BARSLAST找到最近一次涨停的位置,然后判断从那天到现在,股价有没有出现回调、回调幅度是否合理。第三层是缩量验证,对比回踩期间的成交量和涨停当天的成交量,确认是不是真的缩量。三层条件叠加,才能过滤出高质量的标的。
我试过很多种写法,有的用COUNT统计涨停次数,有的用EVERY判断连续条件,最后发现BARSLAST是最直观也最稳定的。它的作用是返回上一次条件成立到现在的周期数,比如BARSLAST(涨停条件)返回的就是距离上次涨停过去了多少天。这个函数的好处是,不管涨停发生在哪天,它都能动态定位,不需要你写死天数。配合REF函数,就能把涨停那天的价格、成交量调出来做对比。这是整个公式的骨架,后面所有细节都挂在这个骨架上。
还有一个设计上的取舍值得说。很多人写回踩公式喜欢用均线,比如回踩到5日线或10日线附近。这个思路没错,但均线是滞后的,而且不同股票的均线斜率不一样,统一用均线判断容易误判。我后来改成用涨停当天的价格区间做参照,比如回踩不破涨停当天的最低价,或者回踩幅度不超过涨停实体的一半。这样更贴近筹码成本,逻辑也更硬。当然,均线可以作为辅助条件加进去,但不是核心。
2. 核心函数BARSLAST与缩量回调的细节拆解
2.1 BARSLAST函数到底怎么用
BARSLAST这个函数,官方文档一句话就讲完了:返回上一次条件成立到当前的周期数。但实际用起来,有几个细节文档不会告诉你。第一,如果条件从来没成立过,它返回的是一个很大的值,不是0也不是-1,所以在公式里用的时候要加一个范围限制,比如BARSLAST(涨停) < 30,否则那些从来没涨停过的票也会被选进来。第二,BARSLAST是从当前K线往左找,找到最近一次成立就停,所以如果一只票连续涨停,它返回的是0,因为当前就是涨停。这个特性在回踩策略里要特别注意,必须排除掉当前还在涨停的情况。
我一般会这样写涨停条件:
ZT := C/REF(C,1) >= 1.095 AND C = H;这里用C/REF(C,1) >= 1.095而不是直接写>= 1.1,是为了兼容不同板块和四舍五入的误差。主板涨停是10%,但实际计算出来可能是9.98%或10.02%,用1.095这个阈值能覆盖住。C = H是确保收盘价等于最高价,也就是封死涨停,排除掉盘中触板又打开的假涨停。这两个条件缺一不可,我早期只写涨幅条件,结果选出来一堆炸板票,回踩之后继续跌,教训很深。
然后定位涨停位置:
T := BARSLAST(ZT);这个T就是距离上次涨停的天数。如果今天涨停,T=0;昨天涨停,T=1;以此类推。接下来要做的所有判断,都基于这个T来展开。比如要取涨停当天的收盘价,就写REF(C, T);要取涨停当天的成交量,就写REF(V, T)。这里有个坑,如果T是0,REF(C, 0)就是当前收盘价,逻辑上没错,但回踩策略要求涨停已经过去至少一天,所以我会加一个T >= 1 AND T <= 20的范围限制,既排除当天涨停,也排除太久之前的涨停。
2.2 缩量回调的量化定义
缩量回调这四个字,拆开来看,“回调”是价格行为,“缩量”是成交量行为,两者必须同时满足。先说回调。回调的幅度不能太深,太深说明主力出货或者市场不认可,回踩变破位;也不能太浅,太浅说明洗盘不充分,浮筹没出来。我的经验值是回踩幅度在涨停实体的一半以内比较健康。具体怎么写?
ZT_CLOSE := REF(C, T); ZT_OPEN := REF(O, T); ZT_LOW := REF(L, T); 回踩幅度 := (ZT_CLOSE - C) / ZT_CLOSE;这里用涨停当天的收盘价作为基准,算当前价从涨停收盘价回落了多少。如果涨停是一字板,开盘价等于收盘价,那ZT_OPEN就没啥参考意义,所以更稳妥的基准是涨停当天的最低价ZT_LOW。我的做法是要求当前价不低于涨停当天最低价,同时回踩幅度不超过某个阈值,比如8%。这样既保证了回踩有空间,又不会跌破关键支撑。
再说缩量。缩量的对比基准是涨停当天的成交量。涨停当天通常是放量的,因为要吃掉所有卖单。回踩期间如果成交量萎缩到涨停当天的一半以下,说明抛压很轻。写法:
缩量 := V < REF(V, T) * 0.5;但这个条件太严格了,有时候回踩第一天量还比较大,后面才缩下来。所以我改成用回踩期间的平均成交量来对比:
回踩均量 := MA(V, T); 缩量 := 回踩均量 < REF(V, T) * 0.6;MA(V, T)是从当前往前推T天的平均成交量,正好覆盖了从涨停之后到现在的整个回踩区间。用0.6这个系数而不是0.5,是给一点容错空间,实测下来选出来的票质量更稳定。如果你想要更严格的信号,可以把系数调到0.4,但信号数量会明显减少。
2.3 价格与成交量的联合条件
把上面两部分拼起来,核心条件就出来了:
ZT := C/REF(C,1) >= 1.095 AND C = H; T := BARSLAST(ZT); T条件 := T >= 1 AND T <= 20; 回踩条件 := C < REF(C, T) AND C >= REF(L, T); 缩量条件 := MA(V, T) < REF(V, T) * 0.6; 选股: T条件 AND 回踩条件 AND 缩量条件;这段代码已经能跑出结果了,但还不够精细。比如C < REF(C, T)只要求当前价低于涨停收盘价,但没有限制回踩的深度。如果一只票从涨停价跌了30%,它也满足C < REF(C, T),但这种票明显不能要。所以还要加一个回踩幅度的上限:
回踩幅度 := (REF(C, T) - C) / REF(C, T); 回踩条件 := 回踩幅度 > 0.02 AND 回踩幅度 < 0.12 AND C >= REF(L, T);这里要求回踩幅度在2%到12%之间。下限2%是为了排除那些几乎没回调的票,因为没回调就说明没洗盘,直接买进去容易接盘;上限12%是防止回踩过深变成破位。C >= REF(L, T)是确保当前价还在涨停当天最低价之上,这是最后的防线,破了就说明形态走坏。
还有一个细节,涨停之后如果连续几天都是阴线,但每天跌幅很小,这种“阴跌式回踩”往往比急跌更健康,因为主力控盘能力强。这个特征用公式不太好直接描述,但可以通过COUNT(C < REF(C,1), T)来统计回踩期间阴线的数量,如果阴线数量占回踩天数的一半以上,但整体跌幅不大,反而是加分项。这个条件我一般作为可选项,不加进主公式,但在人工复核的时候会重点看。
3. 完整公式的实操编写与参数调优
3.1 从零开始写一段可用的选股公式
打开通达信的公式管理器,新建一个条件选股公式,把下面的代码贴进去。我建议你先把这段原样跑一遍,看看选出来的票是什么样子,然后再根据自己的习惯改参数。
{涨停回踩缩量选股} ZT := C/REF(C,1) >= 1.095 AND C = H; T := BARSLAST(ZT); T条件 := T >= 1 AND T <= 20; 回踩幅度 := (REF(C, T) - C) / REF(C, T); 回踩条件 := 回踩幅度 > 0.02 AND 回踩幅度 < 0.12 AND C >= REF(L, T); 缩量条件 := MA(V, T) < REF(V, T) * 0.6; 均线条件 := C > MA(C, 20); 选股: T条件 AND 回踩条件 AND 缩量条件 AND 均线条件;最后一行均线条件是我后来加的,要求当前价在20日均线之上。这个条件的作用是过滤掉那些处于下降通道的票。一只票如果20日线向下,说明中期趋势是空的,即使出现涨停回踩,也很可能是反弹而不是反转。加上这个条件之后,选出来的票明显更稳。如果你做的是超短线,可以把20日线改成10日线,或者干脆去掉,但去掉之后信号数量会翻倍,需要更多人工筛选。
代码里的注释用大括号包起来,通达信不会执行注释内容,但方便你以后回头看。我习惯把每个条件的变量名写得清清楚楚,不要图省事全写成一行,否则过两个月你自己都看不懂。变量名用中文也没问题,通达信支持中文变量,但注意不要用空格和特殊符号。
3.2 参数调优的实操记录
公式写完之后,参数调优才是真正花时间的环节。我拿过去两年的数据做过回测,把T的范围、回踩幅度、缩量系数这三个参数分别做了对比。先说T的范围。T >= 1 AND T <= 20意味着涨停之后1到20天内出现回踩信号。我试过T <= 10,信号数量少了一半,但胜率提高了;试过T <= 30,信号多了,但很多是涨停之后横盘太久、热度已经消退的票。最后取20天,是一个平衡点。
回踩幅度的下限和上限也调过。下限从0调到5%,发现5%以上回踩的票,往往是因为涨停当天封板不坚决,第二天直接低开,这种票回踩之后继续跌的概率大。上限从12%调到15%,发现超过12%回踩的票,很多已经跌破了涨停当天的实体一半,形态走坏。所以2%到12%这个区间是经过验证的。
缩量系数0.6也是试出来的。0.5太严,很多好票因为回踩第一天量稍大就被过滤掉;0.7太松,一些出货性质的下跌也被当成缩量回踩。0.6这个值,配合MA(V, T)取平均,能较好地反映“整体缩量”而不是“某一天缩量”。这里要提醒一句,MA(V, T)在T=1的时候就是当天的成交量,这时候缩量条件等价于V < REF(V,1)*0.6,也就是今天量比涨停当天缩了40%以上。这个条件在T=1时特别有效,因为涨停次日直接缩量回调,是最经典的洗盘形态。
还有一个参数是均线条件里的20日线。我试过用60日线,信号太少;用5日线,信号太多且杂。20日线对应的是一个月左右的趋势,既能过滤下降通道,又不会错过刚启动的票。如果你做的是中线,可以改成60日线;做超短,改成10日线。这个没有标准答案,取决于你的持仓周期。
3.3 盘中预警与盘后选股的设置差异
通达信的公式可以用于盘后选股,也可以用于盘中预警,但两者的设置不一样。盘后选股用CTRL+T打开条件选股,选择你写的公式,执行即可。盘中预警需要打开预警设置,把公式挂上去,设置触发条件。这里有个关键点:盘中预警时,C是动态变化的,C = H这个条件在盘中可能不成立,因为股价可能还没封板或者已经开板。所以盘中预警用的公式要把C = H改成C >= REF(C,1) * 1.095,也就是只要涨幅达到涨停幅度就触发,不要求封死。
另外,盘中预警的V是动态成交量,MA(V, T)在盘中会偏小,因为当天的量还没走完。所以盘中预警的缩量条件要放宽,比如把0.6改成0.8,否则会漏掉很多信号。我的做法是盘后选股用严格参数,盘中预警用宽松参数,两者结合使用。盘后选出来的票作为第二天的重点观察对象,盘中预警作为实时提醒,防止错过买点。
还有一个实操细节:通达信的选股公式默认是对全市场股票执行,但如果你只想在某个板块或某个自选股里选,可以在选股界面设置范围。我一般会先建立一个“近期涨停”的自选股池,每天把涨停的票加进去,然后在这个池子里跑回踩公式。这样效率更高,因为全市场跑一遍要几十秒,自选股池里跑几乎瞬间出结果。
4. 常见问题排查与实战避坑经验
4.1 公式选不出票或选出太多票怎么办
这是最常见的问题。选不出票,先检查三个地方。第一,ZT条件是不是太严了。C/REF(C,1) >= 1.095这个阈值,对于创业板和科创板来说太低了,因为它们是20%涨停,但用1.095也能选出来,只是会把涨了10%但没涨停的票也当成涨停。如果你主要做创业板,要把阈值改成>= 1.195。第二,T的范围是不是太窄。如果最近市场涨停票少,T <= 20可能选不出几只,可以放宽到30。第三,缩量系数是不是太严。0.6选不出票就改成0.7,再不行改成0.8。
选出太多票,反过来调。把T范围收窄到10天以内,把回踩幅度下限提高到4%,把缩量系数降到0.5,再加上均线条件。我一般会同时看两个版本的选股结果:一个宽松版用来观察市场整体情况,一个严格版用来实际操作。宽松版选出20只,严格版可能只剩3只,这3只就是重点。
还有一个隐藏问题:通达信的BARSLAST在停牌股票上会出错。如果一只票涨停之后停牌了,BARSLAST返回的天数会把停牌期间也算进去,导致T值偏大。解决办法是在公式里加一个DYNAINFO(4) > 0的条件,排除停牌票。这个细节很少有人提,但实战中遇到过好几次,选出来的票一看是停牌股,白高兴一场。
4.2 回踩之后继续跌怎么过滤
这是策略最大的风险点。回踩缩量之后,股价不一定涨,也可能继续跌。我复盘过失败的案例,发现几个共同特征。第一,涨停当天是一字板,没有换手,这种涨停往往是消息刺激,回踩之后容易补跌。第二,回踩期间虽然缩量,但每天都是低开低走,收盘价一天比一天低,这种“阴跌”比急跌更危险。第三,大盘环境不好,系统性风险下,再好的形态也扛不住。
针对这三点,我在公式里加了几个过滤条件。排除一字板:
非一字板 := REF(O, T) < REF(C, T);这个条件要求涨停当天开盘价低于收盘价,也就是盘中有换手,不是一字板。加上这个条件之后,选出来的票质量明显提升。排除连续阴跌:
非阴跌 := COUNT(C < REF(C,1), T) < T * 0.7;这个条件要求回踩期间阴线数量不超过总天数的70%,如果超过,说明每天都在跌,这种票不碰。大盘过滤可以用指数均线,比如INDEXC > MA(INDEXC, 20),要求大盘在20日线之上。这个条件在通达信里写起来稍微麻烦一点,需要引用指数数据,但效果很好,能避开大部分系统性下跌。
4.3 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方式 |
|---|---|---|---|
| 选不出票 | 涨停阈值太严 | 检查ZT条件 | 创业板改1.195,主板保持1.095 |
| 选不出票 | T范围太窄 | 检查T条件 | 放宽到30天 |
| 选不出票 | 缩量系数太严 | 检查缩量条件 | 0.6改0.7或0.8 |
| 选出太多票 | 条件太松 | 逐项检查 | 收窄T范围、提高回踩下限、加均线条件 |
| 选出停牌票 | BARSLAST计算异常 | 看股票是否停牌 | 加DYNAINFO(4) > 0 |
| 回踩后继续跌 | 一字板无换手 | 看涨停当天K线 | 加REF(O,T) < REF(C,T) |
| 回踩后继续跌 | 连续阴跌 | 数回踩期间阴线 | 加COUNT条件过滤 |
| 回踩后继续跌 | 大盘环境差 | 看指数走势 | 加指数均线条件 |
这张表是我自己踩坑之后整理的,基本上涵盖了90%的异常情况。遇到问题先查表,查不到再逐行调试公式。通达信的公式调试有个技巧:把每个条件单独拿出来选股,看哪个条件导致选不出票。比如先只跑ZT条件,看能不能选出涨停票;再加T条件,看剩多少;再加回踩条件,看又剩多少。这样一步步缩小范围,很快就能定位问题。
4.4 实战中的几个独家心得
第一个心得:涨停回踩公式选出来的票,不要第二天开盘就买。我吃过这个亏,选出来一只票,第二天高开2%,我直接追进去,结果冲高回落,当天套3%。后来改成等回踩确认,具体做法是看第二天开盘后半小时的走势,如果股价在分时均线之上运行,且成交量没有异常放大,再考虑介入。这样虽然可能错过一些快速拉升的票,但胜率提高了很多。
第二个心得:同一只票可能连续几天都选出信号,这时候要看回踩的节奏。如果第一天选出时回踩幅度是5%,第二天变成8%,第三天变成10%,说明回踩在加深,这种票要谨慎。如果第一天5%,第二天4%,第三天3%,说明回踩在收敛,股价在企稳,这种票反而更值得关注。这个细节公式不会告诉你,需要人工看K线图。
第三个心得:缩量回调的“量”要看相对值,不要看绝对值。一只大盘股和小盘股的成交量绝对值没法比,但缩量比例是可以比的。公式里用REF(V, T)做基准,就是取相对值。但要注意,如果涨停当天本身就是缩量涨停,那回踩再缩量的空间就很小,这种票的缩量条件容易失效。所以我在人工复核时会看一眼涨停当天的量,如果涨停当天量比前五天平均量还小,说明筹码锁定极好,回踩缩量的要求可以放宽。
第四个心得:这个公式最适合的市场环境是震荡市和温和上涨市。单边下跌市里,涨停票本来就少,回踩之后继续跌的概率大,公式选出来的票质量会下降。单边上涨市里,涨停票回踩幅度往往很浅,公式的回踩幅度下限2%可能都达不到,会漏掉很多票。所以我会根据市场环境调整参数,震荡市用标准参数,下跌市加严均线条件,上涨市放宽回踩下限。
5. 公式的扩展方向与组合用法
5.1 叠加RPS强度过滤
通达信的RPS指标是欧奈尔体系里的相对强度指标,用来衡量一只票跑赢市场的程度。把RPS叠加到涨停回踩公式里,可以过滤掉那些虽然形态好看但相对强度弱的票。RPS的计算需要先下载复权因子数据,然后在公式里引用。具体写法:
RPS条件 := RPS > 80;这个条件要求RPS值大于80,也就是跑赢80%的股票。加上这个条件之后,选出来的票往往是市场里的强势品种,回踩之后继续走强的概率更高。RPS的数据需要每天更新,通达信里可以通过扩展数据管理器来设置,具体步骤是:打开扩展数据管理器,新建一个数据,选择RPS计算方式,设置计算周期为120天或250天,然后每天收盘后刷新一次。
5.2 与超级建仓指标的组合
超级建仓是通达信里一个经典的主力行为识别指标,它通过成交量、价格波动等维度判断主力是否在吸筹。把超级建仓的信号和涨停回踩信号做交集,可以进一步提高胜率。具体做法是:先写一个超级建仓的条件,比如超级建仓 := ...,然后和回踩条件做AND运算。这样选出来的票,既有涨停回踩的形态,又有主力建仓的痕迹,双重确认。
不过要注意,超级建仓指标的计算比较复杂,不同人写的版本不一样,效果也有差异。我建议你先单独用超级建仓选股,看看选出来的票是什么风格,再决定要不要和回踩公式组合。如果两个公式选出来的票风格差异太大,组合之后可能选不出票,或者选出来的票四不像。
5.3 妖股选股公式的借鉴
妖股选股公式的核心逻辑是捕捉连续涨停的强势票,和涨停回踩的逻辑正好互补。妖股公式通常用COUNT(ZT, N) >= M来统计一段时间内的涨停次数,比如COUNT(ZT, 20) >= 3,要求20天内至少3个涨停。这个条件可以加到回踩公式里,要求这只票在回踩之前有过多次涨停,说明它是市场公认的强势股,回踩之后再次启动的概率更大。
但要注意,涨停次数太多也可能是见顶信号。我一般要求COUNT(ZT, 20)在2到4之间,太少说明不够强,太多说明已经涨过头了。这个参数需要根据市场情绪调整,情绪好的时候可以放宽到5,情绪差的时候收紧到2。
5.4 复权因子下载与数据维护
通达信的复权因子数据需要定期下载,否则公式计算出来的价格会有偏差。具体操作是:打开通达信,按F10进入数据下载界面,选择“复权因子下载”,然后等待下载完成。这个操作我一般每周做一次,周五收盘后下载,保证下一周的数据准确。如果遇到除权除息的票,复权因子会变化,公式里的REF(C, T)如果不复权,算出来的回踩幅度会失真。
还有一个数据维护的细节:通达信的日线数据默认只保留最近几年的,如果你要做长期回测,需要在数据下载界面选择“下载全部数据”。这个操作比较耗时,但一次下载之后可以用很久。我一般每个月做一次全量下载,平时每天收盘后做增量下载。
6. 几个实战案例的复盘拆解
6.1 成功案例:缩量回踩后的二次启动
拿一只我实际操作过的票举例。这只票在某个周二涨停,涨停当天成交量是前五日均量的2倍,换手率8%,属于放量涨停。涨停之后连续三天回调,第一天跌3%,第二天跌2%,第三天跌1%,成交量逐日萎缩,第三天成交量只有涨停当天的40%。第四天公式选出信号,回踩幅度6%,缩量条件满足,均线条件也满足。我在第四天尾盘介入,第五天股价放量拉升,涨了7%,第六天继续涨5%,我在第六天尾盘卖出,整体收益12%。
这个案例的关键点是回踩节奏。三天回调,跌幅逐日收窄,成交量逐日萎缩,这是典型的洗盘形态。如果第三天跌幅突然放大,或者成交量突然增加,我就会放弃。公式只能告诉你“缩量回调”这个结果,但回调的过程是健康还是恶化,需要人工判断。
6.2 失败案例:一字板后的假回踩
另一只票,涨停当天是一字板,成交量极小,换手率不到1%。涨停之后第二天低开3%,第三天继续低开2%,公式在第三天选出信号,回踩幅度5%,缩量条件也满足。但我看了一眼涨停当天的K线,发现是一字板,直接放弃。结果第四天股价继续跌4%,第五天跌3%,如果当时买进去,亏损会超过7%。
这个案例说明,一字板的涨停不能简单套用回踩策略。一字板说明没有换手,筹码没有经过充分交换,回踩之后往往还有下跌空间。公式里加REF(O, T) < REF(C, T)这个条件,就是为了排除一字板。这个条件加上之后,上面这只票就不会被选出来。
6.3 边缘案例:回踩幅度刚好卡在阈值上
还有一只票,回踩幅度正好12%,卡在我设置的上限上。公式选出来了,但我人工复核时发现,这只票的12%回踩是分五天完成的,每天跌2%到3%,节奏很均匀。这种“匀速回踩”和“急跌回踩”不一样,匀速回踩说明主力在控制节奏,不想让股价跌太快,反而可能是好事。我试着买了一点,结果第五天开始反弹,一周后涨了8%。
这个案例让我意识到,公式的阈值是死的,但市场是活的。回踩幅度12%在大多数情况下偏深,但如果回踩过程是匀速的、缩量的,反而可以接受。后来我在公式里加了一个辅助条件:如果回踩天数T大于5天,回踩幅度上限可以放宽到15%。这个调整让公式更灵活,但也增加了人工复核的工作量。
7. 公式代码的模块化改造与维护建议
7.1 把公式拆成可复用的模块
写公式最怕的是一大坨代码堆在一起,改一个参数要翻半天。我的做法是把公式拆成几个模块,每个模块单独写一段,用变量名串起来。比如涨停识别模块、回踩判断模块、缩量判断模块、过滤模块,每个模块单独调试,确认没问题再拼起来。这样以后要改某个条件,只需要改对应的模块,不会影响其他部分。
具体写法:
{模块1:涨停识别} ZT := C/REF(C,1) >= 1.095 AND C = H; T := BARSLAST(ZT); {模块2:回踩判断} 回踩幅度 := (REF(C, T) - C) / REF(C, T); 回踩条件 := 回踩幅度 > 0.02 AND 回踩幅度 < 0.12 AND C >= REF(L, T); {模块3:缩量判断} 缩量条件 := MA(V, T) < REF(V, T) * 0.6; {模块4:过滤条件} 非一字板 := REF(O, T) < REF(C, T); 均线条件 := C > MA(C, 20); 非停牌 := DYNAINFO(4) > 0; {最终选股} 选股: T >= 1 AND T <= 20 AND 回踩条件 AND 缩量条件 AND 非一字板 AND 均线条件 AND 非停牌;这样写的好处是,每个模块的变量名清晰,以后要调整某个条件,直接找到对应的行改就行。比如要把缩量系数从0.6改成0.5,只需要改模块3那一行。要把均线从20日改成10日,只需要改模块4那一行。维护起来非常方便。
7.2 版本管理与参数记录
通达信的公式没有版本管理功能,改了就覆盖了。我的做法是每次改公式之前,先把旧版本复制到一个文本文件里,标注日期和改动内容。比如“20240115版,缩量系数从0.5改成0.6,增加非一字板条件”。这样以后如果发现新版本效果不好,可以随时回退到旧版本。
参数记录也很重要。我见过很多人调参数调到最后,自己都忘了哪个参数对应哪个效果。我的做法是建一个表格,记录每次调参的结果:日期、参数组合、选股数量、实际胜率。这样调参就不是瞎调,而是有数据支撑的。比如下面这张表:
| 日期 | T范围 | 回踩幅度 | 缩量系数 | 选股数量 | 一周胜率 |
|---|---|---|---|---|---|
| 2024-01-01 | 1-20 | 2%-12% | 0.6 | 15 | 60% |
| 2024-01-15 | 1-10 | 2%-12% | 0.6 | 8 | 75% |
| 2024-02-01 | 1-10 | 4%-10% | 0.5 | 5 | 80% |
| 2024-02-15 | 1-20 | 2%-12% | 0.7 | 22 | 55% |
从这张表能看出来,收窄T范围和回踩幅度、加严缩量系数,能提高胜率但减少信号数量。具体取哪个组合,取决于你的交易频率和风险偏好。我一般会在市场好的时候用宽松参数,多选一些票;市场差的时候用严格参数,少选但精。
7.3 公式的局限性说明
任何公式都有局限性,涨停回踩公式也不例外。它只能筛选出符合形态的票,不能预测未来涨跌。我见过太多人把公式当成印钞机,选出来就无脑买,结果亏了钱怪公式不准。公式的作用是缩小范围、提高效率,最终的买卖决策还是要结合大盘环境、板块热度、个股基本面来综合判断。
另外,公式选出来的票,第二天可能高开也可能低开,可能放量也可能缩量,这些动态变化公式是捕捉不到的。我的做法是公式选股之后,第二天开盘观察半小时,确认走势符合预期再动手。如果开盘就跌破涨停当天最低价,直接放弃,不管公式怎么选的。
还有一个局限性是数据质量。通达信的免费数据有时候会有缺失或错误,尤其是停牌复牌、除权除息的票。如果发现选出来的票价格明显不对,先检查数据是不是有问题。数据问题不解决,公式再准也没用。
8. 从选股到交易的完整闭环
8.1 选股之后的复盘流程
每天收盘后,我会跑一遍公式,把选出来的票加入一个“观察池”。然后花半小时复盘这些票,看几个东西:涨停当天的分时图是不是流畅,回踩期间的K线是不是缩量,所属板块是不是近期热点,大盘环境是不是配合。这几个东西都过关的票,才会进入第二天的“操作池”。
复盘的时候我会用通达信的多窗口功能,左边看日线,右边看分时,下面看成交量。这样一眼就能看出涨停的质量和回踩的节奏。如果涨停当天分时图是一根直线拉上去的,说明主力资金果断;如果是一波三折拉上去的,说明分歧较大,回踩之后的不确定性更高。
8.2 买入时机的选择
买入时机我一般选在回踩确认的第二天。具体来说,公式选出信号的当天是回踩确认日,第二天如果股价不破前一天的最低价,且分时走势在均价线之上,就可以考虑买入。如果第二天直接高开高走,说明回踩结束,也可以追一点,但仓位要控制。如果第二天低开低走,跌破前一天最低价,直接放弃,说明回踩还没结束。
仓位管理上,我一般单只票不超过总仓位的20%,同时持有不超过3只。这样即使一只票亏了,对整体影响也不大。涨停回踩策略的胜率大概在60%到70%之间,盈亏比大概2:1,长期做下来是正期望的。但前提是严格执行纪律,不能因为一只票亏了就加大仓位去赌。
8.3 卖出时机的把握
卖出比买入更难。我的卖出规则有三条:第一,买入之后如果三天内不涨,直接卖出,说明回踩逻辑不成立;第二,如果涨了,设置一个止盈线,比如涨8%卖一半,涨15%全卖;第三,如果跌破买入价5%,无条件止损。这三条规则看起来简单,但执行起来需要很强的纪律性。我见过太多人因为“再等等”而把盈利单拿成亏损单。
通达信里可以设置条件单,把止盈止损价格提前挂上去,这样就不用一直盯盘。具体操作是:在交易界面选择“条件单”,设置触发价格和委托价格,然后提交。这样即使你不在电脑前,系统也会自动执行。不过条件单在极端行情下可能滑点,所以我还是建议重要仓位手动盯一下。
8.4 策略的周期性评估
任何策略都有失效的时候,涨停回踩策略也不例外。我会每个月做一次策略评估,统计这个月的选股数量、胜率、盈亏比,和上个月对比。如果连续两个月胜率低于50%,说明市场环境变了,需要调整参数或者暂停使用。如果胜率稳定在60%以上,就继续用。
评估的时候还要看市场风格。如果这个月涨停票很多,但回踩之后继续涨的很少,说明市场追高意愿不强,回踩策略效果会打折扣。如果这个月涨停票不多,但回踩之后涨的概率高,说明市场在走结构性行情,回踩策略反而更有效。这些观察结果会指导我下个月的参数调整方向。
9. 我个人的几点体会
写公式这件事,最忌讳的是追求“万能”。我早期总想写一个公式能抓住所有涨停回踩的票,结果参数越加越多,条件越来越复杂,最后选出来的票反而四不像。后来想明白了,公式的作用是帮你缩小范围,不是帮你做决策。一只票能不能买,公式只能告诉你“它符合形态”,但“它会不会涨”,需要你自己判断。
另一个体会是,参数不要频繁改。我见过有人今天改一个参数,明天改一个参数,改到最后自己都不知道哪个版本好用。我的做法是,一个参数组合至少用一个月,用实际交易结果来评估,而不是用历史回测来评估。历史回测再漂亮,实盘不赚钱也是白搭。
最后说一个细节。通达信的公式管理器里有一个“测试公式”按钮,可以检查公式有没有语法错误。写完公式之后一定要点一下,看看有没有报错。常见的错误包括括号不匹配、变量名重复、函数参数不对。这些错误看起来小,但会导致公式选不出票,排查起来很费时间。我一般写完公式先测试,测试通过再跑选股,跑完选股再人工复核,三步走完才进入操作环节。
这个涨停回踩公式我用了两年多,中间改过十几版,现在这版是相对稳定的。但它不是终点,市场在变,公式也要跟着变。如果你刚开始接触,建议先把基础版跑起来,熟悉了之后再根据自己的交易习惯慢慢调。不要一上来就追求完美,先用起来,再优化。