以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 策略编写求助区 (http://222.73.7.161/bbs/list.asp?boardid=11) ---- 1分钟周期引用3分钟周期的SMA,公式作不出来 (http://222.73.7.161/bbs/dispbbs.asp?boardid=11&id=31086) |
-- 作者:wsslei -- 发布时间:2012/12/3 12:47:58 -- 1分钟周期引用3分钟周期的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 |
-- 作者:fly -- 发布时间: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编辑过]
|
-- 作者:wsslei -- 发布时间: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 -- 发布时间:2012/12/4 13:42:52 -- 给的帖子中,不需要使用全局变量,就可实现.
VARIABLE需要用在逐周期下,你1楼的代码中,还有FOR循环,效率上会打折扣的,推荐放弃1楼使用全局变量的思路
|
-- 作者:wsslei -- 发布时间:2012/12/6 16:21:28 -- 这个已经解决了,一直纠结于用全局变量累计,其实还是逐K算遍来得简单,多谢Fly兄指点,奉上金币,呵呵 |
-- 作者:wsslei -- 发布时间:2012/12/9 21:12:02 -- FLY大哥,再请教下: 我已经改了1分钟周期调用3分钟周期的无未来SMA,代码如下:
INPUT:N(5,2,500); variable:S3[3]=0; Index:=if(mod(barpos,3)=0,3,mod(barpos,3)); For J=Index to Barpos Do begin TSMA1:S3[Index],coloryellow;
但是,策略关系,我用的是逐K模式,然后用如上代码,因为是For循环,所以效率不高,如果图表4000根以上有延迟。 看了半天那个1分钟引用5分钟MA的贴,我琢磨把代码优化下,但没想出办法,原来用全局变量,也是想减少计算量,似乎不行。老师能帮我看看如何优化吗?
|