Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Overview

FIX Antenna reads the configuration parameters by default from the engine.properties file during initialization.


The user can also assign another name for the configuration file, such as the Engine::FixEngine::init(const std::string& aPropertiesFileName = "") call parameter.

For example:


Code Block
languagebash
Engine::FixEngine::init("FE.properties")

Engine parameters

EngineRoot

The top of the directory tree under which the Engine's configuration and log files are kept.

DO NOT add a slash at the end of the directory path.

ListenPort

OptionalPort or several ports, delimited by a comma, on which acceptors listen to FIX sessions' incoming connections. 

One incoming port can be used for several sessions. 

The parameter is ignored for the entire application if a listen port is set for a specific session. In this case, another ListenPort parameter (on session-level) is used by FIX Engine. 

If the listen port is not set either globally, or for a specific session, FIX Engine will not accept connections. 

LogFileName

Optional. Engine's log file name. If this parameter is commented or empty, LogFileName = "engine.log" as default.

Actually represents the alias for the "Log.Engine.File.Name" parameter. If both parameters are specified simultaneously, then:

ListenAddress

OptionalThe local IP address of the network interface accepting incoming connections.

Default 0.0.0.0 - listens to connections at all network interfaces.

LicenseFile

The license file path.

LogDirectory

This property is the path of the directory in which the logs for all incoming (if LogIncomingMessages is set to "true") and outgoing FIX messages are stored.

It is possible to specify a path related to the EngineRoot directory. For example, if LogDirectory is set to "logs", then the real path is /logs. The specified directory must exist.

NumberOfWorkers

A number of threads that serve FIX sessions (heartbeat generation/check, message rejecting, message delay delivering, etc.).

The recommended value is 10. The value must be an integer and greater than zero.

Note

Changing this value will impact the performance of FIX Engine.

The most efficient parameter value should be distinguished during testing.

Tip

Workers are used for the following operations:

  • Process incoming connections (for acceptors) until incoming Logon message is delivered

  • Initiate session reconnect (for acceptors) when logout is received and Application marks session to connect again

  • Process outgoing connections (for initiators) until TCP connection is established and outgoing Logon is sent in case async connect is used

  • Deliver rejected messages back to Application if EnableMessageRejecting = true and message cannot be sent on time

  • Deliver delayed messages to Applicationwhenfirstcallofprocess() returns false

OutOfSequenceMessagesStrategy

Info
Introduced in FIX Antenna 2.23.0

Optional. This parameter sets a strategy for processing out-of-sequence messages. The details about the strategies can be found here: How to set strategy for processing out-of-sequence messages

Valid values:

  • RequestAlways - send resend request with BeginSeqNo (7) = <out-of-sequence message number>, EndSeqNo (16) =0 on any out-of-sequence message
  • RequestOnce - send the only resend request on the gap. Duplicates of resend requests for the same interval are not sent
  • IgnoreGap - send resend request on gap and process out-of-sequence messages
  • Queue - use a temporary queue for storing out-of-sequence messages and process them after the gap is closed
Info

Is not supported for FAST sessions

Default value: RequestAlways.

OutOfSequenceMessagesStrategy.QueueSize

Info
Introduced in FIX Antenna 2.23.0

Optional. The size of the temporary queue for processing out-of-sequence messages (measured in a count of messages). The parameter is used if parameter OutOfSequenceMessagesStrategy=Queue. 

The default value is 2000. 

A queue should be cleared after exceeding the limit of out-of-sequence messages and a new resend request should be sent.

The details about the strategies can be found here: How to set strategy for processing out-of-sequence messages

DictionariesFilesList

This parameter contains a list of names of XML files with extensions of the FIX protocols delimited by semicolon.

AdditionalParsersList

This parameter defines the list of additional (custom) protocols which require registering of the corresponding parsers.

When FIX Antenna is started, all dictionaries from DictionariesFilesList are loaded. If dictionaries are standard, predefined standard parsers (like FIX40; FIX41; FIX42; FIX43; FIX44; FIXT11) are created based on them. If any dictionary from DictionariesFilesList is custom, the parser is not automatically created and therefore such parsers should be listed in the AdditionalParsersList parameter.

