引言:为什么学习通达信策略编写?
通达信(TDX)作为中国股市投资者最常用的分析软件之一,其强大的公式编辑器和策略回测功能,使得普通投资者也能实现从“看图”到“量化”的跨越。掌握通达信策略编写,不仅能让你更深刻地理解市场规律,还能通过自动化交易减少情绪干扰,提高交易执行力。
本指南将从零基础出发,详细讲解通达信公式语言(TDX Language)的语法、常用指标编写、交易系统构建以及自动交易技巧,帮助你快速上手并构建属于自己的交易体系。
第一部分:通达信公式编辑器基础
1.1 公式编辑器的打开与界面介绍
在通达信软件中,按 Ctrl + F 快捷键,或点击菜单栏的“功能” -> “公式系统” -> “公式管理器”,即可打开公式管理器。
公式管理器分为几个区域:
- 公式组:左侧树状结构,分类管理各类公式(技术指标、条件选股、交易系统、五彩K线等)。
- 工具栏:新建、修改、删除、导入导出等功能按钮。
- 公式列表:显示当前选中类别下的所有公式。
点击“新建”按钮,进入公式编辑器界面,主要包含:
- 公式名称:给你的公式起一个独特的名字。
- 公式描述:简单说明公式的作用。
- 参数设置:可以设置公式中使用的变量(如周期、阈值等),方便调整。
- 主图/副图/选股区域:根据公式类型选择显示位置。
- 编辑区:编写代码的核心区域。
1.2 TDX公式语言的基本语法
TDX公式语言是一种类似C语言的脚本语言,语法简洁,易于学习。
1.2.1 变量与赋值
变量名必须以字母开头,可以包含数字和下划线。赋值使用冒号 = 或 :=(两者在通达信中通常等价,但为了清晰,建议使用 := 表示定义变量,= 表示输出到屏幕)。
// 示例:定义变量并赋值
MA5: MA(CLOSE, 5); // 计算5日均线,并命名为MA5,显示在屏幕上
VAR1: 100; // 定义常量VAR1
1.2.2 基本运算符
- 算术运算符:
+,-,*,/,^(幂运算) - 比较运算符:
>,<,>=,<=,=,<>(不等于) - 逻辑运算符:
AND(与),OR(或),NOT(非)
1.2.3 内置函数
通达信提供了丰富的内置函数,这是策略编写的核心。常用的有:
- 引用函数:
REF(X, N)- 引用X在N周期前的值。例如REF(CLOSE, 1)表示昨天的收盘价。 - 均线函数:
MA(X, N)- 计算X的N日简单移动平均。 - 条件判断:
IF(COND, A, B)- 如果COND成立,返回A,否则返回B。 - 交叉判断:
CROSS(A, B)- 判断A是否从下方向上穿过B。常用于金叉死叉判断。 - 最大最小值:
HHV(HIGH, N)- N日内最高价;LLV(LOW, N)- N日内最低价。
1.2.4 注释
使用 {} 或 // 进行注释,解释代码含义,便于维护。
{这是一个注释}
// 这也是一个注释
第二部分:常用技术指标编写实战
2.1 均线系统(MA)编写
均线是最基础的趋势指标。我们来编写一个包含5日、10日、20日、60日均线的组合指标。
需求:在主图显示四条不同周期的均线,并用不同颜色区分。
代码实现:
{MA均线组合}
MA5: MA(CLOSE, 5), COLORWHITE; // 5日均线,白色
MA10: MA(CLOSE, 10), COLORYELLOW; // 10日均线,黄色
MA20: MA(CLOSE, 20), COLORGREEN; // 20日均线,绿色
MA60: MA(CLOSE, 60), COLORRED; // 60日均线,红色
代码解析:
MA(CLOSE, 5):计算收盘价的5日平均值。, COLORWHITE:设置线条颜色为白色。通达信支持的颜色代码有:COLORRED(红)、COLORGREEN(绿)、COLORBLUE(蓝)、COLORWHITE(白)、COLORYELLOW(黄)、COLORCYAN(青)等。
2.2 MACD指标编写
MACD(平滑异同移动平均线)是经典的趋势动量指标。
需求:计算DIF、DEA和MACD柱,并在副图显示。
代码实现:
{MACD指标}
SHORT:=12; // 短期EMA周期
LONG:=26; // 长期EMA周期
MID:=9; // DEA周期
DIF: EMA(CLOSE, SHORT) - EMA(CLOSE, LONG); // 短期EMA减长期EMA
DEA: EMA(DIF, MID); // DIF的MID日EMA
MACD: 2*(DIF-DEA), COLORSTICK; // 2倍的差值,用红绿柱表示
代码解析:
EMA(X, N):指数移动平均线函数。COLORSTICK:这是一个特殊指令,用于在副图绘制红绿柱状线。当值为正时显示红色(或空心红),为负时显示绿色(或实心绿)。:=:这里使用:=定义参数,因为这些参数不需要在屏幕上显示,只是中间变量。
2.3 KDJ指标编写
KDJ是超买超卖类指标,对短期波动敏感。
需求:编写KDJ指标,参数为9,3,3。
代码实现:
{KDJ指标}
N:=9; M1:=3; M2:=3;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; // 未成熟随机值
K: SMA(RSV, M1, 1); // RSV的M1日移动平均,权重1
D: SMA(K, M2, 1); // K的M2日移动平均
J: 3*K-2*D; // 修正指标
代码解析:
LLV(LOW, N):N日内最低价。HHV(HIGH, N):N日内最高价。SMA(X, N, M):移动平均函数,其中M为权重(通达信中SMA的用法需注意,通常SMA(X, N, 1)等同于MA(X, N),但严格定义略有不同,这里按通用KDJ公式编写)。
第三部分:交易系统与选股公式编写
3.1 交易系统公式(买卖点提示)
交易系统公式用于在K线图上直接标记买卖点。通达信要求交易系统公式必须包含 ENTERLONG(多头买入)、EXITLONG(多头卖出)等标准变量名。
需求:编写一个简单的金叉买入、死叉卖出的交易系统(基于MA均线)。
代码实现:
{MA交易系统}
MA5:=MA(CLOSE, 5);
MA10:=MA(CLOSE, 10);
// 买入条件:5日均线上穿10日均线
ENTERLONG: CROSS(MA5, MA10);
// 卖出条件:5日均线下穿10日均线
EXITLONG: CROSS(MA10, MA5);
使用方法:
- 将上述代码保存为交易系统公式。
- 在K线图主图界面,右键选择“主图指标” -> “选择其他指标” -> 选中你刚编写的“MA交易系统”。
- 图上会出现红色向上的箭头(买)和绿色向下的箭头(卖)。
3.2 条件选股公式编写
选股公式用于在全市场范围内筛选符合条件的股票。
需求:选出当天收盘价上穿20日均线的股票(即突破20日线)。
代码实现:
{选股:上穿20日均线}
MA20:=MA(CLOSE, 20);
CROSS(CLOSE, MA20); // 直接输出条件,选股公式只需一行核心逻辑即可
使用方法:
Ctrl + T打开条件选股器。- 选择“技术指标公式” -> “其他类型”(或你保存的位置) -> 选中该公式。
- 设置参数(如有),点击“执行选股”。
3.3 五彩K线(K线染色)
五彩K线可以将满足特定条件的K线染成特定颜色,辅助看盘。
需求:将所有涨停板(涨幅>=9.9%)的K线标记为红色实体。
代码实现:
{五彩K线:涨停板}
ZTPRICE:=REF(CLOSE,1)*1.1; // 计算昨日收盘价*1.1,即涨停价
ZT: CLOSE>=ZTPRICE; // 判断是否涨停
// 输出颜色指令
STICKLINE(ZT, HIGH, LOW, 0, 0), COLORRED; // 画红线(影线)
STICKLINE(ZT, OPEN, CLOSE, 3, 1), COLORRED; // 画红色实体,厚度3
注意:五彩K线公式不需要输出变量名,直接使用 STICKLINE 画线即可。
第四部分:自动交易与高级技巧
4.1 自动交易的设置(预警与下单)
重要提示:通达信本身是行情分析软件,不直接具备全自动交易功能。要实现自动交易,通常需要结合券商提供的通达信定制版或通过“预警系统”+“人工/半自动下单”来实现。
4.1.1 预警系统设置
预警系统可以监控全市场股票,当条件触发时弹窗或声音提示。
步骤:
- 按
Ctrl + Y打开预警系统设置。 - 点击“新增条件”,选择你编写好的“条件选股公式”。
- 设置监控范围(如“沪深A股”)。
- 选择预警方式(弹窗、声音、写入文件等)。
- 点击“启动预警”。
4.1.2 闪电下单(半自动)
部分券商的通达信版本集成了“闪电下单”功能。当预警触发时,你可以快速在弹出的预警框中点击股票代码,直接跳转到交易界面并填好价格数量,实现“一键下单”。
4.2 回测系统:验证策略有效性
在投入真金白银之前,必须进行历史回测。
操作步骤:
- 编写好交易系统公式(如3.1节的MA交易系统)。
- 在K线图上加载该系统。
- 点击菜单栏“系统” -> “沙盘推演”。
- 点击“开始回测”,软件会模拟历史上的买卖点,并计算收益率、胜率、最大回撤等数据。
回测报告解读:
- 累计收益率:策略在历史上的总回报。
- 最大回撤:资产曲线从最高点下跌的最大幅度,反映风险。
- 交易次数:过多的交易可能意味着过度拟合。
4.3 高级语法:引用与跨周期
4.3.1 引用其他股票数据
STOCKLABEL 函数(需特定版本支持)或直接使用 INDEXC(指数收盘价)来对比大盘。
{跑赢大盘}
BK:=INDEXC; // 假设引用大盘指数收盘价,实际需根据具体指数代码调整
OUTPERFORM: CLOSE > BK;
4.3.2 跨周期引用
使用 REF(X, N) 可以引用不同周期的数据,但需在公式设置中选择“多周期K线图”或使用 PERIOD 函数判断当前周期。
第五部分:常见问题与调试技巧
5.1 语法错误排查
- 红色波浪线:表示语法错误,通常是函数名拼写错误、缺少分号或括号不匹配。
- 无法保存:检查公式名称是否重复,或包含非法字符。
5.2 逻辑错误排查(画线诊断)
如果公式能保存但显示不对,使用 DRAWTEXT 或 DRAWICON 进行调试。
{调试示例}
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
CROSS_SIGNAL: CROSS(MA5, MA10);
// 在金叉出现的位置显示文字“金叉”
DRAWTEXT(CROSS_SIGNAL, LOW*0.98, '金叉'), COLORGREEN;
通过观察文字是否出现在预期位置,可以判断 CROSS_SIGNAL 是否正确触发。
5.3 未来函数问题
严禁使用未来函数(如 BACKSET, REFX 等)。这些函数会根据未来的数据修改过去的信号,导致回测结果极其完美但实盘必败。判断标准:信号是否会随着K线的生成而消失或改变。好的信号应该是“一旦出现,永不消失”(除非K线消失,如除权除息)。
结语
通达信策略编写是一个从理论到实践的渐进过程。建议新手按照以下路径进阶:
- 模仿:先看懂并修改现成的指标公式。
- 复现:尝试自己编写MACD、KDJ等经典指标。
- 逻辑:构建简单的均线、成交量策略。
- 回测:利用沙盘推演验证策略,剔除未来函数。
- 实盘:从模拟或小资金开始,结合预警系统辅助决策。
量化交易的核心不是复杂的数学,而是对市场的深刻理解和严格的纪律。希望这篇指南能为你打开通达信量化交易的大门。
