2017-02-24 6 views
0

수정 메시지를 구문 분석 할 때 "필드 134 찾을 수 없습니다"라는 오류가 발생합니다. 그러나 디버거에서 메시지를 볼 때 태그 134가 있습니다. 내 데이터 사전을 확인하고 또한 괜찮을 것 같습니다.수정 태그를 찾을 수 없습니다, 이미있는 경우

아래 코드는 제 코드입니다.

var QuoteGroup = 
       new QuickFix.FIX44.MassQuote.NoQuoteSetsGroup(); 
      msg.GetGroup(1, QuoteGroup); 
      //bid group 

      bidQty = Int32.Parse(QuoteGroup.GetString(134)); 
      string offerQty1 = QuoteGroup.GetField(135); 

      string bidPriceStr = QuoteGroup.GetField(tag: 188); 
      float.TryParse(bidPriceStr, out bidPrice); 

수정 메시지 : 20170224-20 : 55 : 27.640 8 = FIX.4.4 | 9 = 132 | 35 = 1 | 2 = 34 | 49 XCD12 = | = 20170224-20 52 : 55 : 30.274 AVG | 295 = 1 | 299 = 0 | 134 = 2000000 | 135 = 2000000 | 188 = 1.24556 | 190 = 1.24561 | 10 = 027 | 다음은

는 DD입니다 :

<message name="MassQuote" msgtype="i" msgcat="app"> 
    <field name="QuoteReqID" required="N" /> 
    <field name="QuoteID" required="N" /> 
    <field name="QuoteType" required="N" /> 
    <field name="QuoteResponseLevel" required="N" /> 
    <component name="Parties" required="N" /> 
    <field name="Account" required="N" /> 
    <field name="AcctIDSource" required="N" /> 
    <field name="AccountType" required="N" /> 
    <field name="DefBidSize" required="N" /> 
    <field name="DefOfferSize" required="N" /> 
    <group name="NoQuoteSets" required="Y"> 
    <field name="QuoteSetID" required="Y" /> 
    <component name="UnderlyingInstrument" required="N" /> 
    <field name="QuoteSetValidUntilTime" required="N" /> 
    <field name="TotNoQuoteEntries" required="Y" /> 
    <field name="LastFragment" required="N" /> 
    <group name="NoQuoteEntries" required="Y"> 
     <field name="QuoteEntryID" required="Y" /> 
     <component name="Instrument" required="N" /> 
     <group name="NoLegs" required="N"> 
     <component name="InstrumentLeg" required="N" /> 
     </group> 
     <field name="BidPx" required="N" /> 
     <field name="OfferPx" required="N" /> 
     <field name="BidSize" required="N" /> 
     <field name="OfferSize" required="N" /> 
     <field name="ValidUntilTime" required="N" /> 
     <field name="BidSpotRate" required="N" /> 
     <field name="OfferSpotRate" required="N" /> 
     <field name="BidForwardPoints" required="N" /> 
     <field name="OfferForwardPoints" required="N" /> 
     <field name="MidPx" required="N" /> 
     <field name="BidYield" required="N" /> 
     <field name="MidYield" required="N" /> 
     <field name="OfferYield" required="N" /> 
     <field name="TransactTime" required="N" /> 
     <field name="TradingSessionID" required="N" /> 
     <field name="TradingSessionSubID" required="N" /> 
     <field name="SettlDate" required="N" /> 
     <field name="OrdType" required="N" /> 
     <field name="SettlDate2" required="N" /> 
     <field name="OrderQty2" required="N" /> 
     <field name="BidForwardPoints2" required="N" /> 
     <field name="OfferForwardPoints2" required="N" /> 
     <field name="Currency" required="N" /> 
    </group> 
    </group> 

당신이 세부 사항을 더 필요로하는 경우 나, 알려 주시기 바랍니다.

답변

2

내부에 중첩 된 QuoteEntry 그룹 대신 QuoteSet 그룹에서 134를 추출하려고합니다. 그룹에 따라 들여 쓰기

귀하의 메시지 :

 var QuoteGroup = 
      new QuickFix.FIX44.MassQuote.NoQuoteSetsGroup(); 
     msg.GetGroup(1, QuoteGroup); 

     var QuoteEntry = 
      new QuickFix.FIX44.MassQuote.NoQuoteSetsGroup.NoQuoteEntriesGroup(); 
     QuoteEntry.GetGroup(1, QuoteEntry); 

     bidQty = Int32.Parse(QuoteEntry.GetString(134)); 
:

296=1 NoQuoteSets 
    302=AVG 
    295=1 NoQuoteEntries 
    299=0 
    134=2000000 
    135=2000000 
    188=1.24556 
    190=1.24561 

귀하의 코드는 다음과 같이해야한다