Format of the value: [UNIQUE_PARSER_NAME@][FIXT_PROTOCOL1:]APP_PROTOCOL1[,APP_PROTOCOL2...], where:

  • UNIQUE_PARSER_NAME - optional, name of the parser;
  • FIXT_PROTOCOL1 - optional, session protocol. Required if APP_PROTOCOL doesn't contain session messages;
  • APP_PROTOCOL1 - required, application protocol;
  • APP_PROTOCOL2, ... - optional, list of other application protocols.

Below are examples of possible parsers with the correct format:

  • MyFixParser@FIXT11:FIX50SP2,FIX50SP1;
  • FIXT11:FIX50SP2,FIX50SP1;
  • FIXT11:FIX50SP2;
  • FIX44.

These are examples of one entry. Entries can be combined with semicolon to define more than one parser:

Code Block
AdditionalParsersList = FIX44; FIXT11:FIX50SP2; FIXT11:FIX50SP2,FIX50SP1; MyFixParser@FIXT11:FIX50SP2,FIX50SP1
Note

Parsers are not used for Market Data Adapters and for FAST Sessions.

CheckVersionOfOutgoingMessages

This parameter is an option whereby the version of the FIX protocol used for the outgoing message is validated against that of the established session.

If set to "true", then the application must use the same version of the protocol as the established session otherwise an error occurs. If set to false then the application level message will be sent to the counterparty. The recommended value is "true".

Note

Changing this value will impact the performance of FIX Engine. In the development should be true. In production should be false.

Debug.LogSessionExtraParameter

If this property value is true, all session parameters will be printed to the application log file.

Session parameters

Session parameters should be preceded by the prefix 'Session.<SenderCompId>/<TargedCompId>.' for a session defined by SenderCompId (49) and TargetCompId (56).

In the case of setting default parameter for all sessions, the prefix is 'Session.Default.'.

More detailed information can be found at How to configure FIX Sessions with engine.properties file.

LogonTimeFrame

This parameter sets the time period after which a session is non-gracefully terminated if a response is not received to a first "Logon" message (message type A).

The corresponding Logout message is sent to the counterparty. This value is in seconds. The recommended value is 30 seconds for dedicated connections or private networks. Trading connections via the internet will require calibration. If it is set to "0", then the time period is unlimited. The value must be an integer and not negative.

LogoutTimeFrame

This parameter sets the time period after which a session is automatically terminated if a response is not received to a "Logout message" (message type 5).

This value is in seconds. The recommended value is 10 seconds for dedicated connections or private networks. Trading connections via the internet will require calibration. The value must be an integer and greater than 0.

IntradayLogoutTolerance

An option not to reset sequence numbers after Logout.

Valid values:

  • true - enables IntradayLogoutTolerance mode;
  • false - disables IntradayLogoutTolerance mode.

If set to true, sequence numbers are not reset after Logout. Logout sender should initiate session recovery by sending Logon message with SeqNum = <last outgoing="" seqnum>=""> + 1; expecting reply Logon with SeqNum = <last incoming="" seqnum>=""> + 1. If a gap is detected, standard message recovery or gap filling process takes place.

If set to false, sequence numbers are reset after Logout.

ReasonableTransmissionTime

This parameter specifies the delta (increment) to the Heartbeat interval between a TestRequest message being sent by FIX Engine and a Response Heartbeat being received.

The session attains a "telecommunication failed state" if no Response Heartbeat message is received after the normal Heartbeat interval plus delta. For example, if no message (application or session level) is received during the Heartbeat interval, the engine sends the TestRequest message. If the required Response Heartbeat message is not received during Heartbeat interval plus Delta, then the session moves to the "Telecommunication link failed" state. This parameter is specified in (Heartbeat Interval/100). The recommended value is 20%.

ForceSeqNumReset

This parameter controls the ResetSeqNumFlag (141) flag in the Logon (A) messages and allows resolving sequence gaps.

