发新话题
打印

请南客和各位老师帮忙关于无未来数据的周MACD导入后dea显示异常

请南客和各位老师帮忙关于无未来数据的周MACD导入后dea显示异常

下面原码我导入后公式dea线值显示异常  diff正常  但是似乎大家的都没问题  比较玉门  半天一夜也没搞懂到底问题出在哪     我是正版飞狐4.9用户  请老师们帮忙研究一下   多多感谢

下面是导入南客老师的源码及公式附图   付图中上面那个公式是导入后dea线值显示异常 的样子   第一张图是日线 第二张图是周线  日线图中dea却比diff大 而且在周末位置 diff与dea相等重合   周线中diff与dea完全相等合为一根曲线

//飞狐4.9测试版,代码应修正如下(2006.11.21)(原贴地址 [url]http://bbs.fjfox.com/thread-15296-1-1.html[/url])

input:long(26,20,100),short(12,5,40),m(9,2,60);
wtj1:=datediff(ref(date,1),date)<>weekday-ref(weekday,1) or barpos=1;
wtj:=refx(wtj1,1) or weekday=5;  //周末标记
fc:=close;
start:=barpos-barssince(wtj);
diff:0*close;
dea:0*close;
tmp:=setlbound(diff,start[datacount]);
tmp:=setlbound(dea,start[datacount]);
d1:=fc[start[datacount]];d2:=d1;
for i=start[datacount]+1 to datacount do begin
  if wtj[i] then begin
    d1:=(2*fc[i]+(short-1)*d1)/(short+1);
    d2:=(2*fc[i]+(long-1)*d2)/(long+1);
    wdiff:=d1-d2;
    wdea:=(2*wdiff+(m-1)*wdea)/(m+1);
    diff[i]:=wdiff;
    dea[i]:=wdea;
  end else begin
    diff[i]:=(2*fc[i]+(short-1)*d1)/(short+1)-
             (2*fc[i]+(long-1)*d2)/(long+1);
    dea[i]:=(2*diff[i]+(m-1)*wdea)/(m+1);
  end;
end;
macd:2*(diff-dea),colorstick;

[[i] 本帖最后由 斜月三星 于 2007-1-28 20:09 编辑 [/i]]
附件: 您所在的用户组无法下载或查看附件

TOP

引用公式macd:
input:LONG(26),SHORT(12),m(9);
DIFF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:if(DATATYPE=4,EMA(DIFF,50),EMA(DIFF,m)),COLORblue, Linethick2;
MACD:2*(DIFF-DEA)COLORSTICK;
ES:EMA(CLOSE,SHORT), Linethick0;
EL:EMA(CLOSE,LONG), Linethick0;





月macd
input:long(26,20,100),short(12,5,40),m(9,2,60);
XQ:=BARSLAST(datediff(ref(date,1),date)<>day-ref(day,1));
ZDIFF:="MACD.DIFF#MONTH";
ZDEA:="MACD.DEA#MONTH";
ZES:="MACD.ES#MONTH";
ZEL:="MACD.EL#MONTH";
DIFF2:(2*C+(short-1)*REF(ZES,XQ+1))/(short+1)-(2*C+(long-1)*REF(ZEL,XQ+1))/(long+1);
DEA2:(2*DIFF2+(M-1)*REF(ZDEA,XQ+1))/(M+1);
MACD2 : 2*(DIFF2-DEA2), COLORSTICK;


[ 本帖最后由 joneslee 于 2007-1-28 13:23 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

谢谢2楼的朋友   单纯引入的效果可能不好  实战价值也许不如静态的   总之谢谢你的好心

TOP

joneslee 您好
能帮忙写出无未来数据的周CCI及月CCI吗?麻烦您了,感谢不尽!

TOP

支持楼猪发贴,提钱祝楼主春节快乐!

TOP

要过年了,提钱祝楼主春节快乐!

TOP

快乐!

TOP

快乐!

TOP

这个问题这么久了还是没解决吗?希望大师们出手,我也想要周线MACD按日线显示,谢谢

TOP

改成如下即可:
复制内容到剪贴板
代码:
input:long(26,20,100),short(12,5,40),m(9,2,60);
wtj1:=datediff(ref(date,1),date)<>weekday-ref(weekday,1) or barpos=1;
wtj:=refx(wtj1,1) or weekday=5;  //周末标记
fc:=close;
start:=barpos-barssince(wtj);
diff:0*close;
dea:0*close;
tmp:=setlbound(diff,start[datacount]);
tmp:=setlbound(dea,start[datacount]);
d1:=fc[start[datacount]];d2:=d1;wdea:=0;
for i=start[datacount]+1 to datacount do begin
  if wtj[i] then begin
    d1:=(2*fc[i]+(short-1)*d1)/(short+1);
    d2:=(2*fc[i]+(long-1)*d2)/(long+1);
    wdiff:=d1-d2;
    wdea:=(2*wdiff+(m-1)*wdea)/(m+1);
    diff[i]:=wdiff;
    dea[i]:=wdea;
  end else begin
    diff[i]:=(2*fc[i]+(short-1)*d1)/(short+1)-
             (2*fc[i]+(long-1)*d2)/(long+1);
    dea[i]:=(2*diff[i]+(m-1)*wdea)/(m+1);
  end;
end;
macd:2*(diff-dea),colorstick;

TOP

其实原贴代码早就已经修正了

TOP

真心的谢谢南客老师!

TOP

发新话题