通达信主图指标源码:主力成本趋势交叉与选股公式改造

发布时间:2026/9/18 10:57:13
通达信主图指标源码:主力成本趋势交叉与选股公式改造 简介这份资源是面向通达信公式编写初学者的实战型公式源码文档聚焦涨停板主图与选股两类指标的编写思路适合有一定看盘经验、希望理解公式含义并能自行修改参数的股民与技术分析爱好者。包内共1个doc文档约194KB内容以公式源码与逐段知识点解析为主便于对照软件的公式管理器直接复制粘贴使用。文档围绕算术均值A:(3*CLOH)/6、20周期加权移动平均X、主力成本EMA(X,13)、30周期最高价短期支撑以及趋势线EMA(C,13)等核心语句展开并讲解了趋势线与主力成本金叉死叉处用DRAWICON标注买卖信号、以及用CROSS(趋势线,主力成本)编写选股条件的完整逻辑同时补充了LINETHICK与COLORLIGRAY等绘图参数的设置说明。目前已有751人学习下载适合需要把主图显示与盘中选股打通、又想弄清每个变量计算意义的读者逐句研读。1. 涨停板主图指标从一条加权均价线看主力成本很多人装通达信指标的习惯是往主图上叠叠到七八条线互相缠绕最后自己也说不清哪条该看。这份源码路子完全不同主图只留三样东西——一条浅灰细线叫主力成本一条浅红粗线叫短期支撑一条趋势线外加两个交叉箭头。它不预测涨停也不扫涨停板它干的事情是把「短期趋势线上穿主力成本线」这个动作在 K 线图上标出来。适合做回踩确认、低吸进场的人尤其是不想盯分时、只在日线级别做决策的选手。整段公式不到十行但每行的参数都不是随手填的下面把它拆开看。2. A 值与 X 加权序列210 分母和 EMA(X,13) 主力成本的推导2.1 A 值把 OHLC 揉成一根有倾向的价第一行A:(3*CLOH)/6是整个公式的地基。C 是收盘、L 是最低、O 是开盘、H 是最高分子权重是 3:1:1:1分母 6也就是说收盘价独占一半权重其余三个各占六分之一。常见的替代写法有几种差别不在精度在敏感度均价写法表达式权重取向对跳空缺口的反应本公式(3CLOH)/6收盘权重 50%较敏感因为 O 参与计算典型价(HLC)/3三者等权中性忽略开盘加权典型价(HL2C)/4收盘 50%中性忽略开盘结算价(HLOC)/4四者等权最钝保留开盘价 O 的意义在于一字板、跳空高开这类形态里开盘位置本身就是信息丢掉它等于把当天最激烈的博弈抹平。2.2 X 序列的权重递减与 210 分母校验第二行是全文最长的一行X:(20*A19*REF(A,1)18*REF(A,2)17*REF(A,3)16*REF(A,4)15*REF(A,5)14*REF(A,6)13*REF(A,7)12*REF(A,8)11*REF(A,9)10*REF(A,10)9*REF(A,11)8*REF(A,12)7*REF(A,13)6*REF(A,14)5*REF(A,15)4*REF(A,16)3*REF(A,17)2*REF(A,18)REF(A,20))/210;REF(A,n) 表示取 n 个周期前的 A 值。注意这里有个容易被忽略的细节序列从 REF(A,1) 一路排到 REF(A,18)然后直接跳到 REF(A,20)REF(A,19) 被跳过了。所以不是 21 项而是 20 项。权重从 20 递减到 2 共 19 个整数再加末尾那一项权重 1总共 20 项。用脚本核一下分母weights list(range(20, 1, -1)) # 生成 20,19,...,2共 19 项 weights.append(1) # 末尾 REF(A,20) 的权重为 1 print(len(weights), sum(weights)) # 输出 20 210逻辑说明range(20, 1, -1)的终止值 1 不包含在内所以最后一个是 2补一项权重 1 之后项数为 20权重和恰好 210与公式里的除数完全吻合。这也解释了为什么它不写成REF(A,19)——用 19 项权重加一项补丁正好凑成整数分母省掉除不尽的小数尾巴。参数含义近端权重 20、远端权重 1衰减比 20:1这条 X 本质上是一条 20 周期的线性加权移动平均重心压在最近 5 到 8 根 K 线上。想让它更灵敏把尾部几项砍掉想让它更钝把分母改成更大值并同步调整权重。2.3 再套一层 EMA(X,13) 得到主力成本主力成本:EMA(X,13)是在 X 之上再做一次指数平滑。EMA 的递推式是EMA_t α*X_t (1-α)*EMA_{t-1}α 2/(131) ≈ 0.143意味着每根新数据只贡献约 14% 的权重剩下 86% 来自历史。两层平滑叠加之后这条线的实际滞后明显大于「13 日」这个数字给人的直觉。它是刻意的主力成本被定义为一个慢变量短期波动不该让它跳。用它做进场判断本质是拿滞后的成本线做右侧确认而不是抢左侧拐点。2.4 LLV(HIGH,30) 为什么取 HIGH 不取 LOW短期支撑:LLV(HIGH,30)取的是近 30 根 K 线最高价的最小值。这个表达容易被误解成「30 日最低价」其实不是——它取的是 30 天内每一天的最高价在这些最高价里找最小的那个。换个说法它是过去 30 天里多头每次冲高时站得最低的那一次所达到的高度。价格只要在这条线之上运行说明 30 日内的结构没有被破坏一旦日线收盘跌穿它说明前期的上攻平台已经失守。取 HIGH 不取 LOW是为了让这条支撑线带有「多头防线」的语义而不是简单的最低点连线。3. 主图公式落地DRAWICON 交叉标记与公式管理器操作3.1 从公式管理器建一个主图指标通达信里的路径是功能 → 公式系统 → 公式管理器或者直接按快捷键 CtrlF 调出。打开后选「技术指标公式」分类点「新建」几个关键填写项填写项建议值说明公式名称ZTBMAIN英文缩写便于键盘直接调出公式描述主力成本趋势交叉主图会显示在指标列表里画线方法主图叠加必须选这个否则会另开副图窗口参数留空本篇公式用固定参数不暴露入参适用周期日线分钟级别也能跑但信号密度差异大选「主图叠加」这一步不能省。如果误选成「副图」三条线会被压到 0 到 100 的坐标区间里和 K 线价格完全对不上看起来像三条贴地的直线。3.2 完整源码与逐行参数说明A:(3*CLOH)/6; X:(20*A19*REF(A,1)18*REF(A,2)17*REF(A,3)16*REF(A,4)15*REF(A,5)14*REF(A,6)13*REF(A,7)12*REF(A,8)11*REF(A,9)10*REF(A,10)9*REF(A,11)8*REF(A,12)7*REF(A,13)6*REF(A,14)5*REF(A,15)4*REF(A,16)3*REF(A,17)2*REF(A,18)REF(A,20))/210; 主力成本:EMA(X,13),LINETHICK1,COLORLIGRAY; 短期支撑:LLV(HIGH,30),LINETHICK2,COLORLIRED; 趋势线:EMA(C,13); DRAWICON(CROSS(趋势线,主力成本),趋势线*0.95,1); DRAWICON(CROSS(主力成本,趋势线),趋势线*1.05,2);逻辑说明前三行是计算A 和 X 用:赋值不画线只作为中间变量存在。后三行加 DRAWICON 是输出其中三条均线用:输出到图上DRAWICON 是绘图函数只负责在指定位置打标记不产生新的输出线。参数说明LINETHICK1和LINETHICK2控制线宽1 是细线、2 是粗线数值越大线越粗COLORLIGRAY是浅灰COLORLIRED是浅红通达信支持的颜色常量有几十个想换色直接替换常量名即可。注意颜色常量不能写成COLOR_LIGRAY或小写拼错不会报错只会静默失效变成默认色。3.3 DRAWICON 的三个参数DRAWICON(COND, PRICE, TYPE)的结构很直白但三个位置各有讲究。第一个参数是触发条件这里用CROSS(趋势线,主力成本)。CROSS 的定义是前一周期 A 在 B 之下、当前周期 A 在 B 之上只在上穿的那一根 K 线上返回真值所以信号是离散的单点不会连续几根都亮。第二个参数是绘制位置。源码写的是趋势线*0.95也就是在当前趋势线价格的 95% 处画图标往下偏 5%目的是让箭头落在均线下方不遮住 K 线的下影线。另一个方向用趋势线*1.05往上偏 5%。第三个参数是图标编号。通达信内置图标库里1 号通常是向上箭头2 号是向下箭头。不同版本的内置图标编号略有差异公式管理器里有「插入函数」按钮点开 DRAWICON 能看到完整的图标对照表拿不准的时候先看一眼再填。注意图标编号填成 0 或超出内置范围时通达信不会报错只会什么都不画排查时优先怀疑这个参数。3.4 主图公式常见的三类报错第一类是「至少需要一个输出」。原因是所有语句都用了:没有任何一条线输出到图上。把三条均线的赋值号改成冒号即可。第二类是 K 线被压扁。多半是画线方法选错或者某条线的表达式里混进了除零。比如把 LLV(HIGH,30) 的 30 误写成 0某些版本会返回异常值。第三类是箭头位置飘忽。当趋势线数值本身很小时比如 2 元以下的低价股乘 0.95 的绝对偏移不到 0.1 元箭头会贴着均线而在 100 元的高价股上5% 就是 5 元箭头离得老远。这是比例定位法的固有问题后面第 5 章给一个替代写法。4. 选股公式改造CROSS 条件输出与条件选股器跑批4.1 冒号赋值和 : 赋值的区别主图指标能跑不代表能直接拿去选股。两边最容易踩的差异在赋值符上。:是中间变量赋值计算了但不输出:是输出赋值会把结果画到图上或者交给选股器。选股公式在编译时会检查有没有输出一条都没有就直接拒绝运行。第二个差异是画图函数。DRAWICON、DRAWTEXT 这类函数在选股公式里没有意义虽然语法上不拦但会白耗性能通常直接删掉。第三个差异是输出结果的类型选股公式的输出必须是一个布尔条件不能是一条价格线。4.2 选股公式完整源码A:(3*CLOH)/6; X:(20*A19*REF(A,1)18*REF(A,2)17*REF(A,3)16*REF(A,4)15*REF(A,5)14*REF(A,6)13*REF(A,7)12*REF(A,8)11*REF(A,9)10*REF(A,10)9*REF(A,11)8*REF(A,12)7*REF(A,13)6*REF(A,14)5*REF(A,15)4*REF(A,16)3*REF(A,17)2*REF(A,18)REF(A,20))/210; 主力成本:EMA(X,13); 短期支撑:LLV(HIGH,30); 趋势线:EMA(C,13); XG:CROSS(趋势线,主力成本);逻辑说明计算部分与主图完全一致只是把三条均线的:全部改成:。最后一行用XG:输出一个命名为 XG 的布尔量值为真表示当天出现趋势线上穿主力成本。给输出起名字是个好习惯跑批结束后能在结果列表里看到是哪个条件命中的。参数说明XG只是变量名可以改成中文如选股:或者金叉:通达信支持中文变量名。如果只想筛短期支撑没有被跌破的票可以把最后一行换成XG:CROSS(趋势线,主力成本) AND C短期支撑;把防守条件一并带上。注意选股公式里不要留裸表达式比如只写一行CROSS(趋势线,主力成本);。部分版本能识别最后一个表达式部分版本会直接判为无输出写成带名字的输出最稳。4.3 条件选股器执行流程公式保存后走功能 → 选股器 → 条件选股在「条件选股公式」下拉里选中刚建的公式点「加入条件」。接下来几个参数决定结果质量参数项典型设置影响选股范围沪深A股剔除ST和退市范围越大结果越多ST 建议直接排除分析周期日线换成 60 分钟信号量会放大数倍复权方式前复权不复权会让除权当天的均线整体错位选股时间指定日期或最新指定日期用于回溯历史信号数据下载先补全日线数据本地数据缺失会导致部分票算不出结果「数据下载」这一项值得单独说。通达信公式计算依赖本地历史数据如果本地只存了半年日线那么需要 30 期 LLV 和 20 期 REF 的票在数据边界附近算出来是残缺值选股结果会漏。跑批前先到盘后数据下载里把日线补齐。4.4 结果偏少或偏多的排查信号太少通常不是公式错了而是 CROSS 本身就是稀疏事件。一条 13 日 EMA 上穿一条双重平滑均线一只票一年可能只出几次。可以把条件放宽到「最近 N 日内发生过金叉」XG:EXIST(CROSS(趋势线,主力成本),5) AND 趋势线REF(趋势线,1);EXIST 的第二个参数 5 表示最近 5 个周期内出现过该条件后半个条件要求趋势线本身还在向上过滤掉金叉后立刻掉头的票。信号太多说明大盘整体处于上行段此时单一金叉条件区分度不足。加过滤维度量比大于 1.2、当日收盘价站在短期支撑之上、流通市值在一个区间内。这三个条件叠上去通常能把结果压到可以人工翻一遍的量级。如果要把公式分享给同事通达信支持导出成 tn6 格式文件在公式管理器里右键公式选「导出」对方导入后即可使用比自己手抄一遍源码可靠。5. 参数调优与信号验证13/30 周期换到自己的票上周期参数的两个数字都可以改但改之前先弄清它们各管什么。13 出现在两个地方——趋势线的 EMA(C,13) 和主力成本的 EMA(X,13)。前者是快线后者是慢线两者同时改大快慢比例不变信号整体后移适合做中线只改主力成本的 13 改成 21快慢差拉大信号变少但更靠后。30 只管短期支撑那条线。做波段短打的人常改成 20让防线更贴身做趋势跟随的改成 55容错更大代价是跌穿时往往已经回吐了一截。改参数后必须验证信号是否真实可交易重点两件事。一是确认公式里没有未来函数。判断方法很直接看用到的函数清单EMA、LLV、REF、CROSS 全部只引用当前和过去的 K 线属于安全函数。需要警惕的是 ZIG、PEAK、TROUGH、BACKSET、REFX 这类会引用未来数据或事后重画形态的函数这份源码一个都没有。用 BACKSET 之类写出来的指标回看历史信号漂亮得离谱实盘却会左右漂移。二是把信号密度统计出来。导出选股结果后用脚本快速算一下平均每股每年命中次数import collections # records 形如 [(代码, 日期), ...]来自导出的选股结果 by_code collections.Counter(code for code, _ in records) for code, n in by_code.most_common(10): print(code, n, round(n / 3, 2)) # 按 3 年样本折算年频次逻辑说明按股票代码聚合信号次数再除以样本年数得到年频次。参数含义年频次在 2 到 6 之间的票信号既不过密也不过疏适合人工复核超过 15 次的通常意味着参数过灵敏交叉本身已经失去意义。最后一个实用技巧是修掉第 3 章留下的箭头飘移问题。把趋势线*0.95换成绝对偏移用当日最低价打底DRAWICON(CROSS(趋势线,主力成本),L*0.98,1);L 是当日最低价乘 0.98 后箭头固定落在下影线下方 2% 处高低价股票的视觉距离基本一致。如果连 2% 都嫌远可以换成L-0.01*ATR这类波动率定权重的写法ATR 用MA(H-L,14)近似即可。本文还有配套的精品资源点击获取