When the mode is ON, the session uses the ResetSeqNumFlag (141) tag in sending/confirming Logon message and reset sequence numbers for an initiator or an acceptor. Valid values:

  • "0" or "false" - Disable ForceSeqNumReset mode. Do not reset sequence numbers on Logon.
  • "1" or "true" - Reset sequences at the first session initiation.
  • "2" - Reset sequences for every Logon.

DuplicateResendRequestLimit

This parameter specifies the number of duplicates resend request messages (35=2) that can be received before the Application::OnResendRequestLoop callback is called. The recommended option and default value for this parameter is DuplicateResendRequestLimit = 2. This gives the user the option to respond to identical resend requests only once and ignore all other duplicates.

The following conditions cause the FIX Engine to consider resend requests as duplicates:

  • The batch of messages that is to be resent, specified by the interval determined by the tags BeginSeqNo (7) & EndSeqNo (16), is the same
  • Resend requests are received while the FIX engine is processing other resend requests
Info

Ignoring resend requests is not compliant with the FIX Standard Protocol.

The FIX Standard Protocol recommends responding to every resend request received, which can make engine behavior unstable and lead to unexpected traffic growth.

Info

To follow the FIX Standard Protocol, DuplicateResendRequestLimit should be set to ‘0’.

Responding to every resend request is not the recommended behavior for FIX Antenna C++ products because doing so may lead to an infinite resend loop when the one of the counterparties can’t process a batch of messages properly and initiates a resend request for the same batch of messages again and again. By reducing the volume of outgoing messages and duplicate responses, traffic is minimized and applications on both sides are made more stable.

This parameter can be added to the engine.properties file.

ThirdPartyRoutingIsEnabled

FIX Engine has inbuilt FIX message routing capability and fully supports the "Deliver To On Behalf Of" mechanism as specified by the FIX protocol.

If this parameter is set to "true", Engine redirects FIX messages automatically to other FIX sessions it maintains if the OnBehalfOfCompID field in the message is defined. If this parameter is set to "false", Engine directs all messages received to the client application.

DelayedProcessing.DeliveryTriesInterval

This parameter specifies the time interval between attempts to deliver an application-level message to a registered client application in the event the application does not confirm receipt and operation upon the message.

The value is specified in milliseconds. The value must be integer and greater than 0. This parameter is required only if the DelayedProcessing.MaxDeliveryTries parameter is specified.

DelayedProcessing.MaxDeliveryTries

Optional. This parameter specifies the number of attempts that will be made to deliver an application level message to the registered client application.

If this value is exceeded then the session will be closed with the logout reason "Application not available". The recommended value is 10. The value must be an integer and not negative.

Reconnect.Interval

This parameter specifies the time interval between reconnection attempts in order to restore a communications link.

This value is specified in milliseconds (seconds*10-3). The recommended value is 1000 for dedicated connections and private networks. Internet connections require calibration. The value must be an integer and greater than 0.

Reconnect.MaxTries

This parameter specifies the number of attempts to restore the session.

The session is considered as restored if the telecommunication link was restored and the exchange of Logon messages was successful. If it is set to "-1", then the number of attempts is unlimited. This value is integer.

MessageTimeToLive

OptionalThis parameter sets the time period after which a message rejecting is started while the session doesn't exist.

Value is specified in milliseconds (seconds*10-3), must be integer and greater than 0.

ResendMessagesBlockSize

Resend Request resend messages by blocks.

This parameter defines how many messages proceed in block. The value “0” means that all messages will be resent in one block. The value must be an integer and not less than 0.

The default value is "1000".

ResetSeqNumAfter24hours

Optional. An option to send a Logon message with the ResetSeqNumFlag set after each 24 hour period of session's activity to establish a new set of sequence numbers (starting with 1).

The default value is false.

Note
This option does not affect sessions that use version 4.0 of the FIX protocol.

EncryptionConfigFile

Encryption config file name.

TotalOutgoingStorageMemoryLimit

Specifies the total amount of the memory (in MB) that the active session may use.

0 - means infinite. When the limit is reached, the "hardest" sessions will be closed non-gracefully.

OutOfSequenceMessagesStrategy

Optional. This parameter sets strategy for processing out-of-sequence messages for specific session. Parameter is available since FIX Antenna 2.23.0

