Как получить данные из сообщения MarketDataIncrementalRefresh? - PullRequest
0 голосов
/ 30 сентября 2011

Как получить следующие значения из MarketDataIncrementalRefresh?

  • Символ / Инструмент
  • Предложение
  • Ставка
  • ПредложениеРазмер
  • 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 = +634528216663837491268 = 2279 = 0269 = 0278 = 155 = AUD / CAD270 = 1,0126515 = AUD271 = 1000000346 = 0269 = тысяча двести семьдесят-девять = 1278 = 255 = AUD / CAD270 =1.0130715 = AUD271 = 1000000346 = 110 = 094

1 Ответ

2 голосов
/ 30 сентября 2011

Проблема решена. Для извлечения данных из 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
...