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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]我想用这种方法自动筛选主力合约

   

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


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

主题:[求助]我想用这种方法自动筛选主力合约

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/30 18:20:02 [显示全部帖子]

'该示例从郑州市场筛选SR合约得最大持仓量做为主力合约

 Sub Test()
 
 Dim MaxCode
 Dim MaxVolume
 
 '得到市场所有品种
 Count = MarketData.GetReportCount("ZQ")
 
 For i = 0 To Count-1
  Set Report1 = MarketData.GetReportDataByIndex("ZQ",i)
  '只处理SR合约
  if Left(Report1.Label,2) = "SR" Then
   '只处理有效合约
   if Right(Report1.Label,2) >= "01" And Right(Report1.Label,2) <= "12" Then
    If Report1.Volume > MaxVolume Then
     MaxCode = Report1.Label
     MaxVolume = Report1.Volume
    End if
   end if
  End if
 Next
 
 '显示成交量最大得合约
 MsgBox MaxCode
 
End Sub

[此贴子已经被作者于2010-7-30 18:20:47编辑过]

[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/8/1 20:00:22 [显示全部帖子]

'枚举合约,将主力合约的代码和对应市场代码分别作为键和值存入字典容器,供后续操作调用
 

以下内容为程序代码:

1 Sub frmTest_CommandButton4_Click()
2     Dim marketName
3     Set dominantContract=CreateObject("Scripting.Dictionary")
4     marketName=Array("SQ","DQ","ZQ","ZJ")
5     prefixStockNameOld=""
6     c"
8     contractVol=0
9         
10     For j=0 To UBound(marketName)
11         n=marketData.GetReportCount(marketName(j))
12         For i=0 To n-1
13             Set reportData=marketdata.GetReportDataByIndex(marketName(j),i)
14             prefixStockNameCur=left(reportData.StockName,2)
15             suffixStockNameCur=right(reportData.StockName,2)
16             If suffixStockNameCur>="00" And suffixStockNameCur<"99" And reportData.Volume>0 Then
17                 If prefixStockNameCur<>prefixStockNameOld Then
18                     If contractLabel<>"" Then
19                         dominantContract.Add contractLabel,contractMarket
20                     End If
21                     prefixStockNameOld=prefixStockNameCur
22                     contractLabel=reportData.Label
23                     contractMarket=marketName(j)
24                     contractVol=reportData.Volume
25                 ElseIf reportData.Volume>contractVol then
26                     contractLabel=reportData.Label
27                     contractVol=reportData.Volume
28                 End If
29             End If
30         Next     
31     Next
32     dominantContract.Add contractLabel,contractMarket
33     
34     output="Total:"
35     labels=dominantContract.Keys
36     markets=dominantContract.Items
37     output=output&dominantContract.Count&vbCrLf
38     For i = 0 To dominantContract.Count-1
39         output=output&labels(i)&vbTab&markets(i)&vbCrLf
40     Next
41     MsgBox output
42 End Sub

[此贴子已经被作者于2010-8-11 13:46:21编辑过]

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/8/1 20:25:41 [显示全部帖子]

你再发代码时,试试只用代码模式编辑看看


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/8/1 21:08:09 [显示全部帖子]

应该的论坛的安全机制起了作用,请在发贴时,选择上方的一排按钮中的带个小A字的那个,然后点击在那里面插入代码

 回到顶部