Valid values:

  • RequestAlways - send resend request with BeginSeqNo (7) = <out-of-sequence message number>, EndSeqNo (16) =0 on any out-of-sequence message. ResendRequestBlockSize is not supported (will be used strategy RequestOnce).
  • RequestOnce - send resend request on gap (considering  ResendRequestBlockSize parameter). Duplicates of resend requests for the same interval are not sent.
  • IgnoreGap - send resend request on gap and process out-of-sequence messages.
  • Queue - use a temporary queue for storing out-of-sequence messages and process them after the gap is closed. 
Info

Is not supported for FAST sessions

Default value is Engine parameter OutOfSequenceMessagesStrategy.

Info

Old parameters DeliverAppMessagesOutOfOrder,  SuppressDoubleResendRequest must be removed for a specified strategy for sessions. Old parameters have higher priority.

DeliverAppMessagesOutOfOrder

Info

The parameter is deprecated

SuppressDoubleResendRequest

Info

The parameter is deprecated

OutOfSequenceMessagesStrategy.QueueSize

Optional. The size of the temporary queue for processing out-of-sequence messages (measured in a count of messages). The parameter is used if parameter OutOfSequenceMessagesStrategy=Queue. The parameter is available since FIX Antenna 2.23.0

Default value is Engine parameter OutOfSequenceMessagesStrategy.QueueSize.

A queue should be cleared after exceeding the limit of out-of-sequence messages and a new resend request should be sent.

SocketOpPriority

The mode of how FIX Engine performs the socket Send/Receive operations.

Valid values:

  • EVEN (default) - FIX Engine uses the thread pool and share a worker thread among all session with this SocketOpPriority=EVEN
  • AGGRESSIVE_SEND - FIX Engine uses a dedicated thread for a session that will send outgoing messages in exceptional cases (if it would block). By default, the current thread is used
  • AGGRESSIVE_RECEIVE - FIX Engine uses a dedicated thread for a session that receives incoming messages. The engine constantly polls the data from the socket for achieving the minimum latency (See AggressiveReceiveDelay)
  • AGGRESSIVE_SEND_AND_RECEIVE - FIX Engine uses two dedicated threads per session. One for receiving and another for sending messages in exceptional cases (if it would block).
  • DIRECT_SEND - FIX Engine uses the current thread for sending if this would block, performs as "EVEN".

    Note

    DIRECT_SEND mode is available since FIX Antenna 2.23.0

AggressiveReceiveDelay

Optional. Defines a polling interval in microseconds for reading data from the socket.

Works only with aggressive sessions i.e. Engine::AGGRESSIVE_RECEIVE_SOCKET_OP_PRIORITY or Engine::AGGRESSIVE_SEND_AND_RECEIVE_SOCKET_OP_PRIORITY modes.
Setting lower value reduces the latency but causes high CPU utilization.

The default value is 500 microseconds.

Info
There will not be a delay after an attempt to receive a message if the socket buffer still is not empty.

Schedule

Optional. Specifies a defined schedule for the session.

There is no defined schedule by default. See details in the Programmer's Guide

SSL

For Initiator FIX Session:

Mandatory if SSL is used. Enable SSL support for the session.
The default value is false.

For Acceptor FIX Session:

Optional. If true, accept SSL connection only. If false, accept both SSL and non-SSL connections for the session.
The default value is false.

Info
Introduced in FIX Antenna 2.26

ParserVersion

Name of unique parser for FIX protocol. It is an identification of the FIX dictionary used for the session, i.e. the value of the 'id' parameter or in the case of QuickFIX dictionary it's a filename.

Possible values:

  • FIX40

  • FIX41

  • FIX42

  • FIX43

  • FIX44,

  • FIXT11@FIX50

  • FIXT11@FIX50SP1

  • FIXT11@FIX50SP2

  • <user's transport version>@<user's protocol version>

Info
Introduced in FIX Antenna 2.25.1

Role

Role of the session. Possible values:

  • Initiator
  • Acceptor
Info
Introduced in FIX Antenna 2.25.1

Host

The destination host for the initiator session

Info
Introduced in FIX Antenna 2.25.1

