说明下我是做股票的,我想监控上证市场的所有股票的最新行情该怎么做? [金字塔]
- 咨询内容:
请问用能否对整个市场的行情进行[事件]的监控,说明下我是做股票的,我想监控上证市场的所有股票的最新行情该怎么做?
{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代码是需要注册某个股票代码后才能发生[事件],如果我不注册特定的品种,想对整个上证市场的股票进行[行情监控]我该怎么做?
- 金字塔客服:
使用定时器,遍历整个市场的合约对象
‘该示例从郑州市场筛选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
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容