FixAtdl Library: A GUI library implementation

2 minute read

A set of XML Schema files has been created to describe the structure of a FIXatdl document instance. These files can be used with commercial XML parsing software to validate a FIXatdl document instance. They can also be used with XML data binding utilities to generate source code which maps classes to XML representations. The files are grouped into two functional categories: Data Contract – Defines the wire-value interface of an algorithmic order. For each algorithm/strategy it defines the valid set of parameters and availability of the strategy for specific markets. For each parameter of an algorithm/strategy it defines the type; the legal range of values (including minimum and maximum values); whether it is optional or required; and value constraints based on certain conditions or the value of other parameters (validation rules). GUI – Defines the recommended GUI controls that should be rendered on the order entry screen and their location on the screen. Defines the rules that affect the state of a GUI control. Provides a mapping of the on screen controls with the parameters of the data contract. The constructs of the schema files have been categorized this way to ensure that the data contract is de-coupled from the GUI. This provides some flexibility for E/OMS vendors in how FIXatdl is applied. For example, data contract functions, such as parameter validation, may be performed in an application downstream from the E/OMS without the need for the XML that describes the GUI.

Transport of Strategy Parameters

The FIX Protocol allows algorithmic order parameters to be transported between parties either by use of the StrategyParametersGrp repeating group or by use of user-defined tags mutually agreed upon by the order originator and order recipient. FIXatdl provides a means for the order recipient to inform the order originator which of these methods to use. An algorithmic order provider indicates that it can receive parameters through the StrategyParametersGrp component block (tags 957-960) by setting the attribute of the Strategies element, tag957Support, to true. The recipient can also indicate that it is able to receive parameters via user-defined tags by proving values for the fixTag attributes of each Parameter element. An algorithmic order provider may support both transport methods. To illustrate, consider the following listing:

<Strategies strategyIdentifierTag="7000" versionIdentifierTag="7001" tag957Support=”true”>
 <Strategy name="POV" uiRep="POV" wireValue="v" version="1" fixMsgType="D">
 <Parameter name=”PctVol” xsi:type=”Percentage_t” fixTag=”7002” use=”required”/>
 <Parameter name=”FC” xsi:type=”Boolean_t” fixTag=”7003” use=”required”/>
 <StrategyLayout>
 <StrategyPanel>
 <Control ID=”c_PctVol” xsi:type=”SingleSpinner_t” label=”Pct of Volume” parameterRef=”PctVol”/>
 <Control ID=”c_FC” xsi:type=”CheckBox_t” label=”Force Completion” parameterRef=”FC”/>
 </StrategyPanel>
 </StrategyLayout>
 </Strategy>
</Strategies>

This document instance describes an algorithm with two parameters, PctVol and ForceCompletion. The algorithm provider has also indicated that it supports receipt of these parameters via StrategyParametersGrp and via the custom tags, 7002 and 7003. So an E/OMS would be free to choose between the two methods when it transmits the parameters. If this were to be rendered by an E/OMS and a user was to enter a PctVol value of 0.15 and check the Force Completion checkbox, then the order generated may contain a substring similar to:

. . 35=D|11=1234|55=AXP|. . |7000=v|7001=1|957=2|958=PctVol|959=11|960=0.15|958=FC|959=13|960=Y

In this case the E/OMS has decided to use the StrategyParametersGrp repeating group. If tag957Support were set to false then the E/OMS would be forced to use the UDFs, 7002 and 7003, as in:

. . 35=D|11=1234|55=AXP|. . |7000=v|7001=1|7002=0.15|7003=Y

Supported Control Element

  1. Clock
  2. TextField_t
  3. SingleSelectList_t
  4. MultiSelectList_t
  5. Slider_t
  6. CheckBox_t
  7. CheckBoxList_t
  8. SingleSpinner_t
  9. DoubleSpinner_t
  10. DropDownList_t
  11. EditableDropDownList_t
  12. RadioButton_t
  13. RadioButtonList_t
  14. Label_t
847=1007|957=3|958=Sweep Size|959=10|960=100.00|958=Peg Value Ticks|959=1|960=2|958=EndTime|959=19|960=20200614-21:00:00

alt text

Updated: