通达信DMA函数怎么用?动态平滑因子、递推初值与同名指标区别

DMA平滑因子与递推输入的原创示意,非软件截图
原创递推计算示意,非通达信客户端截图。

发布日期:2026年10月15日。搜索DMA源码时,先分清是在调用DMA(X,A)函数,还是打开名称叫DMA的系统或自定义指标。同名不代表同一算法。本篇只解释官方动态移动平均函数,以及平滑因子不合法、初值不同和数值对不上的排查。

适用环境:支持DMA函数的通达信公式编辑环境。依据官方用户红宝书,以下是原创学习代码和递推模型,未做具体客户端实测。不复刻任何付费指标,也不承诺跨版本兼容或交易表现。

一、第二个参数是因子,不是均线周期

官方定义DMA(X,A)的递推式为Y=A×X+(1-A)×Y’,Y’是上一周期输出。官方同时要求A大于0且小于1,并支持变量。不能把DMA(CLOSE,5)理解成五周期均线;5不在这里的合法因子范围内。

SMOOTH:DMA(CLOSE,0.25);

示例选择合法固定因子0.25,表示当期输入占四分之一,上期结果占四分之三。它用于核对定义,不是推荐参数。A=0或A=1也不满足本次官方条目的严格范围要求。

二、明确给出模型初值再递推

为了能手算,先人为设定上一期Y’=10。这个值是教学假设,不是声称客户端按10初始化。接下来对同一组X先用固定因子,再用变化因子比较。

步骤 X A 上一期Y 本期Y
固定1 14 0.25 10 11
固定2 18 0.25 11 12.75
变化1 14 0.25 10 11
变化2 18 0.5 11 14.5

第二步的固定结果为0.25×18+0.75×11=12.75;变化因子结果为0.5×18+0.5×11=14.5。只改变A,返回序列就不同。不能只核对X而忽略逐根变化的A。

三、变量因子先单独检查合法范围

使用比值构造A时,先输出分子、分母和A本身,检查分母是否有效且非零,再确认每一根都满足0<A<1。数据单位不一致、缺失财务数据、比例被当百分数或分母太小,都可能让A超界。

本篇不把异常因子静默裁成0.01或0.99,也不承诺在DMA外套一层IF就一定阻止所有分支计算。若某根因子不合法,应先修正输入定义或明确停用该测试,不让看似平滑的曲线掩盖数据错误。

四、初值和历史范围为什么影响对照

DMA不断引用上期结果,当前值可能携带更早输入及初始化差异。两台电脑加载数据范围不一致,即使最后几根CLOSE和A相同,也不能立即断定计算错误。官方条目本次没有规定这里的客户端初值实现。

对照时记录品种、周期、复权、历史起点和逐根因子,先固定A验证递推,再引入变量因子。比较原创模型必须使用同一个假设初值,不要把模型初值与软件输出混为一谈。

五、DMA函数与同名指标怎么分开

函数调用由DMA(X,A)的输入和递推规则定义;指标名称只是公式管理中的名称,具体输出取决于实际源码。看到另一个指标有三个参数、两条输出,不能据此推断内置DMA函数也接受那三个参数。

需要引用同名指标时,核对实际指标的参数定义、命名输出和依赖公式;需要动态平滑时,核对函数的X和A。不要仅凭搜索结果中的“DMA金叉”或“源码”字样下载来源不明的包,更不要把函数解释当成特定交易策略验证。

来源与相关教程

原始依据:通达信用户红宝书《通达信公式-全部函数.docx》的DMA条目。未实测客户端及变量边界返回值,不作收益承诺。相关阅读:教程中心、EMA与SMA权重比较、财务数据与权限排查、指标名称、输出与参数引用。