
1. 波段买卖副图公式到底在解决什么问题做波段的人都有个共同的痛点明明看对了方向却在回调里被洗出去或者追在高点站岗。日线级别的波段操作核心诉求其实就三件事——识别趋势方向、找到相对低吸区、避开追高陷阱。通达信的副图公式本质上就是把这套判断逻辑量化成可视化的信号让你不用盯着K线一根根数指标直接告诉你当前处于什么位置。我接触过的波段公式五花八门但真正能用的往往不是那种信号满天飞、一天出八个买点的东西。好的波段副图公式信号应该是克制的一个月出两三次买点就够多了反而说明参数没调好或者逻辑有漏洞。这篇内容适合两类人一是刚接触通达信公式、想自己动手改指标的新手二是有一定基础、但手里的公式信号太杂、想优化过滤条件的老手。下面我会从公式的整体设计思路讲起把核心源码拆开揉碎再给出可以直接复制使用的完整代码和参数调优方法最后把我自己踩过的坑和排查经验整理成速查表。需要先说明一点任何副图公式都只是辅助工具不是圣杯。它的价值在于把模糊的盘感变成相对客观的参考而不是替你做决策。理解了这一点后面的内容才有意义。2. 波段副图公式的整体设计思路拆解2.1 为什么选择副图而不是主图很多人第一反应是把买卖信号画在主图K线上觉得直观。但我实测下来副图方案在波段场景下更实用。原因很直接主图叠加太多指标会遮挡K线形态尤其是均线、布林带已经占了不少空间再塞买卖箭头图面会非常乱。副图独立出来可以把趋势强度、超买超卖、信号触发这些维度分层展示互不干扰。从技术实现角度看副图公式的输出是数值序列通达信会把每个周期的计算结果连成线或柱买卖点用条件判断打标记。这种结构的好处是信号逻辑和显示逻辑分离你改判断条件的时候不用动显示部分维护成本低。我见过不少人把主图和副图逻辑混在一起写结果改一个参数整个图都乱套这就是没做好分层。2.2 波段公式的核心逻辑框架一个能用的波段副图底层逻辑通常由三层构成。第一层是趋势过滤用中长周期均线或者MACD的零轴位置判断大方向只在多头趋势里找买点空头趋势里找卖点避免逆势操作。第二层是超买超卖定位用RSI、KDJ或者乖离率这类震荡指标判断价格偏离均值的程度偏离过大就有回归需求。第三层是信号确认等趋势和位置两个条件同时满足再叠加一个触发条件比如价格突破前高、量能放大才输出买卖标记。这三层的顺序不能乱。我见过有人把超卖条件放最前面结果下跌趋势里天天出买点越买越套。趋势过滤必须是第一道闸门它决定了你只在哪个方向下注。这个思路和打牌一样先看牌面大势再算具体牌型最后才决定出哪张。2.3 参数选型背后的考量波段操作的周期选择很关键。日线级别做波段趋势判断用20日到60日均线比较合适太短容易被噪音干扰太长反应迟钝。超买超卖我用的是改良版RSI周期设14但加了平滑处理避免单日暴涨暴跌导致指标失真。信号确认部分我倾向于用收盘价突破前N日高点作为触发N取5到8这个范围既能过滤掉日内假突破又不会错过启动点。参数不是拍脑袋定的。比如RSI的14周期是经过大量回测验证的平衡点周期太短信号频繁但假信号多周期太长信号滞后。乖离率的阈值我设的是正负8%到12%区间具体看标的波动率波动大的品种放宽到15%。这些数字背后都是用历史数据反复试出来的不是理论推导你在实际使用时要根据自己的标的做微调。3. 核心源码逐段解析与实操要点3.1 趋势判断模块的写法与陷阱趋势模块我用的是一条加权均线加一条简单均线的组合。加权均线对近期价格更敏感简单均线更平滑两者交叉或者同向排列时确认趋势。源码大致是这样{趋势判断模块} MA_FAST:MA(C,20); MA_SLOW:MA(C,60); TREND_UP:MA_FASTMA_SLOW AND CMA_SLOW; TREND_DOWN:MA_FASTMA_SLOW AND CMA_SLOW;这里有个容易踩的坑不要用均线金叉死叉直接当买卖信号。金叉的时候价格往往已经涨了一截死叉的时候也跌了不少波段操作讲究的是在趋势确立后的回调里进场而不是追交叉点。所以趋势模块只负责输出TREND_UP和TREND_DOWN两个布尔值真正的买卖判断交给后面的模块组合。另一个细节是CMA_SLOW这个条件。光看均线排列不够还要确认当前价格站在慢线之上这样能过滤掉均线还没走平但价格已经跌破的假多头。我早期版本漏了这个条件结果在震荡市里信号特别多加上之后清爽了不少。3.2 超买超卖模块的改良写法标准RSI在极端行情下会钝化连续上涨时RSI长期挂在80以上这时候按超买卖出会踏空。我的处理方式是给RSI加一层动态阈值用近期波动率调整超买超卖的界限{超买超卖模块} LC:REF(C,1); RSI_VAL:SMA(MAX(C-LC,0),14,1)/SMA(ABS(C-LC),14,1)*100; VOLA:STD(C,20)/MA(C,20)*100; OB_LEVEL:80IF(VOLA3,5,0); OS_LEVEL:20-IF(VOLA3,5,0); OVERBOUGHT:RSI_VALOB_LEVEL; OVERSOLD:RSI_VALOS_LEVEL;VOLA算的是20日收盘价标准差占均线的百分比用来衡量波动率。波动率大的时候超买阈值上移到85超卖下移到15避免频繁触发。这个改动看起来小但实测下来信号数量能减少三成左右而且留下的信号质量明显更高。注意SMA函数在通达信里的第三个参数是权重这里用1表示等权平滑不要写成0或者省略否则计算结果会偏。3.3 信号触发与过滤条件的组合有了趋势和位置最后一步是触发。我用的是价格突破近期高点和量能配合的双重确认{信号触发模块} HH:HHV(H,8); LL:LLV(L,8); BREAK_UP:CREF(HH,1) AND VMA(V,5)*1.2; BREAK_DOWN:CREF(LL,1) AND VMA(V,5)*1.2; BUY_SIG:TREND_UP AND OVERSOLD AND BREAK_UP; SELL_SIG:TREND_DOWN AND OVERBOUGHT AND BREAK_DOWN;REF(HH,1)是前8日的最高价当前收盘价突破它才算有效突破。量能条件VMA(V,5)*1.2要求成交量比5日均量放大20%以上这个比例是我反复试出来的太低过滤不掉缩量假突破太高会错过温和放量的启动。买卖信号必须同时满足三个模块的条件缺一不可这就是前面说的三层闸门。实际写的时候要注意BUY_SIG和SELL_SIG是布尔序列通达信里用DRAWTEXT或者DRAWICON来标记。我习惯用DRAWICON(BUY_SIG,LOW*0.98,1)在低点下方画图标这样不会遮挡K线。4. 完整公式代码与参数配置实操4.1 可直接复制的完整副图源码把前面三个模块拼起来加上显示部分就是完整的副图公式。下面这段可以直接复制到通达信的公式编辑器里{波段买卖副图公式 - 完整版} {参数: N120, N260, RSI_N14, BRK_N8, VOL_R1.2} MA_FAST:MA(C,N1); MA_SLOW:MA(C,N2); TREND_UP:MA_FASTMA_SLOW AND CMA_SLOW; TREND_DOWN:MA_FASTMA_SLOW AND CMA_SLOW; LC:REF(C,1); RSI_VAL:SMA(MAX(C-LC,0),RSI_N,1)/SMA(ABS(C-LC),RSI_N,1)*100; VOLA:STD(C,20)/MA(C,20)*100; OB_LEVEL:80IF(VOLA3,5,0); OS_LEVEL:20-IF(VOLA3,5,0); OVERBOUGHT:RSI_VALOB_LEVEL; OVERSOLD:RSI_VALOS_LEVEL; HH:HHV(H,BRK_N); LL:LLV(L,BRK_N); BREAK_UP:CREF(HH,1) AND VMA(V,5)*VOL_R; BREAK_DOWN:CREF(LL,1) AND VMA(V,5)*VOL_R; BUY_SIG:TREND_UP AND OVERSOLD AND BREAK_UP; SELL_SIG:TREND_DOWN AND OVERBOUGHT AND BREAK_DOWN; STICKLINE(BUY_SIG,0,1,2,0),COLORRED; STICKLINE(SELL_SIG,0,1,2,0),COLORGREEN; DRAWTEXT(BUY_SIG,1.1,买),COLORRED; DRAWTEXT(SELL_SIG,1.1,卖),COLORGREEN; RSI_LINE:RSI_VAL,COLORYELLOW; OB_LINE:OB_LEVEL,COLORRED,DOTLINE; OS_LINE:OS_LEVEL,COLORGREEN,DOTLINE;参数配置在公式编辑器里单独设置N1默认20N2默认60RSI_N默认14BRK_N默认8VOL_R默认1.2。这些默认值适合大部分日线级别的波段标的但不同品种要微调后面会讲怎么调。4.2 参数调优的计算过程与实测记录参数不是拿来就用的得根据标的特性调整。我拿一个波动率中等的标的做过对比测试记录如下参数组合月均信号数信号后5日胜率备注N120,N260,BRK82.3次61%默认组合平衡性好N110,N230,BRK55.8次48%信号太多假信号明显N130,N290,BRK101.1次67%信号少但质量高适合稳健型N120,N260,BRK8,VOL_R1.51.6次65%量能要求提高过滤更严从表里能看出缩短周期会显著增加信号数量但降低胜率这是典型的噪音放大。拉长周期信号变少但质量提升代价是可能错过一些快速启动的行情。量能系数从1.2提到1.5信号减少约30%胜率提升4个百分点说明量能过滤是有效的。我的建议是先用默认参数跑一段时间观察信号频率和你的操作节奏是否匹配。如果你一个月只能操作两三次就把BRK_N调到10、VOL_R调到1.5如果你盯盘时间多、能快速反应可以适当缩短到N115,N245但VOL_R不要低于1.2否则假突破太多。4.3 在通达信里导入和调试的步骤导入流程不复杂但有几个细节容易出错。打开通达信按CtrlF调出公式管理器选择“技术指标公式”下的“其他类型”点“新建”。公式名称随便起比如“波段副图”画线方法选“副图”。把上面的源码粘贴进去参数栏按顺序填好默认值点“测试公式”通过后点“确定”。调试阶段有个技巧先不要急着看信号先看指标线是否正常。RSI线应该在0到100之间波动超买超卖虚线位置正确如果线跑到100以上或者负数说明SMA的权重参数写错了。确认指标线正常后再检查买卖标记是否出现在合理位置——买点应该在相对低位、趋势向上的区域卖点反之。如果买点出现在高位大概率是OVERSOLD条件没生效回去检查OS_LEVEL的计算。提示修改公式后一定要点“测试公式”通达信对语法要求严格少一个分号或者括号不匹配都会报错错误提示会指出大致行号按提示排查即可。5. 常见问题与排查技巧实录5.1 信号不出现或出现位置异常最常见的问题是公式编译通过但图上没信号。排查顺序是这样的先看BUY_SIG和SELL_SIG是否真的为真可以在公式末尾临时加一行BUY_COUNT:COUNT(BUY_SIG,60);输出近60日买点数量如果一直是0说明三个条件里至少有一个永远不满足。逐个拆开验证单独输出TREND_UP、OVERSOLD、BREAK_UP看哪个是0。我遇到过OVERSOLD永远为假的情况查下来是OS_LEVEL算出来是负数RSI不可能低于负数自然不触发。原因是VOLA计算时MA(C,20)在除权日附近异常导致阈值跑偏。解决办法是给VOLA加个上限VOLA:MIN(STD(C,20)/MA(C,20)*100,10);限制在10%以内。另一种情况是信号出现在明显不该出现的位置比如下跌趋势里出买点。这通常是TREND_UP的判断被绕过了检查是不是把AND写成了OR或者MA_SLOW的周期设得太短导致趋势判断失效。5.2 信号过于频繁的过滤思路信号太多是新手最容易遇到的问题一天出好几个买点根本没法操作。过滤思路分三步走。第一步提高量能门槛把VOL_R从1.2提到1.5甚至1.8缩量突破直接过滤掉。第二步收紧突破条件把BRK_N从8调到10或12要求突破更长时间的高点假突破自然减少。第三步加时间间隔限制同一个方向两次信号之间至少间隔5个交易日LAST_BUY:BARSLAST(BUY_SIG); BUY_FILTER:BUY_SIG AND (LAST_BUY0 OR LAST_BUY5);用BUY_FILTER替代BUY_SIG做显示信号密度立刻降下来。这个过滤逻辑我用了很久效果稳定尤其适合震荡市。5.3 不同标的的参数适配经验同一套参数不能打天下。波动率高的标的比如日内振幅经常超过5%的VOLA阈值要放宽OB_LEVEL和OS_LEVEL的调整幅度从5提到8否则超买超卖几乎不触发。波动率低的标的反过来调整幅度缩到3让阈值更敏感。趋势性强的标的N1和N2可以适当缩短因为趋势一旦形成延续性好早点进场能吃到更多利润。震荡型标的则要拉长周期减少在区间来回打脸的次数。这个没有公式可套只能拿历史数据回测看不同参数下的信号胜率和盈亏比选综合表现最好的那组。5.4 常见问题速查表问题现象可能原因排查方法解决方式公式编译报错语法错误、括号不匹配看错误提示行号逐行检查分号和括号无任何信号某条件恒为假单独输出各条件计数定位失效条件并修正信号过于频繁过滤条件太松统计月均信号数提高VOL_R、加大BRK_N、加时间间隔买点出现在高位趋势或超卖条件失效检查TREND_UP和OVERSOLD修正逻辑连接符或参数指标线超出0-100SMA权重参数错误检查SMA第三参数改为1除权日信号异常均线计算受除权影响观察除权前后信号加VOLA上限或使用复权数据6. 公式之外的实战心得公式写好了只是第一步怎么用才是关键。我自己的习惯是把副图信号当参考不当指令。信号出来之后还要看大盘环境、板块强弱、个股位置综合判断才下手。单纯依赖公式信号在极端行情里照样会吃亏。另外公式要定期回顾。市场风格会变半年前好用的参数半年后可能就不灵了。我一般每季度拿最近的数据重新跑一遍看看信号胜率有没有明显下滑下滑了就微调参数。这个过程不复杂但坚持做的人不多而这恰恰是公式能长期可用的原因。最后分享一个小技巧把买卖信号的历史位置在图上标出来之后用眼睛过一遍过去一年的所有信号哪些对了哪些错了错的原因是什么比任何回测报告都直观。我每次调完参数都这么干十分钟就能对这套参数的表现有个大致判断。这个笨办法比很多花哨的优化手段都管用。