欢迎大家来到IT世界,在知识的湖畔探索吧!
1. 通达信简介
1.1 通达信软件概述
通达信是国内知名的证券分析软件,由深圳市财富趋势科技股份有限公司开发,广泛应用于券商、投资机构和散户投资者。软件提供实时行情、技术分析、基本面分析、量化交易等功能。
1.2 通达信主要功能特点
- 多市场行情支持(A股、港股、期货、外汇等)
- 丰富的技术分析工具和指标
- 强大的公式系统支持自定义指标和策略
- 灵活的画线分析工具
- 数据导出和回测功能
- 支持条件选股和预警功能
1.3 通达信界面介绍
- 主界面布局:菜单栏、工具栏、行情窗口、分析窗口
- 常用快捷键介绍
- 公式管理器入口
欢迎大家来到IT世界,在知识的湖畔探索吧!
2. 通达信公式系统简介
2.1 公式系统概述
通达信公式系统是一套完整的编程环境,允许用户创建自定义指标、条件选股公式、交易系统和五彩K线公式等。通达信公式系统是其核心功能之一,其基于特定的语法结构,支持数学运算、逻辑判断、函数调用等多种编程元素。
公式系统的优势:
- 灵活性高,可完全自定义分析逻辑
- 执行效率高,与软件深度集成
- 可视化强,结果直接在图表上展示
- 支持多周期分析,适应不同交易需求
2.2 公式类型
- 技术指标公式:用于分析价格走势的各类指标
- 条件选股公式:筛选符合特定条件的股票
- 交易系统公式:定义买卖信号的交易策略,包括买入卖出信号
- 五彩K线公式:自定义K线显示样式,直观显示特定形态
2.3 公式编辑器
- 公式编辑器界面布局
- 基本操作:新建、编辑、保存、导入导出
- 公式测试和调试方法
3. 通达信公式编程语法基础
公式组成要素: 公式名称,参数,表达式(计算),输出
3.1 基本语法规则
- 每行一个语句,语句以分号”;”结束
- 不区分大小写
- 注释使用”{}”
- 变量命名规则
{示例} N := 5; MA5 : MA(C, N); 欢迎大家来到IT世界,在知识的湖畔探索吧!
3.2 数据类型
- 数值型:整数和浮点数
- 布尔型:0(假)和1(真)
- 字符串型(有限支持):通达信中的字符串是用单引号(”)括起来的字符序列,例如:
欢迎大家来到IT世界,在知识的湖畔探索吧!'通达信' 'ABC123' '这是一个测试字符串' - 数组(通过序列变量实现):通达信中没有显式的数组声明语法,数组是通过特定函数隐式创建的。
3.3 运算符
- 算术运算符:+ – * /
运算符 |
说明 |
示例 |
结果 |
|
+ |
加法 |
2+3 |
5 |
|
– |
减法 |
5-2 |
3 |
|
* |
乘法 |
3*4 |
12 |
|
/ |
除法 |
10/2 |
5 |
- 比较运算符:> < >= <= = <>
|
运算符 |
说明 |
示例 |
结果 |
|
> |
大于 |
CLOSE>OPEN |
布尔值 |
|
< |
小于 |
LOW<REF(LOW,1) |
布尔值 |
|
>= |
大于等于 |
VOL>=MA(VOL,5) |
布尔值 |
|
<= |
小于等于 |
CLOSE<=UPPER |
布尔值 |
|
= |
等于 |
STKNAME=’中国平安’ |
布尔值 |
|
!= 或 <> |
不等于 |
CLOSE!=OPEN |
布尔值 |
- 逻辑运算符:AND OR NOT
|
运算符 |
说明 |
示例 |
结果 |
|
AND |
逻辑与 |
CLOSE>OPEN AND VOL>REF(VOL,1) |
布尔值 |
|
OR |
逻辑或 |
CROSS(MA1,MA2) OR CROSS(MA2,MA1) |
布尔值 |
|
NOT |
逻辑非 |
NOT(ISLASTBAR) |
布尔值 |
- 赋值运算符::=
|
运算符 |
说明 |
示例 |
结果 |
|
:= |
赋值运算符(公式中) |
A:=CLOSE+OPEN |
– |
运算符优先级表
|
优先级 |
运算符 |
说明 |
|
1 |
() |
括号 |
|
2 |
NOT, -(负号) |
逻辑非/取负 |
|
3 |
*, / |
乘除模 |
|
4 |
+, – |
加减 |
|
5 |
>, <, >=, <=, = |
比较运算 |
|
6 |
AND, OR |
逻辑运算 |
|
7 |
:= |
赋值 |
3.4 变量命名规则
3.4.1 基本命名规则
- 长度限制:变量名最长不超过15个字符
- 有效字符:可以使用字母(A-Z,a-z)、数字(0-9)和下划线(_)
- 首字符:必须以字母或下划线开头,不能以数字开头
- 大小写不敏感:通达信不区分大小写,MA5和ma5被视为同一变量
- 保留字限制:不能使用通达信的保留关键字作为变量名(如OPEN, CLOSE, HIGH等)
3.4.2 变量命名示例
有效命名:
MA5 ma10 _VolRatio Day3_Avg
无效命名:
欢迎大家来到IT世界,在知识的湖畔探索吧!5MA {以数字开头} MA-10 {包含非法字符(-)} Close {使用保留关键字} VeryLongVariableName {超过15字符}
3.4.3 变量命名约定(建议)
3.4.3.1 技术指标变量
- 常用前缀表示指标类型: MA_ 表示移动平均相关 VOL_ 表示成交量相关 MACD_ 表示MACD指标相关 RSI_ 表示相对强弱指标相关
示例:
MA5:MA(CLOSE,5); VOL_MA5:MA(VOL,5); RSI14:RSI(CLOSE,14);
3.4.3.2 临时计算变量
- 使用tmp、temp等前缀表示临时变量
- 或使用下划线开头表示中间变量
示例:
欢迎大家来到IT世界,在知识的湖畔探索吧!_TMP1:=(HIGH+LOW)/2; TMP_AVG:MA(_TMP1,10);
3.4.3.3 条件判断变量
- 使用is、has、can等前缀表示布尔条件
- 或以问号结尾表示条件变量
示例:
IS_UP:=CLOSE>OPEN; HasVolume?:VOL>REF(VOL,1)*1.5;
3.4.4 变量作用域规则
- 全局变量:在公式中定义的变量在整个公式范围内有效
- 局部变量:通达信没有真正的局部变量概念,所有变量都是全局的
- 参数变量:通过参数定义的变量具有特殊作用域
3.4.5 变量命名实践建议
- 保持一致性:整个公式中使用统一的命名风格
- 描述性命名:变量名应反映其含义或用途
- 避免混淆:不要与内置函数名过于相似
- 适当注释:对复杂变量添加注释说明
- 分组相关变量:相关变量使用统一前缀
良好命名的公式片段示例:
欢迎大家来到IT世界,在知识的湖畔探索吧!{双均线交易系统} SHORT_MA:MA(CLOSE,5); {短期均线} LONG_MA:MA(CLOSE,20); {长期均线} IsGoldenCross:CROSS(SHORT_MA,LONG_MA); {金叉信号} IsDeathCross:CROSS(LONG_MA,SHORT_MA); {死叉信号}
注:遵循良好的变量命名规则可以使公式更易读、易维护,并减少错误发生的可能性。
3.5 赋值语句
3.5.1 基本语法结构
3.5.1.1 语法原型:
变量名 赋值符 表达式; 3.5.1.2 两种赋值方式对比
类型 |
符号 |
显示特性 |
内存管理 |
典型应用场景 |
|
临时赋值 |
:= |
不显示在图表 |
计算后释放 |
中间结果计算 |
|
输出赋值 |
: |
显示在图表 |
持续占用 |
最终指标输出 |
注:冒号和等号中间不能有空格
3.5.2 简单赋值
欢迎大家来到IT世界,在知识的湖畔探索吧!{数值赋值} MA5 := MA(CLOSE,5); {临时变量} MA10:MA(CLOSE,10); {输出变量} {布尔赋值} IS_UP := CLOSE > OPEN; {返回0/1}
3.5.3 条件赋值
{根据条件动态赋值} TREND := IF(CLOSE > MA(CLOSE,20), 1, -1);
3.5.4 赋值语句实践举例
成交量加权均价:
欢迎大家来到IT世界,在知识的湖畔探索吧!{临时计算各周期加权值} VOL_WEIGHT := VOL*CLOSE; TOTAL_VOL := SUM(VOL,20); TOTAL_WEIGHT := SUM(VOL_WEIGHT,20); {最终输出} VWAP: TOTAL_WEIGHT/TOTAL_VOL, COLORCYAN;
3.5.5 常见错误
3.5.5.1 典型错误案例
{错误示例1:赋值符号混淆} MA5 = MA(CLOSE,5); {错误!应使用:=或:} {错误示例2:自我引用} RECURSIVE_VAR := RECURSIVE_VAR + 1; {未开启递归选项} {错误示例3:类型不匹配} TEXT_SIGNAL := 'BUY' + CLOSE; {字符串与数值不能直接运算}
3.5.5.2 调试方法
3.5.6 关键总结:
- 符号选择原则:
- 需要显示在图表 → 使用:
- 仅中间计算 → 使用:=
- 版本差异注意:
- 尽量使用各个版本都兼容的语法
建议在实际编辑器中通过「公式校验」功能实时检查赋值语句合法性。
3.6 控制结构
- IF-THEN-ELSE语句
欢迎大家来到IT世界,在知识的湖畔探索吧!IF 条件 THEN 语句1 ELSE 语句2;
示例:
VAR1:=IF(CLOSE>OPEN,1,0);
- 循环语句
通达信公式系统不支持传统循环结构,但可通过递归函数或内置函数实现类似功能。
3.7 函数调用
- 函数调用格式:FUNCTIONNAME(ARG1,ARG2,…);
- 支持数学函数、统计函数、逻辑函数等多种类型
- 自定义函数定义和使用
- 绘制线条、图标、文字等
- 设置颜色和线型
函数在公式编写中具有非常重要的作用,在公式编辑器中选择插入函数,可以看到里面有许多函数,如下图:
注:函数清单见 《5. 附录:通达信内置函数表》
4. 通达信函数及公式编程实践
调出公式管理器: 公式公式管理器 或 快捷键:CTRL+F 公式类型分为四大类:技术指标公式、条件选股公式、交易系统公式、五彩K线公式。
对公式编写有问题进行提问,可以点击客户端上方栏财富圈→论坛→公式天堂加入,或者点击公式论坛地址直接进入:
https://sns.tdx.com.cn/site/tdx_sns/page_index.html#/CircleDetail?id=12&systemType=1
4.1 公式编写举例
进入公式管理器,新建一技术指标公式 依次点击菜单“公式公式管理器”,进入公式管理器界面。如下图:
左边的树型列表中选择技术指标公式下面的“均线型”,点击右边的“新建”,就会进入公式编辑界面,如下图:
填写公式名称,公式描述; 公式类型:对应的公式可选择加入不同的类型,设定后查看公式时将会在对应的分类项下列出来; 画线方法:选择副图,指标将会在副图区显示,选择主图叠加,指标将会在主图区显示(如常用指标MA就是主图指标),也可选择在副图上叠加K线,美国线,收盘站线。
坐标线位置:默认的是自动,系统自动根据指标值的范围设定的区间,如下图的 0.60,0.40,0.2,0, -0.2, 0.00 , -0.2 ;可以手动的设置坐标间隔,用分号分开,手动设置后,默认的将会没有。
额外Y轴分界:在指标上加上一些白色的横线,如上图所示。
在公式编辑界面公式编辑界面输入公式内容,
欢迎大家来到IT世界,在知识的湖畔探索吧!{双均线交易系统} SHORT_MA:MA(CLOSE,5); {短期均线} LONG_MA:MA(CLOSE,20); {长期均线} IsGoldenCross:CROSS(SHORT_MA,LONG_MA); {金叉信号} IsDeathCross:CROSS(LONG_MA,SHORT_MA); {死叉信号}
如下图:
点击 “测试公式”,若显示测试通过,点击“确定”按钮保存公式。之后就可以调出公式使用,如图:
注:
公式编辑时,可以点击“插入函数”,选择要插入的函数,点击“确定”按钮,对应的函数会在公式编辑框内显示出来。如下图所示:
点击“确定”:
选择函数后,可以继续填写函数参数,本例MA有两个参数,第一个参数填写收盘价,收盘价在公式函数中用 C 表示,第二个参数填写均线日期,可以直接录入一数字。(注:公式编写涉及到符号时用英文字符)。如下图所示:
选择其他函数,可以按提示进行填写即可完成。
4.2 官方一些基本公式编写实例
4.2.1 今日比昨日的成交量放大了1倍
VOL/REF(VOL,1)>2;
4.2.2 今日的五日均量比五天前的五日均量放大了3倍
欢迎大家来到IT世界,在知识的湖畔探索吧!AA:=MA(VOL,5); BB:=REF(AA,5); AA/BB>4;
4.2.3 今天的成交量达到了整个流通盘的10%以上
VOL/CAPITAL>10/100;
注意,10%的表达式是10/100,或者0.1
4.2.4 今日比昨日的成交量缩小了1倍
欢迎大家来到IT世界,在知识的湖畔探索吧!VOL/REF(VOL,1)<0.5;
4.2.5 今日的五日均量比五天前的五日均量缩小了一半
AA:=MA(VOL,5); BB:=REF(AA,5); AA/BB<0.5;
4.2.6 今天的成交量不足整个流通盘的0.5%
欢迎大家来到IT世界,在知识的湖畔探索吧!VOL/CAPITAL<0.5/100;
4.2.7 今日涨幅达到了7%以上
CLOSE/REF(CLOSE,1)>1.07;
4.2.8 十日均价继续上涨
欢迎大家来到IT世界,在知识的湖畔探索吧!AA:=MA(CLOSE,10); BB:=REE(AA,1); AA>BB;
4.2.9 收阳、收阴:
1、当天收阳:CLOSE>OPEN; 2、当天收阴:CLOSE<OPEN;
4.2.10 高开、低开
1、当天股价高开,即开盘高于昨日收盘:OPEN>REF(CLOSE,1); 2、当天股价低开:OPEN<REF(CLOSE,1);
4.2.11 跳空
跳空亦有向上和向下两种: 当日开盘在昨日最高之上,即为向上跳空:OPEN>REF(HIGH,1); 反之,开盘小于昨日的最高价,为向下跳空:OPEN<REF(LOW,1);
4.2.12 量价齐升
AA:=VOL/REF(VOL,1)>2;{成交量是昨日的两倍} BB:=CLOSE/REF(CLOSE,1)>1.07;{涨幅大于7%} AA AND BB;
4.2.13 创新高
创新高指当日最高价是最近一段时间的最高价:
欢迎大家来到IT世界,在知识的湖畔探索吧!HIGH=HHV(HIGH,N);
其中的HIGH为当期最高价,HHV(X,N)是求N周期内X最高值。因此该公式的含义是当日最高价创N日新高时返回值为1,否则为0。
4.2.14 横盘整理
横盘整理指最近一段时期价格在一定幅度之内摆动:
(HHV(CLOSE,10)-LLV(CLOSE,10))/CLOSE<0.05;
其中的LLV(X,N)是求N周期内X最低值。因此该公式表示10日收盘价振幅振幅在5%以内。
4.2.15 5日,10日,30日均线多头排列
定义:均线多头排列,是指从短周期到长周期均线,从上而下的依次排列
欢迎大家来到IT世界,在知识的湖畔探索吧!AA:=MA(CLOSE,5); BB:=MA(CLOSE,10); CC:=MA(CLOSE,30); T1:AA>BB AND BB>CC;
以上情况维持一段时间,假设我们这里定为4天以上:
COUNT(T1, 4)=4;
COUNT(X, N)表示统计在N天内满足条件X的有几天。
最终的结果就是如下所示:
欢迎大家来到IT世界,在知识的湖畔探索吧!AA:=MA(CLOSE,5); BB:=MA(CLOSE,10); CC:=MA(CLOSE,30); T1:=AA>BB AND BB>CC; COUNT(T1,4)=4;
4.4.16 某绝对时间段最高价
此脚本段求2022年8月3日到2022年12月31日间的最高价:
HH:=IF(YEAR=2022 AND (MONTH>8 OR (MONTH=8 AND DAY>=3) ) AND (MONTH<12 OR (MONTH=12 AND DAY<=31) ),H,0);{HH变量在该时间段内等于H,其他时间为0} HHV(HH,0);{此例求2022年8月3日到2022年12月31日间的最高价}
4.4.17 在某个时间段内某条件满足
二十个交易日内时候涨停过
欢迎大家来到IT世界,在知识的湖畔探索吧!TT:=C/REF(C,1) > 1.095;{是否涨停} COUNT(TT, 20) > 0;{二十个交易日内时候涨停过}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/138627.html