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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → vba字典在金字塔中如何表示

   

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


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

主题:vba字典在金字塔中如何表示

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


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2013/2/28 16:30:05 [显示全部帖子]

字典是有键值对的,就是说有两列数据,你存入的时候,只有一个值,当然出错了。

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


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2013/3/1 11:58:36 [显示全部帖子]

''''''这是我用着的代码
Set dominantContract=CreateObject("Scripting.Dictionary")
'枚举合约,将连续合约的代码和对应市场代码分别作为键和值存入字典容器,供后续操作调用
Sub GetLxCode()
 Dim marketName
  dominantContract.RemoveAll
  marketName=Array("SQ","DQ","ZQ","ZJ")
  prefixStockNameOld=""
 c"
  contractVol=0
 
  For j=0 To UBound(marketName)
    n=marketData.GetReportCount(marketName(j))
    For i=0 To n-1
      Set reportData=marketdata.GetReportDataByIndex(marketName(j),i)
      prefixStockNameCur=left(reportData.StockName,2)
      suffixStockNameCur=right(reportData.StockName,2)
      If suffixStockNameCur>="00" And suffixStockNameCur<"99" And reportData.Volume>0 Then
      'If suffixStockNameCur="00" And reportData.Volume>0 Then
       If prefixStockNameCur<>prefixStockNameOld Then
         If contractLabel<>"" Then
           dominantContract.Add contractLabel,contractMarket
         End If
         prefixStockNameOld=prefixStockNameCur
         contractLabel=reportData.Label
         contractMarket=marketName(j)
         contractVol=reportData.Volume
       ElseIf reportData.Volume>contractVol then
         contractLabel=reportData.Label
         contractVol=reportData.Volume
       End If
     End If
    Next 
  Next
  dominantContract.Add contractLabel,contractMarket
 End sub

 回到顶部