-
Notifications
You must be signed in to change notification settings - Fork 24
User's Guide
QuickFIX Messenger is a front-end messaging application built on-top of the QuickFIX/J engine.
It is a tool designed for technical individuals working on the Financial Information eXchange ("FIX") Protocol. The FIX Protocol is an industry-driven messaging standard for the electronic communication of trade-related messages.
QuickFIX Messenger is ideal for testing different messages and scenarios on FIX infrastructures. It provides a simple graphical user interface (GUI) for constructing and sending FIX messages across a given FIX session.
For support, questions, or general discussions, kindly visit our forum.
QuickFIX Messenger can be downloaded as an executable binary or can be built from source.
Both binary and source distributions are available for download at Google Code.
Unless planning to make changes to the default distribution, it is recommended to download the executable binary.
The binary distribution file is usually named qfix-messenger-<version>-bin.zip
.
The source distribution contains an Eclipse project which can be directly imported to an existing Eclipse workspace.
The source distribution file is usually named qfix-messenger-<version>-src.zip
.
The binary distribution includes executable scripts for an Initiator instance and an Acceptor instance. Both scripts come in 2 flavors: qfix-messenger-<instance>.bat
for Windows, qfix-messenger-<instance>.sh
for Linux/Unix.
Note that Java 7 (JRE 1.7) or later is required to run QuickFIX Messenger.
The source distribution includes an Ant script (build.xml
) which should be used to build QuickFIX Messenger. The default target is clean.deploy
which will build the project and copy all files to the deploy
directory.
The deploy
directory is structured same way as the binary distribution.
Visit our Developer's Guide for more information.
QuickFIX Messenger comes with 2 sets of configuration files, one for an Initiator instance (cfg/initiator
), and another for an Acceptor instance (cfg/acceptor
).
Each instance comes with 3 configuration files:
-
log4j.properties
- Configure logging -
messenger.cfg
- Configure the messenger application -
quickfix.cfg
- Configure the QuickFIX engine
-
messenger.isInitiator
- Indicates whether the messenger acts as a connection initiator or not (acceptor) -
messenger.parser.threads
- Indicates the number of threads to use when parsing a QuickFIX dictionary XML -
messenger.license
- Indicates the file path to the BSD license -
messenger.icons
- Indicates the directory path of the icon files -
messenger.home.url
- Indicates the QuickFIX Messenger website -
messenger.help.url
- Indicates the QuickFIX Messenger Help website -
messenger.fixwiki.url
- Indicates the FIXwiki website -
messenger.dict.fix<version>
- Indicates the file path to the QuickFIX dictionary XML indicated byversion
Please refer to QuickFIX/J's documentation page for details on how to configure the QuickFIX engine.
- Select a session from the list; this will display all messages supported by the session's FIX version.
- If a FIXT session is selected, select the desired
ApplVerID
to use
- Select a message from the list; this will display a form containing all fields available to the message.
- By default, only the required fields are displayed. To change this, unselect the Required Only check box.
- To show the Header fields, select the Modify Header check box.
- To show the Trailer fields, select the Modify Trailer check box.
Existing FIX message texts (i.e. from a log file) can be used to send a message. Select Free Text from the message list and paste the message to the text area provided.
Note that CheckSum(10)
and SendingTime(52)
will automatically be populated/updated by QuickFIX/J.
For Repeating Group fields, put the desired number of groups and click on Set; this is will update the form to display the desired number of groups.
While QuickFIX Messenger does not support message validation, it does support verification of field data formats. This means that if the input data does not match the expected format defined for the field, a warning symbol will appear on the text field.
Because QuickFIX Messenger is designed as a testing tool, fields with incorrect format will not prevent the message from being sent.
- Click on the shredder button to destroy the message and all fields stored in the cache.
- If an active project is available, click on the tray button to add the message to the project.
- Click on the envelope button to send the message across the session.
If the Preview Before Sending check box is selected, a confirmation will popup before the message gets sent.
Active sessions can be managed from the Sessions List.
- Selecting the Logon check box, initiates a logon sequence to the receiver.
- Clicking Reset will reset the session' sequence numbers to 1/1.
- Clicking Status will display the session details.
Messages sent or received are all logged to the Message Table.
Each row in the table represents a FIX message. Rows colored orange are received, while rows colored green are sent.
Double-clicking on a row will popup the details of the message.
To clear the table, right-click then select Clear All.
A separate window is displayed whenever a project is activated (new or open).
All messages added to the project are displayed in the window as a tree. Right-clicking on a selected message brings-up a popup menu.
- Load Message - Loads the message to the form
- Send Message - Sends the message across the session
- Export Message - Exports the message as an XML file
- Delete Message - Deletes the message from the project
- Send All Messages - Sends all messages in the project
- Collapse All - Collapses the entire tree
- Expand All - Expands the entire tree
At anytime, the Project View window can be activated via Window > Project Window or CTRL-P
Text values can also be modified from tree. Double-click on a text node to enable editing; press Enter to save, Esc to revert.
- New Project - Creates a new project
- Save Project - Saves the active project
- Open Project - Opens a project
- Close Project - Closes the active project
- Import Message - Imports an XML message to the form
- Export Message - Exports the form message to an XML file
- Exit - Exits the application
- All Sessions - Logon - Logon all sessions
- All Sessions - Logoff - Logoff all sessions
- All Sessions - Reset - Reset all sessions
- Help - Displays this Wiki page
- About - Displays the application information, including license
- Project Window - Opens the Project View of the active project
Double-click on fields in the form or messages in the list to bring-up the corresponding FIXWiki page.
QuickFIX Messenger supports populating selected fields when sending a Logon(A)
message.
To do this, modify the QuickFIX/J configuration and add the following attributes under a session configuration:
Username=<String>
Password=<String>
RawData=<String>
RawDataLength=<Integer>
TestMessageIndicator=<Boolean>
For example:
[session]
BeginString=FIX.4.3
SocketAcceptPort=9879
Username=username
Password=password
RawData=test data
RawDataLength=9
TestMessageIndicator=true
Note that the configured fields will be populated regardless of the session's FIX version. This means that despite being unsupported, Username(553)
, Password(554)
, and TestMessageIndicator(464)
will still get populated for FIX versions below 4.3.
Bug: the application will only apply the custom logon settings if all custom fields are present. As a workaround, include all custom fields in the config and set the unused ones to empty. See Issue #51.
QuickFIX Messenger uses XML documents as save files; this allows for a save format that is human-readable and editable from any text editor.
Exported messages are saved in an XML file having a structure similar to the message form.
The schema can be obtained from Subversion.
Sample Message XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:message xmlns:ns2="http://xml.fix.jramoyo.com" name="NewOrderSingle" msgType="D" isRequiredOnly="true">
<session>
<name>FIXT.1.1:INIT>ACCEPT</name>
<appVersionId>FIX.4.4</appVersionId>
</session>
<body>
<field name="ClOrdID" id="11">12345</field>
<component name="Instrument">
<field name="Symbol" id="55">MSFT</field>
</component>
<field name="OrdType" id="40">1</field>
<component name="OrderQtyData">
<field name="OrderQty" id="38">2400</field>
</component>
<field name="Side" id="54">1</field>
<field name="TransactTime" id="60">20120930-14:20:05.917</field>
</body>
</ns2:message>
Projects are saved in an XML file enclosing multiple Message XMLs.
The schema can be obtained from Subversion.
Sample Project XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:project xmlns:ns2="http://xml.fix.jramoyo.com" name="Project">
<messages>
<message name="NewOrderSingle" msgType="D" isRequiredOnly="true">
<session>
<name>FIXT.1.1:INIT>ACCEPT</name>
<appVersionId>FIX.4.4</appVersionId>
</session>
<body>
<field name="ClOrdID" id="11">12345</field>
<component name="Instrument">
<field name="Symbol" id="55">MSFT</field>
</component>
<field name="OrdType" id="40">1</field>
<component name="OrderQtyData">
<field name="OrderQty" id="38">2400</field>
</component>
<field name="Side" id="54">1</field>
<field name="TransactTime" id="60">20120930-14:20:05.917</field>
</body>
</message>
</messages>
</ns2:project>
QuickFIX Messenger uses a cross-platform look and feel provided by Substance.
To change this and use the default look and feel provided by the Operating System, modify the script and add the following property to the Java command: -useSystemLaF=true
Windows example:
javaw -DuseSystemLaF=true -cp %CLASSPATH% com.jramoyo.qfixmessenger.QFixMessenger "cfg\acceptor\messenger.cfg" "cfg\acceptor\quickfix.cfg"
Linux/Unix example:
java -DuseSystemLaF=true -cp "$CLASSPATH" com.jramoyo.qfixmessenger.QFixMessenger "cfg/acceptor/messenger.cfg" "cfg/acceptor/quickfix.cfg"
QuickFIX Messenger running on a Windows 7 look and feel.