金字塔决策交易系统

标题: 自己写EMA函数怎么弄呢 [打印本页]

作者: 欧阳    时间: 2022-8-15 19:24
标题: 自己写EMA函数怎么弄呢
这里面是递归的,我应该咋写,
ABS(CMO(i)) ― 当前Chande Momentum 振荡器绝对值;
VIDYA(i-1) ― 上一个VIDYA值。
VIDYA(i) = Price(i) * F * ABS(CMO(i)) + VIDYA(i-1) * (1 - F* ABS(CMO(i)))


VIDYA 由 Tushar Chande 创立,并于 1992 年 3 月在《股票与商品技术分析》(Technical Analysis of Stocks & Commodities) 杂志中提出。在第一个版本中,标准差被用作波动率指数。1995 年 10 月,Chande 对 VIDYA 进行了修改,使用新的钱德动量摆动指标 (CMO)作为波动率指数。


补充内容 (2022-8-16 00:46):

n:20 ;m:60
UP:=if(C>ref(c,1),(C-ref(c,1)),0);
DN:=if(C<ref(c,1),ABS(C-ref(c,1)),0);
Su:=SUM(UP,n);
Sd:=SUM(DN,n);
CMO:=(Su-Sd)/(Su+Sd)*100;
F:=2/(M+1);

作者: 技术009    时间: 2022-8-16 08:56
本帖最后由 技术009 于 2022-8-16 08:58 编辑

[PEL] 复制代码
n:20;
m:60;
UP:=if(C>ref(c,1),(C-ref(c,1)),0);
DN:=if(C<ref(c,1),ABS(C-ref(c,1)),0);
Su:=SUM(UP,n);
Sd:=SUM(DN,n);
CMO:(Su-Sd)/(Su+Sd)*100;
F:=2/(M+1);

VARIABLE:VIDYA:=0;

if BARPOS<20 then VIDYA:=0;
if BARPOS>=20 then
begin
VIDYA:=c*f*abs(cmo)+VIDYA*(1-f*abs(cmo))        ;
end

show:VIDYA;


用全局变量处理,另外初始状态 你这里没提供,纯代码逻辑初始位置得值是不太对劲得。[attach]9958[/attach]

作者: 欧阳    时间: 2022-8-16 09:00
技术009 发表于 2022-8-16 08:56
[mw_shl_code=pel,true]n:20;
m:60;
UP:=if(C>ref(c,1),(C-ref(c,1)),0);

初始状态是什么意思?
作者: 技术009    时间: 2022-8-16 09:02
你逻辑里用到了上一个K时候得值,那如果当前是第一个有效值呢?
你后续自行调整吧。反正方法已经给出来了。

作者: 欧阳    时间: 2022-8-16 09:09
技术009 发表于 2022-8-16 09:02
你逻辑里用到了上一个K时候得值,那如果当前是第一个有效值呢?
你后续自行调整吧。反正方法已经给出来了 ...

确实出现了那种明显的大幅震荡,但是我不李姐是为什么会出现?怎么解决呢?
作者: 技术009    时间: 2022-8-16 09:23
最开始几个有效值 的大波动 是因为 在最开始位置 VIDYA(i-1) 会是一个无效值(代码里以0替代了)导致得。

后面的波动 纯粹就是算法执行的结果,看上去异常实际就是符合计算的逻辑。
作者: 欧阳    时间: 2022-8-16 09:26
技术009 发表于 2022-8-16 09:23
最开始几个有效值 的大波动 是因为 在最开始位置 VIDYA(i-1) 会是一个无效值(代码里以0替代了)导致得。
...

了解




欢迎光临 金字塔决策交易系统 (https://www.weistock.com/bbs/) Powered by Discuz! X3.4