通达信软件及公式系统详解

通达信软件及公式系统详解

一、通达信软件是什么?

1. 软件概述

通达信(TDX)是由深圳财富趋势科技股份有限公司开发的专业证券分析软件,是中国证券市场使用最广泛的股票分析软件之一。

2. 主要功能

功能模块具体内容
行情展示A股、港股、期货、期权、外汇、全球指数实时行情
技术分析200+种技术指标,多种画线工具,K线形态识别
交易功能支持多家券商交易接口,闪电下单,条件单
资讯信息财经新闻、公告、研报、F10资料深度分析
选股系统条件选股、模式选股、基本面选股
公式平台用户自定义指标、选股公式、预警公式
回测系统交易策略历史回测,绩效分析

3. 软件版本

{ 主要版本分类 }
- 券商定制版:各券商定制版本(如华泰、中信、国泰君安等)
- 通达信金融终端:独立付费版本
- 通达信专业版:机构版,功能更强大
- 手机APP版:iOS和Android移动端

二、通达信公式系统详解

1. 什么是通达信公式?

通达信公式是一种专门用于技术分析的脚本语言,允许用户:

  • 自定义技术指标
  • 编写选股条件
  • 创建交易系统
  • 设计预警条件
  • 绘制自定义图形

2. 公式语言特点

{ 语言特性 }
1. 类Pascal语法结构
2. 解释型语言,实时计算
3. 丰富的内置函数库(约300+个函数)
4. 序列数据处理(处理时间序列数据)
5. 图形绘制能力(线条、图标、文字等)

3. 公式类型

类型文件扩展名用途示例
技术指标公式.tni在主图或副图显示指标MACD、KDJ、均线
条件选股公式.tne筛选符合条件的股票突破选股、金叉选股
交易系统公式.tns买卖信号提示买入卖出点标记
五彩K线公式.tnkK线颜色模式红绿K线、特殊形态
模式匹配公式.tnp形态识别头肩顶、W底等
组合条件公式.tnc多条件组合综合选股条件

三、公式语法基础

1. 基本结构

{=======================
  公式基本结构示例
  文件名: Example.tni
=======================}

{ 参数定义区 }
PARAM1:=5;    { 参数1,默认值5 }
PARAM2:=10;   { 参数2,默认值10 }

{ 变量定义区 }
VAR1:CLOSE>OPEN;           { 布尔变量:收阳线 }
VAR2:=(HIGH-LOW)/CLOSE*100;{ 数值变量:振幅百分比 }

{ 输出显示区 }
OUTPUT1:MA(CLOSE,PARAM1);  { 输出:移动平均线 }
OUTPUT2:MA(CLOSE,PARAM2),COLORRED; { 带颜色的输出 }

{ 绘图部分 }
DRAWICON(CROSS(OUTPUT1,OUTPUT2), OUTPUT1, 1); { 画图标 }
DRAWTEXT(VAR1, LOW*0.98, '阳线');            { 文字标注 }

2. 数据类型

