当前位置: 首页 > news >正文

ema matlab实现,用vba实现EMA函数

CYC是表示取第周期的值, N是EMA函数里的N

Function EMA3(Formula,CYC,N)

Set History=Formula.ParentGrid.GetHistoryData()

Y=History.Close(0)

For i=1 To CYC

Y=(2*History.Close(i)+(N-1)*Y)/(N+1)

Next

Ema3=Y

End Function

如果创建一个自定义函数EMA2

Function EMA2(Formula,N)

EMA2 = EMA3(formula,formula.indexdata,n)

End Function

公式里这些调用测试

aa:ema(close,30);

bb:ema2(30);

与系统EMA结果完全一致

计算:有一组数据(收盘价为):1,2,3,4,5,6,7,求其EMA(c,5)

解答:对应上面数据,X1,X2,X3,X4,X5分别对应3、4、5、6、7

则EMA(c,5)=5/15*X5+4/15*X4+3/15*X3+2/15*X2+1/15*X1=(5*X5+4*X4+3*X3+2*X2+1*X1)/15

=5.67

而,MA(c,5)=(3+4+5+6+7)/5=5

理解公式算法-EMA与MA(理解了公式算法,才能更好的应用公式)

MA和EMA的数学表达式:

1、MA(X,N),求X的N日移动平均值。算法是:

(X1+X2+X3+…..+Xn)/N

例如:MA(C,20)表示20日的平均收盘价。C表示CLOSE。

2、EMA(X,N)求X的N日指数平滑移动平均。算法是:

若Y=EMA(X,N),则Y=[2*X+(N-1)*Y’]/(N+1),其中Y’表示上一周期的Y值。

EMA引用函数在计算机上使用递归算法很容易实现,但不容易理解。例举分析说明EMA函数。

X是变量,每天的X值都不同,从远到近地标记,它们分别记为X1,X2,X3,….,Xn

如果N=1,则EMA(X,1)=[2*X1+(1-1)*Y’]/(1+1)=X1

如果N=2,则EMA(X,2)=[2*X2+(2-1)*Y’]/(2+1)=(2/3)*X2+(1/3)X1

如果N=3,则EMA(X,3)=[2*X3+(3-1)*Y’]/(3+1)=[2*X3+2*((2/3)*X2+(1/3)*X1)]/4=(1/2)*X3+(1/3)*X2+(1/6)*X1=3/6*X3+2/6*X2+1/6*X1

如果N=4,则EMA(X,4)=[2*X4+(4-1)*Y’]/(4+1)=2/5*X4+3/5*((1/2)*X3+(1/3)*X2+(1/6)*X1)=4/10*X4+3/10*X3+2/10*X2+1/10*X1

=2/5*X4+3/10*X3+3/15*X2+3/30*X1

如果N=5,则EMA(X,5)=2/(5+1)*X5+(5-1)/(5+1)(2/5*X4+3/10*X3+3/15*X2+3/30*X1)

=(1/3)*X5+(4/15)*X4+(3/15)*X3+(2/15)*X2+(1/15)*X1=5/15*X5+4/15*X4+3/15*X3+2/15*X2+1/15*X1

…………循环下去吧:)

EMA(X,6)=6/21*X6+5/21*X5+4/21*X4+3/21*X3+2/21*1/21X1

注意到上面我标记的颜色部分,应该发现一个规律:即任何时候系数之和恒为1(如果X是常量,每天的X值都不变,则EMA(X,N)=MA(X,N).),但系数该如何确定呢?这个你还是自己观察一下吧(提示,系数的分母是各个系数分子之和,而系数的个数就是EMA(X,N)中的N,还有一个需要注意的就是系数的分子和系数后参数的下标是一致的)

相关文章:

  • centos上mysql乱码6,centos6.5和centos7.5统一字符集为zh_CN.UTF-8解决系统和MySQL数据库乱码问题...
  • php odbc 中文,ODBC - [ php中文手册 ] - 在线原生手册 - php中文网
  • matlab频率采样法设计FIR滤波器,用频率采样法设计FIR滤波器
  • php 单独验证码可以显示_但调用验证码时无法显示,ThinkPHP(SAE)调用验证码不能正确调用验证码...
  • php中转源码,PHP 转 ASCII
  • php+5+windows,PHP5终极安装——PHP5+IIS5+Windows2000Server
  • php网站目录禁止访问,禁止访问Apache目录
  • php上传打包下载,php在线打包下载
  • 52进制 java,Java实现的26进制转换
  • php自我介绍50字,简短自我介绍50字
  • matlab 添加子图图案,matplotlib给子图添加图例的方法
  • oracle exp exp-00056,ORACLE导出报EXP-00056错误解决办法
  • net网页,连接oracle数据库,.net程序远程连接Oracle数据库
  • 教务管理系统 免费 php,php教务信息发布与管理系统
  • php 多点到线距离,双绞线的通信距离是多少
  • [Vue CLI 3] 配置解析之 css.extract
  • [译] 怎样写一个基础的编译器
  • CODING 缺陷管理功能正式开始公测
  • Java应用性能调优
  • jquery cookie
  • Python进阶细节
  • Vultr 教程目录
  • 阿里云Kubernetes容器服务上体验Knative
  • 京东美团研发面经
  • 聊聊flink的BlobWriter
  • 漂亮刷新控件-iOS
  • 使用agvtool更改app version/build
  • 使用Gradle第一次构建Java程序
  • 数据仓库的几种建模方法
  • 一道闭包题引发的思考
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 积累各种好的链接
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # 飞书APP集成平台-数字化落地
  • ###STL(标准模板库)
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (二)斐波那契Fabonacci函数
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (接口自动化)Python3操作MySQL数据库
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (一) storm的集群安装与配置
  • *p++,*(p++),*++p,(*p)++区别?
  • ./configure,make,make install的作用
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .Net FrameWork总结
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • @Autowired和@Resource的区别
  • @ConfigurationProperties注解对数据的自动封装
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [2016.7.Test1] T1 三进制异或
  • [2021 蓝帽杯] One Pointer PHP