Port

TCP port for connection to the remote site

Info
Introduced in FIX Antenna 2.25.1

ListenPort

Port dedicated for a session.

For acceptors, it is a port that listens to incoming connections for a specified session.

Info

The same incoming port cannot be re-used for several sessions.

If the parameter is not be set for the session or not set for the entire application (ListenPort), FIX Engine will not accept the connection.

The Engine stops to accept connections to the given port when the session is no longer used, i.e. terminated. For example, the session is terminated according to the schedule.

Info

Introduced in FIX Antenna 2.28.0

ListenAddress

The local IP address of the network interface accepting a specified session. 

Default 0.0.0.0 - listens to connections on all network interfaces.


Info

Introduced in FIX Antenna 2.28.0

SourceIPAddress

The expected IP address of a remote counterparty. Incoming connections from other endpoints will be filtered out.

If the real value is not equal to the expected one, then the connections are dropped without sending a message and the error condition is generated in the log output.

The parameter supports masks. For example: 10.96.0.0/11

Default 0.0.0.0 - accepts all connections from IP addresses on every network interface.

HBI

The heartbeat interval in seconds for the initiator session

Info
Introduced in FIX Antenna 2.25.1

CustomLogonMessageFileName

Note

The parameter is available since FIX Antenna 2.25.1

Path to file with a Custom logon message for the initiator.

The default value is empty.

TagsDelimiter

The character is used as a tags delimiter in a FIX message. The default delimiter is '0x01' (SOH). Refer to How to use a custom symbol instead of SOH.

Info
Introduced in FIX Antenna 2.28.0

ResetSeqNumFromFirstLogon

Info
Introduced in FIX Antenna 2.28.0

This parameter provides the ability to reset a session’s sequence numbers to the ones received in the logon message in the case where session sequence numbers seem outdated.

The following fields control the frequency with which the sequence numbers are reset:

  • ‘never’ – sequence numbers do not reset at logon
  • ‘schedule’ – sequence numbers reset according to an existing schedule defined by the schedule parameter of the session, initiated by a first-time logon message
  • cron expression – sequence numbers reset according to a customizable date and time, initiated by a first-time logon message

The default value is ‘never’.

This parameter can be added via the engine.properties file for the acceptor session or set it via API.

ResetSeqNumOnNonGracefulTermination

Info
The parameter is available since FIX Antenna 2.28.0

This parameter provides the option, upon a session’s non-graceful termination, to reset sequence numbers. To use this functionality, set it to ‘true’.  Then, following non-graceful termination, ingoing and outgoing sequence numbers will be reset to 1.

The default value is 'false'. If the parameter is set to ‘false’, ingoing and outgoing sequence numbers will not be reset following non-graceful termination.

This parameter can be added via the engine.properties file for the acceptor session or set it via API.

confirmingLogonStrategy

This parameter controls the engine’s behavior when a Logout (5) message is received instead of confirming Logon (A) during a FIX login procedure.

FIX engine supports the following strategies:

Value

Response

'RejectLogout'

Reject unexpected Logout (5) message and send a Logout message with the reason ‘The Logon message expected!’ to the counterparty.

The event is logged with the notification "Option confirmingLogonStrategy is set to RejectLogout. The Logout messages received in response to Logon will be treated as an unexpected behavior.and the connection is terminated in this case.

'ConfirmLogout'

Accepts the unexpected Logout (5) message and send a Logout with the reason ‘Confirming Logout’ message to the counterparty.

The expected MsgSeqNum of the next incoming sequence number is updated if there is no gap detected.

FIX Engine switches session's state to CORRECTLY_TERMINATED

'SilentLogout'

FIX Engine switches the session's state to NON_GRACEFULLY_TERMINATED without sending messages to the counterparty.

The expected MsgSeqNum of the next incoming sequence number is updated if there is no gap detected

The default value is ‘RejectLogout’.

ConnectAddress

OptionalEngine's local IP address to send messages from.

It is used only for hosts with multiple networks. If this parameter is commented, empty, or equal to 0.0.0.0 the Engine will send IP datagrams from any/all local addresses.


...