Documentation for QuickFIX/Go

Getting Started

Validation

If configured to validate, QuickFIX/Go will validate and reject any poorly formed messages before they can reach your application. XML files define what messages, fields, and values a session supports.

Several standard files are in included in the spec/ directory.

The skeleton of a definition file looks like this.

<fix type="FIX" major="4" minor="1">
  <header>
    <field name="BeginString" required="Y"/>
    ...
  </header>
  <trailer>
    <field name="CheckSum" required="Y"/>
    ...
  </trailer>
  <messages>
    <message name="Heartbeat" msgtype="0" msgcat="admin">
      <field name="TestReqID" required="N"/>
    </message>
    ...
    <message name="NewOrderSingle" msgtype="D" msgcat="app">
      <field name="ClOrdID" required="Y"/>
      ...
    </message>
    ...
  </messages>
  <fields>
    <field number="1" name="Account" type="CHAR" />
    ...
    <field number="4" name="AdvSide" type="CHAR">
    <value enum="B" description="BUY" />
    <value enum="S" description="SELL" />
    <value enum="X" description="CROSS" />
    <value enum="T" description="TRADE" />
  </field>
  ...
  </fields>
</fix>

The validator will not reject conditionally-required fields because the rules for them are not clearly defined. Returning a MessageRejectError from an Application's FromApp or FromAdmin methods will cause a message to be rejected.