{ 通达信公式中的数据类型 }
- 数值型:整数、小数 (如 5, 10.5)
- 布尔型:真(1)/假(0) (如 CLOSE>OPEN)
- 字符串型:文本数据 (如 '买入信号')
- 颜色型:颜色代码 (如 COLORRED, #FF0000)
- 序列型:时间序列数据 (如 CLOSE序列)

3. 运算符

{ 算术运算符 }
A+B     { 加法 }
A-B     { 减法 }
A*B     { 乘法 }
A/B     { 除法 }
A%      { 取模 }

{ 比较运算符 }
A>B     { 大于 }
A<B     { 小于 }
A>=B    { 大于等于 }
A<=B    { 小于等于 }
A=B     { 等于 }
A!=B 或 A<>B { 不等于 }

{ 逻辑运算符 }
A AND B { 逻辑与 }
A OR B  { 逻辑或 }
NOT A   { 逻辑非 }

{ 赋值运算符 }
:=      { 赋值(不显示) }
:       { 赋值并显示 }

四、核心函数分类

1. 行情数据函数

{ 基本行情数据 }
CLOSE    { 收盘价 }
OPEN     { 开盘价 }
HIGH     { 最高价 }
LOW      { 最低价 }
VOL      { 成交量 }
AMOUNT   { 成交额 }
VOLINSTK { 持仓量(期货) }

{ 引用数据 }
REF(X, N)     { N周期前的X值 }
REFX(X, N)    { N周期后的X值 }
REFV(X, N)    { 引用任意股票的X值 }

{ 周期转换 }
DAYCLOSE   { 日线收盘价 }
WEEKCLOSE  { 周线收盘价 }
MONTHCLOSE { 月线收盘价 }

2. 统计函数

{ 移动平均 }
MA(X, N)        { 简单移动平均 }
EMA(X, N)       { 指数移动平均 }
SMA(X, N, M)    { 平滑移动平均 }

{ 极值函数 }
HHV(X, N)       { N周期内最高值 }
LLV(X, N)       { N周期内最低值 }
HHVBARS(X, N)   { 最高值到当前周期数 }
LLVBARS(X, N)   { 最低值到当前周期数 }

{ 求和与计数 }
SUM(X, N)       { N周期求和 }
COUNT(COND, N)  { N周期内条件成立次数 }

3. 数学函数

ABS(X)       { 绝对值 }
MAX(A, B)    { 最大值 }
MIN(A, B)    { 最小值 }
SQRT(X)      { 平方根 }
POW(X, N)    { X的N次方 }
LN(X)        { 自然对数 }
LOG(X)       { 常用对数 }
EXP(X)       { 指数函数 }
ROUND(X)     { 四舍五入 }

4. 逻辑函数

IF(COND, A, B)      { 条件判断 }
CROSS(A, B)         { A上穿B }
CROSSDOWN(A, B)     { A下穿B }
BETWEEN(X, A, B)    { X在A和B之间 }
EVERY(COND, N)      { 连续N周期满足条件 }
EXIST(COND, N)      { 过去N周期存在满足条件 }
LAST(COND, N, M)    { 从M周期前开始连续N周期满足条件 }

5. 绘图函数

{ 绘制线条 }
DRAWLINE(COND1, PRICE1, COND2, PRICE2, WIDTH)
DRAWSECTION(COND, PRICE, WIDTH)
POLYLINE(COND, PRICE, COLOR)

{ 绘制图标 }
DRAWICON(COND, PRICE, ICONTYPE)
{ 图标类型:1-笑脸, 2-哭脸, 3-菱形, 4-箭头... }

{ 绘制文字 }
DRAWTEXT(COND, PRICE, 'TEXT')
DRAWTEXT_FIX(COND, X, Y, TYPE, 'TEXT')

{ 绘制K线和柱状图 }
STICKLINE(COND, PRICE1, PRICE2, WIDTH, EMPTY)
DRAWKLINE(HIGH, OPEN, LOW, CLOSE)
DRAWBAND(UPPER, COLOR1, LOWER, COLOR2)

{ 颜色设置 }
COLORRED      { 红色 }
COLORGREEN    { 绿色 }
COLORBLUE     { 蓝色 }
COLORYELLOW   { 黄色 }
COLORWHITE    { 白色 }
COLORBLACK    { 黑色 }
COLORCYAN     { 青色 }
COLORMAGENTA  { 洋红 }
COLORGRAY     { 灰色 }
COLORBROWN    { 棕色 }

{ 自定义颜色 }
COLORRGB(R, G, B)        { RGB颜色 }
COLOR+进制数  { 如 COLOR+8421504 }

五、公式编写实例详解

实例1:完整的MACD指标

{=======================
  MACD指标完整版
  文件名: MACD_Full.tni
=======================}

{ 参数设置 }
DIFFSHORT:=12;   { DIF短期参数 }
DIFFLONG:=26;    { DIF长期参数 }
DEAPERIOD:=9;    { DEA参数 }
MACDCOLOR:=2;    { MACD柱状线颜色 }

{ 计算DIF、DEA、MACD }
DIF:EMA(CLOSE,DIFFSHORT)-EMA(CLOSE,DIFFLONG);
DEA:EMA(DIF,DEAPERIOD);
MACD:(DIF-DEA)*2,COLORSTICK;

{ 零轴线 }
ZERO:0,COLORGRAY,DOTLINE;

{ 金叉死叉信号 }
JC:=CROSS(DIF,DEA);    { 金叉 }
SC:=CROSS(DEA,DIF);    { 死叉 }

{ 买卖点标记 }
DRAWICON(JC AND DIF<0, DIF, 1);   { 底部金叉买入 }
DRAWICON(SC AND DIF>0, DIF, 2);   { 顶部死叉卖出 }

{ 背离检测 }
{ 顶背离:股价新高,MACD未新高 }
TOP_DIV:=C>=HHV(C,20) AND DIF<HHV(DIF,20);
{ 底背离:股价新低,MACD未新低 }
BOTTOM_DIV:=C<=LLV(C,20) AND DIF>LLV(DIF,20);

DRAWICON(TOP_DIV, HIGH*1.02, 15);
DRAWICON(BOTTOM_DIV, LOW*0.98, 16);

{ 文字提示 }
DRAWTEXT(JC, DIF*0.95, '←金叉'),COLORRED;
DRAWTEXT(SC, DEA*1.05, '←死叉'),COLORGREEN;
DRAWTEXT(TOP_DIV, HIGH*1.05, '顶背离'),COLORBLUE;
DRAWTEXT(BOTTOM_DIV, LOW*0.95, '底背离'),COLORMAGENTA;

{ 多周期MACD显示(副图叠加) }
MACD_DAY:DIF#DAY;      { 日线DIF }
MACD_WEEK:DIF#WEEK;    { 周线DIF }
MACD_MONTH:DIF#MONTH;  { 月线DIF }

实例2:综合选股公式

{=======================
  多条件综合选股公式
  文件名: Multi_Condition_Select.tne
  类型:条件选股
=======================}

{ 条件1:均线多头排列 }
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
MA20:=MA(CLOSE,20);
MA60:=MA(CLOSE,60);

COND1:=MA5>MA10 AND MA10>MA20 AND MA20>MA60;

{ 条件2:放量突破 }
VOL_RATIO:=VOL/MA(VOL,20);  { 量比 }
COND2:=CLOSE>HHV(HIGH,20) AND VOL_RATIO>1.5;

{ 条件3:MACD金叉 }
DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIF,9);
COND3:=CROSS(DIF,DEA);

