AA:=CONSTANT*CLOSE +(1-CONSTANT)*昨天的AA;
请问这个该怎么表达?其中CONSTANT是一个平滑系数;如果要一个初始值的话。那就从第20根k线开始,初始值等于第二十根k线的CLOSE;
你是要处理这个初始值AA没有定义的问题是吧、
[此贴子已经被作者于2019/4/17 13:29:58编辑过]
嗯,这里应该要用上循环语句吧?想要得到整个结果。也就是当前的AA。不好意思,刚刚才看到。
VARIABLE:A:=0;
CONSTANT:=2;//这个变量自行定义
if BARPOS=1 then A:=c;//初始值
A:=if(BARPOS>1,CONSTANT*CLOSE +(1-CONSTANT)*REF(A,1),A);//这里是处理 第一个K的初始化以及后续值计算的逻辑
a_show:a,NODRAW;//最后结果输出
不需要循环,需要用到全局变量就行了。
这里的初始值是从第一个K开始,你如果要调整就修改这里的代码。
if BARPOS=1 then A:=c;//初始值
找到一个连接。实际上就是想实现这里面的这条均线。
为了方便翻译,我把前面部分代码写了一下。
input:p(16,2,1000,2);
n1:=(ref(hhv(h,p/2),p/2)-ref(llv(l,p/2),p/2))/(p/2);
n2:=(hhv(h,p/2)-llv(l,p/2))/(p/2);
n3:=(hhv(h,p)-llv(l,p))/p;
D:=(Log(n1+n2)-Log(n3))/Log(2);
α:=EXP(-4.6*(D-1));
//FRAMA=α*Price +(1-α)*昨天的FRAMA
就是最后这句,我参考考夫曼的写法。能拼凑出类似的均线。整体效果如下。但是毕竟不是这样的写法。
input:p(16,2,1000,2);
n1:=(ref(hhv(h,p/2),p/2)-ref(llv(l,p/2),p/2))/(p/2);
n2:=(hhv(h,p/2)-llv(l,p/2))/(p/2);
n3:=(hhv(h,p)-llv(l,p))/p;
D:=(Log(n1+n2)-Log(n3))/Log(2);
α:=EXP(-4.6*(D-1));
//FRAMA=α*Price +(1-α)*昨天的FRAMA
CC:=CLOSE;
IF DATACOUNT > p THEN
DD[p]:=CC[(p + 1)];
FOR I=p + 1 to DATACOUNT DO
DD[I]:=(DD[(I - 1)] + (α[I] * (CC[I] - DD[(I - 1)])));
FRAMA:(DD),LINETHICK2;
为了方便理解,再附另外一个连接和代码。最后的这个连接和代码。我也不会这里面的语言。但是整体上大概能理解这上面的意思。
N1(i) = N(Length,i)
N2(i) = N(Length,i + Length)
N3(i) = N(2 * Length,i)
D = (LOG(N1 + N2) - LOG(N3))/LOG(2)
A(i) = EXP(-4.6 * (D(i) - 1))
FRAMA(i) = A(i) * Price(i) + (1 - A(i)) * FRAMA(i-1)
麻烦你了,非常感谢。
你这个完整实现比较麻烦,最好自己先尝试处理下,具体卡在某个环节的时候可以帮忙处理下,但是完整的不能保证我们技术能有整块时间处理哦。
就剩最后这句的实现。
input:p(16,2,1000,2);
n1:=(ref(hhv(h,p/2),p/2)-ref(llv(l,p/2),p/2))/(p/2);
n2:=(hhv(h,p/2)-llv(l,p/2))/(p/2);
n3:=(hhv(h,p)-llv(l,p))/p;
D:=(Log(n1+n2)-Log(n3))/Log(2);
α:=EXP(-4.6*(D-1));
FRAMA=α*Price +(1-α)*昨天的FRAMA//最后这句
