以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [求助]黄金的报价小数点后第五位总有误差导致信号出问题~  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=167085)

--  作者:bbking
--  发布时间:2018/12/14 9:57:25
--  [求助]黄金的报价小数点后第五位总有误差导致信号出问题~
2018-12-14 09:30:16.937    xn=280.85001
2018-12-14 09:30:16.937    hold=1.00000
2018-12-14 09:30:16.937    numbertrade=1.00000
2018-12-14 09:30:16.937    bkl=280.89999
2018-12-14 09:30:16.937    skl=280.29999
2018-12-14 09:30:16.937    price=280.85000


这是黄金的debugout一些结果~
小数点后第五位造成了我信号的误差~应该怎么解决?
[此贴子已经被作者于2018/12/14 9:57:45编辑过]

--  作者:bbking
--  发布时间:2018/12/14 10:05:08
--  
我感觉这个数值是随机在我指标上加减0.00001~导致信号不是大于就是小于~根本没法相等~本来没触发的信号变成了触发~
几年前问过你们~说是浮点小数误差~当时我还在交易股指~这个东西影响不是太大~
但现在交易黄金了~发现这东西频繁造成信号误差根本无法忽略

--  作者:bbking
--  发布时间:2018/12/14 10:07:24
--  
这是后台DEBUGFILE出来的数据~
图表上加载shift+q根本看不出来问题~

--  作者:banzhuan
--  发布时间:2018/12/14 10:09:11
--  
因为从交易所过来的行情数据本来就带有小数位的,您保留2位小数试试呢,看下信号是否会产生偏差
--  作者:bbking
--  发布时间:2018/12/14 10:15:00
--  
那等于我所有价格数据都得intpart(dynainfo(7)*100)/100这样操作了
--  作者:bbking
--  发布时间:2018/12/14 10:27:25
--  
股指小数点后是一位数
黄金是两位数
债券是三位数
全部都有误差~



--  作者:banzhuan
--  发布时间:2018/12/14 10:40:44
--  
这个只能用函数调整一下了,没办法
--  作者:bbking
--  发布时间:2018/12/14 13:39:14
--  
xn:=dynainfo(7);
//--------后台调试部分
FILEPATH:=\'C:\\debug\\\'&str1&\'.TXT\'; DEBUGFILE(FILEPATH,\'=======\',0);

//--------动态函数~orderbook
DEBUGFILE(FILEPATH,\'xn=%.5f\',xn);
DEBUGFILE(FILEPATH,\'xn1=%.5f\',round(xn*10000)/10000);



你们试试上面的调试代码吧~if1812 t1903 au1906几个合约上~
xn1还是有误差~消除不了~你们是否还有其他办法?

--  作者:banzhuan
--  发布时间:2018/12/14 13:44:16
--  
您试试下面的方法
xn:dynainfo(7),PRECISION2;//保留2位小数
xn:dynainfo(7),PRECISION3;//保留3位小数
或者
xn:ROUNDS(dynainfo(7),3 );
[此贴子已经被作者于2018/12/14 13:45:55编辑过]

--  作者:bbking
--  发布时间:2018/12/14 13:49:07
--  
没用~麻烦你帮忙一起调试一下看看能否找到合适的解决方案