{ 条件4:RSI强势 }
RSI6:=SMA(MAX(CLOSE-REF(CLOSE,1),0),6,1)/
      SMA(ABS(CLOSE-REF(CLOSE,1)),6,1)*100;
COND4:=RSI6>50;

{ 条件5:资金流入 }
{ 简化的资金流向判断 }
MONEY_FLOW:=IF(CLOSE>OPEN,VOL*(CLOSE-OPEN),0);
COND5:=SUM(MONEY_FLOW,5)>0;

{ 综合选股条件 }
SELECT_COND:=COND1 AND COND2 AND COND3 AND COND4 AND COND5;

{ 输出结果 }
SELECT_COND;

实例3:交易系统公式

{=======================
  均线交易系统
  文件名: MA_Trading_System.tns
  类型:交易系统
=======================}

{ 买入条件 }
ENTERLONG: CROSS(MA(CLOSE,5), MA(CLOSE,10)) AND CLOSE>MA(CLOSE,60);

{ 卖出条件 }
EXITLONG: CROSS(MA(CLOSE,10), MA(CLOSE,5)) OR CLOSE<MA(CLOSE,20);

{ 止损条件 }
STOPLOSS: CLOSE<REF(LOW,20)*0.95;  { 跌破20日最低价的95% }

{ 止盈条件 }
TAKEPROFIT: CLOSE>ENTERPRICE*1.15; { 盈利15%止盈 }

{ 绘制交易信号 }
DRAWICON(ENTERLONG, LOW*0.98, 1);   { 买入信号 }
DRAWICON(EXITLONG, HIGH*1.02, 2);   { 卖出信号 }

{ 绘制止损止盈线 }
DRAWLINE(STOPLOSS, LOW, REF(STOPLOSS,1), REF(LOW,1), 0),COLORGREEN;
DRAWLINE(TAKEPROFIT, HIGH, REF(TAKEPROFIT,1), REF(HIGH,1), 0),COLORRED;

{ 绩效统计(需在交易系统测试平台使用) }
{ 交易次数、胜率、盈亏比等自动计算 }

六、公式编辑器使用

1. 打开公式编辑器

通达信菜单路径:
功能 → 公式系统 → 公式管理器 → 新建
或按快捷键:Ctrl+F

2. 公式编辑器界面

{ 主要区域 }
1. 公式名称:设置公式名称(英文或数字)
2. 公式描述:中文描述
3. 公式类型:选择指标/选股/交易系统等
4. 画线方法:主图叠加/主图/副图
5. 参数设置:定义可调参数
6. 编辑区:编写公式代码
7. 测试公式:检查语法错误
8. 插入函数:从函数库选择插入

3. 调试技巧

{ 调试方法 }
1. 使用DRAWTEXT输出中间值
   DRAWTEXT_FIX(1,0,0,0,NUMTOSTR(VAR1,2));

2. 使用颜色区分不同状态
   COND_COLOR:IF(VAR1>0,COLORRED,COLORGREEN);

3. 分步测试复杂公式
   { 先测试第一部分 }
   PART1:MA(CLOSE,5);
   { 再添加第二部分 }
   PART2:MA(CLOSE,10);
   
4. 使用SHOW函数在信息栏显示
   { 在公式中输出到信息窗口 }

七、高级应用技巧

1. 多周期引用

{ 引用其他周期数据 }
DAY_CLOSE:CLOSE#DAY;      { 日线收盘价 }
WEEK_MA5:MA(CLOSE,5)#WEEK;{ 周线5日均线 }
MONTH_HIGH:HIGH#MONTH;    { 月线最高价 }

