以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  持仓量返回为何不准确?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=7880)

--  作者:jimmyiii
--  发布时间:2011/9/5 17:46:32
--  持仓量返回为何不准确?

目前使用后台程序交易,大致是8-9秒钟的轮询。

 

程序是根据持仓量的查询结果计算下单手数并完成下单。

但是发生了好几次,下单成功且成交以后, 下一次轮询时返回的持仓数量和实际持仓数量不一致,导致了再一次的下单。

 

根据程序的逻辑应该是不会发生这种情况。 而且这种情况一天基本会发生一到2次, 不知是什么原因?

 

以下是查询持仓的语句:acstr是帐号变量。

 

tb:=tbuyholdingex(acstr,\'\',1);
ts:=tsellholdingex(acstr,\'\',1);
HOLD:=tb-ts;

 

照理说这个运行后hold应该是当前账户当前品种的实际持仓量。 可是会发生一个下单成交后, 下一次轮询查询持仓返回数不正确。

以下是今天的一个调试输出结果。 请不吝指教。

2011-09-05 10:14:47.771    28238  //帐号id
2011-09-05 10:14:47.771    HOLD=4  //持仓数
2011-09-05 10:14:47.771    tb=4  //多单持仓
2011-09-05 10:14:47.771    ts=0  //空单持仓
2011-09-05 10:14:47.801    P1=2  //应有仓位, 2多
2011-09-05 10:14:47.801    cutl=2 //平多数量
2011-09-05 10:14:47.802    cuts=0  //平空数量
2011-09-05 10:14:47.802    buyl=0  //买多数量
2011-09-05 10:14:47.802    buys=0  //买空数量

 

2011-09-05 10:14:56.768    28238  //帐号id
2011-09-05 10:14:56.768    HOLD=-1 //实际持仓数, 根据47秒的log,此处平2多已经成交, 实际持仓数是2多, 但是却返回了1空!
2011-09-05 10:14:56.769    tb=-1   //实际多单数, 根据47秒的log,此处平2多已经成交, 实际持仓数是2多, 但是却返回了-1!
2011-09-05 10:14:56.770    ts=0   //实际空单持仓数

2011-09-05 10:14:56.806    P1=2  //应有仓位, 2多
2011-09-05 10:14:56.806    cutl=0  //平多数量
2011-09-05 10:14:56.806    cuts=1  //根据错误的持仓数,此处又操作了平1空!
2011-09-05 10:14:56.807    buyl=2  //根据错误的持仓数,此处又操作了开2多!
2011-09-05 10:14:56.807    buys=0

 

不知以上的表达是否够清楚,能否找出问题所在!

 


--  作者:王锋
--  发布时间:2011/9/5 17:54:07
--  

你用的多帐户系统?

另外告知所用金字塔版本


--  作者:王锋
--  发布时间:2011/9/5 17:55:12
--  
此外,你给出的资料估计没人能看懂,可否将交易记录完整发出?
--  作者:jimmyiii
--  发布时间:2011/9/5 18:00:35
--  

使用的专业版v2.64.  目前使用多帐号系统对不同帐号进行下单。

 

请问需要怎样的交易记录?

图片点击可在新窗口打开查看

 

上面描述的这段日志就是对应这儿的2笔交易, 47秒平了2多, 然后54秒又开了2多。


--  作者:王锋
--  发布时间:2011/9/5 18:02:09
--  

你自己记录的日志不能排除是你自身的BUG导致。

金字塔的完整下单记录需要手工开启记录。

交易菜单-》下单设置-》程序化交易-》记录下单日志


--  作者:jimmyiii
--  发布时间:2011/9/5 18:07:21
--  

今天没有开启日志记录, 明天可以记录一下然后发出来,希望不要对下单造成影响。

 

另外这种情况不是每一次都发生, 基本的下单都正常。偶有这种情况发生, 仅根据调试的输出,目前确实无法确定哪里出的问题。

 

但是有一点确实是可以肯定,在出问题的时候, tb:=tbuyholdingex(acstr,\'\',1); 这句语句返回的数字确实是与我的实际持有多单数量不符合。


--  作者:王锋
--  发布时间:2011/9/5 18:11:43
--  
从你反馈的情况来看,多帐号情况下下单过程比较繁琐,是不是某个帐户下单后没有成交,下次轮询后发现未成交而又再次下单的。
--  作者:jimmyiii
--  发布时间:2011/9/5 18:14:39
--  
但是tbuyholdingex(acstr,\'\',1) 这句语句不是返回当前账户当前品种的多单持仓量吗?而且在8,9秒轮询后,之前的市价单是一定成交了的。不太理解怎么会会返回一个负数啊。
--  作者:QJ
--  发布时间:2011/11/11 18:57:45
--  
我今天用后台模拟交易和楼主遇到了同样的问题,使用的是一个账户,也是tbuyholdingex的返回值不正确。模拟的交易软件里显示的持仓和实际持仓有时都不一致, 我的保证金金额都是对的,就是持仓显示不正确。比如没有持仓的时候,但软件里显示有持仓,这时就提示没有可平的仓位。 有没有办法可以实时刷新持仓情况。能介绍一下金字塔是如何从账户取到实际持仓的吗?
--  作者:QJ
--  发布时间:2011/11/11 19:02:30
--  
我用的是20秒轮询,市价成交。盯着看已经成交了,但是持仓栏的数据就是错的。 不用程序化交易试了试,也会出现持仓显示的不正确。
[此贴子已经被作者于2011-11-11 19:02:51编辑过]