Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:这段代码有问题吗?

1楼
一代天骄 发表于:2019/4/22 9:26:44
LC:=REF(CLOSE,1);
LO:=REF(OPEN,1);
CD:=ABS(LC-LO);
ACD:=CD/LO;
MACD:=MA(ACD,BARPOS);
MACD10:=MA(ACD,10);
B:MACD10/MACD;
为何运行的时候MACD,这个数字显示不出来
2楼
FireScript 发表于:2019/4/22 9:42:09
 定义的缘故。

MACD:=MA(ACD,BARPOS);

这个acd不是每个K都能正常有值的,如果你换成C你发现就正常了。但是acd本身定义决定了在第一个k没有值。
处理办法是:
不要用ma函数。
macd:sum(acd,0)/(BARPOS-1);//这里使用BARPOS-1,因为第一个k acd没有值。所以均值周期应该用BARPOS-1
3楼
一代天骄 发表于:2019/4/22 9:59:39
macd:sum(acd,0)/(BARPOS-1);//这里使用BARPOS-1,因为第一个k acd没有值。所以均值周期应该用BARPOS-1,这里面的sum(acd,o)里面的o 应该是barpos-1吧?
4楼
FireScript 发表于:2019/4/22 10:04:06
 不是。那个0就是表示从最初值累计到现在的意思。
5楼
一代天骄 发表于:2019/4/22 10:06:57
那0和barpos的意思一样?
6楼
FireScript 发表于:2019/4/22 10:12:35
 不是的,你看下sum函数参数说明啊,它第二个参数为0是有特殊含义的。
7楼
一代天骄 发表于:2019/4/22 10:15:49
另外,我定义一个小10周期的波动率的话,这个是不是也要修改,
LC:=REF(CLOSE,1);
LO:=REF(OPEN,1);
CD:=ABS(LC-LO);
ACD:=CD/LO;
MACD:SUM(ACD,0)/(BARPOS-1)
MACD10:MA(ACD,10);
B:MACD10/MACD;
其中的MACD10:MA(ACD,10);编译的时候好像显示不正常啊
8楼
FireScript 发表于:2019/4/22 10:25:23
 
图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
不要漏了分号。

其他地方可以不用改,因为反正周期小于10的情况下,ma也是没有值的,这是符合正常逻辑的,毕竟不到10个周期计算不出来10周期均线。
前面那个macd那里要改是因为用ma得话,它始终会包含一个没有值的K的情况。
共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.04492 s, 3 queries.