Configuration Guide
FIX-FastTrade uses XML-based configuration files to manage system settings, FIX sessions, and performance parameters.
Configuration Files
Main Configuration Files
fix-config.xml - Main FIX session configuration
system/performance.json - Performance tuning parameters
examples/ - Working configuration templates
Configuration Structure
The main configuration file follows this structure:
<?xml version="1.0" encoding="UTF-8"?>
<fix>
<session>
<senderCompID>SENDER</senderCompID>
<targetCompID>TARGET</targetCompID>
<host>localhost</host>
<port>9878</port>
<version>FIX.4.4</version>
<heartBtInt>30</heartBtInt>
</session>
<logging>
<level>INFO</level>
<file>logs/fix-fasttrade.log</file>
</logging>
<performance>
<cpuAffinity>true</cpuAffinity>
<memoryLock>true</memoryLock>
<priority>-10</priority>
</performance>
</fix>
Session Configuration
Basic Session Settings
<session>
<!-- Required: Unique identifier for your system -->
<senderCompID>YOUR_COMPANY_ID</senderCompID>
<!-- Required: Target system identifier -->
<targetCompID>EXCHANGE_ID</targetCompID>
<!-- Required: FIX server connection details -->
<host>fix.exchange.com</host>
<port>9878</port>
<!-- Optional: FIX protocol version (default: FIX.4.4) -->
<version>FIX.4.4</version>
<!-- Optional: Heartbeat interval in seconds (default: 30) -->
<heartBtInt>30</heartBtInt>
</session>
Advanced Session Settings
<session>
<!-- Connection settings -->
<reconnectInterval>5</reconnectInterval>
<maxReconnectAttempts>10</maxReconnectAttempts>
<connectTimeout>30</connectTimeout>
<!-- Message settings -->
<maxMessageSize>8192</maxMessageSize>
<validateMessages>true</validateMessages>
<logIncomingMessages>true</logIncomingMessages>
<logOutgoingMessages>true</logOutgoingMessages>
<!-- Sequence number management -->
<resetSeqNumFlag>true</resetSeqNumFlag>
<nextSenderMsgSeqNum>1</nextSenderMsgSeqNum>
<nextTargetMsgSeqNum>1</nextTargetMsgSeqNum>
</session>
Performance Configuration
CPU Affinity Settings
<performance>
<cpuAffinity>true</cpuAffinity>
<cpuMain>0</cpuMain>
<cpuFix>1</cpuFix>
<cpuOrder>2</cpuOrder>
<cpuMarket>3</cpuMarket>
</performance>
Memory Management
<performance>
<memoryLock>true</memoryLock>
<memoryPoolSize>1048576</memoryPoolSize>
<preallocateMemory>true</preallocateMemory>
</performance>
Threading Configuration
<performance>
<threadPriority>-10</threadPriority>
<useRealTimeScheduling>true</useRealTimeScheduling>
<threadStackSize>8388608</threadStackSize>
</performance>
Logging Configuration
Basic Logging
<logging>
<level>INFO</level>
<file>logs/fix-fasttrade.log</file>
<maxFileSize>100MB</maxFileSize>
<maxFiles>10</maxFiles>
</logging>
Advanced Logging
<logging>
<level>DEBUG</level>
<console>true</console>
<file>logs/fix-fasttrade.log</file>
<rotateDaily>true</rotateDaily>
<timestampFormat>%Y-%m-%d %H:%M:%S.%f</timestampFormat>
<!-- Component-specific logging -->
<components>
<fix>DEBUG</fix>
<trading>INFO</trading>
<network>WARN</network>
</components>
</logging>
Environment-Specific Configurations
Development Configuration
<?xml version="1.0" encoding="UTF-8"?>
<fix>
<session>
<senderCompID>DEV_TRADER</senderCompID>
<targetCompID>DEV_EXCHANGE</targetCompID>
<host>localhost</host>
<port>9878</port>
<heartBtInt>60</heartBtInt>
</session>
<logging>
<level>DEBUG</level>
<console>true</console>
</logging>
<performance>
<cpuAffinity>false</cpuAffinity>
<memoryLock>false</memoryLock>
</performance>
</fix>
Production Configuration
<?xml version="1.0" encoding="UTF-8"?>
<fix>
<session>
<senderCompID>PROD_TRADER_001</senderCompID>
<targetCompID>EXCHANGE_PROD</targetCompID>
<host>fix.exchange.com</host>
<port>9878</port>
<heartBtInt>30</heartBtInt>
<validateMessages>true</validateMessages>
</session>
<logging>
<level>INFO</level>
<file>/var/log/fix-fasttrade/fix-fasttrade.log</file>
<rotateDaily>true</rotateDaily>
</logging>
<performance>
<cpuAffinity>true</cpuAffinity>
<cpuMain>0</cpuMain>
<cpuFix>1</cpuFix>
<cpuOrder>2</cpuOrder>
<memoryLock>true</memoryLock>
<threadPriority>-10</threadPriority>
</performance>
</fix>
Configuration Validation
Validate Configuration
Before starting the system, validate your configuration:
# Validate XML syntax
xmllint --noout config/fix-config.xml
# Test configuration with dry-run
./bin/fix-fasttrade --config config/fix-config.xml --validate
Common Configuration Issues
Invalid XML Syntax
Error: XML parsing failed at line 15: mismatched tag
Solution: Use xmllint to check syntax:
xmllint --noout config/fix-config.xml
Missing Required Fields
Error: Required field 'senderCompID' not found
Solution: Ensure all required fields are present in the session configuration.
Port Already in Use
Error: Cannot bind to port 9878: Address already in use
Solution: Change the port number or stop the conflicting service:
# Find process using the port
lsof -i :9878
# Kill the process or use a different port
<port>9879</port>
Configuration Examples
The config/examples/ directory contains working configuration templates:
basic-config.xml - Minimal working configuration
high-performance-config.xml - Optimized for low latency
development-config.xml - Development environment settings
production-config.xml - Production deployment configuration
Command Line Configuration
Many configuration options can be overridden via command line:
./bin/fix-fasttrade \
--config config/fix-config.xml \
--cpu-main 0 \
--cpu-fix 1 \
--cpu-order 2 \
--memory-lock \
--priority -10 \
--stats-interval 30 \
--log-level DEBUG
For a complete list of command line options:
./bin/fix-fasttrade --help