2016-05-17 4 views
1

Я разрабатываю базовую торговую платформу с кнопкой Buy/Sell и Bid/Ask.Обработка ответа MassQuote от Quickfix в C#

Я успешно передаю MarketDataRequest -> получите ответ MassQuote -> Отправка подтверждения MassQuote и получение обновлений.

Я просто не могу понять, как получить цены из ответа, используя 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()); 
    } 
} 

У кого-нибудь был опыт с этим, который может указать мне в правильном направлении? Я предполагаю, что мне не хватает чего-то столь очевидного, но я еще не понял его, но он еще не расслышал.

+0

'Trace.WriteLine (" Ставка: "+ BuyPrice);' Здесь вы ошибаетесь. Вы пытаетесь напечатать объект, работа может работать не в зависимости от реализации. Извлеките цену из объекта, а затем распечатайте его. Может быть метод для извлечения цены. – DumbCoder

+1

@ DumbCoder - в его коде 'BuyPrice' фактически является строкой, а не объектом. –

ответ

1

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 на эту группу.

+0

Большое вам спасибо! – Brett