很多年以前我刚接触通达信的时候最痴迷的事情就是到处淘指标公式。那时候论坛里的大神们发帖都神神秘秘动不动就是“国宝级源码”“副图之王”下载下来一看要么加密要么乱码一堆真正能看懂的没几个。后来自己折腾久了才慢慢明白一个道理指标公式这东西不在于多而在于精。尤其是箱体图这个方向做得好的人是真少。箱体图说白了就是把一只票的股价运行区间用几条线框出来让你一眼就知道现在这个位置是在箱体顶部、底部还是中间地带。很多人以为箱体图就是简单的画两条平行线其实真正的箱体指标要考虑的东西远比想象中多箱体边界怎么取、用哪种均线逻辑来刻画、突破之后怎么自动修正、盘整阶段的假信号怎么过滤这些细节处理得好不好直接决定了指标实战能不能用。这次我想把通达信箱体主图和副图指标公式的完整思路拆开讲一遍包括我自己在实际编写过程中的选型逻辑、参数设计、坑点记录以及整套公式代码的核心逻辑。内容比较干适合已经有些通达信公式基础、想深入打磨自己交易系统的朋友。完全零基础的话建议先把通达信自带公式编辑器的基础语法摸一摸再来看这篇会顺畅很多。1. 箱体主图指标的核心设计思路箱体主图要解决的问题其实很单纯在一张K线图上用视觉化的方式告诉你当前股价所处的箱体结构在哪、边界在哪、目前是靠近上沿还是下沿。看起来简单真要设计好需要做几个关键决策。1.1 箱体边界的确认方式主图上最常见的箱体画法是用一段区间的最高价和最低价作为上下边界。这种方法的优点是直观但缺点是太“死”了。股价一旦创出新高或者新低整个箱体就得推倒重画实战中满屏全是横线根本没有参考价值。我更推荐的做法是用多个周期的关键点位配合均线来动态刻画箱体上沿和下沿。具体逻辑是上沿取一个相对高位但不是绝对最高点而是用“N周期最高价的HHV值经过平滑处理后的结果”下沿同理用“N周期最低价的LLV值平滑后的结果”。这样画出来的箱体会自动适应股价的缓慢抬升和下降不会因为单日毛刺就打乱结构。单说思路有点虚直接上核心片段。完整代码后面会给这里先看主干部分N:60; // 箱体观察周期 上沿:MA(HHV(HIGH,N),5),COLORRED; 下沿:MA(LLV(LOW,N),5),COLORGREEN;你没看错核心逻辑就是这么几行。HHV(HIGH,N)取的是过去60个周期里的最高价再用MA(,5)做一次5周期平滑目的是防止某一天的最高价突然异常拉高导致上沿线剧烈跳动。下沿同理。中间的箱体实体部分用STICKLINE函数做了区间填充在下沿和上沿之间画一个淡淡的底色区这样肉眼看主图就知道哪里是箱体内部。1.2 为什么不用固定周期的箱体很多现成的箱体指标逻辑是“取过去N天的最高最低价然后画死”。这种思路最大的问题在于箱体应该是跟随走势演化的而不是固定不变的一段历史。打个比方一只票从10块涨到30块如果你把箱体边界锁死在10块和12块那后面几乎所有的K线都在箱体外面这指标就成了摆设。动态箱体的核心在于“慢跟快调”。我选60日作为观察周期但这个60不是死数字我额外加了一个自适应的条件——当股价在20个交易日内涨幅超过20%时箱体周期自动缩减到30日保证箱体能更快跟上加速行情当股价波动率下降、20日振幅小于10%时箱体周期自动放大到90日维持箱体的稳定性。周期:IF(ABS(CLOSE-REF(CLOSE,20))/REF(CLOSE,20)0.2,30, IF(ABS(CLOSE-REF(CLOSE,20))/REF(CLOSE,20)0.1,90,60)); 上沿:MA(HHV(HIGH,周期),5); 下沿:MA(LLV(LOW,周期),5);这样处理的好处是震荡市里箱体框得稳趋势市里箱体又能及时跟上不至于出现股价涨上天、箱体还在脚底下的尴尬局面。1.3 主图信号的逻辑设置箱体主图不光是画线还得承担信号提示功能。我设置了两类信号一类是股价在箱体下沿附近且出现止跌信号时提示“箱底关注”另一类是股价放量突破上沿且回踩不破时提示“箱体突破”。这两类信号用的不是未来函数都是基于已发生数据的条件判断信号不会漂移。箱底关注:LOW下沿 AND REF(CLOSE,1)REF(下沿,1) AND CLOSEOPEN; 箱体突破:CLOSE上沿 AND VOLREF(MA(VOL,5),1)*1.5 AND CLOSEOPEN; DRAWICON(箱底关注,LOW*0.98,1); DRAWICON(箱体突破,HIGH*1.02,2);这里的1号和2号图标是通达信自带的图标编号如果自己用可以在公式编辑器里按“插入函数-绘图函数-DRAWICON”查看图标编号选择自己喜欢的使用。2. 副图指标公式的选型与组装副图的作用和主图不同。主图解决“股价现在处于箱体什么位置”的问题副图则要回答“这个位置有没有操作价值”。所以在设计副图的时候我通常会搭配三块内容量能强度、价格动量、多空力量对比。一套完整的副图是可以同时从这三个维度给出参考结论的。2.1 量能饱和度与圆圈提示的实现通达信热词里经常看到“量能饱和度圆圈1.00”这个说法。实际上这指的是把当日成交量与一段时期内的最大成交量做比值量化出当前量能处于什么“饱和度”水平然后当数值到达极端区域时在副图上画一个圆圈标记。量能饱和度:VOL/LLV(VOL,60)*100; 圆圈提示:量能饱和度100; DRAWICON(圆圈提示,量能饱和度,9);这套逻辑的原理不复杂VOL除以60周期内的最低量能再乘100得到的是一个相对量能指标。当这个值冲到100以上说明当前量能已经比过去60天里的最低量能放大了一倍以上这种极端缩量后的极值反转往往伴随着变盘。圆圈图标的加入只是提供一个直观的视觉提醒。但这里有个细节要想清楚单纯看放量并不能判断方向。放量上攻和放量下跌都会触发这个提示所以副图里必须叠加价格方向过滤。我的做法是加一个条件只提示“放量且收阳”的情况阴线一律不提示。2.2 多空决策与三步擒龙副图设计里我把“多空决策”设计成一组渐变柱线。核心逻辑是用收盘价与不同周期均线的相对位置关系计算出一个多空强度值。正值表示多方占优负值表示空方占优柱线颜色用红色和绿色区分。多空强度:(CLOSE-MA(CLOSE,6))/MA(CLOSE,6)*50 (CLOSE-MA(CLOSE,12))/MA(CLOSE,12)*30 (CLOSE-MA(CLOSE,24))/MA(CLOSE,24)*20;这个公式的设计思路是给短中长周期均线不同的权重短期均线影响最大长期均线影响最小。股价站上所有均线时多空强度为正值越大说明越强反之则跌至负值。当多空强度从负值区间向上穿越零轴时是副图提示的“由空转多”节点。至于“三步擒龙”它本质上是一种叠加确认机制。第一步看价格是否站上10日均线第二步看量能是否温和放大第三步看多空强度是否已经转正。三步同时满足时副图给出一个醒目的信号。用这种方式能过滤掉大量价格在箱体中部震荡时的假信号。2.3 主力军情与净占比的刻画“主力净占比”这个指标很多人以为需要Level-2数据才能计算其实用普通行情数据也能做出一个近似值。我的做法是结合涨跌幅和换手率来估算主动买卖盘的倾向主力净占比:IF(CLOSEOPEN,(HIGH-LOW)*VOL/10000, -(HIGH-LOW)*VOL/10000);这个公式的本质是把当日振幅当作多空争夺的“战场宽度”收阳线视为多方占优收阴线视为空方主导。数值的绝对值大小代表资金活跃度正负号代表方向。这个指标不是真实的主力资金流数据但作为情绪温度计来做参考是够用的。我实际使用的时候会配合“介入度”指标一起看。介入度可以理解为当日成交量占流通盘的比例加上价格位置综合计算的结果。介入度越高说明当前箱体位置的关注度越高出现变盘的概率也越大。两个指标叠加起来对于判断箱体突破的有效性帮助很明显。3. 主图与副图的组合应用实战工具做出来是要拿到实战里检验的。我自己用这套箱体系统跑了将近两年从震荡市到趋势市都经历过累积了一些比较有效的组合用法。这里单独拿出来说一下。3.1 箱体下沿的低吸策略震荡行情里最有性价比的操作并不是追高而是在箱体下沿附近寻找低吸机会。我的做法是当主图出现“箱底关注”信号同时副图的多空强度位于负值但出现了底背离价格创新低多空强度没有创新低这个位置会是一个可靠性较高的低吸点。底背离的判断在通达信里可以用如下方式近似表达价格新低:LOWREF(LLV(LOW,10),1); 强度未新低:多空强度REF(多空强度,1) AND 多空强度0; 底背离:价格新低 AND 强度未新低;这套组合的核心逻辑是箱体下沿本身就是支撑区域多空强度底背离说明市场的拋压在衰竭两者共振时做低吸止损位可以放得很近盈亏比通常比较理想。3.2 箱体平台突破战的介入细节平台突破的介入最怕的是买到假突破。我实际操作时会用三重复合确认的方式来降低假突破概率第一主图出现“箱体突破”图标这是第一层确认第二副图的主力净占比由负值急速翻正且数值大于前5日均值这是资金层的确认第三个股所在板块当天没有普涨行情确保突破是个股自身行为而不是被板块情绪带起来的。这三个条件都满足时我才会考虑介入。介入价尽量在突破回踩不破上沿的位置少在突破瞬间追高。回踩确认后介入的胜率比突破瞬间追入高出不少这个是从大量实战数据里总结出来的教训。3.3 周期共振的升级玩法单周期箱体最大的局限性在于它只能看到当前周期视角下的结构。我后来把主图指标做了一点升级加入中期趋势过滤条件。具体做法是嵌套了两组周期参数周线级别的箱体方向和多空强度做“趋势筛查”日线级别的箱体位置做“入场触发”。周强度:MA(CLOSE,5)MA(CLOSE,10); 日信号:箱体突破 OR 箱底关注; 最终信号:周强度 AND 日信号;说白了就是大周期定方向小周期定时机。如果周线级别是多头排列日线的箱体下沿低吸信号就优先考虑做多如果周线级别是空头排列即便日线出现了箱体下沿信号也只是反弹参与价值不高。这套升级逻辑把我账户里那些逆势抄底的亏损单直接砍掉了大半。4. 指标公式编写中的常见问题与避坑实录写指标公式这件事看起来是代码问题其实大多数坑都是逻辑问题。我把这几年踩过的比较典型的坑做一个速查记录很多问题你可能写着写着也会遇到提前知道能节省大量排查时间。4.1 信号闪烁未来函数惹的祸刚学指标的时候经常遇到一种情况昨天看副图明明有信号今天打开一看信号消失了或者位置变了。这就是典型的“未来函数”问题。所谓未来函数就是公式中引用了当前周期往后才会出现的数据导致信号在数据更新后发生漂移。哪些写法会造成未来函数最常见的就是“ZIG”、“PEAK”、“TROUGH”这类转折函数以及“BACKSET”这种引用未来条件的写法。还有一种是自己在公式里不小心引用了可变的周期参数导致历史信号被重算。排查的方法很简单在公式编辑器里打开“计算”菜单勾选“禁止未来函数”检查系统会自动标出有问题的行。我的建议是凡是公式里出现ZIG、BACKSET这些函数直接弃用或者换逻辑。市场上很多源码确实用了这类函数来美化信号但实盘中这些信号根本没办法复现用这种公式做交易就是拿幻觉当依据。4.2 信号太少与信号太多的平衡信号太少说明条件设得过于严格可能一个月都触发不了几次实战参考价值骤降信号太多说明条件太宽松满屏都是图标等于没有信号。这两种极端我都经历过后来的解决思路是在“过滤噪音”和“保留有效信号”之间找平衡。以“箱底关注”信号为例最初版本只有“LOW下沿 AND CLOSEOPEN”两个条件结果信号多到没法看震荡市里几乎每天都出。后来加上了“REF(CLOSE,1)REF(下沿,1)”这个前置条件意思是前一天必须已经跌破下沿一次今天再收盘收回。这下过滤效果立竿见影基本上一个箱体运行周期内只出1到2次信号参考价值高了很多。调信号密度有一个通用方法先用宽松条件跑一遍历史数据统计出触发次数和胜率再逐步收紧条件观察信号数量和胜率的变化曲线找到“信号数量可接受且胜率最高”的那个临界点。4.3 指标滞后与过于灵敏的两难均线类指标天生滞后越长的均线越滞后但缩短周期又会增加噪音导致频繁止损。这个问题没有完美的解法但可以通过“差分组合”来缓解。我设计的箱体系统里同时使用了快速线和慢速线。快速线看交易时机慢速线看趋势状态。具体来说箱体上沿下沿用相对较长的周期60/90日而操作信号触发条件里的均线用短期周期6/12/24日。长周期负责稳定短周期负责敏捷两者各司其职比单用一组参数要平衡得多。4.4 复权数据的一致性陷阱另一个非常隐蔽的坑是数据复权导致的历史信号失真。通达信默认的行情数据有前复权、后复权和不复权三种。如果一只票经历了大比例分红除权不复权数据会在除权日留下一个巨大的跳空缺口箱体上下沿全部被拉歪历史信号完全失去参考意义。我建议指标公式跑信号、做历史回测时统一使用前复权数据。还得注意一点通达信的“区间统计”“条件选股”等不同功能模块默认的数据复权方式可能不一致实际操作前务必确认当前工作区使用的是同一复权标准否则你看到的信号和回测结果会对不上。5. 副图指标源码分享与参数调节建议这一节把整套箱体副图指标的核心源码完整放出。这套源码我没有做任何加密处理也不加未来函数每一个变量都有明确用途。考虑到通达信不同版本之间的语法存在细微差异如果你的版本比较老个别函数可能需要做小调整。5.1 超级全系列副图指标源码{量能温度计} 量比:VOL/REF(MA(VOL,5),1); 饱和度:IF(VOLREF(VOL,1),量比*50,量比*30),COLORRED; STICKLINE(饱和度REF(饱和度,1),0,饱和度,2.5,0),COLORRED; STICKLINE(饱和度REF(饱和度,1),0,饱和度,2.5,0),COLORYELLOW; {多空强度} 多空:MA(CLOSE,6)/MA(CLOSE,24)*100-100,COLORWHITE; {DRAWICON(CROSS(多空,0),多空,1);} {量能饱和度圆圈信号} 圆圈条件:多空0 AND 饱和度REF(饱和度,1)*1.2 AND REF(饱和度,1)50; DRAWICON(圆圈条件,多空,9); {主力净占比} 净占比:IF(CLOSEOPEN,(HIGH-LOW)*VOL/10000*0.1, -(HIGH-LOW)*VOL/10000*0.1);这套源码的核心设计思路有三点第一量能温度计用“量比变化”来刻画资金活跃度的增减比单纯看成交量柱子的长短更直观第二多空强度的算法参考了价格与均线的乖离程度反应比均线本身更灵敏第三圆圈提示的触发条件是“多空为正、量能由盛转衰”这类位置往往对应着箱体内部的阶段小高点可以作为减仓观察的辅助信号。5.2 参数调节的节奏感参数不是越大越好也不是越小越聪明。你需要根据当前市场和个股的波动特性动态调整股价波动大、概念题材活跃的票箱体周期可以适当缩小比如从60改为40让箱体更贴合短期走势。股价走势平稳、基本面主导的蓝筹票箱体周期适当放大到90甚至120过滤掉日常波动的噪音。量能饱和度阈值不要轻易动这一项对参数并不敏感调高了信号过少调低了信号太乱默认值就是比较理想的区间。多空强度的权重分配理论上越短周期的均线越需要更高的权重但差距过大会导致信号抖动短中长按5:3:2的比例搭配是我反复试过的比较稳的取值。参数调节完以后一定要做一段固定周期的历史回测来验证信号质量不要只看最近几天好不好用。我自己的习惯是回看最近一年的数据观察信号触发次数、连续信号间隔、信号出现后的5日涨跌幅用这几个维度给参数打分分数高的留下分数低的继续调。5.3 主图源码的整合封装主图单独放出来方便不会整合的朋友直接复制{箱体主图} 周期:IF(ABS(CLOSE-REF(CLOSE,20))/REF(CLOSE,20)0.2,30, IF(ABS(CLOSE-REF(CLOSE,20))/REF(CLOSE,20)0.1,90,60)); 上沿:MA(HHV(HIGH,周期),5); 下沿:MA(LLV(LOW,周期),5); 箱体中轨:(上沿下沿)/2; 上沿线:上沿,COLORRED,LINETHICK2; 下沿线:下沿,COLORGREEN,LINETHICK2; 中轨线:箱体中轨,COLORYELLOW; DRAWICON(CROSS(LOW,下沿),LOW*0.98,1); DRAWICON(CROSS(CLOSE,上沿) AND VOLREF(MA(VOL,5),1)*1.5,HIGH*1.02,2); DRAWK线(HIGH,OPEN,LOW,CLOSE);STICKLINE这里没有直接用填充色块而是用上沿和下沿两条线加上中轨形成一个动态通道。有些朋友喜欢看到箱体中间有填充色那就在公式里加一行FILLRGN(上沿,下沿,上沿下沿,RGB(40,40,120));FILLRGN的RGB颜色值可以根据自己的风格调整深色背景上建议用半透明感强的深蓝或者深灰浅色背景上就选浅蓝。这个纯属视觉偏好不影响信号逻辑。6. 复盘与持续优化建议指标公式写完只是第一步真正的功力在于后续的复盘优化。每一次实盘信号出来之后我都会做一次复盘记录内容包括信号触发日期、信号类型、当时的箱体位置、信号之后3日和5日的实际涨幅、以及当时的错误判断如果有的话。这样做一段时间之后你会慢慢发现自己指标系统的“脾性”。比如某个参数组合在单边行情里表现很好但在震荡市里频繁打脸又比如某些信号在缩量环境下几乎没有参考价值但在放量突破的行情里命中率极高。这些规律靠肉眼盯盘是总结不出来的只有通过系统化复盘才能慢慢摸清楚。我的一个经验是箱体指标的优化重点不应放在“提高信号命中率”上而应放在“提高信号的盈亏比”上。有时候一个信号命中的概率只有40%但每次对了能赚10个点错了只亏3个点长期下来账户曲线照样能创新高。过度追求高胜率最后往往会把交易系统调得过于灵敏反而赚不到钱。用通达信编写箱体指标的过程本质上是一个理解市场的训练过程。每一次修改公式都是你对市场结构认知的一次迭代。工具本身并不会创造收益真正决定账户曲线形态的是你对指标信号的执行纪律和对市场的理解深度。这一点写了这么多年指标我体会越来越深。