0

如何从 MarketDataIncrementalRefresh 中检索以下值?

  • 符号/工具
  • 提供
  • 投标
  • 报价大小
  • 出价大小

我熟悉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=1279=0269=1278= 255=澳元/加元270=1.0130715=澳元271=1000000346=110=094

4

1 回答 1

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
于 2011-09-30T05:57:23.327 回答