我的目的就是要写指数均线,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。我不知道你到底有没有放在金字塔里运行过,
否则你也不会连续两次肯定你的做法。
算法特简单:求指数平滑移动平均。
EMA(X,N),求X的N日指数平滑移动平均。算法:若Y=EMA(X,N)
则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。
把第三句改为dma1:=(2*c+(n-1)*dma1)/(N+1);仍然没用。
我还不至于连文档也没读过,连指标如何输出也不会。相反,我已经写了数百行金字塔代码,btw:我是程序员出身。
这段代码已经是简单的不能再简单了,之前轮回告诉我的是指标公式里不能引用自己的前周期值,所以我重新
申明了一个变量DMA1EX:=ref(DMA1,1);然后代入,这样修改以后仍然不行。
我现在很疑惑,金字塔的运行机制到底是什么样的,为何如此简单的计算都会出错?如果是我的代码编写方式有问题,那么
又如何实现这样一个功能?
欢迎admin或者高手指正,呵呵,谢谢
算法特简单:求指数平滑移动平均。
EMA(X,N),求X的N日指数平滑移动平均。算法:若Y=EMA(X,N)
则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。
你要求的就是上面这个么
不是回复过了吗
你上面的写法谁教你的啊?
你抄写都能抄错
用这个,自己试试。注意,请用复制,别抄写,因为你会抄错
以下输出的2条线完全重叠
runmode:0;
variable:dma1=c;
dma1:=(2*c+(n-1)*dma1)/(N+1);
junxian:dma1;
ema20:ema(c,20);
哦,呵呵,不好意思,之前是我看错了,我没看到ref(dma1,1)改为dma1了
这里dma1已经不再是序列变量了,而只是一个全局变量,^_^
谢谢leevolvo
不客气。程序这东西,要细心点。