news 2026/10/16 11:28:41

通达信公式编写教程完整版:从看盘直觉到可执行信号

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
通达信公式编写教程完整版:从看盘直觉到可执行信号

简介:这份Word版教程面向具备一定开发经验、希望入门通达信公式编写的初学者,系统讲解公式系统的四大类型:技术指标公式、条件选股公式、交易系统公式与五彩K线公式,并给出从公式管理器新建、插入函数到测试保存的完整编写路径。资源包内共1个doc文件,约1MB,内容涵盖公式函数用法与编写实例,如用HIGH、CLOSE、LOW、OPEN、VOL描述K线价格,用CROSS判断均线交叉,用REF引用历史数据,用AND并列条件,并附行情函数简表便于检索。教程还以均线指标和“股价小于每股净资产”选股公式为例,逐步演示参数填写、动态翻译与测试流程,帮助读者快速掌握指标、选股、交易系统及五彩K线的编写技能。目前已有8291人学习,适合作为通达信公式编写的入门参考。

1. 通达信公式编写教程完整版:从看盘直觉到可执行信号的那道坎

很多人第一次打开通达信公式管理器,面对那一排函数列表和空白的编辑框,脑子里想的其实是同一件事:我明明在K线上能一眼看出来的形态,为什么写成公式就跑不出来?这个标题——通达信公式编写教程完整版——说的就是这件事:把「看盘经验」翻译成「机器能执行的判断逻辑」。它解决的不是选股圣杯问题,而是让你从「手动翻票」变成「条件触发提醒」,从「事后复盘」变成「盘中预警」。适合谁?适合已经会用通达信看盘、但每次筛选都靠肉眼翻页的从业者,也适合想把交易规则固化下来、减少情绪干扰的量化入门者。公式语言本身不复杂,难的是把模糊描述拆成精确条件,这一步跨过去,后面都是体力活。

2. 公式语言的地基:数据字段、周期与计算顺序

2.1 先搞清楚公式能拿到哪些数据

通达信公式的本质,是对每根K线取一组字段做运算。最常用的字段就那么几个:开盘价OPEN、最高价HIGH、最低价LOW、收盘价CLOSE、成交量VOL、成交额AMOUNT。除此之外还有VOLINSTK(持仓量,期货用)、HYBLOCK(行业板块)这类扩展字段。你写公式时不需要声明这些变量,系统在每根K线上自动填充。

关键认知:公式是逐K线计算的。第 N 根K线上的CLOSE就是第 N 根K线的收盘价,REF(CLOSE,1)才是前一根的收盘价。这个「逐根推进」的模型决定了后面所有逻辑的写法。很多人翻车就翻在这里——以为CLOSE是当前最新价,其实在历史K线上它是那根K线的收盘价,只有在最后一根未完成K线上才近似等于最新价。

{ 最小可用公式:输出收盘价与5日均线 } MA5:MA(CLOSE,5); C:CLOSE;

这段代码里MA(CLOSE,5)是系统内置函数,对CLOSE做5周期简单移动平均。冒号:表示输出到图形上,分号;结束语句。逻辑说明:每根K线都算一次,所以画出来是连续曲线。参数说明:MA的第二个参数是周期数,改成10就是10日均线。注意MA5和C是自定义的输出名,不能和保留字冲突。

2.2 周期参数怎么设才不打架

通达信公式可以跨周期引用,但有个坑:你在日线图上写的公式,如果内部用了MA(CLOSE,5),它算的是日线5日均线;但如果用CALCSTOCKINDEX或"MACD.MACD"这种跨周期引用,就要注意周期对齐问题。

常见做法是:主图公式只做当前周期计算,选股公式单独建一个,周期在选股界面指定。不要在一个公式里混用多个周期的均线,除非你明确知道#WEEK、#MONTH这类后缀的引用规则。

周期后缀含义典型用途
无当前周期主图指标
#WEEK周线周线选股
#MONTH月线月线过滤
#MIN55分钟短线预警

参数设置上,我一般把可调参数抽出来放在公式头部,用INPUT声明:

{ 带参数的均线公式 } N:INPUT(5,1,60,1); { 周期,默认5,范围1-60,步长1 } MA_N:MA(CLOSE,N);

逻辑说明:INPUT让用户在公式管理器里直接改参数,不用改代码。参数说明:第一个值是默认值,第二个是最小值,第三个是最大值,第四个是步长。这样写出来的公式复用性高,同一套逻辑改个参数就能试不同周期。

2.3 计算顺序与引用规则

公式从上到下逐行执行,后面的语句可以引用前面定义的变量。但有个限制:不能循环引用。比如A:B+1; B:A+1;这种会报错。另外,REF、SUM、HHV这类函数是对历史序列做运算,返回的也是序列,不是单值。

{ 计算近5日最高价和当前价的关系 } HH:HHV(HIGH,5); { 5日内最高价 } CURR:CLOSE; { 当前收盘价 } RATIO:(CURR-HH)/HH*100; { 偏离百分比 }

