2011-09-30 2 views
0

MarketDataIncrementalRefresh에서 다음 값을 검색하려면 어떻게해야합니까?MarketDataIncrementalRefresh 메시지에서 데이터를 검색하는 방법은 무엇입니까?

  • 기호/악기
  • 제공
  • 입찰
  • OfferSize
  • BidSize

내가 예를 들어, Quote 메시지 처리에 익숙 해요 :

If quote.isSetOfferPx Then Offer = quote.getOfferPx.getValue 

MarketDataIncrementalRefresh에서 같은 방법으로 시도했지만 그러한 방법은 없으며 isSetField 필드는 존재하지만 항상 false을 반환합니다.

MarketDataIncrementalRefresh 예 메시지 :

8 = FIX.4.29 = 22535 = X34 = 349 = ABC52 20110928-12 = 47 : 53.31656 = TARGETCOMPID262 = 634,528,216,663,837,491,268 = 2279 = 0269 = 0278 = 155 = AUD/CAD270 = 1.0126515 = AUD271 = 1,000,000,346 = 1279 = 0269 = 1278 = 255 = AUD/CAD270 = 1.0130715 = AUD271 = 1,000,000,346 = 110 = 094

답변

2

문제 해결. MarketDataIncrementalRefresh에서 데이터를 검색하려면 Groups 빌드가 필요합니다. 따라서 각 그룹을 가져 와서 데이터를 개별적으로 검색해야했습니다.

방법은 다음과 같습니다

Public Overrides Sub onMessage(message As QuickFix42.MarketDataIncrementalRefresh, session As SessionID) 

    Try 
     If message IsNot Nothing Then 
      Dim group As New MarketDataIncrementalRefresh.NoMDEntries() 

      For i = 1 To message.getNoMDEntries.getValue 

       group = message.getGroup(i, group) 

       If group.isSetSymbol Then 
        Dim l_symbol As String = group.getSymbol().getValue 

        If group.getMDEntryType().getValue() = "0"c Then 
         SetBid(l_symbol, group.getMDEntryPx().getValue()) 
         If group.isSetMDEntrySize Then 
          SetBidSize(l_symbol, group.getMDEntrySize().getValue) 
         End If 
        End If 

        If group.getMDEntryType().getValue() = "1"c Then 
         SetOffer(l_symbol, group.getMDEntryPx().getValue()) 
         If group.isSetMDEntrySize Then 
          SetOfferSize(l_symbol, group.getMDEntrySize().getValue) 
         End If 
        End If 
       End If 
      Next 
     End If 
    Catch ex As Exception 

    End Try 

End Sub 
관련 문제