以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  说明下我是做股票的,我想监控上证市场的所有股票的最新行情该怎么做?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=69354)

--  作者:ywbab
--  发布时间:2014/8/28 21:16:58
--  说明下我是做股票的,我想监控上证市场的所有股票的最新行情该怎么做?
请问用能否对整个市场的行情进行[事件]的监控,说明下我是做股票的,我想监控上证市场的所有股票的最新行情该怎么做?

{

 2、ReportNotify事件

     使用ReportNotity来监控价格变化比上面的定时读取价格的方法好的地方是价格的每一次跳动都逃不过这个事件的监控,而使用定时器,则会漏掉一些价格,不如:股指每一秒钟有2笔成交回报,用上面的方法就会漏掉一次价格变化,当然如果你把定时器设置成500毫秒一次也可以获取每一次的价格变化,但是这样对系统资源的消耗会很大的,而是用这个事件相对占用较少系统资源。

    如果你是做套利的,那么对价格变动更加敏感,使用这个事件是最好的选择。

    这个事件的使用,需要首先注册你要监控的品种,使用RegReportNotify方法,代码如下:

    sub RegIF()            \'还是监控IF06合约的价格变化

            Call MarketData.RegReportNotify("IF06","ZJ")

            \'要监控多个品种,继续写代码就行了,如:

            Call MarketData.RegReportNotify("RB10","SQ")    \'监控上期的螺纹钢10月份合约

    end sub

    把这个过程用到VBAStart事件中,就会在启动VBA时自动注册对IF06合约的监控

 

    到这里为止,你只做了一半事情,很多人就是在这之后不知道怎么获取行情数据了。别担心,继续看下去你就明白了。

 

    注册了合约之后,需要通过另一个事件来获取行情数据,那就是ReportNotify事件,这个事件会返回一个ReportData对象,这个更上面的一样。

    Sub MarketData_ReportNotify(ReportData)

            \'有人在这里还是用1的方法设置一个report1变量,然后取report1的返回值,这是多余的,ReportData本身就是返回的数据,直接取reportData的值就行了。

            NewPrice=ReportData.NewPrice

            stkLable=ReportData.Label

            Application.Msgout Cdate(time) & ",Code:" & stkLabel & ",NewPrice:" & NewPrice

    End Sub

}


上面的vba代码是需要注册某个股票代码后才能发生[事件],如果我不注册特定的品种,想对整个上证市场的股票进行[行情监控]我该怎么做?




--  作者:王锋
--  发布时间:2014/8/28 22:34: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