以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  类EMA算法实现问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=169398)

--  作者:luoxlt
--  发布时间:2019/4/17 11:34:41
--  类EMA算法实现问题
AA:=CONSTANT*CLOSE +(1-CONSTANT)*昨天的AA;

请问这个该怎么表达?其中CONSTANT是一个平滑系数;如果要一个初始值的话。那就从第20根k线开始,初始值等于第二十根k线的CLOSE;

--  作者:FireScript
--  发布时间:2019/4/17 13:28:55
--  
 你是要处理这个初始值AA没有定义的问题是吧、
[此贴子已经被作者于2019/4/17 13:29:58编辑过]

--  作者:luoxlt
--  发布时间:2019/4/17 15:11:10
--  
嗯,这里应该要用上循环语句吧?想要得到整个结果。也就是当前的AA。不好意思,刚刚才看到。
--  作者:FireScript
--  发布时间:2019/4/17 15:51:34
--  
 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;//最后结果输出

不需要循环,需要用到全局变量就行了。

--  作者:luoxlt
--  发布时间:2019/4/17 15:54:14
--  
好的,谢谢。
--  作者:FireScript
--  发布时间:2019/4/17 15:57:43
--  
 这里的初始值是从第一个K开始,你如果要调整就修改这里的代码。
if BARPOS=1 then A:=c;//初始值

--  作者:luoxlt
--  发布时间:2019/4/17 16:28:19
--  
找到一个连接。实际上就是想实现这里面的这条均线。

为了方便翻译,我把前面部分代码写了一下。
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)


麻烦你了,非常感谢。

--  作者:FireScript
--  发布时间:2019/4/17 16:45:37
--  
 你这个完整实现比较麻烦,最好自己先尝试处理下,具体卡在某个环节的时候可以帮忙处理下,但是完整的不能保证我们技术能有整块时间处理哦。
--  作者:luoxlt
--  发布时间:2019/4/17 16:49:40
--  
就剩最后这句的实现。
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//最后这句

--  作者:FireScript
--  发布时间:2019/4/17 17:17:54
--  
 FRAMA 初始值怎么定义呢?只要有初始值就好办啊。