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


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

   

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


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

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


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


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

intBuyHolding和 intSellHolding才是返回的持仓。

 回到顶部
帅哥哟,离线,有人找我吗?
szp
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
-------------------------------------------


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


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

问题核实中



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

金字塔-技术部

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

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

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


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

Sub myGetHoldingInfo()


    On Error Resume Next
  
    Dim ret
    Dim strAccount,strCode,strMarket
    Dim intBuyHolding,intBuyTodayHolding,dblBuyCost
    Dim intSellHolding,intSellTodayHolding,dblSellCost
    Dim dblProfitAndLoss,dblUsedMargin
   
    strAccount="804982"  '金仕达的金字塔模拟交易帐户
    strCode="IF04"
    strMarket="ZJ"
   
    '手动初始化变量
    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)

    Call Application.MsgOut("取当前品种的持仓合约结果 ret=" & ret)
    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

 

用下列代码通过宏调用测试,一切正常。

 

建议你检查 1是否有效的登录了交易账户 2是否有查询的AG06品种的持仓



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

金字塔-技术部

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

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

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


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


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

是的,没有持仓就会返回失败



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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
szp
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 不需要,但对程序员还是有用的!


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