以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 严重的问题!关于序列变量引用上周期值的错误,admin和leevolvo请进 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=9560) |
-- 作者:antonyxu99 -- 发布时间:2012/1/2 13:34:32 -- 严重的问题!关于序列变量引用上周期值的错误,admin和leevolvo请进 我的目的就是要写指数均线,sar抛物转向线,自适应均线等指标,我相信这样的技术不是一个落后或者过时的技术, 而是一种非常有效的技术;我这里只是以指数均线这个最简单的为例。 为什么要自己写:尽管金字塔已经提供了EMA, SAR,MD等函数,但是有很多特殊情况需要在原有的线上进行修正,比如跳空时, 我要修正此均线的位置,因此金字塔原有的函数不能适用。 所以请不要质疑我的目的性,我做的是一件非常有价值的事情;如果你质疑我的代码的写法,欢迎指正,谢谢 这些所有的线,共同特点都是,基于本指标的前周期值,进行计算,得到当前周期的值。 因此我就从写最简单的指数均线开始: N:=20; //20周期均线 variable:DMA1:=Close; DMA1:=if(barpos=1,C,(2*C+(N-1)*ref(DMA1,1))/(N+1)); 指数均线:DMA1;
leevolvo,这个写法,按照你的方法修改了,加了variable,但是写成“交易系统”仍然没有输出, 写成“技术指标”尽管有输出,但是值完全不对,根本不是一条均线,这个线正确结果应该是和指标里的EXPMA里的20日均线 完全一样,算法参考EMA的算法,EXPMA里用的就是EMA。我不知道你到底有没有放在金字塔里运行过, 否则你也不会连续两次肯定你的做法。 算法特简单:求指数平滑移动平均。
把第三句改为dma1:=(2*c+(n-1)*dma1)/(N+1);仍然没用。 我还不至于连文档也没读过,连指标如何输出也不会。相反,我已经写了数百行金字塔代码,btw:我是程序员出身。
这段代码已经是简单的不能再简单了,之前轮回告诉我的是指标公式里不能引用自己的前周期值,所以我重新 申明了一个变量DMA1EX:=ref(DMA1,1);然后代入,这样修改以后仍然不行。 我现在很疑惑,金字塔的运行机制到底是什么样的,为何如此简单的计算都会出错?如果是我的代码编写方式有问题,那么 又如何实现这样一个功能? 欢迎admin或者高手指正,呵呵,谢谢
[此贴子已经被作者于2012-1-2 13:38:32编辑过]
|
-- 作者:antonyxu99 -- 发布时间:2012/1/2 13:39:14 -- 对了,我这里另外开一个贴,是因为之前那个贴翻页翻不了了,呵呵,不知道啥原因,见谅 |
-- 作者:王锋 -- 发布时间:2012/1/2 14:58:35 -- 算法特简单:求指数平滑移动平均。
你要求的就是上面这个么
|
-- 作者:阿火 -- 发布时间:2012/1/2 16:29:35 -- 不是回复过了吗 你上面的写法谁教你的啊? 你抄写都能抄错
用这个,自己试试。注意,请用复制,别抄写,因为你会抄错 以下输出的2条线完全重叠 runmode:0; variable:dma1=c; dma1:=(2*c+(n-1)*dma1)/(N+1); junxian:dma1; ema20:ema(c,20); [此贴子已经被作者于2012-1-2 16:33:30编辑过]
|
-- 作者:antonyxu99 -- 发布时间:2012/1/3 15:30:10 -- 哦,呵呵,不好意思,之前是我看错了,我没看到ref(dma1,1)改为dma1了 这里dma1已经不再是序列变量了,而只是一个全局变量,^_^ 谢谢leevolvo |
-- 作者:阿火 -- 发布时间:2012/1/3 19:51:18 -- 不客气。程序这东西,要细心点。 |
-- 作者:王锋 -- 发布时间:2012/1/3 22:53:14 -- 金字塔不是提供了很强大的调试功能嘛,要多学习利用好! |