以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  SUMBARS函数及MACD求和的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=172452)

--  作者:fengmu166
--  发布时间:2019/10/16 22:32:34
--  SUMBARS函数及MACD求和的问题
 
条件选股公式,假定当前MACD>0,比较两波红柱子之和:

DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);
N1:=SUMBARS(MACD>0 AND REF(MACD<0,1),1);
N2:=SUMBARS(MACD<0 AND REF(MACD>0,1),1);
N3:=SUMBARS(MACD>0 AND REF(MACD<0,1),2);
M1:=SUM(MACD,N1);
M2:=REF(SUM(MACD,N3),N2);
M1>=M2;

问题1:N1,N2,N3周期区间是否正确(变量导出图形验证是正确的,帮忙再确认一下)
问题2:公式M1,M2是否为下图所示红柱之和?
问题3:按此条件选股,有明显M1<M2的股票入选,可能是什么原因?
谢谢!
图片点击可在新窗口打开查看

--  作者:FireScript
--  发布时间:2019/10/17 8:52:51
--  
 1.N1-N3是正确的。
2.M变量是要求单纯红柱只和,绿柱值算不算在内?因为如果当前是绿柱,M用sum计算时候绿柱值也是累加进去的。

这样就是只红柱累计进去。
M1:=SUM(if(MACD>0,MACD,0),N1);

--  作者:FireScript
--  发布时间:2019/10/17 10:20:18
--  
你修改下m的定义方式,把绿柱时候值设成0.  你当前macd大于0  但是你sum时候还是会覆盖到前面绿柱时候的值。


--  作者:fengmu166
--  发布时间:2019/10/17 11:41:29
--  
好的。
M2:=REF(SUM(MACD,N3),N2);
M2的定义方式有问题吗?应该不会把绿柱覆盖吧?

--  作者:FireScript
--  发布时间:2019/10/17 13:47:55
--  
一样的如果当前是绿柱还会有点问题的。


可以这样做:
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);

N1:SUMBARS(MACD>0 AND REF(MACD<0,1),1);
N2:SUMBARS(MACD>0 AND REF(MACD<0,1),2);

M0:SUM(IF(MACD>0,MACD,0),N2);//最近2段红柱值的总和
M1:SUM(if(MACD>0,MACD,0),N1);//最近一段红柱总和
M2:M0-M1;//倒数第二段红柱总和

这样应该简洁点吧,而且就算当前是绿柱也无所谓。


--  作者:fengmu166
--  发布时间:2019/10/17 15:05:51
--  
非常感谢!