简介:这份通达信公式源码文档以“危中择机 金砖选股”为核心策略,适合熟悉通达信操作、希望借助自定义指标在震荡行情中捕捉风险背后上涨机会的股票技术分析者。文档对公式中的齐胸、齐腰、齐踝等基于WINNER赢家函数的指标含义、状态1至状态5的划分逻辑、TJ1-TJ6触发条件、BT001-BT004买入组合,以及DXBT长期趋势信号和怒放、半开等最终买入信号做了逐条注释与拆解,并解释了FILTER函数在消除短期假信号中的作用。包体为单个doc说明文件(1个doc,共138KB),内容简明,适合对照通达信软件边看边调试。目前已有113人学习下载。通过阅读可掌握整套选股公式的构造思路、参数含义与信号过滤方法,在此基础上结合自身策略调整阈值,提升在不同行情下的应用能力。
1. 危中择机选股公式,抄底与避雷并存
“危中择机”这四个字,在通达信公式圈里代表一类基于“超跌反弹+风险过滤”思想的选股模型。它不是简单的“跌多了就买”,而是在识别个股短期出现非理性杀跌、情绪过度恐慌的同时,叠加成交量萎缩、主力资金异动、关键技术位支撑等多重条件,筛选出安全边际相对较高、反弹动能积蓄充分的标的。比较典型的“金砖”选股变体,通常会在形态上要求“大阴线不破前低”、“连续缩量止跌”、“分时或日线级别出现背离”等信号,来区分真正的黄金坑和下跌中继。
这个公式最实用的场景是震荡市和急跌后的修复期。在单边下跌行情中,任何“危”都可能演变成“危上加危”,因此这类公式必须包含趋势过滤条件,否则回撤会非常惨烈。对有一定经验、能看懂开盘和收盘行为的交易者来说,这类公式能帮你把盯盘范围从四千多只票缩小到几十只;对完全的新手,它更像个学习模板,能帮你理解“条件组合”在选股中的具体表达方式。
需要明确的是,选股公式解决的是“找出符合条件股票”的效率问题,它不保证胜率,更不是收益承诺。接下来就顺着公式的编写、测试、排错和进阶使用这条线,把这类指标彻底讲透。
2. 选股公式的底层逻辑:从“危”到“机”的条件映射
2.1 “危”的信号如何量化:跌幅、阴线数量与乖离率
在通达信的公式语言里,最直接表达“危”的指标是短期跌幅和乖离率。常见做法是用C/REF(C,N)-1计算N日跌幅,配合BIGLOSS = C<O*0.97之类的大阴线识别。但纯粹的暴跌容易选到基本面崩坏或高位跳水的票,所以实际公式中要限制“累计跌幅的范围”,避免从涨停板跌下来的票也被扫进来。
我一般倾向于把“危”拆成三层去看。第一层是阶段跌幅,比如5日或10日累计跌幅超过15%但不超过30%,太高的跌幅往往意味着资金已经夺路而逃,接飞刀的风险极大;第二层是阴线质量,要求最近3天里至少有2根实体阴线,且阴线实体要大于下影线,说明空头还在发力而不是已经衰竭;第三层是乖离率,用BIAS = (C-MA(C,20))/MA(C,20),要求BIAS小于-8%但大于-20%,确保股价确实偏离了20日成本线,又没有偏得太离谱。
2.2 “机”怎么确认:缩量、支撑与资金回流的组合
仅仅超跌,不构成买入理由。真正让超跌变成机会的,是“抛压衰竭”和“承接出现”这两个事实。抛压衰竭最直观的指征是成交量,用V<MA(V,5)*0.7表示当天缩量到5日均量七成以下,说明卖盘不愿在这个位置割肉了;更严谨一点,可以用V/REF(VOL,1)来看单日量比,量比小于0.8且收阴线或十字星,往往是变盘前兆。
支撑条件最好借用布林带或均线系统。以20日均线为锚,如果股价最低价触及MA(C,20)*0.97附近出现探底回升,即下影线大于实体两倍,这是一个很经典的“长下影线止跌”信号。在“金砖”类公式里,还常加入一个资金回流的动作:用AMOUNT/REF(AMOUNT,1)>1.2或者直接引用资金流类指标,确认当天有增量资金进场。资金回流和缩量看似矛盾,实际上描述的是“先缩量、后放量”的两个交易日状态,不是同一天。
2.3 过滤条件比买入信号更重要
在写公式之前,先想清楚“什么情况不做”,这比想清楚“什么情况做”更能决定公式的命运。一般我会在选股公式里硬性加上三条过滤:当前股价必须站在年线之下,确保选的是超跌而非强势股回踩;流通盘不能太小也不能太大,用小盘股容易乌龙指或涨跌停失真,用超级大盘股又很难有超额反弹,所以流通市值在50亿到300亿之间比较合适;剔除ST和最近有退市风险警示的票,直接通过名称函数排除。
另外,如果当日大盘环境极差,比如大盘跌幅超过3%,任何选股信号都该被无视。通达信里可以用INDEXC/REF(INDEXC,1)-1拿到指数涨跌幅,做成一个总闸门。这一层过滤,决定了公式在熊市里是让你亏5%还是亏20%的区别。
| 条件模块 | 常用函数/写法 | 典型参数 | 作用 |
|---|---|---|---|
| 阶段跌幅 | C/REF(C,10)-1 | -0.15 到 -0.30 | 识别超跌 |
| 阴线实体 | C<O AND (O-C) > (C-L)*2 | 实体为下影2倍 | 确认空头形态 |
| 20日乖离率 | (C-MA(C,20))/MA(C,20) | -8% 到 -20% | 监控偏离程度 |
| 量能萎缩 | V < MA(V,5)*0.7 | 低于5日均量7成 | 判断抛压枯竭 |
| 支撑下影 | (MIN(C,O)-L) > (MAX(C,O)-MIN(C,O))*2 | 下影大于实体2倍 | 捕捉承接 |
| 总闸门 | INDEXC/REF(INDEXC,1)-1 > -0.03 | 大盘跌幅小于3% | 系统性风险控制 |
3. 手写“危中择机”选股公式:核心代码与参数速查
3.1 公式代码逐行拆解
以下这个公式是我常用的一个基础版本,兼顾了可读性和实际选股效果,命名为“危中择机”。直接在通达信的公式管理器里新建一个“选股公式”,类型选择“条件选股”,把代码粘贴进去。完整代码如下:
{危中择机选股公式 - 适用于日线周期} {风险控制闸门 - 大盘当日不能大跌} INDEX_DROP := (INDEXC/REF(INDEXC,1)-1) < -0.03; {条件1:10日累计跌幅在15%-30%之间} DROP10 := C/REF(C,10)-1; RISK_DROP := DROP10 <= -0.15 AND DROP10 >= -0.30; {条件2:20日乖离率在-8%到-20%之间} BIAS20 := (C-MA(C,20))/MA(C,20)*100; RISK_BIAS := BIAS20 <= -8 AND BIAS20 >= -20; {条件3:最近3天中至少有2根实体阴线} YINXIAN := C < O AND (O-C) > 0; YIN_COUNT := COUNT(YINXIAN,3); RISK_YIN := YIN_COUNT >= 2; {条件4:当日缩量,成交量低于5日均量*0.7} VOL_SHRINK := V < MA(V,5)*0.7; {条件5:出现长下影线,下影长度>实体长度的2倍} SHADOW := MIN(C,O)-L; BODY := MAX(C,O)-MIN(C,O); RISK_SHADOW := SHADOW > BODY*2 AND BODY>0; {条件6:非ST,且股价大于3元,过滤低价垃圾股} NOT_ST := NAMELIKE('ST')=0 AND NAMELIKE('*')=0; PRICE_OK := C > 3; {最终组合} SIGNAL := RISK_DROP AND RISK_BIAS AND RISK_YIN AND VOL_SHRINK AND RISK_SHADOW AND NOT_ST AND PRICE_OK; SELECT SIGNAL;3.2 关键参数怎么调:从“选出”到“选优”
这段代码里有几个参数决定了选出来股票的“性格”。如果选出来的票太多,优先收紧DROP10的下限,把-0.15改成-0.18,这会要求更大跌幅,数量立刻瘦身;如果选得太少,放开BIAS20的上限,从-8放宽到-6,让更多刚触发超跌的股票进入视野。
COUNT(YINXIAN,3)这个函数是计数的意思,统计3天内满足括号内条件的天数。改成COUNT(YINXIAN,3)>=1,会纳入更多只跌了一天的票,灵敏度提高,但误报也随之增多;保持>=2,对下跌趋势确认得更扎实,相对保守。我建议在实盘跟踪时先用>=2,运行两周后,根据自己的风险偏好再决定要不要放宽。
RISK_SHADOW这个条件在公式中比较严格,因为下影线超过实体两倍在日线级别不是每天都有。如果你用30分钟或60分钟周期选股,这个条件会频繁触发,但可靠性会下降。这就是为什么这个公式的目标周期应该锁定在“日线”的原因,周期越短,噪音越大。
3.3 如何把源码从 Word 文档安全导入通达信
标题里提到“.doc”文件,实际是通达信公式源码的常见分发格式。常见做法是通过公式管理器手动复制,步骤相对固定。操作路径是:打开通达信 → 按Ctrl+F打开公式管理器 → 选“条件选股公式” → 新建 → 公式名称填“危中择机”,将源码粘贴到“公式正文”大框里 → 点“测试公式”,系统会提示“测试通过”。如果有语法错误,通达信会用红色高亮提示行号,对照;和:=查漏补缺即可。
需要注意的是,从 Word 文档复制代码时,经常会把中文标点或空格带进代码编辑器。通达信的公式语法只认英文标点,一个中文分号就能让整个公式测试失败。所以粘贴后,用系统自带的“替换”功能,把中文括号、分号、逗号替换成英文状态。比较典型的坑是公式里的注释{}不小心被 Word 自动替换成了全角花括号,导致大段代码变成注释而被跳过。
纯文本的“公式源码”不涉及任何外部依赖,不需要安装了未来函数或扩展库的支持,所以导入的兼容性一般没问题。如果公式测试失败,第一看标点符号,第二看变量名是否和系统保留字冲突,比如ZIG、BACKSET之类,第三就是看括号是否配平。
4. 选股效果验证与排序:从“选出”到“可用”的必经之路
4.1 用条件选股和“成功率测试”快速回测
公式写好后,第一步不是在实盘里点“选股”,而是打开通达信的“功能” → “选股器” → “条件选股”,找到刚建的“危中择机”,点击“选股入板块”,跑一遍看看当前市场能选出几只。如果选出来的数量为0,不代表公式错了,可能只是当前市场不满足超跌条件,你可以调整条件里的参数或者换到历史某一天去验证。
通达信自带“公式性能测试”,入口一般在“公式管理器”里选中公式后点“测试”,或者在“条件选股”界面点“历史测试”。推荐用“成功率测试”功能,设置测试时间段为一到两年,买入规则选“次日开盘买入”,卖出规则选“5日收益大于10%算成功”或“5日最高价涨幅大于8%”。这么做是为了检验“出现信号之后,短期是不是真的有反弹”这一核心逻辑。
测试结果中重点看两列:成功率和平均收益。一个能用但不完美的超跌反弹模型,在震荡市里成功率应该在45%到55%之间,平均收益应该是正数。如果成功率低于40%,说明“危”的识别太宽泛,飞刀接太多;如果成功率高于65%,反而要小心,因为可能是参数过拟合,换个时间段就失效。
4.2 结合排序功能挑出“金砖”
选股公式本质上是“海选”,选出几十只之后还需要做质量排序。通达信的“综合选股”或“排序”功能可以帮上忙,常见做法是把选出的票按“涨幅乖离率从大到小”或“量比从低到高”排,优先关注跌幅大但同时缩量明显的标的。我一般会手动排序如下几个指标:当日量比、换手率和20日跌幅。量比低代表当日交易冷清,换手率在2%到6%之间代表有存量资金博弈但还没有完全失控。
如果你懂一点扩展的“自定义数据”,也可以把“主力资金净流入”作为排序项,但这不是通达信内置数据,需要外接数据源,复杂度较高。新手不建议一开始就上这个,先用最基础的行情指标排序就够了。
4.3 回测结果的解读误区
最常见的一个误区是只盯着成功率,忽略“亏损单的平均亏损”和“盈利单的平均盈利”。假设公式成功率50%,但成功时只涨5%,失败时跌10%,长期执行依然是亏损的。我们必须把公式的期望收益算出来,公式可以写成成功率*平均盈利 - (1-成功率)*平均亏损,期望值为正,逻辑才成立。
提示:任何回测都隐含了“未来函数”风险,尤其是使用了
ZIG、PEAKA等未来函数的公式,成功率会被严重高估。本公式中用的都是REF、COUNT、MA等基础函数,理论上在信号出现的当天收盘后就能确定,不存在未来函数问题。
另一个容易忽略的点是“跌停板无法买入”的现实约束。如果公式选出的股票当天都是跌停或一字板,第二天开盘可能根本买不进。所以在回测时,最好把买入条件设为“次日开盘价涨幅小于5%且未跌停”这样才贴近真实成交情况。
5. 公式的进阶用法:从选股公式到盘中预警
5.1 把条件直接变成“盘中预警”
通达信的选股公式和“预警公式”写法几乎一样,只是触发的时机不同。多数做预警的工程师会把选股条件拆成两批:一批在开盘后立即触发,一批在午后14:30之后触发。开盘时主要用“昨收跌幅乖离”和“消息面缺口”来做条件,下午则更多依赖当日分时走势和量能结构。
“危中择机”公式本身偏日线级别,盘中预警时通常建议把周期切成60分钟或30分钟来用。具体改法是,在公式管理器新建“预警公式”,粘贴同样的代码,但把MA(C,20)改成MA(C,40)以适配更短的周期波动。同时把INDEX_DROP去掉,因为盘中指数跌幅变化太快,容易造成频繁的假信号。
5.2 与“macd8大形态选股公式”结合的过滤思路
从检索中看到MACD形态类选股公式也是热门需求。一个比较实用的做法是将“危中择机”作为入场时机,把“MACD底背离”作为方向过滤。具体来说,用MACD.DIF和MACD.DEA的交叉状态,加上股价新低而DIF不新低的背离判断,来去掉那些下跌动能仍然很强的票。这样做的实际意义是:超跌加上指标钝化,反弹的概率会更高。
MACD底背离的判断公式写成:
DIF := MACD.DIF; LOW_NEW := LLV(LOW,10); DIF_NEW := LLV(DIF,10); BELAI := LOW_NEW < REF(LOW_NEW,1) AND DIF_NEW > REF(DIF_NEW,1);这段代码的逻辑是:10日内的最低价比昨天的10日最低价更低,但DIF的10日最低值没有同步创新低,说明做空动能在背离。将这个BELAI条件用 AND 加到主公式中,能过滤掉大量“阴跌不止”的恶性票。
5.3 实盘节奏:什么时候运行这个公式
最后给你一个实盘运行节奏的参考,这部分完全来自我自己的使用习惯。收盘后,用日线公式选一遍,把结果存进板块,晚上做功课;次日开盘后30分钟内,用60分钟周期版本做预警,重点看前一日选出个股是否出现加速下探后企稳。对于日内已经涨幅超过3%的票,不要追,等回踩分时均线再考虑。这样即是用公式来完成“危中择机”的发现、验证和触发三步。
不要每天机械性地跑公式,只在指数连续下跌3天以上,或者单日大跌之后再用,有效性会明显好于天天扫射。公式是工具,如何使用工具的时机,才是真正拉开差距的地方。
本文还有配套的精品资源,点击获取