以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  Order开多单有反应,开空单却没有,奇怪!  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=6969)

--  作者:guotx2010
--  发布时间:2011/6/23 16:16:20
--  Order开多单有反应,开空单却没有,奇怪!

Call Order.Buy(1,1,0,0,"IF07","ZJ","",0)  \'市价开多单

Call Order.BuyShort(1,1,0,0,"IF07","ZJ","",0)  \'市价开空单

 

这两个指令,一个是开多单,一个是开空单,使用CTP平台,开多单指令正常执行,非交易时间可以看到“该席位未处于交易状态”,开空单指令却没有反应,交易时间开多单每次都能执行,开空单却经常不执行。

 

同样的代码,在模拟账户下,都可以执行,交易状态都有提示,实在是令人费解。

这段代码使用了好长时间了,我都没有发现这个问题,这两天才发现的。

 

不知道是不是金字塔程序升级后留下的问题?

 

另外:CTP账号下,订单状态和模拟账号也不相同,主要是Aspect和Kaiping这两个返回值,不同平台返回的值不一样,对于做VBA后台交易,要判断持仓变化情况,经常在某一个平台可以使用的代码,到了另一个平台就出现问题,程序并不出错,可是结果不对。

 

建议:将CTP、金士达、IB不同的账号交易时返回的结果统一一下,以便于做VBA后台交易。

 

[此贴子已经被作者于2011-6-23 16:32:33编辑过]

--  作者:王锋
--  发布时间:2011/6/23 19:18:33
--  

建义打开下单日志,看看BuyShort指令是否已经发送到服务器

Aspect和Kaiping这两个返回值应该是一样的吧,你看到哪些地方不一样了?


--  作者:guotx2010
--  发布时间:2011/6/23 22:42:37
--  

VBA后台交易哪有下单日志呢,从交易状态小窗口就可以看到,没有发送到服务器的。

多单就发送了。我在开空单的指令前后分别放上Application.msgout指令显示信息,都显示了,说明指令是执行了,可是就不送到服务器。

 

Aspect返回的值是统一的,就是Kaiping的值,不同的平台不一样。

模拟账号平仓时,kaiping在两条记录里分别有2、3两个值,而在Ctp平台下,平昨为1,平今为2,IB平台我没有账号,没有测试。

Status返回值也不相同,模拟账号上返回submitted,filled,CTP上返回submitted,filled,tradeing.

 

同样的代码,在股指上可以正常提取持仓信息,而在RB上,平仓之后持仓信息不会更新,需要再次单击刷新持仓才可以。

搞得人都要疯了。

 

 

[此贴子已经被作者于2011-6-23 22:44:20编辑过]

--  作者:王锋
--  发布时间:2011/6/24 9:27:06
--  

今天用

Call Order.BuyShort(1,1,0,0,"IF07","ZJ","",0)  \'市价开空单

单独这一条语句测试,没有出现过异常


--  作者:guotx2010
--  发布时间:2011/6/25 0:15:07
--  

不知道什么时候出现问题,经常是你要测试的时候,好用,可是用于实盘就掉链子,我是用VBA做的管理持仓的,比如:设定好回撤3点止盈,可是有时能执行,有时不能执行,导致我该赚到的钱没有赚到。

 


--  作者:王锋
--  发布时间:2011/6/25 0:33:44
--  

似乎有矛盾,你说的是止赢未执行,那应该是平仓动作。但是BuyShort是开仓的


--  作者:一亩三分地
--  发布时间:2011/6/25 0:47:58
--  
咱曾经几个月日内波段用order下单,没有失手过。说明实盘交易金字塔的可靠性还是不错的。是不是后续版本引入了bug就不太清楚了。
--  作者:guotx2010
--  发布时间:2011/6/25 14:23:39
--  
我再继续找寻问题的答案吧。程序化之路走得好辛苦呀。
--  作者:allanhoo
--  发布时间:2013/4/4 11:47:02
--  
我估计是你资金不够,市价开单要涨跌停保证金!