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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]MACD混合周期指标函数写法

   

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


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

主题:[求助]MACD混合周期指标函数写法

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


加好友 发短信
等级:新手上路 帖子:51 积分:135 威望:0 精华:0 注册:2010/10/19 19:08:08
[求助]MACD混合周期指标函数写法  发帖心情 Post By:2011/3/4 16:38:51    Post IP:116.231.108.218[只看该作者]

[求助]MACD混合周期指标函数写法

 目标在1分钟K线上记录 “5分钟周期”的每1分钟时候的 MACD值,做历史回归用;

 直接调用跨周期的方法没有用,因为的 5分钟周期的指标最终由其最后的第5分钟最后确定,期间的1到4分钟的值没有体现出来;

 

MACD 的基本算法 

DIFF : EMA(C,12) - EMA(C,26);
DEA  :EMA(DIFF,9);
MACD : 2*(DIFF-DEA), COLORSTICK;

 

算法实现的原理上 把第1个C数据用本 分钟的,后面的数据 是5分钟周期的历史数据;

 

算法不难,但是在金字塔里面如何实现?

求助 版主和各位高手 给个 函数 ,VBA的也行;

 


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


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2011/3/4 17:18:03    Post IP:58.246.57.26[只看该作者]

if MINUTE%5=0 then
   begin


   i:=STKINDI('','macd.diff' ,0 ,1 ,-1 );//5分钟的第一分钟,使用一分钟周期的MACD.diff的数据

   //也可写成,同样也是本周期--1分钟周期的数据   i:="macd.diff";


   end
else
   begin
   j:=STKINDI('','macd.diff' ,0 ,2 ,-1 );//后面4分钟,引用5分钟周期的历史数据
   end



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

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

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

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


加好友 发短信 大哥
等级:超级版主 帖子:2837 积分:13237 威望:0 精华:2 注册:2010/7/14 17:31:54
  发帖心情 Post By:2011/3/4 17:18:05    Post IP:58.246.57.26[只看该作者]

看你写的貌似是要引用本周期之后的四个周期的数据 对么?

你可以看看REFX这个函数

但是你这相当于引用了未来的数据,请注意规避风险!



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

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

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

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


加好友 发短信
等级:新手上路 帖子:51 积分:135 威望:0 精华:0 注册:2010/10/19 19:08:08
  发帖心情 Post By:2011/3/5 10:02:48    Post IP:121.232.38.240[只看该作者]

回复FLY:

  还是没有解决问题,因为 5分钟周期 引用的历史数据是 和 1分钟周期引用的历史数据是不同的

例如: DIFF : EMA(C,12) - EMA(C,26)  中 的 EMA(C,12)

 

对于 1分钟周期,C数据 引用的是  C(1,1),C(1,2) ,C(1,3) ..... C(1,12) ; 

对于 5分钟周期,C数据 引用的是  C(5,1),C(5,2) ,C(5,3) ..... C(5,12) ;

其中  第5分钟末  C(5,1)=C(1,5);

 

现在: 在1分钟中 引用 5分钟 ,

    第1分钟 是  C(1,1), C(5,2) ,C(5,3) ..... C(5,12) ; 因为 C(5,1)还没有形成 用C(1,1)代替

    第2分钟 是  C(1,2), C(5,2) ,C(5,3) ..... C(5,12) ; 因为 C(5,1)还没有形成 用C(1,2)代替

    第3分钟 是  C(1,3), C(5,2) ,C(5,3) ..... C(5,12) ; 因为 C(5,1)还没有形成 用C(1,3)代替

    第4分钟 是  C(1,4), C(5,2) ,C(5,3) ..... C(5,12) ; 因为 C(5,1)还没有形成 用C(1,4)代替

    第5分钟 是  C(5,1), C(5,2) ,C(5,3) ..... C(5,12) ; 此时 C(5,1)=C(1,5)

 

现在直接引用,在当时的每1分钟,5分钟的每个数据都是确定的,但是前 4分钟无法记录,历史的图上根本看不到,无法用于历史回归;

 

 

 

 

 

 


   

 

 

[此贴子已经被作者于2011-3-5 10:09:46编辑过]

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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/3/5 10:11:27    Post IP:58.22.135.241[只看该作者]

要把原来的macd稍微修改一下,加入ema12:ema(c,12); ema26:ema(c,26);用于被引用,这样就可以了

[此贴子已经被作者于2011-3-5 10:27:20编辑过]

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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/3/5 10:26:54    Post IP:58.22.135.241[只看该作者]

完整代码如下:

ema1:=stkindi(stklabel,'macd.ema12',0,2,-1);
ema2:=stkindi(stklabel,'macd.ema26',0,2,-1);
ema12:=ema1*11/13+c*2/13;
ema26:=ema2*25/27+c*2/27;
diff:ema12-ema26;
dea1:=stkindi(stklabel,'macd.dea',0,2,-1);
dea:dea1*4/5+diff/5;
macd:2*(DIFF-DEA), COLORSTICK;


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


加好友 发短信
等级:新手上路 帖子:51 积分:135 威望:0 精华:0 注册:2010/10/19 19:08:08
  发帖心情 Post By:2011/3/5 12:05:30    Post IP:121.232.38.240[只看该作者]

谢谢  上面各位,已经可以用了


 回到顶部