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 end points. FIX Client Simulator built on top of the FIX Antenna™ engine and shares all its common features and benefits. FIX Client Simulator uses B2BITS' FIXopaedia as FIX reference source and provides complete support of all standard and custom FIX dictionaries.
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 FIX Antenna .NET package.
In order to create session please choose: Session => Create new:
Specify session type (Initiator or Acceptor) and parameters (SenderCompID, TargetCompID, remote host and port) within 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 on the bottom of the window.
After the session is established you will see it in “Session List” section. All received messages will be displayed in the Event section below.
To define sequence numbers manually open Create Session window and specify values in InSeqNum/OutSeqNum:
To reset sequence numbers manually open Create Session window and tick Reset Sequence number.
To see or hide administrative messages in console open Create Session window and tick a checkbox Show session messages, by default the checkbox is empty.
You can select a session and click on Show session messages in Session menu or in context menu of session window.
This setting stored as other session settings and restored after session restart.
In order to send a message, please specify it in Send Message tab, choose session and press Send button. Please note that Sequence number and sending time will be set automatically:
To override Sender and Target CompIDs tick Override SenderCompIDs or Override TargetCompID in in the main menu of the application in the Options section
To specify message sending rate enter the value in Rate(msg/sec) input field in Send Message tab.
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 slash symbol and then tag as shown on the figure below:
To send messages from log file to session (replay log file), please specify log file in Replay tab, choose session and press Play button.
Also provides ability:
To send a certain 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 message sending rate for message sending enter the value in Rate(msg/sec) field in 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 part of the Simple Client window displays the message to be sent.
The middle 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:
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 the same tag order as it is in 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.
If you want to keep the order the same as in the received message, the dictionary should be updated according to counterparty's specification.
Example showing how to re-order tags for screenshot above
TimeInForce (tag 59) is located after block parties (tag 453)
<msgdef msgtype="D" name="New Order - Single"> ... <block idref="Parties"/> ... <field tag="59" name="TimeInForce"> <comment>Absence of this field indicates Day order</comment> </field> ... </msgdef>
TimeInForce (tag 59) is located before block parties (tag 453)
<msgdef msgtype="D" name="New Order - Single"> ... <field tag="59" name="TimeInForce"> <comment>Absence of this field indicates Day order</comment> </field> <block idref="Parties"/> ... </msgdef>
You can search for a particular character or the sequence of them 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 right button in Send Message field and choose Insert <SOH>:
You can load a preset message and edit it before sending.
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:
You can create a template message from a dictionary with required tags and edit it before sending.
Go to Message -> Create to load a list of messages from a dictionary, which is corresponding with the selected session. Click the Create button to open it in editable table for further filling of tag values and sending the message to the counterparty:
To enable message re-sending open Options from context menu and tick Allow message re-sending:
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:
When creating new session, you have 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.
In order to close session correctly, please select session and click right mouse button selecting Close session option:
or select Session from 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