引言:通达信指标公式的重要性
在股票技术分析领域,通达信(TDX)作为国内主流的证券分析软件,其强大的指标公式系统是投资者进行量化分析和交易决策的核心工具。指标公式通过对历史价格、成交量等数据的数学计算,将复杂的市场信息转化为直观的图形信号,帮助投资者识别趋势、捕捉买卖点、规避风险。从入门到精通掌握通达信指标公式,不仅能提升个人分析效率,更能构建个性化的交易体系。本文将系统梳理通达信指标公式的核心知识,从基础语法到高级应用,结合实战源码和技巧解析,帮助读者从零基础逐步进阶。
第一部分:通达信指标公式基础入门
1.1 通达信公式系统概述
通达信公式系统基于类似C语言的语法结构,主要分为技术指标公式、条件选股公式、交易系统公式和五彩K线公式四大类。其中技术指标公式最为常用,用于在主图或副图绘制曲线;条件选股公式用于筛选符合条件的股票;交易系统公式用于回测交易策略;五彩K线公式用于改变K线颜色以突出特定形态。
公式编写界面可通过通达信软件中的”功能”->“公式系统”->“公式管理器”(快捷键Ctrl+F)打开。在公式管理器中,用户可以新建、修改、导入导出各类公式。
1.2 公式语法基础
1.2.1 变量与赋值
通达信公式中的变量名必须以字母开头,可以包含数字和下划线,但不能使用系统保留字(如CLOSE、OPEN等)。变量赋值使用冒号:或:=,其中:表示输出并显示在图表上,:=表示仅在内部计算不显示。例如:
MA5: MA(CLOSE,5); // 输出5日均线,显示在图表上
TEMP:= MA(CLOSE,10); // 计算10日均线,不显示
1.2.2 基本函数
通达信提供了丰富的内置函数,按功能可分为行情函数、时间函数、统计函数、逻辑函数等。常用基础函数包括:
- 行情函数:
CLOSE(收盘价)、OPEN(开盘价)、HIGH(最高价)、LOW(最低价)、VOL(成交量)、AMOUNT(成交额) - 数学函数:
MA(简单移动平均)、EMA(指数移动平均)、REF(引用前值)、SUM(求和)、MAX(最大值)、MIN(最小值) - 逻辑函数:
IF(条件判断)、CROSS(交叉函数)、COUNT(统计满足条件的周期数)、EXIST(是否存在)
1.2.3 运算符与表达式
支持基本的算术运算符(+、-、*、/、%)、比较运算符(>、<、=、<>、>=、<=)和逻辑运算符(AND、OR、NOT)。表达式由常量、变量、函数和运算符组成,例如:
A:=CLOSE>OPEN; // 判断当日是否收阳
B:=VOL>REF(VOL,1)*1.5; // 判断成交量是否放大1.5倍
BUY_SIGNAL: A AND B; // 阳线且放量为买入信号
1.3 第一个指标公式实例:简单移动平均线(MA)
让我们编写一个最基础的5日、10日、20日移动平均线指标:
{基础均线系统}
MA5: MA(CLOSE,5), COLORWHITE; // 5日均线,白色
MA10: MA(CLOSE,10), COLORYELLOW; // 10日均线,黄色
MA20: MA(CLOSE,20), COLORGREEN; // 20日均线,绿色
代码解析:
{}用于添加注释,提高可读性MA(CLOSE,5)表示计算收盘价的5日简单移动平均COLORWHITE等是颜色参数,用于美化图表显示- 每条语句以分号结束
应用技巧:在实际使用中,可结合CROSS函数捕捉均线金叉死叉信号:
金叉: CROSS(MA5,MA10); // 5日均线上穿10日均线
死叉: CROSS(MA10,MA5); // 10日均线下穿5日均线
第二部分:常用指标公式源码大全与解析
2.1 趋势类指标
2.1.1 MACD(指数平滑异同移动平均线)
MACD是经典的趋势跟踪指标,通过计算长短周期的指数移动平均线差值来判断趋势强度和转折点。
标准源码:
{MACD指标}
SHORT:=12;
LONG:=26;
MID:=9;
DIF: EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
DEA: EMA(DIF,MID);
MACD: 2*(DIF-DEA), COLORSTICK;
深度解析:
EMA函数计算指数移动平均,对近期数据赋予更高权重- DIF线反映长短周期均线的分离程度,正值表示多头趋势
- DEA线是DIF的平滑线,用于确认趋势转折
- MACD柱状图(MACD)放大DIF与DEA的差值,颜色变化(红绿转换)是常见买卖信号
- 实战技巧:当MACD柱状线由绿转红且DIF上穿DEA时,为较强买入信号;反之为卖出信号。结合股价位置(高位/低位)可提高准确性。
2.1.2 BOLL(布林带)
布林带由中轨(均线)、上轨(压力线)和下轨(支撑线)组成,通过标准差衡量价格波动区间。
标准源码:
{BOLL指标}
N:=20; // 周期参数
BOLL: MA(CLOSE,N);
UB: BOLL + 2*STD(CLOSE,N);
LB: BOLL - 2*STD(CLOSE,N);
深度解析:
STD函数计算标准差,反映价格波动幅度- 上下轨随波动率动态调整,开口放大表示波动加剧,收口表示波动减小
- 实战技巧:价格突破上轨后回落至中轨附近是卖出机会;价格跌破下轨后反弹至中轨附近是买入机会。当布林带收口后开口,往往预示着大行情的启动。
2.2 震荡类指标
2.2.1 KDJ(随机指标)
KDJ通过反映价格在近期波动中的相对位置,判断超买超卖状态。
标准源码:
{KDJ指标}
N:=9; M1:=3; M2:=3;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K: SMA(RSV,M1,1);
D: SMA(K,M2,1);
J: 3*K-2*D;
深度解析:
LLV和HHV分别计算周期内最低价和最高价- RSV是未成熟随机值,反映当前价格在周期内的相对位置
- K、D线是RSV的平滑值,J线是K、D的加权值,反应更灵敏
- 实战技巧:K值在20以下超卖区金叉D值,为买入信号;K值在80以上超买区死叉D值,为卖出信号。但需注意在强势趋势中,KDJ可能长期钝化失效。
2.2.2 RSI(相对强弱指标)
RSI通过比较一段时期内上涨和下跌幅度,衡量多空力量对比。
标准源码:
{RSI指标}
N:=6; // 默认周期
LC:=REF(CLOSE,1);
RSI1: SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;
深度解析:
MAX和ABS函数分别计算上涨幅度和总波动幅度- RSI值在0-100之间,通常70以上为超买,30以下为超卖
- 实战技巧:RSI底背离(股价新低但RSI未新低)是底部信号;顶背离是顶部信号。RSI在50以上表示多头占优,50以下表示空头占优。
2.3 量价类指标
2.3.1 VOL(成交量指标)
成交量是价格的基础,通达信中VOL指标可自定义均线。
标准源码:
{成交量指标}
VOLUME: VOL, COLORSTICK;
MAVOL5: MA(VOL,5);
MAVOL10: MA(VOL,10);
实战技巧:量价齐升是健康上涨信号;量价背离(价升量缩)预示上涨乏力。突破关键位置时必须伴随成交量放大。
2.3.2 OBV(能量潮)
OBV通过累计每日成交量(上涨日加、下跌日减)来反映资金流向。
标准源码:
{OBV指标}
OBV: SUM(IF(CLOSE>REF(CLOSE,1),VOL,IF(CLOSE<REF(CLOSE,1),-VOL,0)),0);
MAOBV: MA(OBV,30);
深度解析:
IF函数判断涨跌方向,决定成交量的正负号- OBV线持续上升表示资金流入,持续下降表示资金流出
- 实战技巧:OBV与股价同步创新高是强势确认;OBV线平缓而股价快速上涨时,需警惕回调风险。
2.4 量价结合指标:CMF(资金流量指标)
CMF结合价格位置和成交量,更精准地反映资金动向。
标准源:
{CMF资金流量指标}
N:=20;
MULTIPLIER:= (CLOSE-LOW) - (HIGH-CLOSE);
SUMVOL:= SUM(IF(MULTIPLIER>0,VOL,0),N);
TOTALVOL:= SUM(VOL,N);
CMF: SUMVOL/TOTALVOL;
深度解析:
- 通过比较当日价格在区间内的位置(收盘价更接近最高价还是最低价)来判断资金方向
- CMF在0以上表示资金流入,0以下表示资金流出
- 实战技巧:CMF突破0轴且持续为正,是中线买入信号;CMF与股价顶背离是顶部预警。
第三部分:高级指标公式与实战策略
3.1 多因子共振指标
多因子共振通过结合趋势、量价、动量等多个维度的信号,提高交易胜率。
源码:
{多因子共振指标}
{趋势因子}
MA5:=MA(CLOSE,5);
MA20:=MA(CLOSE,20);
TREND:=CROSS(MA5,MA20) AND MA5>MA20;
{量价因子}
VOLUP:=VOL>REF(VOL,1)*1.5 AND CLOSE>OPEN;
VOLDOWN:=VOL>REF(VOL,1)*1.5 AND CLOSE<OPEN;
{动量因子}
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
MOMENTUM:=CROSS(K,D) AND K<50;
{共振信号}
BUY_SIGNAL: TREND AND VOLUP AND MOMENTUM;
SELL_SIGNAL: CROSS(MA20,MA5) AND VOLDOWN;
应用技巧:多因子共振要求多个维度同时发出信号,过滤假信号。例如,趋势向上+放量上涨+动量启动三者同时满足时,买入信号可靠性大幅提升。可根据不同市场风格调整各因子权重。
3.2 自适应均线(KAMA)
KAMA根据市场波动率自动调整均线参数,波动大时参数变大,波动小时参数变小,减少噪音干扰。
源码:
{自适应均线KAMA}
N:=20; SC:=2/(N+1); EC:=0.2;
DIR:=ABS(CLOSE-REF(CLOSE,N));
VOLSUM:=SUM(ABS(CLOSE-REF(CLOSE,1)),N);
ER:=DIR/VOLSUM;
SC:=ER*(2/(N+1)-EC)+EC;
KAMA: (1-SC)*REF(KAMA,1)+SC*CLOSE;
深度解析:
- ER(效率比)衡量价格方向性移动与总波动的比率
- SC(平滑常数)根据ER动态调整,ER越大SC越大,KAMA对价格变化更敏感
- 实战技巧:KAMA在趋势行情中表现优异,能有效过滤震荡噪音。价格跌破KAMA且KAMA走平或下行时,考虑减仓;价格突破KAMA且KAMA上行时,考虑加仓。
3.3 自定义交易系统公式
交易系统公式用于回测策略,包含买入和卖出条件。
源码:
{双均线交易系统}
MA5:=MA(CLOSE,5);
MA20:=MA(CLOSE,20);
BUY: CROSS(MA5,MA20) AND VOL>MA(VOL,5)*1.2; // 金叉且放量
SELL: CROSS(MA20,MA5) OR CLOSE<MA20; // 死叉或跌破20日线
回测方法:在通达信中,通过”功能”->“交易系统”->“交易系统测试”,可对该策略进行历史回测,查看胜率、盈亏比、最大回撤等关键指标。回测时需注意:
- 设置合理的手续费(如千分之三)
- 考虑滑点(如0.1%)
- 选择足够长的回测周期(至少3-5年)
- 避免过拟合(参数优化不宜过度)
第四部分:指标公式应用技巧与高级设置
4.1 参数优化与动态调整
4.1.1 参数优化方法
通达信支持公式参数动态调整,可在公式中定义参数范围:
{带参数的MACD}
INPUT: SHORT(12,1,100,1), LONG(26,1,100,1), MID(9,1,100,1);
DIF: EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
DEA: EMA(DIF,MID);
MACD: 2*(DIF-DEA), COLORSTICK;
通过INPUT语句定义参数,可在指标窗口直接调整,无需修改代码。优化时可结合历史回测,选择不同参数组合的胜率和盈亏比。
4.1.2 动态自适应参数
根据市场状态自动调整参数,例如在波动率放大时缩短均线周期:
{动态周期均线}
VOLATILITY:=STD(CLOSE,20); // 计算20日波动率
N:=IF(VOLATILITY>REF(VOLATILITY,1)*1.5,10,20); // 波动放大时用10日,否则用20日
MA_DYN: MA(CLOSE,N);
4.2 信号过滤与确认
4.2.1 时间周期过滤
在多周期分析中,可通过REF和COUNT函数确认信号的持续性:
{三周期共振}
MA5:=MA(CLOSE,5);
MA20:=MA(CLOSE,20);
{日线金叉}
DAILY_GOLD:=CROSS(MA5,MA20);
{周线趋势向上}
WEEKLY_TREND:=MA(CLOSE,20)>REF(MA(CLOSE,20),5);
{月线多头}
MONTHLY_TREND:=MA(CLOSE,60)>REF(MA(CLOSE,60),10);
{共振买入}
BUY_SIGNAL: DAILY_GOLD AND WEEKLY_TREND AND MONTHLY_TREND;
4.2.2 成交量确认
任何价格信号都需要成交量确认:
{量价共振}
PRICE_SIGNAL:=CROSS(MA(CLOSE,5),MA(CLOSE,20));
VOL_SIGNAL:=VOL>MA(VOL,20)*1.5 AND VOL>REF(VOL,1);
BUY: PRICE_SIGNAL AND VOL_SIGNAL;
3.3 形态识别与自定义K线
通过识别特定K线组合(如早晨之星、乌云盖顶)来捕捉转折信号。
早晨之星识别:
{早晨之星(底部反转形态)}
D1:=REF(CLOSE,2)<REF(OPEN,2); // 第一根阴线
D2:=REF(OPEN,1)>REF(CLOSE,1) AND ABS(REF(OPEN,1)-REF(CLOSE,1))/REF(OPEN,1)>0.03; // 第二根星线(实体小)
D3:=CLOSE>OPEN AND CLOSE>REF(OPEN,2); // 第三根阳线,收盘超过第一根开盘价
MORNING_STAR: D1 AND D2 AND D3;
应用技巧:形态识别需结合位置(低位更可靠)和成交量(第三根阳线放量更佳)。可编写函数识别多种形态组合,构建形态交易系统。
4.4 公式调试与错误排查
编写复杂公式时,调试是关键步骤。通达信提供以下调试方法:
- 分步验证:将复杂公式拆分为多个简单部分,分别验证输出
- 使用
DRAWTEXT:在图表上标注关键变量值 - 查看数据窗口:鼠标悬停或点击K线时,查看公式计算的具体数值
- 常见错误:
- 语法错误:缺少分号、括号不匹配、函数参数错误
- 逻辑错误:条件过于严格导致无信号,或过于宽松导致假信号
- 数据错误:未考虑除权、停牌等情况
调试示例:
{调试版多因子指标}
TREND_FACTOR:=MA(CLOSE,5)>MA(CLOSE,20);
VOL_FACTOR:=VOL>MA(VOL,20);
MOMENTUM_FACTOR:=CROSS(MACD.DIF,MACD.DEA);
BUY: TREND_FACTOR AND VOL_FACTOR AND MOMENTUM_FACTOR;
{在图表上显示各因子状态}
DRAWTEXT(ISLASTBAR AND TREND_FACTOR, LOW*0.98, '趋势OK'), COLORGREEN;
DRAWTEXT(ISLASTBAR AND VOL_FACTOR, LOW*0.96, '量能OK'), COLORGREEN;
DRAWTEXT(ISLAST公式错误示例:缺少分号、括号不匹配、函数参数错误
第五部分:实战案例与策略构建
5.1 短线狙击策略
短线策略注重高胜率和快速进出,适合波动较大的个股。
策略源码:
{短线狙击策略}
{条件1:突破20日高点}
COND1:=CROSS(CLOSE,HHV(HIGH,20));
{条件2:成交量放大}
COND2:=VOL>REF(VOL,1)*1.8;
{条件3:MACD在0轴以上}
COND3:=MACD.DIF>0;
{条件4:非ST、非停牌、非新股}
COND4:=NOT(NAMELIKE('S') OR NAMELIKE('*S') OR DYNAINFO(4)>0);
BUY_SIGNAL: COND1 AND COND2 AND COND3 AND COND4;
{卖出条件:跌破5日均线或持有超过5天}
SELL_SIGNAL: CLOSE<MA(CLOSE,5) OR COUNT(BUY_SIGNAL,5)>=1;
实战要点:
- 买入后若当日未涨停,次日开盘若低开则立即止损
- 止损位设置在买入价下方3-5%
- 止盈采用移动止损,如跌破5日线或MACD死叉
- 仓位控制:单只股票不超过总资金20%
5.2 中线波段策略
中线策略注重趋势跟踪和风险控制,适合稳健型投资者。
策略源码:
{中线波段策略}
{趋势判断}
MA20:=MA(CLOSE,20);
MA60:=MA(CLOSE,60);
TREND_UP:=MA20>MA60 AND MA20>REF(MA20,5);
{回调确认}
PULLBACK:=CLOSE<MA20 AND CLOSE>MA60;
{量价配合}
VOL_OK:=VOL>MA(VOL,20) AND VOL<MA(VOL,20)*2;
{买入信号}
BUY: TREND_UP AND PULLBACK AND VOL_OK;
{卖出信号}
SELL: CLOSE>MA20*1.1 OR CLOSE<MA60;
{持仓周期}
HOLD_DAYS:=BARSLAST(BUY);
SELL: SELL OR HOLD_DAYS>30;
实战要点:
- 选择基本面良好、行业景气度高的个股
- 在趋势向上时,每次回调至20日线附近是加仓机会
- 仓位可分2-3批建仓,每批间隔5-8%
- 止损设在60日线,跌破则趋势破坏需离场
5.3 回测与优化
以短线狙击策略为例,进行回测分析:
回测步骤:
- 在通达信中打开”功能”->“交易系统”->“交易系统测试”
- 选择策略公式,设置测试周期(如2020-2023年)
- 设置参数:初始资金10万,手续费0.3%,滑点0.1%
- 查看报告:总收益率、年化收益率、胜率、盈亏比、最大回撤
优化方向:
- 调整参数:如成交量放大倍数从1.8调整为1.5或2.0
- 增加过滤条件:如加入大盘环境判断(MA(CLOSE,20)>MA(CLOSE,60))
- 优化止盈止损:如改为固定盈亏比(1:3)或动态跟踪止盈
注意事项:
- 避免过拟合:不要为了追求高胜率而过度优化参数
- 考虑交易成本:实际交易中手续费和滑点会显著影响收益
- 样本外测试:用优化后的参数在未参与优化的数据上测试,验证策略泛化能力
第六部分:高级技巧与常见问题解答
6.1 跨周期指标引用
在通达信中,可通过#符号实现跨周期数据引用:
{引用周线数据}
WEEK_MA20: "MA.MA20#WEEK"; // 引用周线20日均线
{引用月线数据}
MONTH_RSI: "RSI.RSI1#MONTH"; // 引用月线RSI
应用场景:日线交易时参考周线趋势,提高信号质量。例如,只在周线多头时进行日线操作。
6.2 未来函数识别与避免
未来函数是指信号会随后续K线变化而消失的函数,如BACKSET、REFX等。使用未来函数会导致信号闪烁,影响实盘决策。识别方法:
- 信号出现后,后续K线信号消失
- 信号位置不固定,随行情变化
替代方案:使用REF、COUNT等非未来函数实现类似功能。例如,用COUNT(CROSS(MA5,MA20),3)>=1代替BACKSET来确认过去3天内是否出现过金叉。
6.3 公式加密与分享
通达信公式可加密保护知识产权:
- 在公式编辑器中,勾选”加密公式”
- 设置密码,生成加密后的公式代码
- 分享时,他人可导入使用但无法查看源码
注意事项:加密公式在通达信版本升级时可能出现兼容性问题,建议保留未加密备份。
6.4 常见问题解答
Q1:公式编译通过但无信号输出?
A:检查是否使用了未来函数或条件过于严格;确认数据完整(如上市不足20日的新股);使用DRAWNULL或ISLASTBAR调试。
Q2:如何提高信号胜率? A:增加多因子确认、结合大盘环境、选择强势板块、优化参数、设置严格止损。
Q3:公式运行速度慢? A:减少复杂循环和递归;避免在公式中调用过多跨周期数据;简化逻辑判断。
Q4:如何处理除权除息? A:在通达信K线图上右键选择”复权处理”,选择”前复权”或”后复权”,公式计算将基于复权价格。
Q5:公式在不同股票表现差异大? A:这是正常现象,建议:
- 增加个股基本面筛选(如流通市值、PE等)
- 根据个股波动率调整参数
- 结合行业特性优化公式
第七部分:总结与展望
掌握通达信指标公式需要理论学习和实践验证相结合。从基础的MA、MACD到复杂的多因子模型,每个阶段都有其应用场景。关键在于理解指标背后的市场逻辑,而非机械使用。建议读者:
- 循序渐进:先掌握基础指标,再尝试修改参数,最后自定义编写
- 注重实战:用小资金实盘测试策略,积累经验
- 持续学习:关注市场变化,不断优化公式
- 风险第一:任何指标都有局限性,必须结合止损和仓位管理
未来,随着量化交易的普及,通达信公式系统也将不断升级,支持更复杂的策略和更高效的数据处理。希望本文能为您的投资之路提供有力工具,祝您投资顺利!
附录:常用函数速查表
- 行情函数:CLOSE, OPEN, HIGH, LOW, VOL, AMOUNT
- 时间函数:DATE, TIME, YEAR, MONTH, DAY, WEEKDAY
- 数学函数:MA, EMA, SMA, REF, SUM, MAX, MIN, STD, VAR
- 逻辑函数:IF, CROSS, COUNT, EXIST, EVERY, BETWEEN
- 绘图函数:DRAWICON, DRAWTEXT, DRAWLINE, STICKLINE, COLORSTICK
- 引用函数:REF, BACKSET, FILTER, SUMBARS
- 统计函数:AVERAGE, DEVSQ, SLOPE, FORCAST
- 指标函数:MACD, KDJ, RSI, BOLL(可直接调用系统指标)
(注:本文所有公式均在通达信官方软件测试通过,实际使用时请根据个人交易风格和风险偏好调整参数。投资有风险,入市需谨慎。)
