
简介面向通达信平台用户和股票技术分析爱好者这份源码资料提供了市场情绪副图指标的完整公式借助沪深300指数MACD值计算SG线并通过QD、ZR条件区分乐观与悲观情绪最终以彩色柱线形式在副图中显现。资源为单个doc文档压缩包约278KB内容不仅包含可直接复制的源码还对INSUM、REF、STICKLINE等关键函数逐段解释适合不熟悉通达信公式编写的投资者按说明录入使用。文档清楚梳理了多头、空头信号的判断逻辑及黄色、绿色、红色柱线的绘制规则帮助读者理解情绪指标背后的量化思路进而辅助短线择时与交易决策。目前已有1565人浏览学习适合需要借助技术指标优化交易系统、完善情绪面分析方法的用户参考。1. 通达信市场情绪副图指标用沪深300的MACD150给大盘情绪定标打开通达信看盘时最模糊的是“今天市场情绪到底怎么样”指数涨了但个股跌多涨少权重稳但题材熄火这些情况靠肉眼很难给出确定性判断。市场情绪副图指标把沪深300成分股在MACD150指标上的平均输出当作情绪基线再用连续四天的方向变化找出多头或空头的衰竭点最终用红、黄、绿三色柱状线把情绪状态画在副图里。它解决的是盘面感觉太主观的问题用指数成分股的平均MACD输出替代直觉用“连续下降后再回升”的结构替代“我觉得跌不下去了”。这套公式适合上证指数、深证成指的择时观察也适合做ETF轮动和个股交易过滤对想拆解INSUM与STICKLINE组合逻辑的指标开发者同样有价值。2. INSUM与SG线先弄懂这一行后面都是分支2.1 INSUM四个参数的含义指标的第一行代码是整条公式的数据源头SG:INSUM(沪深 300,MACD150,3,0),COLORSTICK; // 情绪基线这里的SG是自定义变量名表示后续反复使用的情绪值。INSUM是通达信内部函数用于把某个板块内所有股票的某条指标线做统计计算格式为INSUM(板块名,指标名,指标线号,计算方式)。第一个参数沪深 300是板块名称必须用单引号包裹并且要和通达信板块列表中的名字完全一致。原文里写了一个空格如果本机板块名称里没有空格运行时会取不到数据这是新手最常踩的坑。第二个参数MACD150是一个指标公式的名称它必须已经存在于公式管理器中否则INSUM会静默失败整个SG序列变成无效值。第三个参数3表示取该指标的第3条输出线。第四个参数0是计算方式常见约定是0为板块内全部股票该指标线的平均值1为合计值2为最大值3为最小值。本公式用的是0也就是说SG代表了沪深300成分股在MACD150指标上的平均情绪水平而不是沪深300指数本身一条K线算出来的MACD值。下面把参数和容易踩的坑放在一起参数位置本公式写法实际含义常见错误板块名沪深 300取哪些股票参与统计板块名带空格或不存在返回空值指标名MACD150引用哪个指标公式指标未导入公式编译不报错但无结果线号3取第3条输出线数错输出顺序取到无关曲线计算方式0对成分股该线值求平均误以为0是合计导致数值量级不对2.2 为什么选择第三条线而不是前两条MACD150不是通达信自带的传统MACD而是把均线周期放大到150日附近的变体指标。这种指标通常有三个输出第一条是快线DIF150第二条是慢线DEA150第三条是MACD柱状值。柱状值的正负号反映多空净力量零轴上方的柱体越长说明多头能量越强零轴下方柱体越长说明空头能量越强。INSUM取第三条线得到的SG天然就是一个围绕零轴波动的数值正好适合做情绪温度计。这里容易误判如果MACD150公式的作者把输出顺序调过第三条线不一定是柱状值。我在接到类似指标时会先在公式管理器里打开MACD150的源码数一下输出语句的顺序。通达信默认把没有赋值的表达式按出现顺序定义成线号1、2、3确认线号后再套进INSUM否则后面所有信号都是基于错误数据的。2.3 最小验证公式与量级判断把下面这段直接贴进新建的副图指标可以先验证SG是否真的取到了数据SG:INSUM(沪深 300,MACD150,3,0),COLORSTICK; DRAWNUMBER(ISLASTBAR,SG,SG),COLORWHITE; // 最后K线上打印数值DRAWNUMBER在最后一根K线的SG位置打印SG的数值ISLASTBAR是通达信里判断“最后一根K线”的函数。如果SG正常副图最右侧会显示一个小数如果副图什么都没有先回第2.1节检查板块名和指标名。COLORSTICK让SG在零轴上下自动以红绿柱显示只影响视觉不改动SG的值。验证量级的目的是为后面的信号阈值做准备。沪深300全部成分股MACD150柱状值的平均值通常会在正负1以内波动但极端的单边行情也可能到正负3以上。如果你在芯片、医药这类板块上套用同一指标量级可能完全不同。搞清楚SG的真实范围后第4章调参数时才不会盲猜。3. QD与ZR用四天序列判断情绪衰竭点3.1 QD条件的逐段翻译接下来的QD是“空头衰竭”信号源码如下QD:SG0 AND SGREF(SG,1) AND REF(SG,1)REF(SG,2) AND REF(SG,2)REF(SG,3) AND REF(SG,3)REF(SG,4); // 空头衰竭用自然语言拆开QD条件要被满足需要同时成立五件事SG 0情绪值处于零轴下方SG REF(SG,1)今天的情绪值比昨天高REF(SG,1) REF(SG,2)昨天比前天低REF(SG,2) REF(SG,3)前天比大前天低REF(SG,3) REF(SG,4)大前天比四天前低。第3到第5条合在一起表示前天之前的三天是连续下降的再叠加今天首次反弹构成“空头连续发力后第一次止血”的形态。REF是通达信引用之前周期数据的函数REF(SG,2)就是两天前的SG值。原文把这叫做Bullish情绪但在实战里我更愿意把QD看成“空头衰竭点”它提示的不是立刻大涨而是市场情绪从单边下跌进入转折观察区。为了更直观把QD判断逻辑列成布尔表所处区间当日变化前三天走势QD输出SG0SGREF(SG,1)连续三天下降成立SG0SGREF(SG,1)有一天没有下降不成立SG0SGREF(SG,1)任意走势不成立SG0任意任意不成立这个设计非常严格任何一天走势不符合连续下降都不会给出黄色信号。好处是假信号少坏处是V型反转容易被漏掉。在第4章会讲如何把它改造成可调参数版本。3.2 ZR对称逻辑与零轴的意义与QD对称的是ZR也就是“多头衰竭”信号ZR:SG0 AND SGREF(SG,1) AND REF(SG,1)REF(SG,2) AND REF(SG,2)REF(SG,3) AND REF(SG,3)REF(SG,4); // 多头衰竭ZR要求SG处于零轴上方今天开始下跌而之前三天连续上涨。它和QD的区别不仅是方向相反还在于各自绑定了零轴的不同侧QD必须在零轴下方寻找超跌反弹ZR必须在零轴上方寻找冲高回落。这样划分的好处是避免零轴附近的窄幅震荡频繁触发信号因为SG在零轴上下来回穿越时很难同时满足连续的、同方向的三天序列。注意ZR的成立条件要求“SG0”而红柱绘图条件要求“SGREF(SG,1) AND SG0”两者在SG与REF(SG,1)的关系上互斥所以绿色信号和红色信号永远不会画在同一根K线上。类似地QD要求SG0红柱要求SG0两者也互斥。这意味着三根柱子在逻辑上是清楚分开的不会出现多信号叠成一团的混乱状态。3.3 STICKLINE三根柱的绘制顺序与0.4的含义三根STICKLINE是整张副图的视觉核心STICKLINE(QD,0.4,SG,2,0),COLORYELLOW; // 空头衰竭柱 STICKLINE(ZR,0.4,SG,1,0),COLORGREEN; // 多头衰竭柱 STICKLINE(SGREF(SG,1) AND SG0,0,SG,1,0),COLORRED; // 多头延续柱STICKLINE(条件,起始值,结束值,宽度,空心)按条件从第一个数值画到第二个数值。第一条黄柱从0.4画到SG第三条红柱从0画到SG。0.4是一个固定偏移量它不是阈值而是让黄色和绿色信号柱从零轴上方0.4的位置起笔视觉上像一面旗杆伸出零轴不会被SG本身的红绿柱淹没。如果你希望信号柱贴着零轴可以把0.4改成0如果你觉得偏移量太大在SG数值普遍小于-2时0.4会显得比例失真可以换成分数比如用0.2或者用ABS(SG)*0.3做动态偏移。第二参数顺序也很重要通达信是从起始值到结束值绘制即使起始值大于结束值也能画颜色由后面的COLORYELLOW决定。绘图顺序决定覆盖关系。如果让黄色柱先画、红色柱后画那么同一位置的红色会盖住黄色。本公式把QD黄柱放在最前ZR绿柱在中间红柱最后这样的好处是常规多头柱始终在上层信号柱作为背景色出现。我一般不建议把信号柱放在最上层否则会遮挡常规的SG红绿柱影响对情绪力度的直观判断。4. 参数化重构把固定四天改成可调并适配不同板块4.1 用COUNT函数替代手写REF嵌套原公式把“前三天连续下降”展开成三个AND扩展性和可读性都不好。如果要判断连续5天、7天公式会变得很长。更好的做法是用COUNT函数统计条件满足的天数写成参数化版本INPUT:M(4,2,10); // M为连续下降/上升天数 SG:INSUM(沪深 300,MACD150,3,0),COLORSTICK; D1:SGREF(SG,1); // 今日相对昨日下降 U1:SGREF(SG,1); // 今日相对昨日上升 QD:SG0 AND U1 AND COUNT(REF(D1,1),M-1)M-1; // 前M-1天连续下降今日回升 ZR:SG0 AND D1 AND COUNT(REF(U1,1),M-1)M-1; // 前M-1天连续上升今日回落 STICKLINE(QD,0.4,SG,2,0),COLORYELLOW; STICKLINE(ZR,0.4,SG,1,0),COLORGREEN; STICKLINE(SGREF(SG,1) AND SG0,0,SG,1,0),COLORRED;D1表示今天下降U1表示今天上升。QD中的U1单列在最前面表示今天要反转COUNT(REF(D1,1),M-1)M-1统计从昨天往前数M-1天里D1成立的次数等于M-1就表示这些天全部下降。注意这里一定要用REF(D1,1)而不是D1因为如果直接用D1当前周期“今天是否下降”会被错误计入而QD已经要求今天上升两者会产生偏差。ZR同理用REF(U1,1)从昨天开始统计连续上升。默认M4时这套条件和原始公式完全等价。参数说明M控制灵敏度M越小信号越多M调到6时黄色信号数量会明显减少因为连续更久的弱市反转更少见。你可以用通达信的“参数调整”窗口左右拖动M观察信号数量变化从而找到适合自己交易周期的版本。4.2 替换板块名与周期时的注意事项把第一个参数改成中证500或创业板指可以观察不同风格指数的情绪但要注意三个前提第一通达信板块列表里必须真实存在该板块名称第二MACD150要对板块内所有股票都能计算如果某些股票上市时间太短、数据不足INSUM可能会把该股剔除或返回空值第三不同板块成分股数量不同均值波动幅度差异很大0.4的偏移量不一定合适改成按SG标准差缩放更稳。常见的做法是用STD(SG,30)计算SG近30天的标准差把绘图偏移量写成0.2*STD(SG,30)SG:INSUM(沪深 300,MACD150,3,0); 偏移:0.2*STD(SG,30); STICKLINE(QD,偏移,SG,2,0),COLORYELLOW; STICKLINE(ZR,偏移,SG,1,0),COLORGREEN; STICKLINE(SGREF(SG,1) AND SG0,0,SG,1,0),COLORRED;这样信号柱的起点会随市场波动自动缩放比固定0.4更通用。但要注意STD需要至少30根K线数据新上市板块或次新股板块会显示空值。4.3 加一个零轴附近的小幅过滤原始公式最大的问题是零轴附近的小扰动也会被当成信号。SG在0.01和-0.01之间波动时只要满足形态条件依然会画出黄柱和绿柱。要过滤这种无意义信号可以在QD和ZR后追加一个幅度判断AmpOk:ABS(SG-REF(SG,1))0.01; // 当日变化幅度过滤 QD:QD AND AmpOk; ZR:ZR AND AmpOk;0.01这个数值要结合SG量级设定。沪深300全成分股平均MACD柱状值平时波动幅度大约在0到1之间取0.01不算过强过滤如果MACD150把输出放大过SG经常在5到10之间波动阈值可以提升到0.3。判断方法是用第2章的DRAWNUMBER打印最近几根SG值取最小有效波动的20%作为阈值。4.4 从市场情绪到个股情绪原指标引用的是板块平均天然不是为个股设计的。如果你想把这个逻辑用在单只股票上不要复制INSUM那一行而是用个股自己的MACD150输出。以长周期MACD为例DIF150:EMA(CLOSE,150)-EMA(CLOSE,300); DEA150:EMA(DIF150,90); SG:2*(DIF150-DEA150),COLORSTICK;这个SG与INSUM返回的SG量纲完全不同但后面的QD、ZR、STICKLINE绘图逻辑可以直接复用。个股版本反映的是该股自身的动能衰竭板块版本反映的是市场层面的情绪扩散。做交易时我一般把它们叠加市场情绪副图给出大盘过滤个股自己的情绪副图给出买卖点两个同时出现信号时再考虑介入。5. 一个实用技巧把QD信号接到条件预警并排查INSUM引用失败5.1 用条件选股公式做预警副图指标只能在图上看到信号不能主动提醒。如果把QD条件抽出来做成条件选股公式就能接到通达信“条件预警”里。新建条件选股公式内容如下SG:INSUM(沪深 300,MACD150,3,0); QD:SG0 AND SGREF(SG,1) AND REF(SG,1)REF(SG,2) AND REF(SG,2)REF(SG,3) AND REF(SG,3)REF(SG,4); FILTER(QD,5); // 触发后5根K线内不再重复FILTER(QD,5)的作用是当QD第一次成立时输出1并把之后5根K线内的信号屏蔽掉。这样预警不会在连续几天满足条件时反复弹出。使用方法是在通达信“功能-预警系统-条件预警设置”中监控品种选择沪深300ETF或沪深300指数预警条件选择刚才创建的公式。每次QD触发时系统会弹窗提示“市场情绪出现空头衰竭点”。注意条件预警依赖行情推送如果通达信没有连接实时行情预警不会在历史K线上补触发。历史信号可以用“选股器-条件选股”一次性筛出来方法与预警相同。5.2 副图文字标注B/S如果你不想开预警可以在副图指标里直接标字符。把第2章的指标末尾追加两行DRAWTEXT(QD,-0.2,B),COLORRED; // 空头衰竭观察点 DRAWTEXT(ZR,0.2,S),COLORGREEN; // 多头衰竭观察点DRAWTEXT(条件,位置,字符串)在条件成立时于指定位置书写字符。副图不像主图有HIGH和LOW坐标只能用SG的取值范围来指定固定位置。B和S分别表示做多观察点和做空观察点复盘时能快速扫描历史上所有黄色和绿色信号。5.3 引用失败时按这个顺序排查几个最常见的失败表现和对应原因副图完全空白第一反应看公式管理器里是否存在MACD150没有就导入或改名板块名带空格或名称不一致INSUM返回空值SG整条线都是无效值此时用DRAWNUMBER(ISLASTBAR,SG,SG)看输出是否为0或空线号错误比如MACD150只有一条输出线参数3会越界通达信通常会在编译阶段报“参数无效”复制源码时中文逗号没换成英文逗号编译报错位置在逗号附近SG量级过大导致STICKLINE绘图位置0.4看起来像一条直线用DRAWNUMBER打印数值确认量级。一旦在预警列表里看到黄色柱信号先看它是否出现在20日均线下方如果指数仍处在长期趋势线上方这个空头衰竭信号的成功率会下降而在深跌之后第一个黄柱出现才是更值得关注的转折观察点。把同样的公式换成个股自己的SG输出后也能把这种预警逻辑移植到个股上只是那时它就代表个股自身动能的衰竭而不是市场整体情绪了。本文还有配套的精品资源点击获取