在 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());
}
}
有没有人有这方面的经验可以为我指明正确的方向?我假设我遗漏了一些如此明显的东西,但我还没有意识到
BidSpotRate
和 SellSpotRate
在一个重复组中,但您正试图将它们提取出来,就像它们位于邮件的顶层一样。您正在捕获 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
那个组。
我正在开发一个带有 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());
}
}
有没有人有这方面的经验可以为我指明正确的方向?我假设我遗漏了一些如此明显的东西,但我还没有意识到
BidSpotRate
和 SellSpotRate
在一个重复组中,但您正试图将它们提取出来,就像它们位于邮件的顶层一样。您正在捕获 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
那个组。