简介《牛熊万金油 通达信指标公式源码》是一份面向通达信用户和股票技术分析学习者的指标公式文档适合希望研究均线系统与MACD组合信号、优化短线和中线买卖点的投资者参考。文档围绕3日、8日、10日、20日、55日、250日均线的粘合、金叉与多头上行排列展开说明超短线持股1至5天、中线不破5日线继续持有的判断思路并提示高位放量阴线、长上影线等不宜介入的情形。MACD部分则关注DIF与DEA在0轴上方金叉、再次上穿以及收盘价高于250日均线等条件还结合3日均线上穿6日均线、55日均线向上和AB条件来强化买入信号。资源包共1个doc文件约234KB体积轻便便于打开阅读、检索和复制公式源码。已有98人学习下载可帮助读者理解指标条件组合、验证选股逻辑并自行调整参数技术指标并非绝对仍需结合市场信息与自身风险承受能力审慎使用。1. 牛熊万金油指标在通达信里到底判断什么下载一份「牛熊万金油 通达信指标公式源码.doc」双击打开大概率是一屏纯文字几条均线公式、几个 CROSS 判断、若干 DRAWICON中间夹着全角括号和中文冒号。把它粘进通达信的公式编辑器点「测试公式」弹出「行 N 语法错误」。这个标题真正要打通的就是从一份文档里的公式文本到一条能在主图上分牛熊、在副图上给出红绿动能柱、还能把缩量假突破挡在门外的可运行指标。牛熊万金油的逻辑并不玄一条短周期指数均线代表多头持仓成本一条长周期指数均线代表空头成本两线的相对位置就是牛熊状态交叉点就是状态切换的确认位再乘上一个量能饱和度做过滤。它适合做中短波段、没法全天盯盘的从业者也适合当量化选股池的第一层粗筛。后面从语法底座写起一路落到参数怎么调、信号不出现时先看哪里。2. 通达信公式语法底座与牛熊万金油的数据源选型2.1 通达信公式的四类语句与输出控制通达信的公式语言只有四种基本动作搞混了就会出现「变量算出来了但图上没有」的情况。第一种是:只算不画叫中间变量第二种是:算完并在图上输出第三种是带修饰的:后面跟COLORRED、LINETHICK2、DOTLINE这类绘图属性第四种是花括号{}包起来的注释编译时直接跳过。语句必须以英文分号结尾一行一条。{中间变量不会在图上画出线} 短均:MA(CLOSE,13); 长均:MA(CLOSE,50); {输出变量会在主图画线红色加粗} 牛线:EMA(CLOSE,17),COLORRED,LINETHICK2; 熊线:EMA(CLOSE,50),COLORGREEN,LINETHICK2; {只算数值不参与绘图NODRAW 表示不占图面} 距离:(CLOSE-牛线)/牛线*100,NODRAW;上面这段里短均和长均算完就丢在图外只在后续语句里被引用如果把它们写成:主图上会多出两条无用的线。NODRAW的用途是把数值挂到公式上、供排序或跨周期引用但不画出来。写牛熊万金油时凡是只用于判断的中间量一律用:只有牛线、熊线、动能柱和信号图标用输出语句。2.2 牛熊万金油为什么用 EMA 而不是 MA这是个高频选型问题。MA(X,N)是 N 周期算术平均每根 K 线的权重相同EMA(X,N)是指数加权递推式是EMA_t α×X_t (1-α)×EMA_(t-1)其中α 2/(N1)通达信还有一个SMA(X,N,M)M 控制平滑权重常用于 KDJ 里的 J 值。三者的差别在趋势转折时最明显一段下跌走完刚拐头MA17还压着前几根大阴线的价格EMA17已经提前两到三根 K 线抬起来了。函数计算方式权重分布典型用途MA(X,N)N 周期算术平均每根等权长期趋势线、年线EMA(X,N)α2/(N1) 指数加权越近越重牛熊分界线、短趋势线SMA(X,N,M)加权平均权重 MM 可调平滑 J 值、慢速随机指标把牛线设成 EMA 还有一个附带好处它对参数没那么敏感M1 从 17 调到 13 或 21曲线形状变化很小不会出现调一格参数、信号全变的情况。长周期的熊线同样用 EMA但周期拉到 50 以上目的是让牛熊状态切换有惯性避免在震荡区里来回翻。2.3 从 .doc 里拿到源码后的第一步清洗与格式转换.doc 是二进制排版格式通达信只认.tn6、.tne、.tni这几类公式文件两者之间没有直接通道。所以从文档到公式中间必须过一次纯文本。复制粘贴出来的常见脏字符有全角括号、全角逗号、中文分号、中文冒号通达信一律报语法错误。文档里出现的字符通达信要求不改会报什么全角括号 半角 ( )行 N 语法错误全角逗号 半角 ,参数解析失败中文分号 半角 ;语句未结束中文冒号 半角 :变量不输出换行里的零宽空格直接删除变量名不识别我一般用一段脚本先过一遍比手工替换稳import re RAW 牛线EMACLOSE17 熊线EMACLOSE50 买点CROSS牛线熊线 def to_half_width(s): out [] for ch in s: code ord(ch) if code 0x3000: # 全角空格 - 半角空格 code 32 elif 0xFF01 code 0xFF5E: # 全角字符区整体平移 code - 0xFEE0 out.append(chr(code)) return .join(out) txt to_half_width(RAW) txt txt.replace(\u200b, ) # 清掉零宽空格 txt re.sub(r\n\s*\n, \n, txt) # 压掉空行 print(txt.strip())to_half_width按 Unicode 码点做整体平移全角区0xFF01到0xFF5E减0xFEE0就落到对应的 ASCII 段中文标点和全角括号一次性处理干净。\u200b是文档转存时经常混进来的零宽空格肉眼看不见但会让通达信把变量名当成两个词。空行压缩是为了后面定位报错行号时方便对行这段脚本不依赖任何第三方库随手存成clean.py就能用。3. 牛熊万金油主副图公式的完整编写与导入实操3.1 副图动能公式量能饱和度与多空差的合成副图负责回答「这波是放量转强还是缩量反抽」。核心做法是把 MACD 的多空差乘以一个量能饱和度系数让动能柱的绝对高度同时反映价格动能和成交活跃度。{牛熊万金油 - 副图动能参数 M1(5,1,60,5) M2(20,1,120,20)} DIFF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD柱:2*(DIFF-DEA); 量能5:MA(VOL,M1); 量能20:MA(VOL,M2); 量能饱和度:量能5/量能20; {动能柱多空差乘以量能饱和度放大放量行情} 动能:DIFF*量能饱和度,COLORSTICK; 动能均线:EMA(动能,9),COLORYELLOW; {量能平衡参考线饱和度 1.00 处画点} 饱和度:量能饱和度,NODRAW; DRAWICON(ABS(量能饱和度-1.00)0.01,0,13);量能饱和度是 M1 日均量除以 M2 日均量默认 5 日和 20 日正常区间大致在 0.5 到 2.0 之间1.00 表示短期成交量和中期持平。DRAWICON那一行用的是「接近 1.00 就画圆点」的写法圆圈出现在动能柱的零轴位置用来标记量能的临界状态比直接读数字直观。COLORSTICK让动能自动按正负染红绿不用手写 IF 分支。参数写成M1(5,1,60,5)的含义是名字 M1、最小值 1、最大值 60、默认值 5公式管理器会自动生成滑块改参数不用再动代码。3.2 主图趋势公式牛熊双线与中轴的绘制主图放牛线、熊线和它们的中轴中轴的作用是给震荡区定一个参照——价格贴着中轴来回走就是无趋势状态此时信号可信度最低。{牛熊万金油 - 主图趋势参数 N1(17,3,60,17) N2(50,10,250,50)} 牛线:EMA(CLOSE,N1),COLORRED,LINETHICK2; 熊线:EMA(CLOSE,N2),COLORGREEN,LINETHICK2; 中轴:(牛线熊线)/2,COLORGRAY,DOTLINE; {多空带上下沿只算不画} 上沿:MAX(牛线,熊线),NODRAW; 下沿:MIN(牛线,熊线),NODRAW; {金叉做多牛线上穿熊线} 买入:CROSS(牛线,熊线); DRAWICON(买入,LOW*0.98,1); DRAWTEXT(买入,LOW*0.96,拐),COLORRED; {死叉离场牛线下穿熊线} 卖出:CROSS(熊线,牛线); DRAWICON(卖出,HIGH*1.02,2); {乖离率价格偏离牛线的百分比NODRAW 供选股引用} 乖离:(CLOSE-牛线)/牛线*100,NODRAW;CROSS(A,B)表示 A 上穿 B只在交叉那根 K 线返回 1所以DRAWICON不会连续画一片图标。LOW*0.98是把信号图标压到当根 K 线最低价下方两个百分点避免图标盖住影线。乖离用NODRAW输出后可以在通达信的「条件选股」里直接引用比如筛「乖离小于 3 且刚金叉」比在图上肉眼找效率高得多。中轴用DOTLINE虚线视觉上不会和牛熊两条实线抢注意力。3.3 在通达信公式管理器里新建、编译、导入 .tn6打开通达信按CtrlF调出公式管理器剩下按下面五步走左侧选中节点主图公式放到「技术指标 → 主图叠加」副图放到「技术指标 → 其它类型」放错位置会报「该公式不支持主图」。点「新建」公式名称填不带空格的中文或英文比如牛熊万金油主图画线方法选「主图叠加」或「副图」。把洗好的纯文本粘进大输入框参数栏按N1(17,3,60,17)的格式一行一个填进去。点「测试公式」提示「编译成功」再点「确定」。报错会直接给出行号对照第 2.3 节的脏字符表回查。要复用别人的现成文件用「导入公式」选.tn6一次能进多个导出则用「导出公式」这也是把公式发给同事的标准格式。注意通达信里同名公式会被覆盖导入前先确认是否需要备份旧版本尤其是改过参数的版本。导入完成后在 K 线图输入公式简称回车即可显示。如果同时要看多个周期的信号可以在通达信里开多窗口铺图一般配合多显示器做 6 到 20 路同屏主要瓶颈在本地行情刷新的带宽和 CPU不在公式本身——公式是纯计算一根 K 线的运算量微秒级。4. 参数怎么设牛熊万金油的3个必调参数与失效排查4.1 周期参数与量能阈值的调参表默认参数只是起点不同持仓周期要往不同方向调。下面这张表是我在日线级别上反复对比后的经验值区间不是硬性规定。参数默认值短线波段中线趋势调整后的效果N1 短均线178–1317–21调小更灵敏信号提前但假信号增多N2 长均线5030–4060–90调大趋势更稳但切换滞后 3–5 根 K 线量能阈值1.000.901.10–1.20调高只留放量突破调低纳入缩量反转调参有一个基本约束N1 必须小于 N2否则CROSS的方向会反过来图上全是反信号。量能饱和度阈值建议用「副图 选股条件」双管图上保留 1.00 参考点选股时才用严格阈值这样既不丢观察维度也不让信号泛滥。4.2 信号不出现或全屏信号的六个排查点公式跑通不等于信号正确。遇到「一根信号都不出」或者「满屏买卖图标」按下面顺序查变量名撞保留字。CLOSE、VOL、HIGH这些是系统保留字写成变量名会静默出错改叫收或C1。全角字符残留。编译能过但行为异常时回头检查第 2.3 节的表尤其是从 .doc 复制来的段落。条件恒真或恒假。把判断条件单独用NODRAW输出成 0/1 数列在图上数一遍就能定位是数据问题还是逻辑问题。数据长度不足。次新股上市不满 N2 根 K 线时EMA(CLOSE,50)只有部分数据信号自然不出现用BARSCOUNT(CLOSE)N2加一道闸。参数越界。参数栏填了超出最大值或小于最小值的数公式管理器会拒绝编译报「参数超范围」。主副图放错。含COLORSTICK的公式放到主图叠加里柱体会被 K 线完全盖住看起来像没输出。注意从网络文档拿到的公式里凡是出现REF(X,-1)、ZIG、PEAK这类带负号引用或未来函数的写法信号会随最新数据变动而改变历史回测好看实盘无效用之前一律替换或删掉。4.3 用副图叠加做交叉验证单个信号源不够最省事的验证方式是把牛熊动能叠加到另一个独立维度上。通达信的副图支持多公式叠加在副图区右键「叠加指标」选一个成交量或资金类公式两条曲线同时看。{牛熊万金油 - 确认副图动能与量能共振} DIFF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIFF,9); 动能:2*(DIFF-DEA); 量比:VOL/MA(VOL,5); 共振强度:动能*量比,COLORSTICK; {共振确认动能转正且量比放大} 确认:CROSS(动能,0) AND 量比1.2; DRAWICON(确认,0,1); DRAWTEXT(确认,0,共振),COLORRED;量比是当日量与 5 日均量之比和能量饱和度用的是不同窗口两个系数相乘后缩量上涨会被压下去、放量转强会被放大。确认条件要求动能刚翻正、同时量比超过 1.2两条独立逻辑同时成立才算共振。这一层的价值在于单看牛熊金叉震荡区里一年能出十几次信号加上量比过滤一般能砍掉一半以上。5. 进阶牛熊万金油多周期共振与信号复盘的方法5.1 用跨周期引用把日线信号挂到周线趋势上通达信支持在公式里直接引用其他周期的同名指标语法是公式名.变量名#周期周期关键字有#WEEK、#MONTH、#DAY。用它可以做到「日线找买点、周线定方向」避免在周线空头里抢反弹。{牛熊共振 - 日线买点叠加周线过滤} 周牛线:牛熊万金油主图.牛线#WEEK; 周熊线:牛熊万金油主图.熊线#WEEK; 周多:周牛线周熊线; 日牛线:EMA(CLOSE,17); 日熊线:EMA(CLOSE,50); 日金叉:CROSS(日牛线,日熊线); 共振买:日金叉 AND 周多 AND VOLMA(VOL,5)*1.2; DRAWICON(共振买,LOW*0.97,1); DRAWTEXT(共振买,LOW*0.95,共振),COLORRED;#WEEK取的是当前周尚未走完时的实时值所以盘中会随价格跳动复盘看历史时以周五收盘为准。引用前必须先建好牛熊万金油主图这个公式否则跨周期引用会直接编译失败报「找不到被引用公式」。VOLMA(VOL,5)*1.2这层量能条件是第三重过滤三重同时成立的概率远低于单一金叉。5.2 信号复盘把条件拆成 0/1 数列做统计想知道一套参数在下一年会出多少信号、平均后几日表现如何不用接第三方回测平台通达信自带的条件选股加上数列导出就够用。做法是把每个判断条件单独输出成NODRAW数列再用「数据导出」存成 txt之后交给 Python 做统计。{复盘辅助 - 所有条件以 0/1 输出不画线} 日金叉:CROSS(EMA(CLOSE,17),EMA(CLOSE,50)); 周多:牛熊万金油主图.牛线#WEEK牛熊万金油主图.熊线#WEEK; 放量:VOLMA(VOL,5)*1.2; 共振买:日金叉 AND 周多 AND 放量; COND1:日金叉,NODRAW; COND2:周多,NODRAW; COND3:放量,NODRAW; SIGNAL:共振买,NODRAW;导出后按SIGNAL列为 1 的行取信号日再算信号后第 1、3、5、10 根 K 线的收益分布就能看出这套参数是偏短线还是需要拿住。这一步替换掉的是「凭感觉看图」同一条公式三种参数各跑一遍对比信号数和胜率选哪个一目了然。5.3 三个容易忽略的落地细节第一公式名和文件名不要带空格和特殊符号跨周期引用和导出时最容易在这里翻车。第二主图叠加公式里不要输出太多NODRAW变量通达信对单个公式的变量数量有上限超了会报「变量过多」把中间量复用或删减即可。第三同一台机器上跑多路分时看盘时把不用的公式从副图撤掉副图叠加的每个公式都会随每笔行情重算一遍六路以上同时开着带十几个变量的公式行情刷新会明显变慢。参数记在公式注释里比记在文档里可靠因为注释跟着.tn6一起走。本文还有配套的精品资源点击获取