通达信MULAR函数怎么用?滚动累乘、比例示例与SUM区别
适用范围:通达信公式学习与滚动数值核对。MULAR对窗口内的X做累乘,官方示例用C/REF(C,1)表示连续价格比值的复合结果。它和SUM的加总完全不同,输入是比值时,单位和边界必须先写清楚。

一、累乘与累加不是一回事
如果序列是2、3、4,SUM得到9,MULAR得到24。SUM把每个值相加,MULAR把每个值相乘。把MULAR的结果当成成交量总和,或把SUM的结果当成复合增长,都会改变问题本身。
| 序列 | SUM | MULAR | 适合表达 |
|---|---|---|---|
| 2、3、4 | 9 | 24 | 加总与连乘的差异 |
| 1.02、0.98、1.05 | 3.05 | 1.04958 | 比例序列的复合示例 |
第二行的1.02、0.98、1.05只是数学样本,不是任何资产的实际收益序列。比例连乘可用于理解复合关系,但不包含费用、滑点、分红、停牌或交易执行。
二、官方用法与窗口参数
X:=CLOSE/REF(CLOSE,1);
M3:MULAR(X,3);
MALL:MULAR(X,0);
RATIOALL:MULAR(CLOSE/REF(CLOSE,1),0);
官方定义为MULAR(X,N),统计N周期中X的乘积;N=0时从第一个有效值开始。M3只看当前窗口,MALL从第一个有效值开始。窗口移动时,旧数据会退出当前窗口,因此M3不是从上市以来的固定累计值。
RATIOALL对应官方给出的思路,但它要求REF(CLOSE,1)在每个位置都有有效输入。最开始的历史根可能没有前一周期收盘,不能先假设所有输出都有效。
三、用四个比值手算
从旧到新取1.02、0.98、1.05、1.01。四项全部累乘为1.02×0.98×1.05×1.01,等于1.0600758。若只取最后三项,则0.98×1.05×1.01,等于1.03929。两个结果不同,原因是N窗口不同。这是对给定数字的独立手算,不是客户端实测输出。
核对时应把序列顺序、窗口起点和小数精度一起保存。先在表格中算出独立结果,再观察公式输出;不要用四舍五入后的显示值继续连乘,否则误差会逐步放大。
四、为什么结果变成零、空值或极大
只要窗口中有0,普通乘积就会变成0;如果输入包含很小的小数,结果可能快速变小;连续大于1的输入会让结果变大。若输入来自CLOSE/REF(CLOSE,1),还要检查前收是否为0、缺失或周期错位。
这类异常不应通过随意加一个常量来“修复”。应分别输出X、REF值和MULAR结果,固定日线或目标周期,记录复权状态与历史数据范围。涉及有效样本时可参考BARSCOUNT;涉及引用对齐时可参考REF。
五、与SUM、SUMBARS的边界
SUM返回窗口内的加总,SUMBARS则向前累加直到达到指定目标并返回周期数。MULAR没有“达到目标就停止”的含义,它只根据N定义的窗口完成乘积。三者都涉及窗口,但返回对象和数学运算不同。
已有SUM滚动求和和SUMBARS累计周期文章可用于对照。本文仅解释累乘,不把示例作为复利策略,也未做客户端未来函数检测。
来源与限制
原始依据:通达信用户红宝书中的MULAR、SUM、SUMBARS、REF和CLOSE条目。数字表和公式为原创数学示例,未做不同版本初始化细节的客户端实测,不承诺输入缺失、复权或特殊品种下的行为一致。
累乘是数值运算示例,不构成收益预测、个股建议或交易系统。




