欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 奇怪:做空条件不成立,却有下单,但下单手数为0

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5402人关注过本帖树形打印复制链接

主题:奇怪:做空条件不成立,却有下单,但下单手数为0

帅哥哟,离线,有人找我吗?
阿火
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
奇怪:做空条件不成立,却有下单,但下单手数为0  发帖心情 Post By:2011/11/10 8:36:49 [只看该作者]

日志情况是这样,以下的日志从09:44 一直出现,直到10:11

2011-11-09 09:44:46.125    【后台】IF11 TBuyShort 出现信号
2011-11-09 09:44:46.125    【后台】IF11 TBuyShort 委托数量为0
2011-11-09 09:44:46.125    【后台】IF11 运行结束
2011-11-09 09:44:47.218    【后台】IF11 运行结束
2011-11-09 09:44:47.546    【后台】IF11 TBuyShort 出现信号
2011-11-09 09:44:47.562    【后台】IF11 TBuyShort 委托数量为0
2011-11-09 09:44:47.562    【后台】IF11 运行结束
2011-11-09 09:44:49.031    【后台】IF11 运行结束
……

……

2011-11-09 10:11:30.343    【后台】IF11 运行结束
2011-11-09 10:11:30.703    【后台】IF11 运行结束
2011-11-09 10:11:31.031    【后台】IF11 TBuyShort 出现信号
2011-11-09 10:11:31.046    【后台】IF11 TBuyShort 委托数量为0

 

下单语句是这样的:

kc:=abs(cc821888888)-sellhold;

if buyhold=0 and wt=0 and kc>0 and sellhold>=0 then begin//buyhold、sellhold、wt分别代表多头持仓、空头持仓、委托单数量

   tbuyshort(abb821888888 =tm,kc,mkt,0,0,'821888888 '),allowrepeat;
   tbuyshort(abb821888888 <=0,kc,lmt,dynainfo(21)-s*0.2,0,'821888888 '),allowrepeat;
   extgbdataset('abb821888888 ',1);
   debugfile('D:\LOG\821888888 .txt',numtostr(cc821888888 ,0)+'    开空    '+numtostr(buyhold,0)+'    '+numtostr(sellhold,0)+'    %.0f',wt);

end

 

debugfile 输出的日志为(09:44——10:11,都是以下的样子):

2011-11-09 09:44:46.109    -8    开空    0    8    0
2011-11-09 09:44:47.546    -8    开空    0    8    0
……

2011-11-09 10:11:29.687    -8    开空    0    8    0
2011-11-09 10:11:31.031    -8    开空    0    8    0

 

也就是:buyhold=0、wt=0、sellhold>=0都成立,但kc=abs(-8)-8=0,并不符合“kc>0”的条件。但是会下单,这是什么原因?

难道是精度问题?

幸好tbuyshort(1,0,mkt),在手数为0时,并不表示满仓开空。呵呵

 

[此贴子已经被作者于2011-11-10 8:42:11编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2011/11/10 8:41:51 [只看该作者]

可能是精度问题,默认情况下的计算都是浮点的,浮点计算是有误差的,你下次可以试试与0比较时,将数值取整后再比较

 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/11/10 8:48:58 [只看该作者]

那岂不是所有与0比较的变量都要取整?

比如以上条件中,buyhold=0 ,可能buyhold=0.00001 。wt也可能是 0.00001 或者 0.999999 ,都要取整?

 

也就是,如果比较的2个量 如果可能很接近的话,都要考虑精度问题

 

我最经常用的 if holding=0 and buycond then buy(1,1,limitr,c); 这里的holding需要取整吗

[此贴子已经被作者于2011-11-10 8:51:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2011/11/10 8:56:17 [只看该作者]

if holding=0 等是不需要的,因为holding返回的数值本身就是整数,与0判断要取整主要是经过数值计算后的数据

 回到顶部
帅哥哟,离线,有人找我吗?
fly
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2011/11/10 8:57:50 [只看该作者]

本地还从来未遇到过HOLDING和0比较时会出现这种现象,个人认为holding不需要取整,得出的也都是正确的.


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/11/10 9:12:56 [只看该作者]

恩。holding应该不用

 

不过想想,还是有点不明白

sellhold:=tbuyholding(AC,stklabel,N) 这个可能出现浮点数吗,还是一定是整数?

cc821888888的整个计算过程都是整数计算,应该一直都是整数吧。

cc821888888的计算过程是: 引用其它3个模型的holding ,分别为cc1、cc2、cc3,然后乘以系数

即:cc821888888:=2*cc1 + 3*cc2 +1*cc3 ;

 

cc821888888和sellhold ,这2个变量,谁搞的鬼。把它揪出来


 回到顶部
帅哥哟,离线,有人找我吗?
董小球
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 大哥
等级:超级版主 帖子:2837 积分:13237 威望:0 精华:2 注册:2010/7/14 17:31:54
  发帖心情 Post By:2011/11/10 21:05:10 [只看该作者]

哈哈 这个问题只能哥来解决了,回想下上学时,有没有印象老师一般都讲过一个极端情况,那就是0=0 成立,0>0成立,0<0也成立,忘记是中学还是大学的微积分那部分了,反正我稍微有点这个印象,不知是不是这个问题~~


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
董小球
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 大哥
等级:超级版主 帖子:2837 积分:13237 威望:0 精华:2 注册:2010/7/14 17:31:54
  发帖心情 Post By:2011/11/10 21:16:41 [只看该作者]

另外,我觉得这个判断可以修改成为KC>=1 来代替=0,肯定可以避免这种状况,我总感觉1和0在电脑世界代表的意义太多了


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/11/10 22:15:49 [只看该作者]

球哥真幽默

 

KC>=1会不会变成 0.999999>=1 不成立啊

 

看来只能这样,用kc>0.5 ,这样肯定没问题

[此贴子已经被作者于2011-11-10 22:18:23编辑过]

 回到顶部