逻辑说明:HHV(HIGH,5)返回每根K线往前数5根内的最高价,所以HH是一个序列。RATIO计算当前价相对5日高点的偏离。参数说明:HHV第二个参数是回溯根数,改成10就是10日高点。注意RATIO在最高点当天会是0,之后为负值,这是正常的。

3. 从条件到信号:选股公式的完整写法

3.1 条件表达式的写法与优先级

选股公式的核心是输出一个布尔值:满足条件输出1,不满足输出0。通达信用AND、OR、NOT做逻辑组合,用>、<、>=、<=、=、!=做比较。优先级是:比较运算 >NOT>AND>OR。保险起见,复杂条件一律加括号。

{ 选股条件:收盘价站上5日线,且成交量大于5日均量 } COND1:CLOSE > MA(CLOSE,5); COND2:VOL > MA(VOL,5); SELECT:COND1 AND COND2;

逻辑说明:COND1和COND2分别输出布尔序列,SELECT是最终选股条件。参数说明:MA(CLOSE,5)是5日均线,MA(VOL,5)是5日均量。注意选股公式最后一行必须是输出语句,否则系统不知道你要选什么。

3.2 用FILTER和CROSS做信号过滤

CROSS(A,B)表示 A 上穿 B,返回布尔值。FILTER(COND,N)表示条件成立后,未来 N 根K线内不再重复输出信号。这两个函数是写预警公式的利器。

{ 均线金叉信号,且10日内只提示一次 } MA5:MA(CLOSE,5); MA10:MA(CLOSE,10); JC:CROSS(MA5,MA10); SIGNAL:FILTER(JC,10);

逻辑说明:CROSS(MA5,MA10)在5日线上穿10日线当天为真。FILTER(JC,10)把这个信号过滤成10天内只出现一次。参数说明:FILTER第二个参数是过滤周期,改成20就是20天内只提示一次。注意FILTER只影响输出,不影响JC本身的计算。

3.3 把选股公式挂到预警系统里

公式写好后,要让它真正跑起来,需要配置预警。步骤是:公式管理器 → 新建选股公式 → 粘贴代码 → 测试通过 → 保存。然后在「预警」设置里添加条件,选择刚建的公式,设定监控范围和触发方式。

{ 盘中预警用:放量突破前高 } PRE_HIGH:REF(HHV(HIGH,20),1); { 前20日最高价,不含当天 } BREAK:CLOSE > PRE_HIGH; VOL_UP:VOL > MA(VOL,5)*1.5; { 成交量大于5日均量1.5倍 } ALERT:BREAK AND VOL_UP;

逻辑说明:REF(HHV(HIGH,20),1)取前20日最高价,排除当天,避免自己突破自己。VOL_UP用1.5倍均量做放量确认。参数说明:1.5是放量倍数,可以改成2.0做更严格过滤。注意预警公式里不要用FILTER,否则盘中可能漏掉信号。

4. 避坑与排查:那些让公式「看起来对但跑不出来」的细节

4.1 未来函数:最隐蔽的翻车点

现象:公式在历史K线上信号完美,实盘却完全对不上。原因:用了ZIG、PEAK、TROUGH这类未来函数,它们会引用未来数据。解决:选股和预警公式里禁用未来函数,只用REF、HHV、LLV这类只回溯历史的函数。检查方法:在公式管理器里点「测试」,如果提示「含未来函数」,直接换写法。

4.2 数据对齐:除权除息导致的断层

现象:均线在除权日出现巨大跳空,信号失真。原因:未做复权处理。解决:在公式里用CLOSE时,确保图表设置了前复权。或者在公式里用REF(CLOSE,1)时注意除权日的价格突变。常见做法是:选股公式里加一句IF(ABS(CLOSE/REF(CLOSE,1)-1)>0.11,0,1)过滤掉除权日。

4.3 参数范围:INPUT设太宽导致误操作

现象:用户把周期参数改成0或负数,公式报错或输出异常。原因:INPUT的最小值没设好。解决:INPUT(5,1,60,1)里第二个参数是1,确保不会出现0周期。另外,步长设1还是0.1要看参数类型,周期类用整数步长。

4.4 输出冲突:多个公式画在同一区域

现象:主图公式和副图公式互相覆盖,看不清。原因:输出名重复或坐标轴冲突。解决:主图公式用MAIN前缀,副图用SUB前缀。或者用DRAWTEXT、DRAWICON做标记,不直接输出数值。

4.5 性能问题:循环太多导致卡顿

现象:公式加载慢,切换周期时卡死。原因:用了大量FOR循环或嵌套SUM。解决:能用MA、HHV内置函数就别自己写循环。通达信的内置函数是C实现的,比公式层循环快几个数量级。

5. 进阶技巧:把公式写成可维护的模块

5.1 用STKINDI做跨公式引用

