Overview
Some configuration requires using of several sources of security definitions, e.g. ORDERS-LOG contains orders for both futures and options instruments. While working with ORDERS-LOG, MOEX Spectra Market Data Adapter should know security information for both security types. This article describes how to configure such option.
How to set up multiple Security Definition feeds using configuration file
Adding new connection
MOEX could provide separate configuration files for different feeds.
The configuration file - configuration.xml could be extended with new connections if it requires.
For example, ORDERS-LOG connection can be integrated into an original configuration just by adding a new MarketDataGroup to configuration section:
<configuration type="Test" label="Test System" marketId="MOEX">
<!-- ... -->
<MarketDataGroup feedType="FUT-INFO" marketID="F" label="Futures defintion">
<connections>
<!-- FUT-INFO feeds -->
</connections>
</MarketDataGroup>
<!-- New section with ORDERS-LOG connections -->
<MarketDataGroup feedType="ORDERS-LOG" marketID="D" label="Full orders log">
<connections>
<!-- ORDERS-LOG feeds -->
</connections>
</MarketDataGroup>
</configuration>
Adding multiple Security Definition sources
MarketDataGroup may contain as many connections as it is required.
The following configuration block shows how to get two security definitions channels for ORDERS-LOG feed:
<MarketDataGroup feedType="ORDERS-LOG" marketID="D" label="Full orders log">
<connections>
<connection>
<type>Incremental</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.70.40</ip>
<port>40040</port>
<feed>A</feed>
</connection>
<connection>
<type>Incremental</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.175.40</ip>
<port>41040</port>
<feed>B</feed>
</connection>
<connection>
<type>Snapshot</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.70.41</ip>
<port>40041</port>
<feed>A</feed>
</connection>
<connection>
<type>Snapshot</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.175.41</ip>
<port>41041</port>
<feed>B</feed>
</connection>
<connection>
<type>Historical Replay</type>
<protocol>TCP/IP</protocol>
<ip>1.1.7.202</ip>
<port>7207</port>
</connection>
<!-- Futures security defintion -->
<connection>
<type>Instrument Replay</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.70.11</ip>
<port>40011</port>
<maxKbps>128</maxKbps>
<feed>A</feed>
</connection>
<connection>
<type>Instrument Replay</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.175.11</ip>
<port>41011</port>
<maxKbps>128</maxKbps>
<feed>B</feed>
</connection>
<!-- Options security defintion -->
<connection>
<type>Instrument Replay</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.70.27</ip>
<port>40027</port>
<maxKbps>128</maxKbps>
<feed>A</feed>
</connection>
<connection>
<type>Instrument Replay</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.175.27</ip>
<port>41027</port>
<maxKbps>128</maxKbps>
<feed>B</feed>
</connection>
<!-- OTC Issues feed -->
<connection>
<type>Instrument Replay</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.70.31</ip>
<port>40031</port>
<maxKbps>16</maxKbps>
<feed>A</feed>
</connection>
<connection>
<type>Instrument Replay</type>
<protocol>UDP/IP</protocol>
<src-ip>10.50.129.90</src-ip>
<ip>239.192.175.31</ip>
<port>41031</port>
<maxKbps>16</maxKbps>
<feed>B</feed>
</connection>
</connections>
</MarketDataGroup>
How to set up multiple Security Definition feeds using the source code
Extra security definition feeds could be configured with Spectra::SpectraApplicationParams::customSecDefFeeds_ parameter:
Spectra::SpectraApplicationParams params;
params.customSecDefFeeds_[Spectra::SpectraDataChannel("D", "ORDERS-LOG")].push_back(Spectra::SpectraDataChannel("F", "FUT-INFO"));
params.customSecDefFeeds_[Spectra::SpectraDataChannel("D", "ORDERS-LOG")].push_back(Spectra::SpectraDataChannel("O", "OPT-INFO"));
params.customSecDefFeeds_[Spectra::SpectraDataChannel("D", "ORDERS-LOG")].push_back(Spectra::SpectraDataChannel("S", "SPOT-INFO"));