欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 非连续求EMA问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2198人关注过本帖树形打印复制链接

主题:非连续求EMA问题

帅哥哟,离线,有人找我吗?
xscaler
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:176 积分:0 威望:0 精华:0 注册:2016/5/30 13:51:00
非连续求EMA问题  发帖心情 Post By:2017/2/8 9:15:00    Post IP:114.242.249.66[只看该作者]

举个例子,在5分钟K周期中,当最高价高于门限X时,将这个最高价存入数组M[],然后对数组M求3周期EMA。

例如,K线从第1根到第10根的最高价分别为 1,8,6,5,7,9,2,3,3,8,门限是6,那么M数组的情况应该是这样的

第1根K结束,M为空;求EMA应该为0;

第2根K结束,M为{8},求EMA(M,3)应该为8;

第3根K结束,M为{8},求EMA(M,3)应该与第2根K的值一样;

第4根K结束,M为{8},求EMA(M,3)应该与第2根K的值一样;

第5根K结束,M为{8,7},求EMA(M,3),应该和第4根K的值不一样;

第6根K结束,M为{8,7,9},求EMA(M,3),应该和第5根K的值不一样;

第7~9根K结束,M依然为{8,7,9},求EMA(M,3),应该和第6根K的值一样;

第10根K结束,M变为{8,7,9,8},求EMA(M,3),应该和第6根K的值不一样;

 

现在的问题是,在代码中求出来的EMA(M,3),每根K都不一样,比如第2~4根K,数组M没变化过,求出来的值应该相同,第7~9根K,数组M也没变化过,求出来的值也应该相同。但实际运行结果是都不同的。

如果是求MA,结果就对了,但是求EMA就是不对。

我理解是不是因为EMA用了递归算法,导致每求一次,权重都在变化,因此导致结果变化。

有没有什么办法,可以达到数组M不变的情况下,求出来的EMA值不变化?


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2017/2/8 9:21:10    Post IP:180.169.30.6[只看该作者]

EMA(X,N),求X的N日指数平滑移动平均。算法:若Y=EMA(X,N)
则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。

这个是ema的算法,带入你的y:=ema(m,3)就是:

y:=(2*m+y')/3;

 

算法决定了只有n等于1的情况下,也就是ema(m,1),你讲的情况才会出现



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
xscaler
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:176 积分:0 威望:0 精华:0 注册:2016/5/30 13:51:00
  发帖心情 Post By:2017/2/8 9:33:39    Post IP:114.242.249.66[只看该作者]

那能不能这样,只有数组M发生变化的情况下,才求EMA。金字塔不允许在IF语句里面有EMA,这个很闹心啊,有什么办法没有?

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2017/2/8 9:53:10    Post IP:180.169.30.6[只看该作者]

y:=ema(m,3);

if 数组m发生变化 then yy:=y;

if里面算ema就是这样算



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
xscaler
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:176 积分:0 威望:0 精华:0 注册:2016/5/30 13:51:00
  发帖心情 Post By:2017/2/8 13:02:28    Post IP:114.242.249.231[只看该作者]

这样解决不了问题啊

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2017/2/8 13:20:11    Post IP:180.169.30.6[只看该作者]

你的要求对于ema函数而言本来就实现不了,上面的折中算法还不行的话,那也没办法了



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部