通达信均线公式源码解析:从老鼠仓主图到信号过滤实战

发布时间:2026/9/17 14:36:51
通达信均线公式源码解析:从老鼠仓主图到信号过滤实战 简介一份通达信“老鼠仓主图”指标公式源码教程文档适合已掌握基础公式编辑、想通过自编指标识别异常成交或潜在操纵信号的交易者。文档逐条拆解源码先介绍MA5、MA13、MA60、MA90、MA120多周期均线再分析AA、BB、CC、DD、EE五类交叉与位置条件解释如何用OR逻辑组合成FF并借助FILTER(FF,8)过滤连续重复信号随后讲解DRAWICON、DRAWTEXT、STICKLINE在K线上标注提示文字及染色柱体的图形方法。后半部分又补充了AA1至FF1的量价建仓条件如金额与成交量比率、单日涨幅、低点偏离5日均线、成交量萎缩等组合判断让读者能从源码层面理解指标背后的选股逻辑。资源为单个doc文件大小205KB目前已有368人学习下载。对期望基于现有模板修改参数或学习中高级公式语法的用户可提供较完整的注释与思路参照。1. 老鼠仓主图一段混着乱码和信号的通达信均线源码你把这十行源码贴进通达信公式管理器时第一个跳出来的往往不是报错而是一串乱码ÌìÌÃÐÇÀ×´ï、À×´ï、ÀÏÊó²Ö。这不是文件损坏而是公式以 GBK 编码保存后被 UTF-8 编辑器读取导致的字符错位。抛开乱码这段主图指标的核心其实很清晰先用 MA5 到 MA120 五条均线搭出趋势骨架再用五组条件AA、BB、CC、DD、EE描述“均线共振上穿”和“均线粘合后发散”两类形态最后用 FILTER(FF,8) 做信号冷却配合 DRAWICON、DRAWTEXT、STICKLINE 在 K 线上标注买点。后半段独立处理量价关系用 AMOUNT/VOL 计算真实成交均价寻找“低点下探但收盘拉回、同时缩量”的建仓痕迹。适合两类人想弄懂别人公式里每个函数和条件含义的拆解派以及想把这套信号改造成自己交易规则的实战派。2. 多周期均线的趋势判断MA5 到 MA120 的结构与 AA/BB/CC/DD/EE 条件拆解2.1 均线簇的视觉分层颜色、线宽与周期映射源码前五行的作用不只是画线它建立了一个多周期参照系。MA5 用粉色COLORF00FF0对应超短线情绪MA13 用白色是源码作者偏好的短期趋势线MA60 用黄色加粗LINETHICK2中期生命线MA90 用COLORF0F000黄绿色且同样加粗MA120 用绿色代表长期方向。之所以把 MA90 单独拿出来是因为它比 MA60 更平滑能在中期趋势里过滤掉一部分假金叉。值得注意的一个细节是MA90 的写法是MA(C,90)其他都是MA(CLOSE,N)。在通达信公式里C与CLOSE完全等价混用不影响计算结果但如果你打算长期维护这段源码建议统一写成CLOSE避免后期读代码时还要确认缩写指向。MA5:MA(CLOSE,5),COLORF00FF0; MA13:MA(CLOSE,13),COLORWHITE; MA60:MA(CLOSE,60),LINETHICK2,COLORYELLOW; MA90:MA(C,90),LINETHICK2,COLORF0F000; MA120:MA(CLOSE,120),COLOR00FF00;这段代码里的LINETHICK2控制线宽为 2 像素COLORF00FF0是 RGB 颜色值前两位F0是红色分量中间0F是绿色分量后两位F0是蓝色分量综合出来的粉色。通达信颜色定义接受COLOR加 6 位十六进制也可以直接用COLORRED这类命名色。用十六进制的好处是能精确控制 RGB 组合坏处是别人接手时无法一眼看出颜色。2.2 五组条件的形态学含义2.2.1 AA五日均线同时上穿 20、30、60 周期的共振突破AA:CROSS(MA(C,5),MA(C,20)) AND CROSS(MA(C,5),MA(C,30)) AND CROSS(MA(C,5),MA(C,60));这行代码中CROSS(A,B)的定义是 A 从下方穿越到上方即前一周期 AB 且当前周期 AB。也就是说当 MA5 在同一根 K 线上连续上穿三条更长周期的均线时AA 成立。原文里ANDCROSS中间没有空格通达信公式系统仍然能识别但可读性很差复制粘贴到公式管理器后建议手动补一个空格。这种形态对应的市场场景通常是股价经过长期下跌后短期均线快速拐头同时穿越中期均线和长期均线说明资金在短时间内集中进场。但 MA5 上穿 MA120 并不罕见单靠这个条件选出的是“短期强势”而非“趋势反转”所以 AA 只是五路信号之一。2.2.2 BB 与 EE均线间距约束下的二次金叉BB:MA(C,60)MA(C,10) AND CROSS(MA(C,10),MA(C,30)) AND MA(C,30)MA(C,20) AND ABS(MA(C,60)-MA(C,20))/MA(C,20)0.05;这段的约束条件明显更严格。它要求 MA60 位于 MA10 上方、MA30 位于 MA20 上方同时 MA10 上穿 MA30并且 MA60 与 MA20 的偏离度小于 5%。ABS(MA(C,60)-MA(C,20))/MA(C,20)0.05是均线相对距离公式分母用 MA20 而不是 MA60是因为短周期均线的值更贴近当前价格用它做基准能避免高价股绝对偏差过大导致误判。EE 与 BB 逻辑相似区别在于 EE 以 MA20 和 MA60 的距离约束替代了 BB 的一部分条件同时要求 MA10 上穿 MA60、MA20 位于 MA5 上方。两者都在描述“均线簇粘合后重新发散”的状态这是趋势启动前的典型形态。条件多头排列结构关键约束形态意图AAMA5 上穿 20/30/60无间距限制短期共振突破BB6010、10 上穿 30、302060 与 20 偏离度 5%粘合后的二次金叉CC305、5 上穿 20、2010仅排列约束标准多头延续DD5/10 均线同时上行三线距离和 0.02短周期加速EE205、5 上穿 10、106020 与 60 偏离度 5%中期低位金叉2.2.3 DD用均线距离和量化“粘合”DD:ABS((MA(C,5)-MA(C,10))(MA(C,10)-MA(C,20))(MA(C,20)-MA(C,30)))0.02 AND MA(C,5)REF(MA(C,5),1) AND MA(C,10)REF(MA(C,10),1);乍看很复杂实际上是把三条相邻均线的差值相加再取绝对值。如果 MA5、MA10、MA20、MA30 四根线彼此纠缠这个和会非常小小于 0.02 意味着四根均线压缩在一个极窄的区间里。同时要求 MA5 和 MA10 当前值大于上一周期值排除了均线向下粘合的情况。这是一种典型的“均线收敛末期”判定收敛之后的发散方向需要其他条件确认。CC:MA(C,30)MA(C,5) AND CROSS(MA(C,5),MA(C,20)) AND MA(C,20)MA(C,10)是五组条件中约束最少的一个只要求 MA30 在 MA5 上方、MA5 上穿 MA20、MA20 高于 MA10用于捕捉上升趋势中的回踩结束信号。它的误报率通常比 AA 和 BB 高但优势是在强势股加速阶段不容易错过。3. 信号聚合与绘图指令FF 的 OR 合并、FILTER 间隔过滤与 STICKLINE 染色3.1 用 OR 合并五路信号不同形态同一买点FF:AA OR BB OR CC OR DD OR EE;这行的逻辑是五选一只要五组条件中任意一组成立FF 就为真。OR 合并在公式编写里很常见但要注意它的隐含假设——五组条件描述的是同一种“上涨前兆”的不同表现方式而不是互相独立的策略。如果你在实盘中发现某一天 AA 条件成立但股价随后下跌再把 FF 当作统一信号看待就会失真。正确做法是把五组条件拆开分别统计胜率看哪几组贡献了主要盈利再决定是否保留。信号聚合的另一个问题是重复触发。均线金叉一旦发生MA5 会在一段时期内持续位于 MA20 上方CROSS函数只在穿越那根 K 线上返回 1之后不再重复触发所以 AA 这类条件天然是脉冲式的。但 DD 的“MA5 和 MA10 同时上行”在上涨趋势里可能连续多天成立导致信号连出。3.2 FILTER(FF,8) 的冷却机制FILTER(X,N)是通达信专门解决信号连续问题的函数X 第一次为真时输出 1然后强制为 0持续 N 个周期N 个周期之后如果 X 再次为真则再次输出 1。对于日线数据FILTER(FF,8)表示一次信号触发后 8 个交易日内不再重复标记相当于给信号加了一个冷却期。这里有一个新手容易忽略的点FILTER 的 N 值不是越大越好。8 个交易日大约是一个半自然周既能过滤掉连续上涨期间 DD 类条件反复触发造成的信号堆积又不会因为冷却期过长而错过真正的新买点。如果你交易的是小时级别或周线级别这个 N 值要按周期换算——15 分钟图建议改成 16周线图改成 2。ÌìÌÃÐÇÀ×´ï:FF AND FILTER(FF,8); DRAWICON(ÌìÌÃÐÇÀ×´ï,L,1); DRAWTEXT(ÌìÌÃÐÇÀ×´ï,L*0.99,À×´ï),COLORYELLOW; STICKLINE(ÌìÌÃÐÇÀ×´ï,H,L,0.5,0),COLORYELLOW; STICKLINE(ÌìÌÃÐÇÀ×´ï,O,C,6,1),LINETHICK2,COLORYELLOW;绘图区第一行把 FF 和 FILTER 的返回值再次 AND生成最终信号。DRAWICON(信号,价格,图标编号)在信号当天的 L 位置画编号为 1 的图标小箭头。DRAWTEXT(信号,价格,文本)在 L 的 0.99 倍位置写文字COLORYELLOW设置文本颜色。这里的乱码À×´ï是“雷达”的 GBK 编码被误读后的显示结果替换成正常文本即可。函数参数含义典型用途DRAWICON(COND,PRICE,TYPE)条件、价格位置、图标编号K 线下方画小箭头DRAWTEXT(COND,PRICE,TEXT)条件、价格位置、文本内容标注信号名称STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY)条件、起止价格、柱宽、是否空心对 K 线整体染色STICKLINE的两行代码一个画上下影线H,L,0.5,0宽度 0.5一个画实体O,C,6,1宽度 6。最后一行的LINETHICK2控制实体柱的描边粗细。这样一组画下来满足条件的 K 线会整体变成黄色实心柱在红绿 K 线堆里非常醒目。3.3 绘图顺序与覆盖关系通达信的绘图指令按代码顺序执行后画的图形覆盖先画的。所以这段代码先用 STICKLINE 画影线再画实体实体把影线和原 K 线颜色都盖住。如果你想让信号 K 线保留部分原有颜色可以把实体的宽度从 6 改成 3 或者把 EMPTY 参数从 1 改成 0 试效果。另外注意DRAWICON 的图标编号 1 在通达信里是小箭头不同版本图标编号对应关系略有差异如果你看到的是方块而不是箭头打开帮助文档查一下当前版本的图标编号表。4. 量价维度的独立筛选AMOUNT/VOL 均价、低点偏离与缩量的 AND 组合4.1 真实成交均价AA1 的计算逻辑AA1:AMOUNT/VOL;是这段源码里最值得单独讲的一行。AMOUNT 是当日成交金额VOL 是成交量两者相除得到的不是收盘价而是当日所有成交的加权平均价——相当于用通达信数据源手算了一个简化的 VWAP。这个值比收盘价更能代表当天多空双方的真实成本尤其在尾盘拉抬或盘中跳水时收盘价与均价会拉开明显差距。后面的BB1:LAA1*0.9;要求最低价低于均价 10% 以上意味着盘中出现过深度下探且下探后价格又回到了均价附近。这种“长下影线”形态是老鼠仓讨论中最常被关注的痕迹之一如果信息优势方在低位接了筹码往往会在盘面上留下刺破均价的针。条件公式数值边界市场含义AA1AMOUNT/VOL当日均价多空真实成本BB1L AA1*0.9跌穿均价 10%盘中恐慌下探CC1涨幅 1.2%单日涨幅阈值收盘修复力度DD1L MA5*0.921偏离短期均线 7.9%下探到超卖区EE1VOL MA5*1.5相对缩量抛压有限4.2 CC1 与 DD1涨幅修复和均线偏离的边界CC1:(C-REF(C,1))/REF(C,1)*1001.2;是当日涨幅公式REF(C,1)取上一日收盘价差值除以上一日收盘价再乘以 100 得到百分比要求大于 1.2%。注意这个阈值并不高只有涨幅超过 1.2% 才算通过但结合 BB1 的“最低价低于均价 10%”它描述的是“盘中大跌、收盘翻红”的修复形态。如果当日涨幅超过 1.2% 但收盘价仍低于开盘价说明只是修复性反抽而非反转。DD1:LMA(C,5)*0.921;里的0.921是 1 减去 0.079即最低价低于五日均线 7.9%。这个值的选取与 BB1 的 10% 形成双重要求既要破均价又要破五日均线。均线是跟随价格动态变化的所以 DD1 天然适应不同价格的股票不像固定跌幅阈值那样对高价股和低价股产生偏差。4.3 EE1 的缩量约束与 FF1 的 AND 语义EE1:VOLMA(V,5)*1.5;限制当日成交量小于五日均量的 1.5 倍也就是不能放量。为什么要缩量因为真正的低吸往往发生在恐慌后换手率下降说明抛压枯竭下方有人接但接得悄无声息。如果上述 BB1、CC1、DD1 全部成立的同时成交量还在放大说明分歧巨大反而可能是资金对倒出货。最终的行是FF1:BB1 AND CC1 AND DD1 AND EE1,LINETHICK0;。四个条件用 AND 连接意味着必须同时满足和前面 FF 的 OR 语义完全相反。LINETHICK0让这条输出线不显示出来因为 FF1 只是作为绘图信号存在。这里有个易误解点FF1 的公式里出现了它自己通达信允许这种引用方式但如果你在公式管理器中把它输出为一条指标线当前值会在历史数据上循环计算导致数据错乱所以LINETHICK0不是可选项而是必选项。import pandas as pd def mouse_cang(daily: pd.DataFrame, ma5_colclose) - pd.Series: avg_price daily[amount] / daily[volume] cond1 daily[low] avg_price * 0.9 chg (daily[close] - daily[close].shift(1)) / daily[close].shift(1) * 100 cond2 chg 1.2 cond3 daily[low] daily[ma5_col] * 0.921 vol_ma5 daily[volume].rolling(5).mean() cond4 daily[volume] vol_ma5 * 1.5 signal cond1 cond2 cond3 cond4 return signal这段 Python 逻辑与通达信源码一一对应。shift(1)对应REF(X,1)rolling(5).mean()对应MA(V,5)。要注意的是通达信里 VOL 和 AMOUNT 的数据单位在不同股票上有差异Python 复现时先确认 pandas 里这两列的单位是否与通达信一致否则均价计算会差一个数量级。4.4 DRAWTEXT 到 FF1 的收尾绘图DRAWTEXT(FF1,L*0.99,ÀÏÊó²Ö),COLOR00FF00; STICKLINE(FF1,H,L,0.5,0),COLOR00FF00; STICKLINE(FF1,O,C,6,1),LINETHICK2,COLOR00FF00;这三行把满足 FF1 的 K 线画成绿色文本标注位置同样在最低价下方。ÀÏÊó²Ö是“老鼠仓”的 GBK 乱码COLOR00FF00是纯绿色。这里存在一个设计上的信号重叠问题黄色信号雷达和绿色信号老鼠仓在部分价位会出现于同一根 K 线否则两者至少 DRAWTEXT 的文本会叠在一起处理方式是把其中一个文本位置改到 L0.95 或 H1.01。5. 中文乱码修复、参数调整与信号验证的三个落地技巧5.1 乱码修复从字符集问题到可直接使用的源码乱码的根源是通达信公式管理器使用 ANSI 编码保存文件而复制到 UTF-8 编辑器后中文字符被错误解码。À×´ï按 GBK 恢复就是“雷达”ÀÏÊó²Ö是“老鼠仓”ÌìÌÃÐÇÀ×´ï是“天堂星雷达”。修复方法很简单在通达信公式管理器中新建指标直接粘贴原文中文会正常显示无需额外处理。如果你想把源码拿到文本编辑器里整理用 VS Code 或 Notepad 打开时把编码从 UTF-8 切换为 GB18030 重新加载即可。AA1:AMOUNT/VOL; BB1:LAA1*0.9; CC1:(C-REF(C,1))/REF(C,1)*1001.2; DD1:LMA(C,5)*0.921; EE1:VOLMA(V,5)*1.5; FF1:BB1 AND CC1 AND DD1 AND EE1,LINETHICK0;整理后的源码把变量名统一成 ASCII绘图文本换成中文这样在任意编辑器里打开都不会出现乱码。5.2 两个最值得调的参数FILTER 间隔与 0.921 阈值FILTER(FF,8)的 8 控制信号最小间隔。把它改成 13 会减少止损位附近的信号数量但可能漏掉急跌后的 V 形反转改成 3 会让信号密集到同一周出现两三次干扰判断。建议先保持 8 跑一个月历史回测统计信号间隔分布后再决定。DD1里的0.921决定低点偏离五日均线的深度。把它改成0.90条件会更严格适合震荡市改成0.95会让信号增多适合单边上涨后的首次急跌。每次修改后要重新确认信号是否覆盖了你想抓的那批历史案例不要只看最近十天的效果。5.3 信号验证用通达信自带的回测思路检验两组信号在通达信里用“条件选股”功能分别选出黄色信号和绿色信号的股票然后手动检查信号日后 5 个交易日的价格走势。检验标准有两个一是信号后第三日收盘价是否高于信号日收盘价二是信号后第五日最大回撤是否小于 5%。如果绿色信号老鼠仓的胜率明显高于黄色信号雷达说明量价约束比均线金叉更能捕捉资金异动后续可以把 FF 的权重视为劣势条件甚至直接禁用 AA 和 CC 只看 BB 与 DD 的组合。本文还有配套的精品资源点击获取