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


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

   

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


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

主题: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 

这样可行吗?

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/25 17:33:47 [只看该作者]

可行



金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
szp
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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进行撤单.

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


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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/25 20:55:38 [只看该作者]

这种情况你应该首选取得 OrderNum2 属性得到未成交单数量,然后用OrderInfo2指定索引来遍历整个未成交单订单。在遍历中撤单。

提醒你 OrderInfoByCode2 是有返回值的,要确认返回值为1时再进行操作



金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
szp
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/26 8:46:04 [只看该作者]

有些懂些解释起来很费劲,建议你遇到疑惑时,首选考虑用msgout输出消息,在模拟账户上测试即便后你就能知道结果


金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

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


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

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

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

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

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


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

那 OrderInfoByCode2 有什么用??

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


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2013/4/26 10:10:25 [只看该作者]

OrderInfoByCode2是知道合约代码,查询其持仓量。

[此贴子已经被作者于2013-4-26 10:11:23编辑过]

 回到顶部
总数 12 1 2 下一页