Bovespa Market Data Adaptor: How to use TCP Replayer

Overview

The global TCP Replayer Connection (previously known as TCP Replay) functionality allows a client to request messages that were already sent through the incremental stream. These messages will be returned to the client over a TCP connection (a FIX 4.4 session). The same connection is used for both the request and the retransmission. TCP Replayer is enabled with Bovespa::BovespaApplicationParams. These chapters shows how to use prameters for setting up a TCP Replayer connection.

In order to access a TCP Replayer feed and obtain credentials, please contact to Bovespa.

The TCP connection (a FIX 4.4 session) uses customized FIX dictionary. So, FIX Antenna C++ requires that the property AdditionalParsersList in engine.properties file is equal to "id" from the dictionary (see BovespaClient sample):

engine.properties
AdditionalParsersList = FIX44BVMF 

TCP Replayer Session properties

To establish a session the following parameters should be defined:

BovespaClient.cpp
Bovespa::BovespaApplicationParams params; 
// ... 
params.tcpReplayParams_.senderCompId_ = "Sender"; 
params.tcpReplayParams_.targetCompId_ = "BVMF"; 
params.tcpReplayParams_.username_ = "username"; 
params.tcpReplayParams_.password_ = "password";

The senderCompId_, targetCompId_, username_, password_ parameter values should be given by Bovespa for Logon.

Configuration network connections for TCP Replayer recovery

The 'UMDF channels definition' section contains the FIX/FAST Market Data Channel Definitions. The feeds specified in the configuration XML files (see samples in /samples/BovespaClient/bin/ path). The desired channels for TCP Replayer Connections and network parameters should be specified in your C++ code. 

BovespaClient.cpp
params.tcpReplayParams_.channels_.push_back("151"); // use tcp replayer for channel 151 from configuration 
params.tcpReplayParams_.channels_.push_back("141"); // use tcp replayer for channel 141 from configuration 
params.tcpReplayParams_.channels_.push_back("121"); // use tcp replayer for channel 121 from configuration 


params.tcpReplayParams_.reconnectAttemptCount_ = 5; 
params.tcpReplayParams_.ip_ = ""; 
params.tcpReplayParams_.port_ = 0;
The ip_, port_ parameter values should be given by Bovespa.

Certified version of the client solution in Logon for TCP Replayer

According Bovespa FIX Specification in tag Text (58) in Logon (35=A) customers should provide the name and certified version of the client solution used to connect to the Exchange. Therefore the new parameter has been added for FIX Antenna C++ 2.23.

BovespaClient.cpp
params.tcpReplayParams_.softwareId_ = "FIX Antenna C++ 2.23";

The softwareId_ parameter values should be given by Bovespa after certification.

Pass Recovery option for Instrument subscription

BovespaClient.cpp
Bovespa::BovespaSubscriptionItem instument; 
instument.symbol_ = symbol; 
instument.recovery_ = Bovespa::RO_USE_MARKET_TCP_AS_POSIBLE_RECOVERY; 
instument.recovery_ = recoveryOption_; 
application_->subscribeToInstrument( instument, iterator.first->second.get() );

Recovery doesn't work with a subscription to feed ( Bovespa::BovespaApplication::subscribeToFeed() )

Troubleshooting

TCP Replayer session is not established.

Check AdditionalParsersList is set to "FIX44BVMF" in the engine.property file.