Uploaded image for project: 'QuickFIX/J'
  1. QuickFIX/J
  2. QFJ-984

The order of the tags constructing a message is mixed

    Details

    • Type: Other
    • Status: Closed
    • Priority: Minor
    • Resolution: Not a bug
    • Affects Version/s: 2.1.1
    • Fix Version/s: None
    • Component/s: Message Generation
    • Labels:
      None

      Description

      I construct a message in the following way:

      quickfix.fix44.MarketDataRequest message = new quickfix.fix44.MarketDataRequest();
              
              char zero = '0';
              char one = '1';
              message.setField(new quickfix.field.MDReqID("EURUSD")); // 262
              message.setField(new quickfix.field.SubscriptionRequestType(one)); // 263
              message.setField(new quickfix.field.MarketDepth(1)); // 264
              message.setField(new quickfix.field.MDUpdateType(0)); // 265            
      
              message.setField(new quickfix.field.NoMDEntryTypes(2)); // 267
              message.setField(new quickfix.field.MDEntryType(zero)); // 269        
              message.setField(new quickfix.field.MDEntryType(one)); // 269
      
              message.setField(new quickfix.field.NoRelatedSym(1)); // 146
              message.setField(new quickfix.field.SecurityID("4001")); // 48
              message.setField(new quickfix.field.SecurityIDSource("8")); // 22
              
              Session.sendToTarget(message, senderCompID, marketTargetCompID); 
      

      I also load a dictionary in which tags 146, 48 and 22 are after tag 269. But the message sent to the trader looks like this:

      8=FIX.4.4^A9=121^A35=V^A34=2^A49=USERNAME^A52=20190821-11:11:42.045^A56=TRADER^A22=8^A48=4001^A146=1^A262=EURUSD^A263=1^A264=1^A265=0^A267=2^A269=1^A10=191^A

      The confusing thing is that tags 146, 48 and 22 are mixed and moved before tag 262 even though the dictionary doesn't allow that.

      I have two suggestion why this may happen:

      • Quickfix/J mixes the tags because of an issue or because I miss some configuration.
      • The dictionary provided by the trader is not loaded and I use some defaultdictionary which brings me to this issue.

      I don't know if that would help but here is the cfg file:

      [DEFAULT]
      ConnectionType=initiator
      BeginString=FIX.4.4
      
      StartTime=08:30:00
      EndTime=21:30:00
      ReconnectInterval=5
      HeartBtInt=5
      LogonTimeout=60
      
      FileStorePath=target/data/sessions/
      FileLogPath=target/data/logs/
      
      SenderCompID=USERNAME
      UseDataDictionary=Y
      SocketUseSSL=Y
      
      
      [SESSION]
      TargetCompID=TRADER
      SocketConnectHost=URL_OF_THE_TRADER
      SocketConnectPort=443
      DataDictionary=/var/quickfixj/automated/DICTIONARY.xml
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              Tashev Pavel
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: