通达信Tdx公式实战:如何一键显示股票年份刻度与行业市值(附完整代码)
在股票分析中,快速获取关键信息是高效决策的基础。通达信作为国内主流证券分析软件,其强大的Tdx公式功能可以帮助投资者自定义显示各类关键数据。本文将手把手教你如何编写一个综合性公式,实现年份刻度、行业分类和市值等核心信息的一键可视化。
1. 环境准备与公式基础
在开始编写公式前,需要确保你的通达信软件已更新至最新版本。打开公式管理器(快捷键Ctrl+F),选择"技术指标公式"或"条件选股公式"新建一个空白公式。
Tdx公式主要由以下几类元素构成:
- 变量定义:用于存储中间计算结果
- 函数调用:通达信内置的数百个函数
- 绘图指令:决定如何在K线图上显示信息
以下是一个简单的公式框架示例:
{公式名称: MyStockInfo} {公式描述: 显示年份刻度、行业、市值等信息} VAR1:=CLOSE>OPEN; {示例变量定义} DRAWTEXT(ISLASTBAR,CLOSE,'示例文本'); {示例绘图指令}2. 实现年份刻度显示
年份刻度能帮助投资者快速识别关键时间节点,特别适用于长期趋势分析。我们通过识别年份变化点来实现这一功能。
核心逻辑包括:
- 检测年份变化
- 在K线图左侧绘制刻度线
- 添加年份标签
完整实现代码如下:
{年份刻度显示} ISYEAR:=YEAR-REF(YEAR,1)>0; {判断年份是否变化} PZ:=L*0.9; {确定刻度线位置} STICKLINE(ISYEAR,0,PZ,0,-1),COLORC0C0C0; {绘制灰色刻度线} DRAWTEXT(ISYEAR,PZ,VARCAT('& ',VAR2STR(YEAR,0))),COLORC0C0C0; {添加年份标签}提示:调整PZ的计算方式可以改变刻度线的垂直位置,例如使用
PZ:=MIN(L,MA250)*0.95;可以让刻度线更贴近实际价格。
3. 行业与市值信息展示
行业分类和市值是股票基本面分析的核心要素。通达信提供了丰富的财务数据函数,我们可以利用这些函数提取并格式化显示相关信息。
3.1 行业信息提取
通达信存储了多种行业分类数据,常用的包括:
HYBLOCK:行业板块GNBLOCK:概念板块ZDBLOCK:自定义板块
行业信息显示代码:
{行业信息显示} DRAWTEXT_FIX(ISLASTBAR,0.52,0,0,ZDBLOCK); {显示自定义板块} DRAWTEXT_FIX(ISLASTBAR,0,0,0,ZSBLOCK); {显示指数板块} DRAWTEXT_FIX(ISLASTBAR,0.85,0.017,1,GNBLOCK); {显示概念板块}3.2 市值计算与显示
市值数据需要通过财务函数获取,并进行单位转换:
{流通市值计算} LTSZV:=FINANCE(40)/100000000; {获取流通市值并转换为亿单位} LTSZ1:=CON2STR(LTSZV,0); {转换为字符串} LTSZSTR:=STRCAT('市值',STRCAT(LTSZ1,'亿')); {拼接显示文本} {总市值计算} ZSZV:=FINANCE(46)/100000000; ZSZ1:=CON2STR(ZSZV,0); ZSZSTR:=STRCAT('总市值',STRCAT(ZSZ1,'亿')); {合并显示} SZSTR:=STRCAT6(LTSZSTR,' ',ZSZSTR,'','',''); DRAWTEXT_FIX(ISLASTBAR,0.91,1,1,SZSTR); {在右下角显示}4. 综合信息整合与优化
将各类信息有机整合,并优化显示效果,可以大幅提升公式的实用性。
4.1 主营信息整合
{主营信息整合} S1:=STRCAT6(' [',MAINBUSINESS,' ',LEVEL1HYBLOCK,'] ',SZSTR); S1S:=STRCAT(HYBLOCK,S1); DRAWTEXT_FIX(ISLASTBAR,0.91,1,1,S1S); {右下角综合信息}4.2 价格与涨幅实时显示
{价格和涨幅显示} C1:=CON2STR(C,2); {当前价格式化} ZFV:=(C-DYNAINFO(3))/DYNAINFO(3)*100; {计算涨幅} ZF1:=IF(ZFV>0,' [+',' ['); {处理正负号} ZF2:=STRCAT(ZF1,CON2STR(ZFV,2)); ZF3:=STRCAT(ZF2,'%]'); CZFSTR:=STRCAT(C1,ZF3); {拼接价格和涨幅} {动态显示} DRAWTEXT(ISLASTBAR,(C+O)/2,STRCAT(' ',CZFSTR)),COLORFFFFFF;4.3 显示位置优化建议
不同信息的最佳显示位置参考:
| 信息类型 | 推荐位置 | 坐标参数示例 |
|---|---|---|
| 年份刻度 | 左侧 | X=0, Y=PZ |
| 行业分类 | 右上角 | (0.85,0.017) |
| 市值数据 | 右下角 | (0.91,1) |
| 价格涨幅 | 随K线移动 | (C+O)/2 |
5. 完整公式代码与使用技巧
将上述所有功能整合,得到完整公式代码:
{综合股票信息显示公式} {显示年份刻度、行业、市值、价格等信息} {1. 年份刻度显示} ISYEAR:=YEAR-REF(YEAR,1)>0; PZ:=L*0.9; STICKLINE(ISYEAR,0,PZ,0,-1),COLORC0C0C0; DRAWTEXT(ISYEAR,PZ,VARCAT('& ',VAR2STR(YEAR,0))),COLORC0C0C0; {2. 行业信息显示} DRAWTEXT_FIX(ISLASTBAR,0.52,0,0,ZDBLOCK); DRAWTEXT_FIX(ISLASTBAR,0,0,0,ZSBLOCK); DRAWTEXT_FIX(ISLASTBAR,0.85,0.017,1,GNBLOCK); {3. 市值计算与显示} LTSZV:=FINANCE(40)/100000000; LTSZ1:=CON2STR(LTSZV,0); LTSZSTR:=STRCAT('流通市值',STRCAT(LTSZ1,'亿')); ZSZV:=FINANCE(46)/100000000; ZSZ1:=CON2STR(ZSZV,0); ZSZSTR:=STRCAT('总市值',STRCAT(ZSZ1,'亿')); SZSTR:=STRCAT6(LTSZSTR,' ',ZSZSTR,'','',''); {4. 主营信息整合} S1:=STRCAT6(' [',MAINBUSINESS,' ',LEVEL1HYBLOCK,'] ',SZSTR); S1S:=STRCAT(HYBLOCK,S1); DRAWTEXT_FIX(ISLASTBAR,0.91,1,1,S1S); {5. 价格涨幅显示} C1:=CON2STR(C,2); ZFV:=(C-DYNAINFO(3))/DYNAINFO(3)*100; ZF1:=IF(ZFV>0,' [+',' ['); ZF2:=STRCAT(ZF1,CON2STR(ZFV,2)); ZF3:=STRCAT(ZF2,'%]'); CZFSTR:=STRCAT(C1,ZF3); DRAWTEXT(ISLASTBAR,(C+O)/2,STRCAT(' ',CZFSTR)),COLORFFFFFF; {6. 股票名称显示} DRAWTEXT_FIX(ISLASTBAR,0.5,0,1,STKNAME),COLOR4080FF;实际使用中,发现将市值信息与行业信息合并显示在右下角最为高效,既不遮挡K线主图,又能一目了然地获取关键信息。对于长期跟踪的股票,建议将公式保存为模板,方便快速调用。