简介:一份面向广大股票与期货投资者的通达信技术指标公式源码文档,重点聚焦于信号少、胜率高的条件判断策略。文档从通达信平台基础概念讲起,逐步深入拆解 AI、C0、C1、DSY 四个核心变量的计算逻辑:AI 指标反映每笔交易金额占总成交额的百分比,C0 与 C1 分别代表短期和长期历史收盘价均线,DSY 则用于衡量交易流量的充沛程度。核心“抄底”信号被设计为一个两层条件——当收盘价相对 C0/C1 中较小值的偏离度小于10%,且近5日 DSY 均值低于1.8时,系统输出买入信号,从而过滤掉大量无效波动,减少交易噪音。整份资源仅含1个doc文件,压缩包大小132KB,内容紧凑,便于直接查阅、复制公式并根据自己的交易习惯进行修改。目前已有178人学习下载,适合有一定通达信基础、希望优化入场时机并提升胜率的个人投资者。资料中提供了完整源码、变量含义说明及条件逻辑解析,既可用于选股与风控,也能作为自定义指标开发的参考模板。 写通达信公式这些年,我最深的一个体会就是:信号多不等于能赚钱,反而往往是亏钱的开始。
早年我也沉迷于那种一天能选出几十只票的万能公式,看着满屏的买入信号,感觉下一秒就能财务自由。结果呢?信号多到根本看不过来,随便挑一只买进去就被套,止损割肉,然后再等下一个信号,循环往复,账户资金像坐了滑梯一样往下出溜。后来我慢慢想明白一个道理:真正能稳定赚钱的公式,一定是“信号少、胜率高”的。今天我就把自己打磨了大半年的一套低频高胜率选股公式源码,连同设计思路和踩坑经验一起拿出来聊聊,适合那些已经会用通达信基础功能、想自己动手写选股指标、又苦于信号太多太杂的朋友参考。
1. “信号满天飞”为什么难赚钱
1.1 信号数量与胜率之间的天然矛盾
先说一个很多人没意识到的问题——信号多,本质上就是筛选条件太宽松。
举个最简单的例子,单写一个“MACD金叉”,也就是DIFF上穿DEA,一天下来全市场能选出一两百只股票。这里面有上涨趋势中的回调金叉,也有下跌趋势中的反抽金叉,甚至还有横盘震荡的假金叉。你根本不知道哪个是真正要启动的,只能碰运气。
而胜率高的公式,背后一定是严格的条件组合。条件越多,能通过筛选的股票就越少,但每一只通过筛选的股票,它在逻辑上满足的“启动前特征”就越完整,买入后的成功概率自然就上来了。这就像面试,只要求“会写代码”能筛出一百个人,但如果你再加上“五年经验、熟悉某一领域、有大厂项目经历”这些条件,最后留下的可能就剩三个人,但这三个人大概率是真正合适的。
1.2 “低频+高胜率”公式背后的设计逻辑
那怎么才能设计出一个信号少、胜率高的公式?我总结下来,核心就三个字:加过滤。
一个科学的高胜率选股公式,应该像漏斗一样,层层筛选,最终留下来的都是有“共性”的强势股。我自己在写公式时,通常会叠加以下几类过滤条件,每加一个条件,信号数量都会大幅减少,但同时也会让信号质量更高:
| 过滤维度 | 核心逻辑 | 对信号数量的影响 |
|---|---|---|
| 趋势过滤 | 股价运行在关键均线上方,均线呈多头排列 | 过滤掉大部分下跌趋势中的反弹票 |
| 量能过滤 | 回调时缩量,启动时放量 | 过滤掉无量阴跌、庄家出货的票 |
| 位置过滤 | 股价处于相对低位或回调到关键支撑位 | 过滤掉高位追涨的风险 |
| 动能确认 | MACD、KDJ等指标处于多头共振区域 | 过滤掉弱势反抽、假金叉的干扰 |
| 资金确认 | 量比、换手率适中,有资金关注但未过度炒作 | 过滤掉冷门股和情绪过热的妖股 |
叠加四五个条件之后,一套公式在正常情况下可能一周只出两三次信号,甚至有时候一周一个信号都没有。但老实说,我觉得这才是正常的,甚至是好事。行情不好的时候信号少,说明公式在自动帮你规避风险;行情好的时候信号相对多,说明公式抓住了市场机会。
2. 一套“低频高胜率”选股公式源码逐行拆解
2.1 完整源码
下面直接上干货,这套公式是我实盘用了很久的,核心思路是“趋势向上 + 缩量回调到支撑 + 动能重新转强”,我把它的定义放在下面,大家在通达信里新建一个“条件选股公式”,把代码复制进去即可:
{参数区} N:=20; {回踩观察周期} M:=5; {量能缩放周期} P:=60; {中期趋势均线} MA5:=MA(CLOSE,5); MA10:=MA(CLOSE,10); MA20:=MA(CLOSE,20); MA60:=MA(CLOSE,P); {趋势过滤:短期均线多头排列,收盘价站上60日线} 趋势:=MA5>MA10 AND MA10>MA20 AND CLOSE>MA60; {缩量回调:当日成交量小于5日均量,说明回调抛压不重} 量缩:=VOL<MA(VOL,M); {回踩支撑:最低价触及20日线附近(不破),且收盘收回20日线上方} 回踩:=LOW<=MA20*1.02 AND CLOSE>=MA20; {MACD多头区域:DIF在DEA上方,且DIF为正} DIF:=EMA(CLOSE,12)-EMA(CLOSE,26); DEA:=EMA(DIF,9); MACD多头:=DIF>DEA AND DIF>0; {KDJ金叉辅助确认,且J值不高,避免追高} RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; K:=SMA(RSV,3,1); D:=SMA(K,3,1); J:=3*K-2*D; KDJ金叉:=CROSS(K,D) AND J<80; {最终信号} 信号:=趋势 AND 量缩 AND 回踩 AND MACD多头 AND KDJ金叉; {画线输出} STICKLINE(信号,0,1,1,0),COLORRED; DRAWTEXT(信号,1.2,'低吸'),COLORWHITE;2.2 关键函数与参数的设计意图
这套公式里没有用任何未来函数,也没有复杂的加密逻辑,全部是通达信内置的基础函数,但每一个条件的筛选力度都很大。
先说趋势过滤。MA5>MA10 AND MA10>MA20是典型的短期多头排列,CLOSE>MA60是为了确保股价运行在中期均线上方。有了这三条,基本上就把还在下跌通道里反弹的股票全部过滤掉了。我特意用MA60而不是MA120,是因为60日线更贴近中线资金的成本线,一旦股价站上60日线,说明近三个月的持仓者大多处于盈利状态,抛压相对较小。
再说缩量回调。VOL<MA(VOL,M)表示当日成交量小于M日均量,M默认是5。这一条非常关键——回调过程中缩量,说明割肉盘和获利盘都不多,筹码锁定良好。如果回调时放量,那很可能是资金在出逃,这种股票即使回踩到20日线也不能碰。
然后是回踩支撑。LOW<=MA20*1.02表示最低价触及20日均线或其上方2%的区域,CLOSE>=MA20表示收盘时股价还站在20日线上方。这里我加了1.02的容差,是因为强势股很少精确回踩到20日线,很多时候在20日线上方一两毛钱就反弹了。如果你把容差设为1,也就是必须跌到20日线,信号会急剧减少,反而不利于实际使用。
MACD多头和KDJ金叉这两个条件,本质上是动能确认。DIF>DEA能保证短期动能强于中期动能,DIF>0则保证动能位于零轴上方,属于多头市场。KDJ金叉是常用的短线买点信号,我加了一个J<80的约束,是为了避免在过热区域追高——如果J值已经很高还出现金叉,说明股价短线已经涨了一大截,这时候进场很容易买在山顶。
2.3 参数怎么调:不同风格对应不同数值
这套公式默认参数适合中线低吸风格,但如果你有自己的交易习惯,参数是可以灵活调整的。
- 想把信号调得更少(更稳):把
N从20改成30,M从5改成10,容差从1.02改成1.01。条件更严格,回踩周期更长,量能萎缩得更充分,信号数量可能直接减半。 - 想适应短线快进快出:把20日线改成10日线,
P改成30,容差稍微放宽到1.03。这样选出来的是强势股回踩10日线附近的短线买点,持股周期3-5天,止盈止损都要更快一些。 - 想适应不同板块:如果是做波动大的题材股,建议把
MA20改成MA10,因为题材股回调往往很浅,很难等到20日线;如果是做银行、地产这种波动小的权重股,可以把均线周期拉长到30日,信号更稳定。
注意:参数不是越严格越好。我自己测试过,把容差放到1.01后,公式经常一个月都出不了几次信号,选出来的股票虽然稳,但没有可操作性。好的参数是在“信号数量”和“信号质量”之间找一个平衡点,我的经验是每个月能有8-15次信号比较合理。
3. 实战验证与选股器配合使用指南
3.1 把公式接到通达信选股器里
源码建好之后,如果你用的是通达信电脑版,操作路径是:功能 → 选股器 → 综合选股 → 选择“条件选股公式” → 找到刚才新建的公式 → 加入条件 → 执行选股。
有几个设置细节值得注意。第一,执行选股前,一定要把“选股范围”设置为“沪深A股”,并且剔除ST板块和上市未满60日的新股,这些股票要么流动性差,要么数据不稳定,容易干扰信号。第二,建议勾选“前复权”数据再选股,因为如果不复权,除权除息会导致股价跳空,20日线附近的位置会被计算错。第三,选股日期选择“最近一天”即可,这套公式本来就是盘中或盘后用的,不需要做历史回测区间的批量选股。
3.2 不同行情下的信号表现差异
我实测下来,这套公式的表现跟大盘环境关系很大。在震荡市或者上升趋势中,信号质量很高,买入后往往几天内就能走出反弹;但在单边下跌行情中,信号数量会明显增多,但假信号也变多,因为弱势环境下即使回踩到20日线,也可能继续破位下跌。
所以现在我用这套公式时,会先看一眼大盘的20日线。如果大盘指数在20日线上方,正常选股操作;如果大盘跌破20日线,我会把公式选出的股票全部放弃,或者只做轻仓试探。不要觉得这是多此一举,因为个股的走势再强,也扛不住大盘系统性下跌,这是我在实践中交过学费才明白的。
3.3 买入后的止损止盈与仓位安排
公式只是解决了“在哪里买”的问题,买完之后怎么操作,同样重要。我个人习惯是:
- 止损:买入后如果收盘价跌破20日线3%以上,无条件出局。因为这说明“回踩支撑”的逻辑已经失败了,不应该继续扛单。
- 止盈:短线持股5-8个交易日,如果涨幅达到8%-12%,分批止盈。如果是比较强势的股票,我会把止盈位上移到10日线,跌破就走。
- 仓位:单个信号买入不超过总仓位的10%-15%。因为这套公式是“低吸”逻辑,买入后不排除还有最后一跌的可能,仓位控制能让你在极端行情下不至于伤筋动骨。
说句心里话,任何公式都只能提供“概率优势”,不能保证“每单必赢”。我现在用这套公式,单月胜率能维持在六到七成,就是靠严格的止损纪律把亏损限制在小范围内。止损永远比找一只好票更重要。
4. 公式编写中常见的坑与排错实录
4.1 未来函数:最隐蔽的“信号后移”陷阱
公式编写里最大的坑,就是不小心用了未来函数。什么叫未来函数?简单说,就是某个数据在当前时刻引用了未来才会出现的数据,选股时看到的信号,实际等到买入后可能就消失了或者变了。
通达信里常见的未来函数有ZIG(之字转向)、PEAK(波峰值)、TROUGH(波谷值)、WINNER(获利盘比例)等。比如ZIG这种函数,它需要走完一段趋势之后才能确认转折点,所以在信号出现的当时,你看到的买点其实是“用未来数据倒推出来的假买点”。
我自己刚学公式时就吃过这个亏,用了一个带ZIG的抄底公式,历史回测胜率高达九成,结果实盘一用就翻车。后来排查了很久才弄明白是未来函数在作怪。验证方法很简单:在通达信里把公式加载到主图上,然后按键盘的下箭头把K线往右移动,如果发现信号在历史K线里“凭空出现”或“凭空消失”,那这个公式大概率带了未来函数。我这套公式全部用的是REF、MA、CROSS这类及时函数,不会出现这个问题。
4.2 公式保存后报错的常见原因
编写公式时最常遇到的就是报错,通达信的报错提示一般会告诉你错误在第几行。我遇到的几种高频报错,基本都是小问题,但能卡住新手半天。
- 漏分号:通达信公式每一条赋值语句的结尾必须有英文分号
;。漏掉一个分号,后面的代码全部会被当成一条语句来解析,直接报错。 - 括号不匹配:函数嵌套层级多了之后很容易出现左括号和右括号数量不一致。我的习惯是写多层嵌套的语句时,像
EMA、SMA这种带两个参数的函数,先把函数名和括号一起写上,再往里面填参数。 - 变量名重复:如果你在副图指标里定义了
A,又在选股公式里定义了A,系统会提示重复定义。建议变量名尽量用有意义的英文或拼音,比如趋势、量缩、回踩,一眼就能看出含义,也不容易重名。 - 中英文符号混用:把中文输入法的逗号、括号打到了代码里,通达信识别不了。新手建议直接把输入法切到英文模式再写公式。
4.3 源码文件打开乱码怎么办
有些朋友拿到一份.doc格式的公式源码文件,打开后发现全是乱码,第一反应就是文件坏了。其实大多数情况下,这是编码问题。
通达信公式源码通常保存为ANSI(即GBK)编码格式,如果你用系统自带的记事本直接打开,记事本会默认按UTF-8解析,中文注释就全变成乱码了。解决办法很简单:用记事本打开源码文件后,选择“文件 → 另存为”,在底部编码栏里把默认的UTF-8改成ANSI,保存后再复制到通达信里就不会乱码了。
还有一个防坑技巧:从网上下载的公式源码,复制到通达信之前,先粘贴到文本编辑器里把格式清理一遍,尤其是把所有全角括号和全角分号替换成半角的。因为网页排版经常会把代码里的符号悄悄改成全角,粘贴过去直接报错,排查这个花的时间往往比写公式还长。
5. 一套公式的打磨过程远比公式本身重要
最后再聊点题外话。
很多人拿到一套源码,第一反应是赶紧复制进去看信号,如果信号少,就说公式不行,如果信号多,就迫不及待地买。但在我这几年的实践里,一套公式从“能选出股票”到“能稳定盈利”,中间还要经历大量的数据统计和参数磨合。
我自己的流程是这样的:先用历史数据做三个月以上的回看,把公式选出的每一个信号在K线图上标记出来,看看买入后三天的表现;然后统计胜率、平均盈亏比、最大回撤,再针对性地调整参数和过滤条件。这个过程可能要反复十几轮,但正是这个打磨过程,让你真正理解公式里每一个条件的作用,也让你知道它在什么行情环境下会失效。
这套“趋势加缩量回踩加动能确认”的公式,就是我在大量交易记录的基础上一点点调出来的。它不一定适合所有人,但它的设计思路——层层过滤、宁缺毋滥——我觉得是值得每个写通达信公式的朋友参考的。行情不好的时候,空仓等待信号,本身就是一种操作。
本文还有配套的精品资源,点击获取