引言:为什么学习通达信策略编写?

通达信(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);

使用方法

  1. 将上述代码保存为交易系统公式。
  2. 在K线图主图界面,右键选择“主图指标” -> “选择其他指标” -> 选中你刚编写的“MA交易系统”。
  3. 图上会出现红色向上的箭头(买)和绿色向下的箭头(卖)。

3.2 条件选股公式编写

选股公式用于在全市场范围内筛选符合条件的股票。

需求:选出当天收盘价上穿20日均线的股票(即突破20日线)。

代码实现

{选股:上穿20日均线}
MA20:=MA(CLOSE, 20);
CROSS(CLOSE, MA20);  // 直接输出条件,选股公式只需一行核心逻辑即可

使用方法

  1. Ctrl + T 打开条件选股器。
  2. 选择“技术指标公式” -> “其他类型”(或你保存的位置) -> 选中该公式。
  3. 设置参数(如有),点击“执行选股”。

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 预警系统设置

预警系统可以监控全市场股票,当条件触发时弹窗或声音提示。

步骤

  1. Ctrl + Y 打开预警系统设置。
  2. 点击“新增条件”,选择你编写好的“条件选股公式”。
  3. 设置监控范围(如“沪深A股”)。
  4. 选择预警方式(弹窗、声音、写入文件等)。
  5. 点击“启动预警”。

4.1.2 闪电下单(半自动)

部分券商的通达信版本集成了“闪电下单”功能。当预警触发时,你可以快速在弹出的预警框中点击股票代码,直接跳转到交易界面并填好价格数量,实现“一键下单”。

4.2 回测系统:验证策略有效性

在投入真金白银之前,必须进行历史回测。

操作步骤

  1. 编写好交易系统公式(如3.1节的MA交易系统)。
  2. 在K线图上加载该系统。
  3. 点击菜单栏“系统” -> “沙盘推演”。
  4. 点击“开始回测”,软件会模拟历史上的买卖点,并计算收益率、胜率、最大回撤等数据。

回测报告解读

  • 累计收益率:策略在历史上的总回报。
  • 最大回撤:资产曲线从最高点下跌的最大幅度,反映风险。
  • 交易次数:过多的交易可能意味着过度拟合。

4.3 高级语法:引用与跨周期

4.3.1 引用其他股票数据

STOCKLABEL 函数(需特定版本支持)或直接使用 INDEXC(指数收盘价)来对比大盘。

{跑赢大盘}
BK:=INDEXC; // 假设引用大盘指数收盘价,实际需根据具体指数代码调整
OUTPERFORM: CLOSE > BK;

4.3.2 跨周期引用

使用 REF(X, N) 可以引用不同周期的数据,但需在公式设置中选择“多周期K线图”或使用 PERIOD 函数判断当前周期。


第五部分:常见问题与调试技巧

5.1 语法错误排查

  • 红色波浪线:表示语法错误,通常是函数名拼写错误、缺少分号或括号不匹配。
  • 无法保存:检查公式名称是否重复,或包含非法字符。

5.2 逻辑错误排查(画线诊断)

如果公式能保存但显示不对,使用 DRAWTEXTDRAWICON 进行调试。

{调试示例}
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线消失,如除权除息)。


结语

通达信策略编写是一个从理论到实践的渐进过程。建议新手按照以下路径进阶:

  1. 模仿:先看懂并修改现成的指标公式。
  2. 复现:尝试自己编写MACD、KDJ等经典指标。
  3. 逻辑:构建简单的均线、成交量策略。
  4. 回测:利用沙盘推演验证策略,剔除未来函数。
  5. 实盘:从模拟或小资金开始,结合预警系统辅助决策。

量化交易的核心不是复杂的数学,而是对市场的深刻理解和严格的纪律。希望这篇指南能为你打开通达信量化交易的大门。