尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

通达信指标公式核心函数与实战编写指南

通达信指标公式核心函数与实战编写指南 简介本资源是一份面向股票量化分析初学者与通达信公式编写入门者的系统性教程聚焦技术指标、条件选股、交易系统及五彩K线四大类公式的实战编写方法。内容覆盖公式管理器操作流程、核心函数如CROSS、REF、AND的语义与用法、参数设置逻辑、动态翻译与公式测试技巧并配有均线指标与“股价小于每股净资产”选股公式的分步编写示例辅以界面截图说明与坐标线、画线方式等编辑器细节解析。资源为单文件PDF文档共1个文件大小1.52MB结构清晰、图文结合适合作为案头速查手册或自学入门指南。目前已有1038人学习下载内容完整、语言平实从零起步即可掌握通达信公式编写的核心能力与常见陷阱规避方法。1. 通达信指标公式不是“写代码”而是用专用语法描述价格行为逻辑很多刚接触通达信的交易者一看到“公式编写教程”就下意识打开Python或JavaScript编辑器结果发现根本跑不起来——通达信指标公式既不依赖Python解释器也不走HTTP API它运行在通达信客户端内置的公式引擎里语法是高度领域化的没有循环、没有函数定义、没有面向对象只有时间序列操作符如REF、BACKSET、条件判断IF、绘图指令DRAWLINE、DRAWICON和预置金融函数MACD、BOLL、DMA。它的核心价值不是“编程能力”而是把技术分析语言精准翻译成机器可执行的信号规则。比如“三步点睛”副图指标中“触底→反转→看多”的三阶段判定本质是用CROSS金叉、LLV周期最低价、COUNT统计满足条件K线数三个函数组合出状态机而“量能饱和度圆圈1.00”里的圆圈图标则必须用DRAWICON配合ISLASTBAR控制只在最新一根K线上绘制。这类公式对新手门槛在于逻辑建模能力而非编码功底对老手瓶颈则常卡在BACKSET的回溯长度陷阱或FILTER去重时机误判上。本文不讲抽象语法树只聚焦你打开通达信公式管理器后从新建空白公式到实盘验证的完整链路——所有命令可直接粘贴、所有参数有明确物理意义、所有坑位附带错误现象与定位方法。2. 通达信指标公式语法核心用5个基础函数构建90%的技术逻辑通达信公式引擎的执行模型是“逐K线扫描向量计算”所有函数输入都是数组即整列数据输出也是同长度数组。理解这点才能避开“为什么REF(C,1)返回整列而不是单个值”的常见困惑。下面用实战中最高频的5个函数展开每个都配可运行代码、参数说明及典型误用场景。2.1REF(X,N)时间轴上的“快照”操作N必须为常数这是最易被滥用的函数。新手常写REF(C, BARSCOUNT(C)-1)想取首根K线收盘价但BARSCOUNT(C)是变量通达信编译时会报错“参数必须为常数”。正确做法是用VALUEWHEN或HHV/LLV替代。// ✅ 正确取前3根K线的最高价N3为常数 PREV_HIGH : REF(HHV(H,5),3); // ❌ 错误N为变量编译失败 // DYNAMIC_N : BARSCOUNT(C) - 1; // FIRST_CLOSE : REF(C, DYNAMIC_N); // ✅ 替代方案用VALUEWHEN获取首根K线收盘价 FIRST_CLOSE : VALUEWHEN(BARSCOUNT(C)1, C);提示REF(X,N)的N只能是0~5000的整数常量。当需要动态偏移时优先用VALUEWHEN(条件,X)取首次满足条件时的X值或SUMBARS(X,N)累计求和达到N时的K线索引。2.2CROSS(A,B)金叉/死叉检测器本质是布尔状态跃迁CROSS(A,B)返回1仅当A由下向上穿越B即A前值B前值 且 A当前值B当前值其他情况返回0。它不返回位置索引而是每根K线一个布尔值。常被误用于“找第一次金叉”但CROSS本身不带记忆性需配合BARSLAST。// ✅ 正确标记MACD柱状图由负转正的K线即MACD金叉 MACD_DIFF : EMA(C,12) - EMA(C,26); MACD_DEA : EMA(MACD_DIFF,9); MACD_BAR : 2*(MACD_DIFF - MACD_DEA); MACD_CROSS : CROSS(MACD_DIFF, MACD_DEA); // DIFF上穿DEA // ✅ 找出最近一次MACD金叉距今几根K线 LAST_CROSS_BAR : BARSLAST(MACD_CROSS); // ❌ 错误试图用CROSS找“首次”金叉CROSS无历史记忆 // FIRST_CROSS : CROSS(MACD_DIFF, MACD_DEA) AND BARSCOUNT(C)1; // 逻辑错误注意CROSS对数据精度敏感。若A、B值因浮点误差在临界点反复抖动可能产生虚假金叉。生产环境建议加过滤CROSS(A,B) AND ABS(A-B)0.001。2.3BACKSET(COND,N)制造“回溯标记”解决“未来函数”争议的核心BACKSET是通达信最具迷惑性的函数。BACKSET(COND,N)作用是当COND为真时将当前K线及向前N-1根K线的值设为1其余为0。它常被误认为“取未来数据”实则是用当前信号反向标记历史区间用于画线、填色等视觉增强。// ✅ 正确画支撑线——当价格创N日新低后将该K线及前N-1根标为1再用DRAWLINE连接 N : 5; NEW_LOW : C LLV(C,N); SUPPORT_FLAG : BACKSET(NEW_LOW,N); SUPPORT_LINE : DRAWLINE(SUPPORT_FLAG1,L,SUPPORT_FLAG1,L,0); // ❌ 错误用BACKSET生成买卖信号导致信号提前 // BUY_SIGNAL : BACKSET(CROSS(MA(C,5),MA(C,10)),3); // 错这会让买入信号出现在金叉前3根K线关键区别BACKSET用于绘图视觉反馈FILTER用于信号交易触发。后者才具备去重和延迟功能。2.4FILTER(COND,N)信号去重与防抖N是“冷却期”而非“前瞻”FILTER(COND,N)在COND首次为真时返回1之后N根K线内即使COND持续为真也返回0直到N根后再次为真才返回1。它是实现“只做第一次突破”“避免连续开仓”的刚需函数。// ✅ 正确涨停回调低吸策略中只在首次满足“5日内涨停后回调至10日均线”时发出信号 ZT_FLAG : C/REF(C,1)1.098; // 涨停 ZT_5DAY : BACKSET(ZT_FLAG,5); // 标记涨停及前4根K线 CALLBACK_COND : ZT_5DAY1 AND CMA(C,10) AND CREF(C,1)*0.95; BUY_SIGNAL : FILTER(CALLBACK_COND,5); // 5根K线内只发1次信号 // ✅ 验证查看信号是否真的去重在公式管理器中右键“测试公式”看信号柱是否孤立参数说明N是“最小间隔K线数”不是“等待N根后触发”。若N0则退化为COND本身N过大如100会导致信号严重滞后。2.5DRAWICON在指定位置画图标ISLASTBAR是安全绘制的关键DRAWICON(COND,PRICE,TYPE)在满足COND的K线上在PRICE价格处画TYPE号图标。但若未加ISLASTBAR限制历史K线也会重复绘制导致图表混乱。通达信图标编号需查《通达信图标代码表》常用1红箭头、2绿箭头、10圆圈。// ✅ 正确只在最新一根K线画“量能饱和度圆圈” VOL_RATIO : V/MA(V,5); // 当前成交量/5日均量 SATURATION : VOL_RATIO 2.5; DRAWICON(SATURATION AND ISLASTBAR, L*0.99, 10); // 在最新K线最低价下方画圆圈 // ✅ 副图中显示文字用DRAWTEXT原理同DRAWICON DRAWTEXT(SATURATION AND ISLASTBAR, L*0.98, 量饱), COLORRED; // ❌ 错误漏掉ISLASTBAR所有满足条件的K线都画圆圈 // DRAWICON(SATURATION, L*0.99, 10); // 图表将布满圆圈提示ISLASTBAR是通达信内置常量值为1仅当该K线是当前周期最后一根即实时行情中的最新K线。它不可被赋值或修改是绘图安全的黄金守则。3. 从零编写“三步点睛”副图指标触底→反转→看多的完整实现“三步点睛”是通达信社区高频指标其逻辑本质是价格行为的状态机先确认阶段性底部触底再验证上涨动能出现反转最后确认趋势强化看多。本节不提供成品源码而是带你手写每一行理解每个参数的业务含义并给出调试验证方法。3.1 第一步定义“触底”——用价格与波动率双重过滤单纯用LLV找最低点易受单日异常波动干扰。“触底”需满足① 价格处于近期绝对低位② 波动率收缩地量/窄幅表明抛压衰竭。// 参数设置公式管理器中可调 N1 : 13; // 触底周期通常13-21日 M1 : 5; // 地量周期通常5日 VOL_RATIO : V/MA(V,M1); // 当前量比 PRICE_POS : (C-LLV(L,N1))/(HHV(H,N1)-LLV(L,N1)); // 价格在N1日区间位置0~1 // 触底条件价格位置0.15底部15%区域且量比0.7缩量70% TOUCH_BOTTOM : PRICE_POS 0.15 AND VOL_RATIO 0.7;参数说明N113对应斐波那契周期兼顾灵敏与稳定0.15和0.7是经验值实盘中需根据个股波动率调整——高波动股如创业板可放宽至0.2和0.8。3.2 第二步定义“反转”——用价格结构突破确认动能“反转”不是简单阳线而是价格突破短期压制结构。这里用CROSS(C,MA(C,3))确认站上3日线再用REF(V,1)/V1.5验证放量前日量是当日1.5倍以上表明资金回流。// 反转条件收盘价上穿3日均线且前日成交量是当日1.5倍以上量价共振 UP_CROSS : CROSS(C, MA(C,3)); VOL_SURGE : REF(V,1)/V 1.5; REVERSE : UP_CROSS AND VOL_SURGE; // 关键约束反转必须发生在触底之后5根K线内避免无效信号 REVERSE_VALID : REVERSE AND BARSLAST(TOUCH_BOTTOM)5;注意BARSLAST(TOUCH_BOTTOM)5确保反转紧随触底构成连贯行为。若去掉此约束可能匹配到数月前的触底失去战术意义。3.3 第三步定义“看多”——用趋势延续性确认方向“看多”需排除假突破要求价格在反转后站稳并创新高。用CREF(H,1)今日收盘高于昨日最高确认突破有效性再用COUNT(CMA(C,10),3)23日内至少2日站上10日线验证趋势黏性。// 看多条件突破昨日高点且3日内至少2日站上10日线 BREAK_HIGH : C REF(H,1); ABOVE_MA10 : C MA(C,10); TREND_STICKY : COUNT(ABOVE_MA10,3) 2; LOOK_LONG : BREAK_HIGH AND TREND_STICKY; // 最终信号三步全部满足且按顺序发生触底→反转→看多 STEP1 : TOUCH_BOTTOM; STEP2 : REVERSE_VALID AND BARSLAST(STEP1)BARSLAST(REVERSE_VALID); // 确保反转在触底后 STEP3 : LOOK_LONG AND BARSLAST(REVERSE_VALID)BARSLAST(LOOK_LONG); // 确保看多在反转后 THREE_STEP : STEP1 AND STEP2 AND STEP3;逻辑说明BARSLAST(STEP1)BARSLAST(REVERSE_VALID)确保反转K线索引大于触底K线索引即反转发生在触底之后这是状态机时序的核心校验。3.4 绘图与信号输出用不同颜色区分三步状态副图指标需直观展示各步骤进展。用STICKLINE画背景色块DRAWICON标关键节点DRAWTEXT注释状态。// 绘制触底区域灰色半透明 STICKLINE(TOUCH_BOTTOM,0,0.3,6,0), COLORGRAY; // 绘制反转信号黄色三角形 DRAWICON(REVERSE_VALID,0.4,8), COLORYELLOW; // 绘制看多信号红色箭头 DRAWICON(THREE_STEP,0.8,1), COLORRED; // 文字标注仅最新K线显示 DRAWTEXT(THREE_STEP AND ISLASTBAR,0.85,★三步点睛), COLORRED; DRAWTEXT(REVERSE_VALID AND ISLASTBAR AND NOT THREE_STEP,0.45,→反转), COLORYELLOW;验证方法在公式管理器中点击“测试公式”观察副图是否出现分层色块切换不同股票如贵州茅台、中际旭创检查信号是否符合常识——茅台应少信号趋势强小盘股应多信号波动大。4. 公式调试与排错3个必查错误类型及定位命令写完公式不等于能用。通达信公式管理器的报错信息极其简陋常只显示“公式语法错误”实际问题多隐藏在逻辑层面。以下3类错误占调试工作量的80%每类都给出定位命令和修复方案。4.1 “除零错误”隐式除法导致整个公式失效通达信中/运算若分母为0不报错但返回空值后续所有计算变为无效。常见于MA(V,5)在新股前5日V0、C/REF(C,1)在上市首日REF(C,1)为空。// 定位命令在公式末尾添加诊断行查看分母是否为0 // DIAG_V_MA5 : MA(V,5); // DRAWTEXT(ISLASTBAR, 0.1, V5日均:NUMTOSTR(DIAG_V_MA5,2)), COLORBLUE; // ✅ 修复用IF函数规避除零 VOL_MA5 : IF(COUNT(V0,5)5, MA(V,5), REF(MA(V,5),1)); // 若5日内有0值取前值排查技巧在公式管理器中右键“测试公式”查看“数据”页签找到VOL_MA5列观察是否有#N/A。若有说明分母为0。4.2 “未来函数污染”BACKSET/BARSLAST误用导致信号漂移BACKSET本身非未来函数但若用它生成的标记参与CROSS等函数会间接引入未来数据。例如CROSS(BACKSET(COND,3),0.5)因BACKSET将未来3根标为1导致金叉位置前移。// ❌ 危险写法用BACKSET结果做交叉判断 // FLAG : BACKSET(CROSS(MA(C,5),MA(C,10)),3); // FALSE_CROSS : CROSS(FLAG,0.5); // 信号提前3根 // ✅ 安全写法所有信号生成必须基于已知历史数据 REAL_CROSS : CROSS(MA(C,5),MA(C,10)); REAL_SIGNAL : FILTER(REAL_CROSS,3); // 用FILTER去重不引入未来验证命令在公式中加入DRAWNUMBER(ISLASTBAR, 0.9, BARSLAST(REAL_SIGNAL), COLORGREEN)观察数字是否为正整数表示距今K线数。若为负数说明信号被未来数据污染。4.3 “绘图溢出”DRAWLINE/STICKLINE参数越界导致图表崩溃DRAWLINE(A,B,C,D,0)要求A、B、C、D四列数据长度一致。若其中一列因REF取不到数据而变短如REF(C,100)在不足100根K线的分钟图上绘图函数会报错或显示异常。// ✅ 防御式写法用ISNULL检查数据有效性 VALID_A : IF(ISNULL(REF(C,5)),0,REF(C,5)); VALID_B : IF(ISNULL(L),0,L); DRAWLINE(VALID_A0, VALID_B, VALID_A0, VALID_B, 0), COLORBLUE; // ✅ 更优用COUNT确保足够K线数再绘图 ENOUGH_DATA : COUNT(C0,100)100; // 确保有100根有效K线 DRAWLINE(ENOUGH_DATA AND VALID_A0, VALID_B, ENOUGH_DATA AND VALID_A0, VALID_B, 0);提示在分时图如5分钟上测试公式时务必先用COUNT(C,100)检查数据长度。新股或复牌首日数据不足是绘图错误的高发场景。5. 进阶技巧用通达信公式管理器6.06实现指标参数化与批量导出通达信公式管理器6.06版当前主流版本支持参数化设计和批量文件操作这是提升效率的关键。很多教程忽略这点导致每次改参数都要重写公式。本节教你用原生功能实现“一次编写多股适配”。5.1 参数化用INPUT声明可调参数替代硬编码INPUT语句允许用户在公式应用时动态输入数值无需修改源码。所有INPUT参数在公式管理器中自动生成滑块或输入框。// 在公式开头声明参数必须放在所有计算之前 N1:INPUT(触底周期,13,5,50,1); // 名称,默认值,最小值,最大值,步长 RATIO_PRICE:INPUT(价格位置阈值,0.15,0.05,0.3,0.01); VOL_SHRINK:INPUT(量比阈值,0.7,0.3,1.0,0.05); // 后续计算直接使用参数名 PRICE_POS : (C-LLV(L,N1))/(HHV(H,N1)-LLV(L,N1)); TOUCH_BOTTOM : PRICE_POS RATIO_PRICE AND VOL_RATIO VOL_SHRINK;操作路径在公式管理器中选中该公式 → 右键“修改” → 点击“参数”页签 → 可见三个滑块拖动即可实时查看效果。参数名会自动显示在副图标题栏右侧。5.2 批量导出将tn6格式公式转为txt便于版本管理与协作通达信公式以.tn6二进制格式存储无法用Git管理。但可通过公式管理器导出为文本保留全部逻辑。# 步骤Windows系统 # 1. 打开通达信 → 公式管理器CtrlF # 2. 选中目标公式 → 右键“导出” → 选择“文本文件(*.txt)” # 3. 保存为三步点睛_触底反转看多.txt # 4. 用VS Code打开可见清晰的Pascal语法结构关键细节导出的txt文件包含{公式名称}、{公式描述}、{参数}等区块{公式主代码}部分即为你编写的全部逻辑。团队协作时只需共享此txt文件成员导入时选择“从文本文件导入”即可。5.3 公式兼容性检查识别tn6文件是否含加密或私有函数部分网络流传的“国宝级指标”含加密段如{ENCRYPTED}标签或调用私有DLL如CALLDLL(xxx.dll,func)这些在标准通达信中无法运行。// ✅ 安全公式特征仅含通达信官方函数文档可查 // 如REF, CROSS, BACKSET, FILTER, DRAWLINE, MA, HHV, LLV... // ❌ 风险公式特征含以下任意一项则可能失效 // CALLDLL(...) // 调用外部DLL // {ENCRYPTED} // 加密标识 // FUNC_NAME // 私有函数前缀 // EXTERNAL_FUNC // 外部函数声明验证方法用记事本打开tn6文件实际是文本搜索CALLDLL、ENCRYPTED、符号。若存在该公式需专业解密工具或联系作者切勿强行修改。本文还有配套的精品资源点击获取
返回列表