在 C# 中处理来自 Quickfix 的 MassQuote 响应

Handling MassQuote response from Quickfix in C#

我正在开发一个带有 Buy/Sell 按钮和 Bid/Ask 显示屏的基本交易平台。

我正在成功发送 MarketDataRequest -> 获得 MassQuote 响应 -> 发回 MassQuoteAcknowledgement 并获取更新。

我只是不知道如何使用 QuickFixn 从响应中获取价格

下面的示例响应

8=FIX.4.4|9=132|35=i|34=6|49=XXXXXXX|52=20160517-22:38:56.159|56=XXXXXXXXX|117=4|296=1|302=AP2|295=1|299=0|188=1.97471|190=1.97506|10=053|

我看到那里的价格,但我不知道如何在我的 C# 应用程序中提取它。

public void HandleMassQuote(QuickFix.FIX44.MassQuote msg)
{
     try
     {
         // Acknowledgement sending code removed
         if (msg.IsSetField(new QuickFix.Fields.BidSpotRate()))
         {
              BuyPrice = msg.GetField(new QuickFix.Fields.BidSpotRate()).ToString();

              Trace.WriteLine("Bid Rate: " + BuyPrice);
         }
         if (msg.IsSetField(new QuickFix.Fields.OfferSpotRate()))
         {
              SellPrice = msg.GetField(new QuickFix.Fields.OfferSpotRate()).ToString();

              Trace.WriteLine("Offer Rate: " + SellPrice);
         }
     }

     catch (Exception e)
     {
         Trace.WriteLine(e.ToString());
     }
}

有没有人有这方面的经验可以为我指明正确的方向?我假设我遗漏了一些如此明显的东西,但我还没有意识到

BidSpotRateSellSpotRate 在一个重复组中,但您正试图将它们提取出来,就像它们位于邮件的顶层一样。您正在捕获 FieldNotFound 异常吗?

这是您的邮件正文:

117=4      QuoteID
296=1      NoQuoteSets (indicates 1 QuoteSet group will follow)
  302=AP2    QuoteSetID (first tag of first QuoteSet)
  295=1      NoQuoteEntries (indicates 1 QuoteEntry group will follow)
    299=0       QuoteEntryID (first tag of first QuoteEntry)
    188=1.97471 BidSpotRate
    190=1.97506 SellSpotRate

所以,查看 this page

您需要先提取第一个(也是唯一的)QuoteSets 组,然后从中提取第一个(也是唯一的)QuoteEntries 组,然后然后 调用 getField那个组。