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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件策略编写求助区 → 1分钟周期引用3分钟周期的SMA,公式作不出来

   

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


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

主题:1分钟周期引用3分钟周期的SMA,公式作不出来

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


加好友 发短信
等级:论坛游侠 帖子:260 积分:313 威望:0 精华:0 注册:2012/10/15 23:46:48
1分钟周期引用3分钟周期的SMA,公式作不出来  发帖心情 Post By:2012/12/3 12:47:58 [只看该作者]

当前平台:标准版
主要想法:逐周期运行;1分钟周期引用3分钟周期的SMA(Close,5,1),避免未来数据;完成后,将引用类似的 - 1分钟引用5分,15分。。。日,周SMA数据;

 

问题是现在测试1分钟周期引用3分钟周期时,避免未来数据,写了半天都有问题,发在公式问题区,尽管非常感谢Jinzhi兄的回复,但最终还没有可操作下去的结果。

 

我初步写了点代码,如下,但是有错,我想请教哪位老大能帮忙改下公式:

 

TVar1_LHL:close;

VARIABLE:S3[3]=TVar1_LHL;   //我这里想定义3个全局变量,存N,N+1,N+2的累计值,不过好像不太对,求教 

VAR1:=TVar1_LHL; //序列变量

IF NOT(ISLASTBAR)  THEN EXIT;

If barpos =1 then exit;

FOR J=2 TO DATACOUNT DO BEGIN

  IF Mod(J,3)=2 Then BEGIN

   S3[1]:=(S3[1]*4+ VAR1[J])/5; // 发现VAR1一直是最后一根BARPOS的值,不是Var1[J],请教怎么回事

   TVAR1[J]:3*S3[1],coloryellow;

  END

  IF Mod(J,3)=0 Then BEGIN

   S3[2]:=(S3[2]*4+ VAR1[J])/5;

   TVAR1[J]:3*S3[2],coloryellow;

  END

  IF Mod(J,3)=1 Then BEGIN

   S3[3]:=(S3[3]*4+ VAR1[J])/5;

   TVAR1[J]:3*S3[3],coloryellow; // TAR1无显示,为什么呀

  END

END



查看使用道具详细信息
悬赏金币帖,要悬赏 5 个金币
 回到顶部
帅哥哟,离线,有人找我吗?
fly
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

SMA的原始推算公式为

SMA(C,N,M)= M*C/(N+1)+(N+1-M)*REF(C,1)/(N+1);

 

对应楼主的,可简化为

SMA(C,5,1)= C/6+5*REF(C,1)/6;

 

1分钟下取无未来数据的5分钟MA5均线算法实例http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=15388

参考该帖,原理雷同

 

自己本地尝试一下,有困难继续发帖求助

[此贴子已经被作者于2012-12-4 9:23:55编辑过]


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

客户服务部

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

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

service@weistock.com

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

获得5个金币
 回到顶部
帅哥哟,离线,有人找我吗?
wsslei
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:260 积分:313 威望:0 精华:0 注册:2012/10/15 23:46:48
  发帖心情 Post By:2012/12/4 10:09:30 [只看该作者]

多谢FLY兄的回复。

 

小弟的问题是:那个1分钟引用5分钟的MA小弟研究,也按该思路想写SMA。基于该思路,如果是1分钟引用3分钟,所以3分钟周期下的Ref(close,1)是1分钟周期下的Ref(close,3). 因为SMA是要用全局变量计算累计值的,所以小弟的笨办法是定义3个全局变量分别累计1分钟周期下的N,N+1,N+2笔,这3笔对应3分钟下的1笔。

 

问题是,1分钟引用3分钟如果测试成功后,我还准备在1分钟下引用5分钟,15分钟,120分钟,日,周,这样的话,没办法直接定义若干个全局变量,所以我是想定义全局变量数组的,然后用For循环的。

 

但是我写的那堆代码一直调试得不对,设断点看循环里的数字都没有按我的想法计算。因为我刚练习金字塔,所以想还烦请老师帮忙看看具体代码怎么实现(可以参见原贴的代码),多谢!


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


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2012/12/4 13:42:52 [只看该作者]

给的帖子中,不需要使用全局变量,就可实现.

 

VARIABLE需要用在逐周期下,你1楼的代码中,还有FOR循环,效率上会打折扣的,推荐放弃1楼使用全局变量的思路

 

 



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

客户服务部

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

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

service@weistock.com

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

获得0个金币
 回到顶部
帅哥哟,离线,有人找我吗?
wsslei
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:260 积分:313 威望:0 精华:0 注册:2012/10/15 23:46:48
  发帖心情 Post By:2012/12/6 16:21:28 [只看该作者]

这个已经解决了,一直纠结于用全局变量累计,其实还是逐K算遍来得简单,多谢Fly兄指点,奉上金币,呵呵


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


加好友 发短信
等级:论坛游侠 帖子:260 积分:313 威望:0 精华:0 注册:2012/10/15 23:46:48
  发帖心情 Post By:2012/12/9 21:12:02 [只看该作者]

FLY大哥,再请教下:

我已经改了1分钟周期调用3分钟周期的无未来SMA,代码如下:

 

INPUT:N(5,2,500);

variable:S3[3]=0;
VAR1:=C; Index:=0;
XBarpos:Barpos,linethick0;

Index:=if(mod(barpos,3)=0,3,mod(barpos,3));

For J=Index to Barpos Do begin
  If J=Index then S3[Index]:=VAR1[Index];
  else S3[Index]:=(S3[Index]*4+VAR1[J])/5;
  J:=J+2;
End

TSMA1:S3[Index],coloryellow;

 

但是,策略关系,我用的是逐K模式,然后用如上代码,因为是For循环,所以效率不高,如果图表4000根以上有延迟。

看了半天那个1分钟引用5分钟MA的贴,我琢磨把代码优化下,但没想出办法,原来用全局变量,也是想减少计算量,似乎不行。老师能帮我看看如何优化吗?

 


 回到顶部