通信达公式函数全解析:行情、引用、筹码与实战监控模板 简介这份文档系统梳理了通信达公式中各类核心参数与函数涵盖行情数据获取、时间周期判断和数据处理引用三大模块适合刚刚接触公式编写、希望快速理解函数用法的技术分析初学者也可作为已有用户日常查阅的参数速查手册。包体为1个doc文件压缩包仅52KB内容精炼集中便于按需检索。目前已有41人浏览学习。文档以HIGH、LOW、CLOSE、VOL等行情函数为切入点逐一说明最高价、最低价、收盘价、成交量、买卖盘及主动性买卖单的调用方式随后介绍DATE、TIME、FROMOPEN等时间函数帮助定位分析周期内的日期与开盘时长引用函数部分则重点讲解DRAWNULL、BACKSET、BARSCOUNT、REF、SUM等在使用中极易混淆的语句并给出具体用法示例。整体结构按函数类别展开便于对照练习能帮助读者在编写和修改公式时快速查找参数、避开常见错误从而提升行情分析与策略验证效率。1. 通信达公式参数体系一份函数手册背后的分析逻辑通信达公式系统的函数手册看起来只是罗列了 HIGH、CLOSE、VOL 这类取数函数和 MA、REF 这类计算函数实际上它定义了一套完整的分析语言。行情函数解决数据从哪来时间函数解决数据落在哪个刻度引用函数解决如何跨周期取数而形态函数和筹码函数则直接关系到买卖点的刻画。很多人在公式编辑器里报错往往不是语法问题而是没弄懂函数的有效周期和返回值的边界条件比如 ASKPRICE 只在分笔成交周期有效COST 和 WINNER 只对日线有效。这篇内容把这些函数按类别拆开配合可复现的代码片段适合正在搭建选股公式或技术指标的交易系统开发者对照查阅。2. 行情函数与时间函数数据源头的取值边界2.1 行情函数返回值与周期约束通信达公式的行情函数分两类。第一类是常规 K 线数据包括 HIGH、LOW、CLOSE、VOL、OPEN、AMOUNT它们在任何分析周期下都有意义返回值就是当前周期的最高价、最低价、收盘价、成交量、开盘价和成交额。第二类是盘口和逐笔数据包括 ASKPRICE、BIDPRICE、ASKVOL、BIDVOL、BUYVOL、SELLVOL、ISBUYORDER这类函数只能在分笔成交周期使用而且只对个股有效。新手最容易犯的错误是在日线周期上直接写 ASKPRICE(1)系统会返回无效数据因为日线上根本不存在委买委卖的快照。函数含义有效周期典型用法HIGH / LOW最高价 / 最低价全部突破 N 日高点HIGHHHV(HIGH,N)CLOSE / OPEN收盘价 / 开盘价全部收阳判断CLOSEOPENVOL / AMOUNT成交量 / 成交额全部量能放大VOLREF(VOL,1)ASKPRICE(N)委卖价 N1~3分笔成交盘口压力位判断BIDPRICE(N)委买价 N1~3分笔成交盘口支撑位判断BUYVOL / SELLVOL主动买盘 / 主动卖盘分笔成交资金主动性统计ISBUYORDER是否主动性买单分笔成交逐笔成交性质判定ADVANCE / DECLINE上涨家数 / 下跌家数仅大盘市场宽度判断这里要特别说明 BUYVOL 和 SELLVOL 的语义。BUYVOL 返回的是主动性买单量它只在当前成交是主动买盘时等于成交量否则为 0。所以统计一段时间的主力买入力度不能直接对 BUYVOL 做简单平均而应该用SUM(BUYVOL,N)/SUM(VOL,N)计算主动买盘占总成交的比例。ISBUYORDER 返回值是 0 或 1配合 COUNT 函数可以统计 N 笔成交中有多少笔是主动买入这在分析尾盘资金动向时很实用。2.2 时间函数周期刻度与开盘锚点时间函数提供了分析周期的时间戳信息。DATE 返回的是从 1900 年以来的年月日格式是 YYYYMMDDTIME 返回时分秒格式是 HHMMSSYEAR、MONTH、WEEK、DAY、HOUR、MINUTE 则是拆开的字段。需要注意 WEEK 的返回值范围是 0 到 6其中 0 表示星期天这和许多编程语言中周一为 0 的约定不同。FROMOPEN 返回当前时刻距开盘的分钟数单位是分钟。如果早盘 9 点 30 分开盘到 10 点时 FROMOPEN 返回 31因为已经过了 31 分钟。实际写公式时我经常用它做盘中时间过滤{ 只在开盘后30分钟到收盘前30分钟之间生效 } CK:FROMOPEN30 AND FROMOPEN210; SIG:CLOSEREF(CLOSE,1) AND CK; FILTER(SIG,5);这段公式的逻辑是先计算 CK 作为时间窗口条件FROMOPEN 大于等于 30 表示开盘半小时后小于等于 210 表示下午 14 点 30 分前然后要求当前收盘价大于昨日收盘价并且满足时间窗口条件才算有效信号。最后的 FILTER 函数把 5 个周期内重复出现的信号过滤掉避免同一个信号在短时间内反复触发。HOUR 和 MINUTE 在日线及更长周期上返回 0这一点常被忽视。如果你在日线公式里用HOUR10做盘中时段过滤结果永远是假。正确的做法是把周期判断和时间判断分开用 DATATYPE 或直接在分钟周期上运行公式而不是依赖时间函数去做周期筛选。3. 引用函数与移动平均族指标计算的骨架与平滑差异3.1 引用函数REF、BARSLAST、COUNT、SUM 的语义边界引用函数是通信达公式的核心它们负责在时间轴上前后移动取值或者对历史区间做统计。REF(X,A) 引用 A 周期前的 X 值A 必须是常数不能是变量这是很多人的报错来源。BARSLAST(X) 返回上一次 X 条件成立到当前的周期数注意它返回的是距离不是位置本身。COUNT(X,N) 统计 N 周期内满足 X 条件的周期数N0 时从第一个有效值开始统计。这个函数在选股公式里出场率极高比如统计 20 日内阳线数量可以判断多头强度。HHV(X,N) 和 LLV(X,N) 分别求 N 周期内的最高值和最低值配合 BARSLAST 可以找到突破位置。{ 放量突破20日高点后的回踩确认 } N:20; NEWHIGH:HIGHHHV(HIGH,N) AND VOLREF(VOL,1)*1.5; PULLBACK:BARSLAST(NEWHIGH)1 AND BARSLAST(NEWHIGH)5; CONFIRM:CLOSEMA(CLOSE,5) AND VOLREF(VOL,1); SEL:PULLBACK AND CONFIRM;这段公式的思路是先定义 NEWHIGH要求当前最高价创 20 日新高且成交量放大到昨日的 1.5 倍以上这是突破信号然后通过 BARSLAST 计算突破发生的天数要求突破发生在 1 到 5 天之前最后要求收盘价站上 5 日均线且量能较昨日萎缩形成回踩确认。BARSLAST 在这里的关键作用是约束突破后第几天避免把太久远的突破也纳入筛选。SUMBARS(X,A) 是向前累加直到大于等于 A 并返回周期数它常用于计算换手达标所需的时间。比如SUMBARS(VOL,CAPITAL)表示成交量累加到流通股本所需的周期数也就是完全换手一次需要的天数。这个值越小说明近期交投越活跃。FILTER(X,N) 过滤连续信号它删除 X 满足条件后 N 周期内的重复数据这一点和 COUNT 配合使用时要注意先后顺序。3.2 移动平均家族六种均线别再混用通信达里的移动平均函数有 6 个MA、SMA、DMA、EMA、MEMA、EXPMEMA。很多进阶用户在这组函数上翻车因为它们的迭代公式和起始值处理完全不同。函数计算方式关键差异MA(X,M)简单移动平均等权平均每个周期权重相同EMA(X,M)指数移动平均权重按时间递减起始值为首个有效值MEMA(X,M)平滑移动平均起始值为平滑值非首个有效值EXPMEMA(X,M)指数平滑移动平均起始值为平滑值其余同 EMASMA(X,N,M)加权移动平均M 为权重迭代公式 Y(XMY(N-M))/NDMA(X,A)动态移动平均平滑因子 A 可动态变化A 必须小于 1对交易系统开发来说SMA 和 DMA 最值得关注。SMA 的公式是 Y(XMY(N-M))/N其中 Y 是上一周期的 Y 值。当 M1 时它退化为 EMA当 MN/2 时表现介于 MA 和 EMA 之间。DMA(X,A) 的平滑因子 A 可以是一个动态表达式比如DMA(CLOSE,VOL/CAPITAL)就是用换手率作为平滑因子换手率高的日子权重自然放大这在分析筹码活跃度时比固定参数均线更贴近市场状态。{ 用DMA构建成交量加权的价格均线 } WC:DMA(CLOSE,VOL/REF(VOL,1)); MA5:MA(CLOSE,5); UP:WCMA5 AND CLOSEWC; DRAWICON(UP,LOW,1);这段代码里DMA 的平滑因子是 VOL/REF(VOL,1)也就是当日成交量与昨日成交量的比值。当放量时这个因子大价格均值会更快地贴近当日的成交密集区缩量时变化平缓。用 DMA 均线上穿 MA5 作为买入信号本质上是捕捉量价同步的状态。DMA 要求 A 小于 1如果 VOL/REF(VOL,1) 大于 1公式会自动处理但如果你直接把一个超过 1 的常数传给 DMA就会报参数错误。4. 逻辑函数与数学函数买卖信号的判定引擎4.1 逻辑函数CROSS、EXIST、EVERY、LAST 的节奏控制逻辑函数负责把数值比较转换成布尔信号再组合成交易条件。CROSS(A,B) 表示 A 从下方向上穿过 B 时返回 1方向敏感A 从上向下穿过 B 不会触发。LONGCROSS(A,B,N) 增加了约束A 在 N 周期内一直小于 B本周期才向上穿过这用来过滤震荡行情里的假金叉。EXIST(X,N) 检查 N 周期内是否存在至少一次 X 为真EVERY(X,N) 检查 N 周期内 X 是否一直为真LAST(X,A,B) 检查从 A 日前到 B 日前 X 是否持续成立。这三个函数的区别在于时间窗口的形态EXIST 是存在即可EVERY 是全程满足LAST 是指定区间内全程满足。{ 连续3日缩量收阳后的放量突破 } SHRINK:VOLREF(VOL,1) AND CLOSEOPEN; COND1:EVERY(SHRINK,3); COND2:COUNT(SHRINK,5)4; BREAKOUT:CLOSEHHV(HIGH,10) AND VOLREF(VOL,1)*2; SEL:COND1 AND COND2 AND BREAKOUT;这段公式的 COND1 用 EVERY 要求最近 3 日都是缩量收阳COND2 用 COUNT 统计 5 日内至少有 4 天满足缩量收阳两个条件叠加强化了连续强势整理的状态。最后用 CLOSE 突破 10 日最高点且成交量翻倍作为启动信号。实际回测时你会发现COND2 是 COND1 的松弛版本两者并用可以在保证信号质量的同时兼顾宽容度这种严格松弛的双条件写法是避免过拟合的常用手段。4.2 算术与数学函数IF、IFF、IFN 的分工与舍入陷阱IF(X,A,B) 在 X 不为 0 时返回 A否则返回 B。IFF 和 IFN 功能类似但参数顺序和习惯相反IFF(X,A,B) 与 IF 完全一致IFN(X,A,B) 在 X 不为 0 时返回 B否则返回 A。用 IFN 可以写出更直观的逆条件表达式。MAX 和 MIN 求较大值和较小值常用于截断亏损或限制波动范围。{ 用IF和BETWEEN做趋势状态分类 } UP:CLOSEMA(CLOSE,10); MID:BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5)); DOWN:CLOSEMA(CLOSE,10); STATE:IF(UP,1,IF(MID,0,-1)); DRAWTEXT(STATE1,LOW,多头); DRAWTEXT(STATE-1,HIGH,空头);这段代码用嵌套的 IF 做三态分类结果 STATE 为 1 表示收盘价在 10 日均线上方为 -1 表示在下方为 0 表示夹在 5 日和 10 日均线之间。DRAWTEXT 在最低价位置写多头、在最高价位置写空头这样图表上可以直接看到状态切换点。需要说明的是IF 对每个周期都会计算 A 和 B 两个分支如果分支里有复杂的计算公式运行效率会下降这时候可以用线性的表达方式替代。数学函数里最容易出错的是三个舍入函数。CEILING(A) 沿数值增大方向取整CEILING(-3.5) 返回 -3FLOOR(A) 沿数值减小方向取整FLOOR(-3.5) 返回 -4INTPART(A) 沿绝对值减小方向取整INTPART(-3.5) 返回 -3。如果你用 INTPART 做价格整数化处理负数价格场景下会和预期不一致。POW(A,B) 返回 A 的 B 次幂SQRT 是开平方LN 是自然对数LOG 是 10 为底的对数对数变换常用于处理持续时间跨度大的数据。4.3 统计函数STD、VAR、SLOPE 的实战意义统计函数在量化公式里常被用来衡量波动率和趋势强度。STD(X,N) 返回估算标准差STDP(X,N) 返回总体标准差两者的区别在于除数分别是 N-1 和 N。VAR 和 VARP 对应方差。SLOPE(X,N) 返回线性回归斜率FORCAST(X,N) 返回线性回归预测值。{ 用布林带宽衡量波动状态 } MID:MA(CLOSE,20); STDV:STD(CLOSE,20); UPPER:MID2*STDV; LOWER:MID-2*STDV; BANDWIDTH:(UPPER-LOWER)/MID*100; NARROW:BANDWIDTHREF(LLV(BANDWIDTH,60),1);布林带宽是 UPPER 减 LOWER 除以 MID 的百分比反映价格波动幅度的相对水平。NARROW 判断当日的带宽小于过去 60 日的最低带宽意味着波动率压缩到极致通常是大级别行情的酝酿阶段。用 STDP 代替 STD 会让带宽整体偏小但形态差异不大关键是同一套参数下保持一致性不要混用。5. 形态函数、筹码函数与绘图函数从 ZIG 到成本分布的分析闭环5.1 形态函数ZIG、SAR、PEAK 与 TROUGH 的参数语义ZIG(K,N) 是之字转向函数当价格变化量超过 N% 时发生转向K 的取值决定使用哪个价格0 表示开盘价1 表示最高价2 表示最低价3 表示收盘价。PEAK(K,N,M) 返回前 M 个 ZIG 转向波峰的数值TROUGH(K,N,M) 返回波谷数值PEAKBARS 和 TROUGHBARS 返回波峰波谷到当前的周期数。{ 利用ZIG识别最近一个波峰和波谷 } ZP:ZIG(3,10); LASTPEAK:PEAK(3,10,1); LASTTROUGH:TROUGH(3,10,1); PEAKGAP:BARSLAST(ZPLASTPEAK); TROUGHGAP:BARSLAST(ZPLASTTROUGH); RATIO:(LASTPEAK-LASTTROUGH)/LASTTROUGH*100;这段公式用 ZIG(3,10) 计算收盘价的 10% 之字转向PEAK 取得最近一个波峰值TROUGH 取得最近一个波谷值然后计算两者之间的振幅 RATIO。实际使用中要注意 ZIG 函数有未来函数的特性它在当前周期可能引用后续周期的数据来确认转向所以不能用 ZIG 直接做历史回测的信号源只能用于形态标注和可视化参考。SAR(N,S,M) 是抛物转向系统N 为计算周期S 为步长M 为极值。SAR(10,2,20) 表示计算 10 日抛物转向步长 2%极限值 20%。SARTURN 返回转向信号向上转向返回 1向下转向返回 -1否则为 0。SAR 的优点是参数少且趋势跟踪能力强缺点是横盘震荡时会被反复打脸。5.2 筹码函数COST、WINNER 的日线限制筹码分布函数是通信达公式的特色功能。COST(10) 表示 10% 获利盘的价格即有 10% 的持仓量在该价格以下。WINNER(CLOSE) 表示以当前收盘价卖出的获利盘比例。这两个函数都只对日线分析周期有效在分钟周期上调用会返回空值。LWINNER(5,CLOSE) 表示最近 5 天买入的成本中以当前收盘价卖出的获利盘比例PWINNER(5,CLOSE) 对应 5 天前的获利比例两者对比可以观察近期筹码的盈利状态变化。{ 获利盘90%以上的高位风险提示 } P90:COST(90); P10:COST(10); WIN:WINNER(CLOSE); RISK:WIN0.9 AND CLOSEP90; DRAWTEXT(RISK,HIGH,高位);这段代码先计算 90% 成本线和 10% 成本线然后判断获利盘比例是否超过 90% 且收盘价高于 90% 成本线。当市场处于这种状态时绝大多数持仓者都处于盈利状态一旦价格回调获利盘涌出的压力会显著放大。筹码函数在日线上的数据精度取决于行情软件的筹码模型估算方式实际应用中应该把它和成交量、换手率结合起来做交叉验证。5.3 绘图函数与财务、横向统计的组合绘图函数负责把计算结果可视化。STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY) 画柱线WIDTH 是宽度系数10 为标准间距EMPTY 不为 0 时画空心柱。DRAWICON(COND,PRICE,TYPE) 在指定位置画图标TYPE 取值范围 1 到 9不同数字对应不同图形。DRAWKLINE(HIGH,OPEN,LOW,CLOSE) 绘制自定义 K 线这在处理复权数据或合成数据时很实用。PLOYLINE(COND,PRICE) 在条件满足时以 PRICE 为顶点画折线它和 DRAWLINE 的区别在于 PLOYLINE 是连续折线DRAWLINE 是两点连线且可以向右延长。财务函数通过 FINANCE(N) 取数N 从 1 到 42覆盖总股本、流通股本、总资产、每股收益、每股净资产、上市日期等字段。横向统计函数 HORCALC 可以对一个板块内的所有股票做统计数据项中 100 到 105 分别对应最高价、开盘价、最低价、收盘价、成交量和涨幅计算方式有累加和排名两种权重参数可以选择总股本、流通股本、等权或流通市值。{ 计算板块内个股涨幅排名 } RK:HORCALC(沪深A股,105,1,2); RANK10:RK10 AND DYNAINFO(14)3;这段公式里 HORCALC 对沪深 A 股板块计算涨幅排名计算方式 1 表示排名次权重 2 表示等同权重返回的是个股涨幅在板块内的名次。RANK10 筛选出排名前 10 且当日涨幅超过 3% 的个股。DYNAINFO(14) 返回实时涨幅这个函数属于动态行情函数只在实时行情下有效历史回测中不会有数据这是使用横向统计和动态行情函数时需要注意的最大差异。6. 实战把通信达公式缝成一套可复用的量价监控表达式把前面各类函数组合起来的实际价值是减少重复劳动。我习惯先搭一个基础框架把行情、时间、引用、逻辑、绘图函数分层放好后面换股票池或换周期时只需要改参数区。{ 量价突破回踩监控可复用模板 } N:INPUT(20,5,60,5); { 突破周期 } M:INPUT(5,3,20,1); { 回踩均线 } VOLR:INPUT(1.5,1,3,0.1); { 放量倍数 } NEWHIGH:HIGHHHV(HIGH,N) AND VOLREF(VOL,1)*VOLR; PULLBACK:BARSLAST(NEWHIGH)1 AND BARSLAST(NEWHIGH)N/4; CONFIRM:CLOSEMA(CLOSE,M) AND VOLREF(VOL,1); SEL:PULLBACK AND CONFIRM; STICKLINE(SEL,LOW,LOW*0.98,1,0),COLORRED; DRAWTEXT(SEL,LOW*0.97,确认),COLORRED;这个模板的 INVENTORY 设计思路是把所有可变参数集中在公式头部N 是突破周期M 是均线周期VOLR 是放量倍数通过 INPUT 函数暴露在参数设置界面不用修改代码就能做参数敏感性测试。SEL 是最终的选股结果条件拆成三步突破、回踩、缩量确认。STICKLINE 在最低价下方画红色柱线做视觉标记DRAWTEXT 书写确认文字。在使用时切换到不同周期日线上的 BARSLAST 阈值和分钟线上会完全不同分笔周期上无法使用 HHV 这类跨周期统计函数。公式编辑器常见的报错集中在三类引用函数参数写成变量导致无法计算、周期适用范围不符导致返回空值、IF 分支嵌套过深导致运行效率下降。用这类模板公式的错误提示定位问题时先看报错指向的函数再用排除法把该函数替换成常量测试。比如 HHV 报参数错误时检查 N 是否为数字而不是 CLOSE 之类的序列COST 报错时确认当前周期是否切回日线。把函数手册当作参数字典来查而不是死记硬背这本来就是对一份参考文档最正确的打开方式。本文还有配套的精品资源点击获取