 
等级: 超级版主
- 注册:
- 2021-5-18
- 曾用名:
- FireScript
|
macd就是几个ema 组合出来的。所以我一开始给你的是实现当日ema的方式。如果进一步生成macd,稍微麻烦点。
首先新建一个指标作为被调用指标A1:
INPUT:N(10,1,100,1);
X:=C;//相当于ema参数x
VARIABLE:ema_:=0;
//ema
if BARPOS=1 or TODAYBAR=1 then ema_:=X;
ema_:=if(BARPOS>1,(2*x+(N-1)*ema_)/(N+1),ema_);
ema1:ema_;//最后结果
然后调用上面指标,传递参数来生成2个ema,然后用这2个ema计算diff. 再按照ema算法 进一步计算dea
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);
EMA_P:="A1.ema1#MIN1"(p);
EMA_S:="A1.ema1#MIN1"(s);
DIFF :EMA_S - EMA_P;//快线
VARIABLE:DEA_:=0;
if BARPOS=1 or TODAYBAR=1 then DEA_:=DIFF;
DEA_:=if(BARPOS>1,(2*DIFF+(m-1)*DEA_)/(m+1),DEA_);
DEA : DEA_;
MACD1 :2*(DIFF-DEA), COLORSTICK;
但是也有缺陷的地方,对于有夜盘的品种,如果上个交易日收盘后 那个晚上恰好没有夜盘,算的就不对了。
这个不好判断,前面的夜盘有没有。如果能判断
if BARPOS=1 or TODAYBAR=1 then DEA_:=DIFF;
对这个语句做进一步限制就行。
|
|