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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → VBA 如何获取可用持仓?也就是PEL中的THOLDING

   

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


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

主题:VBA 如何获取可用持仓?也就是PEL中的THOLDING

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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
VBA 如何获取可用持仓?也就是PEL中的THOLDING  发帖心情 Post By:2013/4/25 17:19:02 [显示全部帖子]

如题,我的方法:
1.通过 Order.HoldingInfobyCode2 中的 BuyHolding 和 SellHolding 获得实际持仓,也就是PEL中的THOLDING2
2.通过 Order.OrderInfoByCode2 中的 Remaining 获取已挂单但没有成交的数量
3.那么 可用持仓就等于 实际持仓 减去 Remaining 

这样可行吗?

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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
  发帖心情 Post By:2013/4/25 20:00:13 [显示全部帖子]

谢谢王锋的回复.


我对 Order.OrderInfoByCode2有疑问,这个方法在文档中说明如下:

OrderInfoByCode2 方法

取指定品种的未成交CTP合约信息

OrderInfoByCode2(Code, Market, OrderID, ConSign, Filled, Remaining, Action, OrderType, LmtPrice, Account, Kaiping)

Code         输入参数,指定的品种代码

Market       输入参数,指定的品种市场

ConSign      输出参数,本次委托数量

Filled       输出参数,已成交数量

Remaining    输出参数,未成交数量

Action       输出参数,动作类型 0买入 1卖出

OrderType    输出参数,订单类型 0限价 1市价 2停损 3市价停损

LmtPrice     输出参数,当OrderType等于0时为限价,为3时为停损限价

Account      输出参数,帐户信息

Kaiping      输出参数,开平仓类型 0开仓 1平仓

返回值:      成功返回1,失败返回0

示例:

dim orderid
dim ConSign
dim Filled
dim Remaining
dim Action
dim OrderType
dim LmtPrice
dim Account
dim Kaiping
call order.OrderInfoByCode2("cu09","sq",orderid,ConSign,Filled,Remaining,Action,OrderType,LmtPrice,Account,Kaiping)
'打印输出未成交订单ID(可用此ID进行撤单)
msgbox orderid



从说明和示例中可以看出,这个方法是获取指定合约的未成交委托挂单的信息.

参数说明中没有写 OrderID 这个输出参数,但示例中有写,从示例的最后两行可看出,可用此ID进行撤单.

但这里有一个问题,如果我同一个合约先后有几个不同未成交委托挂单,那返回的信息怎么处理呢,按理应该返回一个数组才对呀.


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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
  发帖心情 Post By:2013/4/25 23:11:18 [显示全部帖子]

是我表达得不够清楚.

我的目的:获取指定合约品种的可用持仓
我的思路:可用持仓 = 实际持仓 - 已挂单(平仓单)未成交的数量

实际持仓:通过 Order.HoldingInfobyCode2 中的 BuyHolding 和 SellHolding 获得

已挂单未成交的数量:获取这个数量时,未成交的挂单可能不止一个,那么可以用下面的方法获取
1.通过OrderInfo2函数.遍历所有未成交的挂单(0 至 OrderNum2-1),如果Code为指定的合约品种且Kaiping为平仓,则累加Remaining.  
2.通过 Order.OrderInfoByCode2 中的 Remaining 直接获取.

疑问: 方法1累加的 Remaining 和方法2一步获取的是同一个值吗?(这两个值相等?) 
也就是说,Order.OrderInfoByCode2函数的输出参数是所有同一品种的未成交信息的汇总吗?(当然,Order.OrderInfoByCode2的输出参数OrderID是不可能汇总的,这只是一个单值,不是数组或者序列)
[此贴子已经被作者于2013-4-25 23:12:40编辑过]

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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
  发帖心情 Post By:2013/4/25 23:13:45 [显示全部帖子]

单向持仓,不锁仓
单一帐户
[此贴子已经被作者于2013-4-25 23:15:01编辑过]

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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
  发帖心情 Post By:2013/4/26 9:32:05 [显示全部帖子]

嗯,明白王锋的意思,可以测试的话,自己测试好一些,不要偷懒,呵

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

初步测试,结果显示,用OrderInfo2累加的数量才是正确的,而OrderInfoByCode2返回的只是第一个未成交挂单的数量,不是所有的汇总

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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
  发帖心情 Post By:2013/4/26 9:40:56 [显示全部帖子]

那 OrderInfoByCode2 有什么用??

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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
  发帖心情 Post By:2013/4/26 10:42:06 [显示全部帖子]

OrderInfoByCode2:取指定品种的未成交CTP合约信息

知道合约代码,查询其持仓量 :HoldingInfoByCode2

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



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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
  发帖心情 Post By:2013/4/26 10:53:04 [显示全部帖子]


再次希望 金之塔 公司能完善 编程信息 这个文档~~

比如:

Holding2            得到当前指定帐户的国内期货持仓品种数量

OrderNum2         得到所有国内接口当前有效的未成交合约品种数量


经过简单的测试,我认为这两个属性应该解释如下:


Holding2            得到当前指定帐户的国内期货持仓的品种数量

OrderNum2         得到当前所有国内接口有效的未成交合约的挂单数量


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


能做到 MSDN 一样就非常好了~~~

期待



 回到顶部