{ 多周期共振策略 }
RESONANCE:=CROSS(MA(CLOSE,5), MA(CLOSE,10)) AND 
           CROSS(MA(CLOSE#WEEK,5), MA(CLOSE#WEEK,10));

2. 板块和指数函数

{ 板块相关函数 }
BKNAME    { 板块名称 }
BKCODE    { 板块代码 }
INBLOCK('板块名称') { 判断是否属于某板块 }

{ 指数函数 }
INDEXC    { 大盘收盘价 }
INDEXV    { 大盘成交量 }
INDEXADV  { 上涨家数 }
INDEXDEC  { 下跌家数 }

{ 相对强度 }
RELATIVE_STRENGTH:CLOSE/INDEXC*1000;

3. 动态参数

{ 自适应参数 }
{ 根据波动率调整均线周期 }
VOLATILITY:=STD(CLOSE,20)/MA(CLOSE,20)*100;
DYNAMIC_PERIOD:IF(VOLATILITY>5,10,20);  { 高波动用短周期,低波动用长周期 }
DYNAMIC_MA:MA(CLOSE,DYNAMIC_PERIOD);

4. 资金管理函数

{ 仓位管理(需在交易系统中) }
POSITION:= (总资金*0.1)/CLOSE;  { 10%资金买入股数 }
STOP_LOSS_PRICE:=ENTERPRICE*0.95;  { 5%止损价 }

{ 金字塔加仓 }
ADD_POSITION: CLOSE>ENTERPRICE*1.05 AND 
              COUNT(ENTERLONG,10)=1;  { 首次买入后上涨5%加仓 }

八、常见问题与解决方案

问题1:公式编译错误

{ 常见错误及解决方法 }
1. 括号不匹配:检查所有括号是否成对
2. 函数参数错误:检查函数参数个数和类型
3. 未定义变量:确保所有变量都先定义后使用
4. 语法错误:注意使用英文标点,分号结尾
5. 除零错误:添加判断 IF(X>0, A/B, 0)

问题2:公式运行缓慢

{ 性能优化技巧 }
1. 减少复杂计算:避免嵌套多层循环
2. 使用内置函数:优先使用MA、SUM等优化函数
3. 限制计算周期:如仅计算最近1000根K线
4. 缓存中间结果:重复计算的变量只计算一次
   MA5:=MA(CLOSE,5);  { 缓存MA5 }
   COND1:=CLOSE>MA5;  { 使用缓存的MA5 }
   COND2:=VOL>REF(MA5,1);

问题3:信号闪烁

{ 防止信号闪烁的方法 }
1. 使用确认函数
   CONFIRMED_SIGNAL:REF(CROSS(A,B),1) AND CROSS(A,B);

2. 收盘价确认
   BUY_SIGNAL:=CROSS(MA(CLOSE,5), MA(CLOSE,10)) AND 
               REF(ISLASTBAR,0);  { 仅最后一根K线确认 }

3. 价格过滤
   FILTERED_SIGNAL:=SIGNAL AND ABS(CLOSE-OPEN)/CLOSE>0.01;

九、学习资源推荐

1. 官方资源

  • 通达信帮助文档:按F1调出,最权威的参考资料
  • 公式系统指南:内置的公式编写教程
  • 函数手册:详细的所有函数说明

2. 学习路径

{ 建议的学习顺序 }
1. 基础语法 → 2. 常用函数 → 3. 简单指标编写
4. 选股公式 → 5. 交易系统 → 6. 高级技巧
7. 实战应用 → 8. 优化调试 → 9. 策略回测

3. 实践建议

{ 实战练习建议 }
1. 从修改现有指标开始
2. 编写简单的选股条件
3. 逐步增加复杂度
4. 实盘前充分回测
5. 建立自己的指标库

十、通达信公式的局限性

1. 技术限制

{ 需要注意的局限性 }
1. 无法访问外部数据源
2. 不能进行复杂的机器学习计算
3. 不支持自定义数据结构的创建
4. 实时数据访问有限制
5. 无法进行高频交易级别的计算

2. 与其他工具的对比

特性通达信公式Python量化专业量化平台
学习曲线简单中等陡峭
灵活性中等
计算能力有限强大强大
实时性实时可实时专业实时
成本免费/低免费昂贵
适用范围个人投资者个人/机构专业机构

总结

通达信公式是一个功能强大且易学的技术分析工具,特别适合:

  • 个人投资者进行技术分析和选股
  • 交易员快速验证交易想法
  • 分析师开发简单量化策略

虽然它在复杂性和扩展性上不如Python等编程语言,但凭借其实时性、易用性和与行情软件的深度集成,仍然是中国证券市场最受欢迎的自定义分析工具

掌握通达信公式编写,可以让你:

  1. 个性化自己的分析界面
  2. 快速实现交易想法
  3. 提高选股效率
  4. 建立系统化的交易方法

对于想要进入量化交易领域的新手来说,通达信公式是一个很好的起点,可以培养对市场数据的敏感度和技术分析的基本功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宝哥Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值