FIX Client Simulator is an administrative application that allows initiating and accepting FIX sessions, exchanging, and editing FIX messages. The tool is based on .NET technologies and can be used to simulate FIX buy and/or sell-side endpoints. FIX Client Simulator is built on top of the FIX Antenna™ engine and shares all its common features and benefits. FIX Client Simulator uses B2BITS' FIXopaedia as a FIX reference source and provides complete support of all standard and custom FIX dictionaries.
FIX Client Simulator features
- Allows establishing multiple acceptor/initiator sessions to local and/or remote hosts
- Supports unregistered acceptor sessions
- Supports standard FIX versions 4.0 - 5.0 SP2 and dialects
- Supports all FIX message types (pre-trade, trade, post-trade, market data, etc.)
- Supports a wide range of FIX session settings including Custom Logon message
- Supports multiple custom dictionaries
- Allows overriding Sender and Target CompIDs for the established session
- Allows manual sequence numbers definition or reset
- Allows restarting the working session
- Allows enabling/disabling message re-sending
- Allows events monitoring:
- sent and received messages
- active sessions
- sessions statuses in real time
- Allows writing raw FIX messages, opening and editing them in the table view
- Provides the ability to search for a text in a raw FIX message
- Provides the ability to load, modify and send a file containing a preset message or batch of messages
- Provides the ability to send messages in a defined interval
- Provides optional ability for message validation for both incoming and outgoing messages
- Provides the ability to autoincrement tag values of FIX messages sent to the session
- Provides the ability to replay log files - send FIX messages from log file to session
- Provides the ability to send only selected FIX messages to the session
- Provides the ability to save application state (the application remembers parameters and state of FIX Sessions that were on the moment of the last application closing and use them on the next startup)
Prerequisites and System Requirements
FIX Client Simulator is based on FIX Antenna C++/.NET FIX Engine (for more details refer to FIX Antenna C/C++/.NET FIX Engine documents). It can be installed separately or as a part of the FIX Antenna .NET package.
Any modern Intel-based server or workstation with 64 bit CPU
- Supported operating systems:
- Windows 7
- Windows 8
- Windows 10
- Windows Server 2008 R2
- Windows Server 2012
- The list of packages that should be installed before FIX Client Simulator's installation:
- VS 2010 C++ Redistributable Package (x64) https://www.microsoft.com/en-US/download/details.aspx?id=14632. It can be found in FIX Antenna's or Simple Client's (2.21 or higher) package \Redist directory
In order to create session, choose: Session => Create new:
Specify the session type (Initiator or Acceptor) and parameters (SenderCompID, TargetCompID, remote host and port) in the Create Session window:
The left column of the Create Session window includes all required parameters. If at least one of them is specified incorrectly, the session will not be created.
The right column includes extended parameters that are optional.
Custom Logon messages can be used after ticking the corresponding line at the bottom of the window.
After the session is established you will see it in the “Session List” section. All received messages will be displayed in the Event section below.
Manual sequence numbers definition and reset
To define sequence numbers manually, open the Create Session window and specify values in InSeqNum/OutSeqNum:
To reset sequence numbers manually open the Create Session window and tick Reset Sequence number.
Display administrative messages in the console
To see or hide administrative messages in the console open Create Session window and select the Show session messages check box (by default the check box is empty).
You can select a session and click on Show session messages in the Session menu or in the context menu of the session window.
This setting is stored as other session settings and restored after session restart.
In order to send a message, please specify it in Send Message tab, choose a session, and press Send button. Please note that the Sequence number and sending time will be set automatically:
To override Sender and Target CompIDs tick Override SenderCompIDs or Override TargetCompID in the main menu of the application in the Options section
To specify the message sending rate enter the value in the Rate(msg/sec) input field in Send Message tab.
To enable message re-sending open Options from the context menu and tick Allow message re-sending:
Sending selected messages
This feature is available since the FIX Client Simulator 3.0.0 release.
In order to send the message(s), please open Send Message tab, choose a session and type the message(s) in the text box. To send all messages specified in Send Message tab, press Send all button.
To send only selected message(s) select it in the Send Message tab and press Send Selected button. Only message(s) started with the 8 tag and ended with the 10 tag will be sent.
The sent message will be highlighted in light grey.
To send messages one by one select the message in the Send Message tab and press Send Current and go Next button. The first sent message will be highlighted in light grey and the next message will be highlighted in dark grey.
To reset the selection of messages, please press the Reset button.
Autoincrement tag values
When sending messages, the values of the specified numeric tags can be automatically increased with each sending. Tag numbers that must be changed are set in the Autoincrement tags field. If you want to change the values of several tags, their numbers must be separated by a space. If the tag is included in the Repeating group, the root tag must go first then the slash symbol, and then the tag as shown in the figure below:
To send messages from the log file to the session (replay log file), please specify the log file in the Replay tab, choose a session, and press the Play button.
Log files of the following formats may be replayed:
Also provides the ability:
- to suspend sending messages from the log (Pause button)
- to stop sending messages from the log (Stop button)
- to send messages one by one (just after Loading file, after Pause, after Stop. Next button)
Please note that the Replay function does not send Administrative messages (35=0, 35=A, 35=5, 35=3, 35=2, 35=4, and 35=2) by design.
To send a specific range of messages it is possible to specify a filter by Sequence numbers or/and types of messages (Filter).
The log can be replayed several times. The number of replays is set by the Send count parameter.
The Send count parameter is ignored if messages are sent one by one
To specify the message sending rate for message sending enter the value in the Rate(msg/sec) field in the Replay tab. Also, the interval can be calculated based on the timestamp in the log file (Use timestamps tick).
In addition, the interval for sending messages is changed by setting a multiplier other than one (Speed parameter).
The upper right part of the Simple Client window displays the message to be sent.
The upper left part shows the list of active sessions.
And the lower part is an event log, each record corresponding to one event and consisting of the event time, name and description:
The New Events Viewer interface is available starting from version 2.28.0 of FIX Client Simulator.
Events viewer displays events and messages of the chosen session in the Session list section. If you choose several sessions, all events belonging to the sessions are displayed in the Events Viewer section.
Checkboxes on the bottom of Event Viewer allow you to adjust the completeness of the event display, including messages. You can show or hide Timestamps, Header, or Trailer of a FIX message, Application messages, and Session messages.
Incoming, Outgoing, and Console messages are highlighted with different colors for visual usability. The colors can be changed in Fcs.exe.config file.
By choosing Split Window the Events Viewer section is split into three windows: Incoming, Outgoing, and Console. No highlighting is applied in such a mode.
You can auto-scroll the events by clicking Events Viewer=>Auto scroll in the main menu, so Events Viewer will display the latest events.
To clear the Events Viewer section click Clear event viewer.
FIX Client Simulator changes the tags' order in Event Viewer according to the dictionaries' structure.
It happens when the dictionary used by the Simple Client, has not had the same tag order as it is in the counterparty's specification. In the Event Viewer, the messages are represented according to the dictionary's structure. The original tag order may be seen in incoming log files.
Example showing how to re-order tags for the screenshot above
TimeInForce (tag 59) is located after block parties (tag 453)
TimeInForce (tag 59) is located before block parties (tag 453)
Searching for a raw message
Users can search for a text in a raw message using the search line below the Send Message field:
You can write a message in the Send Message field and edit it:
To enter a field delimiter click the right button in Send Message field and choose Insert <SOH>:
Loading predefined message or message batch
You can load a preset message and edit it before sending it.
Go to Message -> Load to load a preset message and click the Send button to send it to the counterparty. Or select Message -> Send batch to load and immediately (without editing) send a number of preset messages from one file:
Create messages from the template
You can create a template message from a dictionary with the required tags and edit it before sending it.
Go to Message -> Create to load a list of messages from a dictionary, which is corresponding to the selected session. Click the Create button to open it in the editable table for further filling of tag values and sending the message to the counterparty:
Adding custom dictionaries
(Available starting from version 2.28.0 of FIX Client Simulator)
FIX Client Simulator supports multiple FIX custom dictionaries.
FIX custom dictionaries are stored in the Data folder.
The configuration of custom dictionaries is stored in the engine.properties file of the Client Simulator.
To add a custom dictionary:
- Place a custom dictionary in the Data product folder.
- Add the dictionary to the engine.properties file:
- insert the dictionary name to the list of available FIX dictionaries defined as the DictionariesFilesList
- specify the newly added dictionary to the AdditionalParsersList property in the format CustomDictionaryName@DictionaryID, CustomDictionaryName can be any name, which will appear in the list of dictionaries available, when creating a session, DictionaryID must be taken from the new dictionary: id="DictionaryID".
3. To apply the new dictionary open the FIX version drop-down list in the Create Session dialog, the customized protocol version is shown in the drop-down list.
When you select a customized protocol version and click OK, a FIX session with specified parameters is created.
To apply a customized protocol to the incoming session, you should create an acceptor session with a defined version for it.
You can add an unlimited number of custom dictionaries to the FIX Client Simulator.
You can open a message in the table view and edit its tags, although adding and removing tags is possible only in the raw view. Right-click the Send Message field and select Edit from the context menu or press F4:
Save session configuration
When creating a new session, there is an option to save session parameters and use them to restore the session after disconnect:
There is no limit on the number of sessions that can be stored in the list, you can save as many sessions as you need or delete unnecessary sessions.
FIX Client Simulator sessions configuration is placed:
- C:\Users\<USER>\AppData\Local\B2BITS\SimpleClient\user.config - For application prior version 2.28.0
- c:\Users\<USER>\AppData\Local\B2BITS\FixClientSimulator\user.config - For application after version 2.28.0
In order to close the session correctly, please select the session and click the right mouse button selecting the Close session option:
or select Session from the context menu and choose Close or Close All:
Make sure that Microsoft Visual C++ 2010 Redistributable is installed. You can find it in the package: ./redist/vc10_vcredist_x64.exe