...
- Review the document and find the ICE Market Type ID you are interested in according to the 63406081How to identify ICE Market Type for ICE Product instruction.
- Come up with the name for the subscription and specify it in the ICESession.UDSSubscriptions property (it supports several values delimited by a comma).
Add subscription details in the following format: ICESession.UDSSubscriptions.<Subscription_Name>.SecurityID = ice_market_type_id.
...
Once the connection is back, ICE Trade Capture Solution starts execution of the main flow from:
ICESession.TradeCaptureSubscriptions.RequestMode:
...
- Check where the FIX tag you are interested in is located in the FIX message. Note that tags from repeating groups are allocated in separate tables. Check the /wiki/spaces/EPMBFIXA/pages/6043351 page for details.
- If the FIX tag is located in the root of the message (either Trade Capture Report or Security Definition), then add the coincident column to the ICEReports / ICESecurityDefinitions table.
- If the FIX tag is located in one of the repeating groups which are already stored in the database, then add a column to the corresponding table.
- If the FIX tag is located in one of the repeating groups which are not stored in the database, then add a new table for the group and specify the required field there.
- Add support for new fields in the stored procedure (either SaveReports or SaveDefinitions depending on which fields you are going to add).
...
- Adjust ICE session host and port from FIXEdge.properties to point it to Production.
- Go through the steps from the How to deploy the package and make it work instruction and adjust your configuration to point it to Production.
- Turn off (comment out) the schedule for ICE TEST and turn on (uncomment) the schedule for ICE PROD environment in FIXEdge.properties. Use the What is the ICE session schedule and how to setup it in ICE Trade Capture Solution instruction as a reference.
In case of SSL connection is required for ICE Production environment (subject for clarification with ICE team), uncomment the following properties in FIXEdge properties:
Code Block FixLayer.FixEngine.Session.ICESession.SSL = true FixLayer.FixEngine.Session.ICESession.SSLProtocols = TLSv1, TLSv1_1, TLSv1_2
Turn off DEBUG and TRACE levels of logging by changing values of appropriate properties in the FIXEdge.properties file to reduce the number of log records and hence reduce the size of log files:
Code Block Log.DebugIsOn = false Log.TraceIsOn = false
- Configure logs rotation to manage the disk space where FIXEdge is installed.
- Setup email notifications to be informed in case of ICE session state is changed. Check the How to configure session state changes notifications article for more details.
What is the Download Performance?
While all the Trade Capture Reports are downloaded in real-time, the necessity to request the whole ICE markets in order to get desired instruments and the massive size of the security definition FIX messages lead to the question regarding the performance of security definitions download.
...
SessionQualifierValue Configuration:
- Ensure the SessionQualifierValue matches the SenderSubID for each session in the FIXEdge.properties file. Refer to the guide: "How to Use SessionQualifier."
Example Configuration:
Code Block language xml FixLayer.FixEngine.Session.ICE.SenderCompID = 110 FixLayer.FixEngine.Session.ICE.TargetCompID = ICE FixLayer.FixEngine.Session.ICE.SenderSubID = subId1 FixLayer.FixEngine.Session.ICE.SessionQualifierValue = subId1 FixLayer.FixEngine.Session.ICEPOF.SenderCompID = 110 FixLayer.FixEngine.Session.ICEPOF.TargetCompID = ICE FixLayer.FixEngine.Session.ICEPOF.SenderSubID = subId2 FixLayer.FixEngine.Session.ICEPOF.SessionQualifierValue = subId2
In this setup, the email message will include
SessionQualifierValue
in tag 50, e.g.:Code Block language bash TRACE [CC_Layer] 37940 Sending status message: '8=FIX.4.4 9=189 35=C 49=fake 56=fake 34=1 50=sub1 52=99990909-17:17:17 164=2 94=0 42=20241217-14:22:24 147=[NOTE] 110:ICE Established 33=5 58=N 58=1 58=110:ICE 58=Established 58=AttemptToConnect 10=177'.
ICE Properties Files:
- Create another ICE properties file for the second session with a different file name. Add the SenderSubID parameter with the appropriate value to both ICEProperties.properties and ICEPropertiesSecond.properties files. Use a different persistent storage file for the second session in the ICEPropertiesSecond.properties file (e.g., ICESession.StorageFileName = ../FIXEdge1/log/ICE_persistStorageSecond.out).
ICE Handler Configuration:
- Add a second ICE handler with a different name, e.g.:
Code Block language xml <Handler Name="ICEHandler" Description="ICE Handler" DllName="libICEHandler-MD-x64.so" VerifyHandlersVersion="true" ConfigFile="../FIXEdge1/conf/ICEProperties.properties" /> <Handler Name="ICEHandlerSecond" Description="ICE Handler" DllName="libICEHandler-MD-x64.so" VerifyHandlersVersion="true" ConfigFile="../FIXEdge1/conf/ICEPropertiesSecond.properties" />
"Launch ICE Handler" Rule Creation for Each Session:
- Create separate "Launch ICE Handler" rules for launching the ICE Handler for each session.
Example Rules:
Code Block language xml <Rule Description="Launch ICE Handler for first session"> <Source> <FixSession SenderCompID="fake" TargetCompID="fake" /> </Source> <Condition> <EqualField Field="35" Value="C" /> <MatchMessage Value=".*subId1.*" /> <MatchMessage Value=".*147=\[NOTE\] 110:ICE Established.*" /> </Condition> <Action> <!-- <Send><Client Name="SMTPClient" /></Send> --> <!-- Optional action if email notification is required --> <HandlerAction Name="ICEHandler" /> </Action> </Rule> <Rule Description="Launch ICE Handler for second session"> <Source> <FixSession SenderCompID="fake" TargetCompID="fake" /> </Source> <Condition> <EqualField Field="35" Value="C" /> <MatchMessage Value=".*subId2.*" /> <MatchMessage Value=".*147=\[NOTE\] 110:ICE Established.*" /> </Condition> <Action> <!-- <Send><Client Name="SMTPClient" /></Send> --> <!-- Optional action if email notification is required --> <HandlerAction Name="ICEHandlerSecond" /> </Action> </Rule>
Custom Logon Message:
- Ensure that the custom logon message for each session includes the appropriate SenderSubID value in tag 50.
...