当你有一套核心逻辑(比如自定义的趋势判断),不想在每个公式里重复粘贴,可以把它单独存成一个指标公式,然后用STKINDI引用。

{ 引用自定义指标 'MYTREND' 的输出 } TREND:STKINDI('','MYTREND.TREND',0,0);

逻辑说明:STKINDI第一个参数是品种代码,空字符串表示当前品种;第二个是公式名和输出名;后两个是周期和偏移。参数说明:周期0表示当前周期,偏移0表示不偏移。这样改核心逻辑时只改一个地方,所有引用它的公式自动更新。

5.2 用DRAWTEXT和DRAWICON做可视化标记

信号光有数值不够,要在图上标出来。DRAWTEXT(COND,PRICE,TEXT)在条件成立时在指定价格位置写文字,DRAWICON(COND,PRICE,TYPE)画图标。

{ 金叉时在最低价下方画图标 } MA5:MA(CLOSE,5); MA10:MA(CLOSE,10); JC:CROSS(MA5,MA10); DRAWICON(JC,LOW*0.99,1); { 1号图标,通常是向上箭头 }

逻辑说明:DRAWICON在JC为真时,在LOW*0.99位置画1号图标。参数说明:图标编号1-30,具体样式在公式管理器里能预览。注意LOW*0.99是为了让图标不遮挡K线,可以改成LOW*0.98放更低。

5.3 参数优化:用INPUT做批量测试

同一套逻辑,不同参数表现差异很大。与其手动改代码,不如把参数抽出来,在公式管理器里直接调。

{ 可调参数的均线交叉公式 } SHORT:INPUT(5,2,20,1); LONG:INPUT(20,10,60,1); MA_S:MA(CLOSE,SHORT); MA_L:MA(CLOSE,LONG); JC:CROSS(MA_S,MA_L);

逻辑说明:SHORT和LONG两个参数让用户自己调。参数说明:默认5和20,范围分别是2-20和10-60。我一般会先用默认值跑一遍,然后逐步调SHORT看信号频率变化,找到和自己交易节奏匹配的组合。

5.4 一个我踩过的坑:REF的偏移量别乱用

早期写公式时,我为了让信号「看起来更准」,在REF里用了负数偏移,比如REF(CLOSE,-1),以为能引用未来数据做「预判」。结果实盘完全不能用,因为未来数据根本不存在。血泪经验:REF的第二个参数只能是正数或0,负数在回测里可能不报错,但实盘一定翻车。后来我养成习惯,写完公式先看有没有REF带负数的,有就立刻改掉。

5.5 验证方法:用「历史回放」检查信号质量

公式写完后,别急着上实盘。通达信有「历史回放」功能,可以逐根K线回放,看信号在历史走势中的表现。具体操作:在K线图上右键 → 历史回放 → 选择起始日期 → 逐根前进。重点看:信号出现后,价格是否真的按预期方向走;有没有在震荡区间频繁触发;极端行情下是否失效。这个步骤花10分钟,能省掉后面很多后悔药。

希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 11:27:35

最短路径服务发布实战:NAService与routetask调用全拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 11:25:31

快递柜后台系统毕设实战:从零部署到滞留件自动转存

简介&#xff1a;本资源是一套面向计算机专业本科毕业生的快递分发系统毕业设计完整实现&#xff0c;基于Java技术栈开发&#xff0c;聚焦菜鸟驿站末端物流场景中的快件登记、分拣、派送与查询等核心业务流程&#xff0c;适用于课程设计、毕设参考及Java Web项目实战学习。压缩…

作者头像 李华
网站建设 2026/10/16 11:23:30

JDBC核心操作全解析:从MySQL连接、建表到PreparedStatement防注入实战

1. 从一个真实踩坑场景说起&#xff1a;为什么JDBC这些基础值得反复梳理 刚入行那会儿&#xff0c;我接手过一个内部数据管理模块&#xff0c;需求很简单&#xff1a;连上数据库&#xff0c;建几张表&#xff0c;做增删改查。当时觉得这玩意儿能有多难&#xff0c;照着教程抄一…

作者头像 李华
网站建设 2026/10/16 11:23:17

规范驱动开发实战:用OpenSpec把需求变成可执行验收标准

我第一次接触到 OpenSpec&#xff0c;是在接手一个已经折腾了两周的搜索模块。需求文档洋洋洒洒写了一万多字&#xff0c;代码也堆了一千多行&#xff0c;可每次评审都对不上&#xff0c;测试更不知道该按什么标准写。后来我把核心行为整理成一份 spec&#xff0c;把所有验收点…

作者头像 李华
网站建设 2026/10/16 11:22:50

SSM+Vue酒店客房预定系统:前后端分离架构与调试指南

1. 项目定位&#xff1a;一套能被“真正跑起来”的Java Web练手系统先说说这套系统的定位。基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;的酒店客房预定管理系统&#xff0c;是一个非常典型的Java Web全栈项目。标题里几个关键词值得拆开看&#xff1a;SSM说明…

作者头像 李华