Skip to content

Latest commit

 

History

History

08-quickfix

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

QuickFIX Data Dictionary Generation

This example demonstrates how to generate a QuickFIX data dictionary directly from an Orchestra specification.

This capability ensures backward compatibility for QuickFIX users transitioning to Orchestra as their primary repository, eliminating the need for separate QuickFIX data dictionary management.

The example uses the derived specification from a previous example that defines a single custom NewOrderSingle message.

Configuration

Include the QuickFIX dataDictionary extension in the build.gradle file to enable generating a QuickFIX data dictionary.

orchestra {
  specification {
    markdown {
      reference orchestraHub(name: 'fix-latest', version: 'ep293')
    }
  }

  // Enable QuickFIX data dictionary generation
  quickfix {
    dataDictionary {}
  }
}

Run

Use the Gradle wrapper to run the example.

$ ./gradlew :basic-examples:08-quickfix:runExample

Note: runExample is wired to call the orchestraGenerateQuickfixDataDictionary task from the Orchestra plugin.

Results

The QuickFIX data dictionary will be output to the Gradle build folder.

$ ./basic-examples/08-quickfix/build/quickfix/08-quickfix.xml

Output

<fix major="999" minor="0">
  <header/>
  <trailer/>
  <messages>
    <message name="NewOrderSingle" msgtype="D" msgcat="app">
      <field name="Account" required="Y"/> // Optional field in FIX 4.4
      <field name="ClOrdID" required="Y"/>
      <field name="Currency" required="N"/>
      <field name="ExecInst" required="N"/>
      <field name="HandlInst" required="N"/>
      <component name="Instrument" required="Y"/> // Custom Instrument component
      <component name="OrderQtyData" required="Y"/>
      <field name="OrdType" required="Y"/>
      <field name="Price" required="N"/>
      <field name="Rule80A" required="Y"/> // Deprecated field. Replaced by OrderCapacity(528) in FIX.4.3.
      <field name="Side" required="Y"/>
      <field name="TimeInForce" required="N"/>
      <field name="TransactTime" required="Y"/>
      <field name="ExecBroker" required="N"/> // Deprecated field. Removed in FIX.4.3.
      <field name="StopPx" required="N"/>
      <field name="ExDestination" required="N"/>
      <field name="MinQty" required="N"/>
      <field name="MaxFloor" required="N"/>
      <field name="LocateReqd" required="N"/>
      <field name="SettlCurrency" required="N"/>
      <field name="ExpireTime" required="N"/>
      <field name="ComplianceID" required="N"/>
      <field name="SolicitedFlag" required="N"/>
      <field name="SecondaryClOrdID" required="N"/>
      <field name="CorporateBuyback" required="N"/> // User-defined field (UDF) not present in the reference specification.
    </message>
  </messages>
  <components>
    ...
  </components>
  <fields>
      ...
  </fields>
</fix>