以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  dll计算准确性  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=15478)

--  作者:方文潮
--  发布时间:2012/8/27 22:08:25
--  dll计算准确性
计算股指1M周期上的5日收盘价均线,用DLL算的跟直接ma(c,5)算的结果不完全一致,


日期 dll(5日均线) ma(c,5)
2012/8/24 13:46    
2012/8/24 13:47    
2012/8/24 13:48    
2012/8/24 13:49    
2012/8/24 13:50 2303.040039 2303.03999
2012/8/24 13:51 2303.399902 2303.4
2012/8/24 13:52 2303.720215 2303.72002
2012/8/24 13:53 2303.919922 2303.92002
2012/8/24 13:54 2303.880127 2303.880029
2012/8/24 13:55 2303.960205 2303.960059
2012/8/24 13:56 2303.399902 2303.400049
2012/8/24 13:57 2302.560059 2302.560059

具体看上面第2列和第3列的数据。请问为什么有这样的差距

--  作者:王锋
--  发布时间:2012/8/27 22:23:31
--  

小数浮点上的计算误差,你都改成DOUBLE模式的浮点数,应该就一样了


--  作者:方文潮
--  发布时间:2012/8/28 15:39:22
--  
是把头文件StockFunc.h里的float定义改成double定义吗?我这样试了下,出现的结果差距更大或者是编译的dll金字塔识别不了。
--  作者:王锋
--  发布时间:2012/8/28 16:43:30
--  
不是让你改头文件结构,而是让你将中间的计算变量,改成DOUBLE试试,浮点数的计算误差每台计算机都存在,这是基本的程序员应该都知道的
--  作者:方文潮
--  发布时间:2012/8/28 20:35:33
--  
中间变量改成double型的依然有误差!我知道有浮点运算会产生误差,但我是用同一台机子dll(5日收盘价均线)与ma(c,5)来测试的,差距在小数点第4、5位,
那这个差距就很大了,因为金字塔定义的float类型的误差在小数点第7位,用这样的dll编成对应的模型会导致开平仓点的不同。这个差距是不是还有其他的
原因呢?