以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 初始值怎么定义呢?只要有初始值就好办啊。 |