简介:通达信缠论起涨点选股指标文档,面向股票技术分析者和缠论爱好者,旨在解决如何利用多周期量价数据捕捉个股起涨点、辅助买卖时机判断的问题。文档完整给出了指标公式源码,核心思路是以MA1、MA2均线交叉把握趋势转换,结合DIF动量变化判断涨跌力度,再通过VUR0至VUR9、VURA、VU系列变量构建量价加权信号。其中VUR0采用开高低收的加权平均,VUR2以成交金额计算10日移动平均,VUR3使用收盘价5日移动平均,并进一步衍生VUR4至VUR7的相对强弱指标,最终经VUR8加权与VUR9平滑,形成VURA差值信号,配合VU1至VU8的买卖条件输出“进”“出”结果。资源包共1个doc文件,大小约303KB,轻量易用。目前已有141人学习下载,适合有一定技术分析基础、希望将缠论思路量化为可执行选股条件的投资者参考,并可直接在通达信软件中应用或二次优化。
1. 缠论起涨点选股指标想解决什么问题
没写过缠论选股公式的人,最容易高估走势结构识别在通达信里的可行度。想在通达信里完整复现分型、笔、线段、中枢、背驰,再找出三类买卖点,绝大多数公式都会卡在“递归”这一步——通达信公式语言没有递归,也不支持动态数组,线段级别的构建很难写。但真正的起涨点判断并不一定非得等线段走完。用分型和笔的规则化处理,再加 MACD 面积的背驰比较,就能在通达信里做出可用度不错、能跑全市场扫描的缠论起涨点选股指标。这种做法的核心思路是:不追求对走势的“完全分类”,只锁定一个高概率的转折区间。把这个区间量化为分型、笔、背驰三个可计算对象,效率和可维护性比硬啃线段高很多。
适合谁来用?首先是已经用过通达信自带选股公式、但觉得 MA 金叉或 MACD 金叉太迟钝、想转向结构判断的量化交易者;其次是熟悉缠论原文、但没时间逐日手动看盘的投资者。你需要的是把缠论里“第二类买点”“第三类买点”这类偏主观的描述,替换成代码能判断的确定条件。这篇文章不教你缠论本身,而是给你一套在通达信里把“起涨点”翻译成可回测、可执行公式的完整方案,从分型识别写到选股器运行,最后讲清楚参数怎么调、坑在哪。
2. 缠论起涨点选股指标的核心:分型和笔的代码化
2.1 为什么先做分型而不是直接写中枢
缠论里最基础的构造单元是分型。顶分型是三根 K 线中中间那根最高,底分型反之;但实际行情中经常出现包含关系,第一根和第三根 K 线被第二根完全包含。通达信写缠论公式的常见做法,是先做包含处理,再判断分型,然后用相邻顶底分型连接成笔。这也是整个选股指标的地基,地基不牢,后面的中枢和背驰全部失真。
分型可以用通达信的 FILTER 函数和 REF 函数来写,但直接写出来的顶底分型在高频数据下会频繁误报。一种常见做法是先用 BARSTATS 把包含的 K 线合并成“有效 K 线”,再在有效 K 线上定分型。合并方向可以固定为“向上处理”:两根包含 K 线都取较高价,形成一个更高、更宽的有效 K 线。这样做虽然会推迟分型的确认时间,但换来的是分型数量的显著下降。
在通达信公式管理器里,新建一个副图指标“CHAN_FENXING”,代码如下:
{定义有效K线: 处理包含关系} H1:=IF(REF(H,1)>=H AND REF(L,1)<=L,MAX(H,REF(H,1)),H); L1:=IF(REF(H,1)>=H AND REF(L,1)<=L,MIN(L,REF(L,1)),L); UP:=H1>REF(H,1) AND L1>REF(L,1); DOWN:=H1<REF(H,1) AND L1<REF(L,1); {顶分型: 中间高,两边低} TMP:=REF(H,1)>H AND REF(H,1)>REF(H,2) AND REF(L,1)>L AND REF(L,1)>REF(L,2); BOT:=REF(L,1)<L AND REF(L,1)<REF(L,2) AND REF(H,1)<H AND REF(H,1)<REF(H,2); 顶分型:FILTER(TMP,3); 底分型:FILTER(BOT,3);这段代码先把包含关系按“向上处理”合并成基准高低价 H1 和 L1,再用合并后的数据判断顶底分型。FILTER 的第二个参数是 3,表示分型确认后 3 根 K 线内不重复出现同类分型,这个参数直接控制分型密度。想要更少的笔,就调到 5;如果是在 30 分钟以下级别选股,建议保留 2 到 3,避免漏掉小级别买点。
2.2 用最高价交叉法把相邻分型连接成笔
分型确定之后,起涨点选股指标需要在“已经形成一笔向上”之后才发出信号。缠论笔的定义是相邻的顶底分型之间至少有一根独立 K 线,涨幅超过一定比例,也就是要有力度。通达信里可以把笔简化成高低点交叉:底分型之后的高点如果突破前一个顶分型,就认为新的一笔向上成立。
代码上用到 CROSS 和 REF 函数。在刚才的副图里追加这样一段笔的标记:
{笔的顶底交替标记} 笔顶:=顶分型 AND REF(底分型,3) AND H>REF(H,3); 笔底:=底分型 AND REF(顶分型,3) AND L<REF(L,3); STICKLINE(笔顶,H,H*1.01,1,0),COLORRED; STICKLINE(笔底,L,L*0.99,1,0),COLORGREEN; DRAWICON(笔顶,H,'S'); DRAWICON(笔底,L,'N');这里 REF(底分型,3) 的含义是“当前 K 线往前数的第 3 根是否是底分型”,配合 H>REF(H,3) 保证从底到顶的拉升幅度足够。DRAWICON 的图标 S 和 N 分别是通达信自带的上箭头和下箭头,用来标记各位点,方便肉眼对照。注意通达信图标代码因版本不同有差异,如果显示空白,换成数字 1 和 2 即可。
提示:FILTER 的参数和 REF 的周期数不要随意照搬,必须先跑一遍 2023 年以来的日线数据,看顶底分型数量是否和目标级别的笔数量大致吻合。分型过多说明过滤不够,过少说明笔的连接条件太苛刻。
2.3 中枢识别:用高低点区间做近似
中枢在缠论里的原文定义是至少三段次级别走势的重叠区间,在通达信单一时钟框架里没法精确构建。但起涨点选股并不需要完整中枢,只需要知道“最近一个震荡区间在什么位置”。我的处理方式是把最近 10 根 K 线里的收盘价高点 HX 和低点 LX 包络起来,作为近似中枢区间,再判断当前笔的位置相对这个区间的关系。
公式如下:
中枢上沿:=HHV(H,10); 中枢下沿:=LLV(L,10); 在中枢上方:=L>中枢上沿; 在中枢上方拐头:=COUNT(在中枢上方,3)>=2 AND REF(收盘价,1)<REF(中枢上沿,1);“在中枢上方拐头”是第三类买点的简化表达:价格向上突破中枢上沿后,回踩且不再跌破。这个判断是起涨点选股指标里最便宜的三买写法。写进选股公式之前,先把这个副图和 K 线叠加在一起看几遍,如果中枢上沿频繁被穿越,说明 HHV 的周期参数需要调大,或者应该改用 EMA 平滑。
3. 用 MACD 面积背离过滤假信号:背驰判断的准确写法
3.1 为什么金叉不够,要用面积背离
缠论对背驰的定义是走势力度减弱,通达信里最常用的力度代理变量就是 MACD。MACD 金叉本身是同步指标,等金叉出现时往往已经涨了一段。起涨点品种的共同特征是,股价创新低但 MACD 的绿柱面积明显小于前一段下跌,也就是底背驰。为了能在选股公式里量化“面积小于”,需要把 MACD 绿柱的面积累计逻辑写出来。
常见做法是:用 SUM 函数分别累加最近一次死叉以来的 DIF 与 DEA 之间的差值绝对值,然后与同一时间段内的最高价下跌段比较。代码如下:
DIF:=EMA(收盘价,12)-EMA(收盘价,26); DEA:=EMA(DIF,9); MACD:=2*(DIF-DEA); {记录最近一次MACD柱线为负的累计面积} 绿柱面积:=IF(MACD<0,SUM(ABS(MACD),BARSLAST(MACD<0)+1),0); {记录最近一次为正的累计面积} 红柱面积:=IF(MACD>0,SUM(MACD,BARSLAST(MACD>0)+1),0);注意 SUM 函数在通达信里不能直接累加“从某位置到当前”的连续和,需要用 BARSLAST 返回上一次条件成立的周期数,再加 1 作为累加长度。这个写法有周期性,所以每一次背驰的判断都是独立的,不会跨周期累加。
3.2 用面积比过滤弱势反弹:底背驰的完整信号
有了绿柱面积,接下来定义“底背驰”:当前一段下跌对应的绿柱面积,明显小于前一段下跌对应的面积。在代码里,前一段下跌面积可以写成 REF(绿柱面积, 上次底分型的位置)。但 REF 只能用固定周期数,所以更简单的方式是取最近一次创阶段性新低时的面积,与上一次创新低时的面积做比较。
完整判断如下:
新低:=L<REF(LLV(L,20),1); 面积前低:=REF(绿柱面积,BARSLAST(新低)+1); 底背驰:=新低 AND 绿柱面积<面积前低*0.8 AND 收盘价>REF(收盘价,BARSLAST(新低));这里乘 0.8 的意思是,后一段的绿柱面积至少要小于前一段的 80%,才算真正的力度减弱。0.8 是常用起点,但不是标准答案。如果你选的是波动较小的权重股,这个系数建议调到 0.9;如果是题材小盘股,0.7 会更灵敏。
注意:BARSLAST(新低) 在通达信里返回的是“上次条件成立到当前的周期数”,所以 REF(绿柱面积, BARSLAST(新低)+1) 才是上一次新低处的绿柱面积。不要漏掉 +1,否则对比的是当前周期的错误值。
3.3 起涨点合成逻辑:底背驰 + 底分型 + 站上 5 日线
单靠底背驰还不够,因为弱势股可以连续背驰再背驰。把底背驰和 2.1 里的底分型合在一起,再加一个最简单的“收盘价站上 5 日线”条件,能过滤掉多数假信号。这里用 5 日线的意义是确认短期趋势已经拐头,而不是在下跌趋势里盲目抄底。
选股副图“QDZ_CHAN”的完整信号表达式:
买点:=底背驰 AND 底分型 AND 收盘价>MA(收盘价,5); DRAWICON(买点, LOW, 1);这个公式写进副图后,历史 K 线上会标出所有买点位置。建议先在任意一只自选股上缩小看 3 年日线,观察买点是否密集出现在大幅下跌后的缩量区间。如果信号太多,执行以下任一调整:把底背驰系数从 0.8 改成 0.6;把底分型的 FILTER 参数从 3 改成 5;把“站上 5 日线”改成“站上 10 日线”。
4. 通达信缠论起涨点选股公式的完整构建与参数调优
4.1 条件选股公式的最小可运行版本
前面几节的内容是副图指标,但最终要用到“选股”功能,就需要把副图代码换成条件选股公式。区别于副图指标,条件选股公式只能输出一个结果,不能有 DRAWICON 和 STICKLINE 这类绘图函数,也不能出现“选股:”等赋值以外的输出。新建条件选股公式“CHAN_QDZ”,代码合并如下:
{合并K线包含关系} H1:=IF(REF(H,1)>=H AND REF(L,1)<=L,MAX(H,REF(H,1)),H); L1:=IF(REF(H,1)>=H AND REF(L,1)<=L,MIN(L,REF(L,1)),L); {分型定义} TMP:=REF(H1,1)>H1 AND REF(H1,1)>REF(H1,2); BOT:=REF(L1,1)<L1 AND REF(L1,1)<REF(L1,2); 底分型:=FILTER(BOT,3); {背驰判断} DIF1:=EMA(收盘价,12)-EMA(收盘价,26); DEA1:=EMA(DIF1,9); MACD1:=2*(DIF1-DEA1); 绿柱面积:=IF(MACD1<0,SUM(ABS(MACD1),BARSLAST(MACD1<0)+1),0); 新低:=L<REF(LLV(L,20),1); 面积前低:=REF(绿柱面积,BARSLAST(新低)+1); 底背驰:=新低 AND 绿柱面积<面积前低*0.8 AND 收盘价>REF(收盘价,BARSLAST(新低)); {最终选股条件} 选股:底背驰 AND 底分型 AND 收盘价>MA(收盘价,5);注意,条件选股公式里没有绘图函数,也没有类似“顶分型”的冗余输出。选股条件里只保留底分型、底背驰、5 日线过滤三个部分,这保证了公式执行速度。在通达信公式管理器的“条件选股公式”分类下新建时,确认公式类型选择的是“条件选股”,不是“副图”或“主图”。
4.2 三个必调参数:周期、面积系数、分型过滤
参数调优是选股公式能不能用的关键一步。很多用户直接照搬别人的源码,然后发现选出来的股票一大堆,不是公式错,而是参数没和行情阶段匹配。这个指标有 3 个参数必须按自己的交易周期调整:
- 分型过滤参数(FILTER 的第二个参数):默认 3,指的是底分型确认后 3 根 K 线内不许出现新的底分型。日线级别选股建议用 3,周线选股用 5,30 分钟级别用 2。参数越小,信号越多但越毛糙;参数越大,信号越少但越靠后。
- 面积系数(0.8):当前绿柱面积与前一次绿柱面积的比。0.8 意味着要小 20% 才视为背驰。震荡市里可以放宽到 0.9,单边下跌里收紧到 0.65 可以避免接飞刀。
- 新低的回看周期(LLV 的 20):20 日新低是“最近正在创新低”的判定窗口。如果选出来的票都是刚跌破平台的,可以把窗口改到 10;如果想要更左侧的起涨点,改到 30。
参数调优没有绝对最优,只有和自己交易周期匹配的“合适”。先用日线数据回看最近三个月,调整到信号一周出现 3 到 6 次比较合理。
4.3 用通达信公式管理器跑历史回测
通达信没有真正的回测系统,但可以用“条件选股”里的“选股范围”指定“某板块”加“历史某日”来实现简单回测。在公式管理器里选择刚才建的“CHAN_QDZ”,然后按下图路径操作:功能 -> 选股器 -> 条件选股,把选股范围设为“沪深 A 股”,勾选“剔除 ST”,在“选股周期”里选择日线。
跑历史选股需要在“高级选项”里把“选股时间段”改成过去的时间,比如 2024 年 1 月 1 日到 2024 年 2 月 1 日,这样选出来的票就是当月的起涨点候选。逐月回测时建议把结果导出成板块,再把板块和后续涨幅对齐,看信号出现后 5 日的平均涨幅。这一步骤没用外部数据,但足够判断参数是否值得实盘。
5. 起涨点信号的“未来函数”陷阱自查清单
选股指标最容易翻车的地方不是缠论逻辑,而是未来函数。常见误用是:在判断底分型的公式里用到了 REF(H,1) 和前两根 K 线数据,这本身没问题,但如果在同一个公式里既用 FILTER(底分型,3) 又用 DRAWICON 在分型出现当根画图标,就会让人误以为信号是在 K 线最低点出现时发出。实际运行中,底分型要等第三根 K 线走完才能确认,所以盘中看到的信号可能会在收盘后消失。
避免方法:在选股公式里加一个“确认”条件,把底分型的判断推迟一根 K 线:
确认底分型:=REF(BOT,1);用 REF 把底分型向后平移一根,虽然信号晚一天出现,但不会回头看。缠论本身就强调确认,晚一天不影响起涨点的大方向,但能显著减少虚假信号。
另一个坑是 MACD 面积累加时的 BARSLAST 返回值。MACD 绿柱面积在首次出现时,BARSLAST(MACD<0) 返回 0,SUM 累加长度是 1,没有问题;但当绿柱首日出现时,DIF 和 DEA 可能还在高位,面积值极小,容易产生“第一次背驰”的误报。为此,条件里额外增加一段“前一段绿柱面积必须大于某个阈值”的过滤:
面积前低>0.5阈值 0.5 是相对值,单位是 MACD 柱线的绝对值乘以周期数。跑出来后如果信号骤减,先把阈值降到 0.3。
提示:验证一个公式有没有未来函数的方法很简单——用“条件选股”跑一个过去日期,再手动翻到那一天看看信号是否一致。如果历史信号和当时实盘看到的 K 线位置对不上,就是公式里混入了未来数据引用。
6. 用“多级别共振”把起涨点选股从 60 分做到 80 分
单靠日线底背驰加底分型,选出的股票数量还是偏多。更接近实战的做法是加一个周线级别的过滤。不必额外编写新指标,只需要在现有选股公式中用“周线数据引用”来解决。通达信里,周线数据不能直接在同一公式里和日线混用,但可以用“周期”切换来间接实现:先选“周线”周期跑一次 CHAN_QDZ,把选出的结果存入自定义板块,再用“日线”周期在这个板块内跑一次。两次都选中的股票,就是日线和周线双级别起涨点共振的标的。
这个流程的操作路径如下:在“条件选股”窗口里把周期改为“周线”,执行后点击“存为板块”,命名为“周线起涨”;再把周期切回“日线”,选股范围指定为“周线起涨”板块,执行第二次选股。两次选股结果取交集,代码层面其实没有新公式,但效果上相当于做了一次多周期确认。
如果你希望代码里直接体现级别叠加,还有一个更轻量的做法:把日线条件中的“底分型”改成“周线级别底分型的影子”——也就是日线上连续 5 日不创新低来模拟周线走平:
周线走平:=COUNT(L>REF(LLV(L,5),1),5)>=4;这行代码的含义是最近 5 天里至少有 4 天的最低价比前 5 天最低价高,代表中期下跌动能在减弱。把它并入选股条件,本质上是用自身数据模拟了周线的止跌状态。这种方式不引入新的周期计算,实盘运行速度更快,但它的精度比真正的周线选股要软一些。
此外,可以在选股前用通达信的“财务选股”功能先剔除上市不满一年的次新股,再把 ST 股过滤掉,最后叠加 CHAN_QDZ 信号。通达信条件选股支持多条件组合,把“上市时间大于一年”“每股收益大于 0”“不是 ST”这些作为前置过滤条件,可以极大提高起涨点信号的有效性。经过这一层筛选后,再结合当日成交额排行,将选股范围进一步压缩到成交额前 200 名以内,这样做主要是为了避免流动性不足带来的买卖价差损耗。
指标最终效果验证方式很简单:在历史 K 线上把信号标记显示出来,选择 2023 年 4 月、2024 年 2 月两段下跌尾声,观察信号是否出现在低点右侧一到两根 K 线内。如果你的信号全部出现在半山腰或者最低点正下方,重复 4.2 的参数调整流程,直到信号位置和笔的底分型位置一致。这个调参过程没有捷径,但每调一次,你对缠论在通达信里的边界和手感都会更清晰一点。
本文还有配套的精品资源,点击获取