說明下我是做股票的,我想監控上證市場的所有股票的最新行情該怎么做? [金字塔]
- 咨詢內容:
請問用能否對整個市場的行情進行[事件]的監控,說明下我是做股票的,我想監控上證市場的所有股票的最新行情該怎么做?
{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 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容