
简介这份通达信指标公式源码文档面向股票技术分析爱好者与公式编写初学者聚焦真实盘口数据的指标化呈现帮助读者理解盘口买卖力量如何转化为可量化的图表信号。资源为单个doc文件压缩包约208KB内容以源码与结构说明为主便于对照阅读和逐段拆解。文档围绕周期计算、当前Bar时间与成交量、DYNAINFO预测值、主动买盘与主动卖盘、买卖差、日差占流通盘比、五日买卖总差等模块展开并给出换手率、流通盘、流通市值、成交额等辅助字段的写法同时说明空心柱、实心柱与窄柱在盘口图中的含义以及洗盘、异动等均量交叉提示的用法。已有168人学习适合希望把盘口语言落到公式层面、提升看盘效率的读者参考。1. 通达信指标公式源码与真实盘口从盘口异动到可复现的公式拆解很多人第一次接触“真实盘口”这个词是在盯盘时发现买一卖一挂单突然放大又瞬间撤掉价格却没怎么动。这类现象用普通均线或MACD根本抓不住因为传统指标只看成交价和成交量不看挂单结构。通达信指标公式源码的价值就在这里它允许你把盘口数据买一到买五、卖一到卖五的价与量写成可计算、可回测、可预警的公式。这篇笔记面向两类人一是手里有通达信终端、想自己写盘口监控公式的散户进阶者二是需要把盘口逻辑封装成选股或预警信号的量化初学者。我不会讲空洞的“盘口语言”只讲公式怎么写、参数怎么设、哪些写法在通达信里根本跑不通。2. 盘口数据在通达信公式里到底怎么取字段、权限与最小验证2.1 盘口字段的命名规则与可用范围通达信公式系统里盘口数据不是所有周期都能取。常见做法是只在分时和1分钟周期下使用日线及以上周期取不到实时挂单。字段命名有固定前缀买一价用BUY1PRICE或DYNAINFO(20)这类动态函数买一量用BUY1VOL或DYNAINFO(21)。卖一对应SELL1PRICE、SELL1VOL。买二到买五、卖二到卖五依次递增编号。这里有个血泪经验不同版本的通达信对DYNAINFO编号定义有差异直接抄网上公式经常取到错误字段。我一般会先写一个最小验证公式把每个字段的值打印在副图上确认编号对应关系后再写正式逻辑。{ 盘口字段验证公式副图显示买一到买五的量 } BUY1:DYNAINFO(21); BUY2:DYNAINFO(23); BUY3:DYNAINFO(25); BUY4:DYNAINFO(27); BUY5:DYNAINFO(29); { 每根K线输出五个值肉眼核对是否与盘口一致 } 买一量:BUY1,COLORRED; 买二量:BUY2,COLORYELLOW; 买三量:BUY3,COLORGREEN; 买四量:BUY4,COLORBLUE; 买五量:BUY5,COLORMAGENTA;这段代码的逻辑说明DYNAINFO是通达信动态数据函数括号内数字是字段编号。买一量到买五量的编号通常是21、23、25、27、29但部分版本可能偏移。参数说明COLOR系列只影响显示颜色不影响计算。验证时把公式挂在1分钟副图对照盘口面板逐个核对。如果某个值始终为0或明显不对说明编号错了需要查该版本的数据字典。注意盘口字段在收盘后取到的是最后快照不是历史逐笔所以回测盘口逻辑只能用分时数据做近似。2.2 用盘口字段构造第一个可计算指标挂单失衡率取到字段后第一个能落地的指标是挂单失衡率。它衡量买盘前五档总量与卖盘前五档总量的比值。公式很简单但参数阈值需要根据标的流动性调整。常见做法是失衡率大于1.5视为买盘强小于0.67视为卖盘强。但直接套用会翻车因为大盘股和小盘股的挂单结构完全不同。我一般会加一个成交量过滤只对当日成交额大于某阈值的标的计算。{ 挂单失衡率公式副图 } 买量:DYNAINFO(21)DYNAINFO(23)DYNAINFO(25)DYNAINFO(27)DYNAINFO(29); 卖量:DYNAINFO(22)DYNAINFO(24)DYNAINFO(26)DYNAINFO(28)DYNAINFO(30); { 防止卖量为0导致除零 } 卖量安全:IF(卖量0,1,卖量); 失衡率:买量/卖量安全,COLORWHITE; { 参考线 } 强买线:1.5,COLORRED; 强卖线:0.67,COLORGREEN;逻辑说明买量取买一到买五的挂单量之和卖量取卖一到卖五之和。IF语句处理卖量为0的极端情况避免除零错误。参数说明强买线1.5和强卖线0.67是经验值对高流动性标的可以放宽到1.3和0.77对低流动性标的要收紧到2.0和0.5。这个指标在分时图上的用法是失衡率上穿强买线且价格未明显上涨时说明有资金在托单但托单可能是假象需要结合撤单率一起看。2.3 撤单率的近似计算与公式写法真实盘口里最坑的就是撤单。通达信公式取不到逐笔撤单数据只能用前后两周期的挂单量差值来近似。常见做法是用当前买一量减去上一周期买一量如果价格没变但量大幅减少视为撤单。这个近似很粗糙但比没有强。我一般会写一个撤单预警公式只在分时周期使用。{ 撤单率近似公式分时副图 } { 取当前和上一周期的买一量 } 当前买一:DYNAINFO(21); 上一买一:REF(DYNAINFO(21),1); { 价格变化 } 价格变化:CLOSE-REF(CLOSE,1); { 撤单量价格未涨但买一量减少 } 撤单量:IF(价格变化0 AND 当前买一上一买一,上一买一-当前买一,0); { 撤单率撤单量占上一周期买一量的比例 } 撤单率:IF(上一买一0,0,撤单量/上一买一*100),COLORCYAN; { 预警线 } 预警线:30,COLORRED;逻辑说明REF(DYNAINFO(21),1)取上一周期的买一量但注意DYNAINFO在REF中可能不稳定部分版本会返回当前值。如果发现撤单率始终为0说明REF对动态函数无效需要改用全局变量或分时数据数组。参数说明预警线30表示撤单量超过上一周期买一量的30%时触发。这个阈值对活跃股可以设到50%对冷门股设到20%。撤单率突然飙升往往意味着主力在撤掉托单价格可能即将下跌但这不是绝对信号需要结合大单流向一起判断。3. 把盘口公式变成选股与预警条件组合、周期选择与回测陷阱3.1 选股公式的条件组合与逻辑运算符盘口公式写好后下一步是把它变成选股条件。通达信选股公式里不能用DYNAINFO这是最大的坑。选股公式运行在日线或分钟线历史数据上而DYNAINFO只在实时行情中有效。所以盘口选股只能用分时数据做近似或者用BUY1VOL这类历史分时字段。常见做法是在1分钟周期下写选股公式用BUY1VOL和SELL1VOL的历史值计算失衡率然后筛选出失衡率持续大于阈值的标的。{ 盘口选股公式1分钟周期 } { 计算过去5根1分钟K线的平均失衡率 } 买量:BUY1VOLBUY2VOLBUY3VOLBUY4VOLBUY5VOL; 卖量:SELL1VOLSELL2VOLSELL3VOLSELL4VOLSELL5VOL; 卖量安全:IF(卖量0,1,卖量); 失衡率:买量/卖量安全; { 过去5根K线失衡率均大于1.2 } 条件1:EVERY(失衡率1.2,5); { 当前价格在均价上方 } 条件2:CLOSEAVEDEV(CLOSE,5); { 成交量放大 } 条件3:VOLMA(VOL,5)*1.5; { 组合条件 } 选股:条件1 AND 条件2 AND 条件3;逻辑说明EVERY函数判断过去5根K线是否都满足条件避免单根K线的偶然性。AVEDEV是平均绝对偏差这里用来近似均价线。参数说明失衡率阈值1.2比副图公式的1.5低因为选股要放宽条件避免漏选。成交量倍数1.5是经验值对高换手标的可以设到2.0。注意这个选股公式只能在1分钟周期下运行日线周期下BUY1VOL取不到值。选股结果需要人工复核因为盘口挂单可以伪造持续5分钟的托单也可能是诱多。3.2 预警公式的触发频率与延迟控制预警公式和选股公式的区别在于实时性。预警公式每几秒刷新一次如果条件太敏感会频繁触发导致预警疲劳。我一般会加一个时间间隔控制比如两次预警之间至少间隔3分钟。通达信公式里没有直接的定时函数但可以用TIME函数做近似。{ 盘口预警公式分时主图 } { 计算失衡率 } 买量:DYNAINFO(21)DYNAINFO(23)DYNAINFO(25)DYNAINFO(27)DYNAINFO(29); 卖量:DYNAINFO(22)DYNAINFO(24)DYNAINFO(26)DYNAINFO(28)DYNAINFO(30); 卖量安全:IF(卖量0,1,卖量); 失衡率:买量/卖量安全; { 撤单率 } 当前买一:DYNAINFO(21); 上一买一:REF(DYNAINFO(21),1); 撤单量:IF(CLOSEREF(CLOSE,1) AND 当前买一上一买一,上一买一-当前买一,0); 撤单率:IF(上一买一0,0,撤单量/上一买一*100); { 触发条件失衡率大于1.5且撤单率小于20 } 触发:失衡率1.5 AND 撤单率20; { 时间间隔控制只在每分钟的第0秒到第10秒之间允许触发 } 时间允许:TIME0 AND TIME10; { 最终预警 } 预警:触发 AND 时间允许;逻辑说明TIME函数返回当前时间格式是HHMMSS。这里用TIME0 AND TIME10表示只在每分钟的前10秒允许触发实际写法需要根据通达信的时间格式调整。参数说明撤单率小于20是为了过滤掉那些一边挂单一边撤单的假托单。预警公式的缺点是REF(DYNAINFO(21),1)在实时行情中可能取不到上一秒的值导致撤单率始终为0。如果遇到这种情况只能放弃撤单率只用失衡率做预警。3.3 回测盘口公式的三种数据源与误差来源盘口公式的回测是最容易翻车的地方。通达信本身不提供逐笔盘口历史数据只能用分时数据做近似。常见做法有三种一是用1分钟K线的BUY1VOL字段但这是快照值不是逐笔二是用分时成交明细导出但数据量巨大且格式不统一三是用第三方数据源补全但要注意字段对齐。我一般会先用1分钟数据做粗回测如果信号在粗回测中表现尚可再考虑用更细的数据验证。数据源字段优点缺点1分钟K线BUY1VOL等通达信自带无需额外数据快照值丢失盘中变化分时成交明细逐笔成交价量精度高无挂单数据只有成交第三方盘口历史逐笔挂单最接近真实需要额外采购字段对齐麻烦误差来源主要有三个一是快照频率1分钟快照会漏掉盘中瞬间的挂单变化二是撤单无法还原只能近似三是集合竞价阶段的盘口数据在连续竞价公式中不可用。回测时如果发现信号在开盘前几分钟特别多大概率是集合竞价数据混入需要加时间过滤。4. 盘口公式避坑五个让公式失效的常见写法4.1 坑一在日线周期直接用DYNAINFO现象公式在日线图上显示的值全是0或者固定不变。原因DYNAINFO只在分时和1分钟周期下返回实时值日线周期下取不到。解决把公式周期改为1分钟或分时如果必须用日线改用BUY1VOL等历史分时字段但要注意这些字段在日线周期下也是取不到的只能通过跨周期引用。4.2 坑二REF对DYNAINFO无效导致撤单率恒为0现象撤单率公式始终输出0无论盘口怎么变化。原因REF函数对动态数据函数无效REF(DYNAINFO(21),1)返回的还是当前值。解决改用全局变量记录上一周期的值或者放弃撤单率只用失衡率。如果非要用撤单率可以在分时数据中手动记录但通达信公式不支持数组存储只能通过输出到文件再读入的方式操作复杂。4.3 坑三除零错误导致公式整段失效现象公式在某个时刻突然不显示任何值或者显示异常大的数字。原因卖量或买量为0时直接做除法。解决所有除法都用IF做保护如IF(卖量0,1,卖量)。注意保护值不能设得太小否则失衡率会异常大建议设1。4.4 坑四选股公式和预警公式混用同一套字段现象选股公式在盘后运行正常但盘中预警不触发或者预警频繁触发但选股选不出。原因选股公式用历史分时字段预警公式用动态字段两者数据源不同。解决分开写两套公式选股用BUY1VOL预警用DYNAINFO不要混用。4.5 坑五忽略集合竞价阶段的异常值现象开盘后前几分钟信号特别多但后续验证发现都是假信号。原因集合竞价阶段的挂单在9:25到9:30之间会大幅变化公式把这些变化当成连续竞价的信号。解决在公式开头加时间过滤如IF(TIME93000,0,1)把9:30之前的信号全部置零。5. 盘口公式的进阶用法多周期共振与动态阈值5.1 用跨周期引用把1分钟盘口信号映射到5分钟通达信支持跨周期引用语法是周期.公式名.输出名。比如在5分钟周期下引用1分钟周期的失衡率可以写成1MIN.盘口失衡.失衡率。这样做的价值是过滤掉1分钟级别的噪音只在5分钟级别确认信号。我一般会写一个5分钟共振公式1分钟失衡率大于1.5且5分钟失衡率大于1.2两个条件同时满足才触发。{ 5分钟共振公式 } { 引用1分钟周期的失衡率 } 一分钟失衡:1MIN.盘口失衡.失衡率; { 当前5分钟周期的失衡率 } 买量:DYNAINFO(21)DYNAINFO(23)DYNAINFO(25)DYNAINFO(27)DYNAINFO(29); 卖量:DYNAINFO(22)DYNAINFO(24)DYNAINFO(26)DYNAINFO(28)DYNAINFO(30); 卖量安全:IF(卖量0,1,卖量); 五分钟失衡:买量/卖量安全; { 共振条件 } 共振:一分钟失衡1.5 AND 五分钟失衡1.2;逻辑说明跨周期引用需要先在1分钟周期下保存公式并确保公式名和输出名正确。参数说明1分钟阈值1.55分钟阈值1.25分钟阈值更低是因为5分钟级别的挂单量更大失衡率天然更平滑。注意跨周期引用会增加计算量如果标的数量多预警可能会延迟。5.2 动态阈值用过去20日波动率调整失衡率门槛固定阈值在不同市场环境下表现差异很大。牛市里失衡率1.5很常见熊市里1.5可能就是异常值。我一般会用过去20日的波动率来动态调整阈值。波动率用STD(CLOSE,20)/MA(CLOSE,20)计算然后阈值设为1.5*(1波动率)。这样在波动大的时候放宽条件波动小的时候收紧条件。{ 动态阈值公式 } { 计算20日波动率 } 波动率:STD(CLOSE,20)/MA(CLOSE,20); { 动态阈值 } 动态阈值:1.5*(1波动率); { 当前失衡率 } 买量:DYNAINFO(21)DYNAINFO(23)DYNAINFO(25)DYNAINFO(27)DYNAINFO(29); 卖量:DYNAINFO(22)DYNAINFO(24)DYNAINFO(26)DYNAINFO(28)DYNAINFO(30); 卖量安全:IF(卖量0,1,卖量); 失衡率:买量/卖量安全; { 信号 } 信号:失衡率动态阈值;逻辑说明STD是标准差函数MA是均值。波动率越大动态阈值越高信号越难触发。参数说明基准阈值1.5是经验值波动率系数1可以根据标的调整高波动标的可以设到1.5。这个公式的缺点是波动率计算需要20日数据新股或停牌股可能取不到足够数据需要加保护。5.3 盘口公式的验证习惯每天收盘后做三件事盘口公式写完不是终点验证才是。我每天收盘后会做三件事第一把当天所有预警信号导出对照分时图逐个看标记哪些是假信号第二统计假信号的特征比如是不是集中在某个时间段、是不是某个板块第三根据统计结果调整阈值或加过滤条件。这个习惯坚持一个月公式的准确率会有明显提升。希望帮到你。本文还有配套的精品资源点击获取