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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → Order.HoldingInfoByCode2 总是返回 0

   

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


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

主题:Order.HoldingInfoByCode2 总是返回 0

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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
Order.HoldingInfoByCode2 总是返回 0  发帖心情 Post By:2013/4/9 11:12:35 [显示全部帖子]


金字塔版本:2.983测试版
金字塔帐户类型:机构版


下面的代码总是返回 0 :

Dim ret
Dim strAccount,strCode,strMarket
Dim intBuyHolding,intBuyTodayHolding,dblBuyCost
Dim intSellHolding,intSellTodayHolding,dblSellCost
Dim dblProfitAndLoss,dblUsedMargin
strAccount="000000"   '实际用的是金仕达的金字塔模拟交易帐户: 805xxx
strCode="AG06"
strMarket="SQ"
'刷新账户的持仓显示
Call Order.HoldingRefurbish(strAccount)

'取当前品种的持仓合约信息
ret=Order.HoldingInfoByCode2(strCode,strMarket,intBuyHolding,dblBuyCost,intBuyTodayHolding,intSellHolding,dblSellCost,intSellTodayHolding,dblProfitAndLoss,dblUsedMargin,strAccount)
If ret <>1 Then
Call MsgBox("取当前品种的持仓合约信息失败! ret=" & ret)
Exit Sub
End If


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


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

谢谢 guotx2010 的回复,我的意思是:

HoldingInfoByCode2 方法的返回值:成功返回1,失败返回0


我调用 : ret=Order.HoldingInfoByCode2(strCode,strMarket,intBuyHolding,dblBuyCost,intBuyTodayHolding,intSellHolding,dblSellCost,intSellTodayHolding,dblProfitAndLoss,dblUsedMargin,strAccount)


每次 ret 都等于 0,也就是说 Order.HoldingInfoByCode2 的调用不成功


是哪里出了问题??

[此贴子已经被作者于2013-4-9 11:33:22编辑过]

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


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

进一步用下面的代码测试:

Public Sub myGetHoldingInfo()

On Error Resume Next
Dim ret
Dim strAccount,strCode,strMarket
Dim intBuyHolding,intBuyTodayHolding,dblBuyCost
Dim intSellHolding,intSellTodayHolding,dblSellCost
Dim dblProfitAndLoss,dblUsedMargin
strAccount="805115"  '金仕达的金字塔模拟交易帐户
strCode="AG06"
strMarket="SQ"
'手动初始化变量
ret=-999
intBuyHolding=0
intBuyTodayHolding=0
dblBuyCost=0
intSellHolding=0
intSellTodayHolding=0
dblSellCost=0
dblProfitAndLoss=0
dblUsedMargin=0
'取当前品种的持仓合约信息
ret=Order.HoldingInfoByCode2(strCode,strMarket,intBuyHolding,dblBuyCost,intBuyTodayHolding,intSellHolding,dblSellCost,intSellTodayHolding,dblProfitAndLoss,dblUsedMargin,strAccount)

If ret <>1 Then
Call Application.MsgOut("取当前品种的持仓合约信息失败! ret=" & ret)
Call Application.MsgOut("-------------------------------------------")
Call Application.MsgOut("      合约代码 = " & strCode)
Call Application.MsgOut("      市场代码 = " & strMarket)
Call Application.MsgOut("  买入持仓总量 = " & intBuyHolding)
Call Application.MsgOut("      持仓成本 = " & dblBuyCost)
Call Application.MsgOut("    今买持总量 = " & intBuyTodayHolding)
Call Application.MsgOut("  卖出持仓总量 = " & intSellHolding)
Call Application.MsgOut("  卖出持仓成本 = " & dblSellCost)
Call Application.MsgOut("今卖出持仓总量 = " & intSellTodayHolding)
Call Application.MsgOut("      浮动盈亏 = " & dblProfitAndLoss)
Call Application.MsgOut("    保证金占用 = " & dblUsedMargin)
Call Application.MsgOut("          帐户 = " & strAccount)
Call Application.MsgOut("-------------------------------------------")
End If
If Err.Number<>0 Then
Call Application.MsgOut("取当前品种的持仓合约信息时出错:(" & Err.Source & ")" & Err.Description)
End If

End Sub



结果总是有下面的输出:

取当前品种的持仓合约信息失败! ret=0
-------------------------------------------
      合约代码 = AG06
      市场代码 = SQ
  买入持仓总量 = 0
      持仓成本 = 0
    今买持总量 = 0
  卖出持仓总量 = 0
  卖出持仓成本 = 0
今卖出持仓总量 = 0
         浮动盈亏 = 0
      保证金占用 = 0
              帐户 = 805115
-------------------------------------------


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


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


谢谢 王锋 的回复!

1.已登录 金仕达的金字塔模拟交易帐户 805115
2.没有 AG06 的持仓

也就是说,如果没有查询合约的持仓,则 Order.HoldingInfoByCode2 也返回 0 ?


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


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


.............

我建议:

1.方法的返回值只用于反馈方法的调用是否成功,成功(不管有无持仓)则返回1,失败(出错了!)则返回0,不然怎么判断是否是方法调用出错呢?
2.如果查询的合约没有持仓,则:只要不出错,就返回1,同时把 BuyHolding, BuyCost, BuyTodayHolding, SellHolding, SellCost, SellTodayHolding, PNL, UsedMargin 都设置为 0
3.进一步完善 " 编程信息 " 这个文档,错别字(中文和英文都有)很多,示例不够,部分表述不完整,有歧义!

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


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

比如, Order.HoldingInfoByCode2 方法 在 "编程信息" 这个文档中的表述如下:

HoldingInfoByCode2 方法

取指定CTP品种的持仓合约信息。该方法不同于HoldingInfo2,他可以同时取到一个品种的买入持仓和卖出持仓,以及今持和昨持。

HoldingInfoByCode2(Code, Market, BuyHoding, BuyCost, BuyTodayHoding, SellHoding, SellCost, SellTodayHoding, PNL, UseMargin,Account)

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

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

BuyHoding    输出参数,该该持仓品种买入持仓总量

BuyTodayHoding 输出参数,该持仓品种今买持总量

BuyCost      输出参数,该持仓品种持仓成本

SellHoding     输出参数,该持仓品种卖出持仓总量

SellTodayHoding 输出参数,该持仓品种的今卖出持仓总量

SellCost      输出参数,该持仓品种卖出持仓成本

PNL          输出参数,该持仓品种浮动盈亏

UseMargin    输出参数,该持仓品种的保证金占用

Account      输入参数,可缺省,登陆CTP的帐户名称,若不填写则表示当前默认的帐户

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


1.Hoding 这个单词错啦~~

2.返回值的说明应该为:成功返回1,失败返回0,如果查询合约没有持仓,也返回0

3.如果可以的话,加上每一个参数的类型说明,这个参数到底是一个 int , double,还是一个 string ?虽然 VBS 不需要,但对程序员还是有用的!


 回到顶部