Skip to content

ConnectorStream

ConnectorStream contains pricing information for each Connector in the system. Each Connector can have multiple pricing streams, each with its own set of configurable settings that can be defined down to the level of individual symbols. The system will send price updates for each stream defined under a Connector. It’s worth noting that for FIX connectors, there is typically only one stream by default, but if multiple streams are configured, the taker names the stream in each subscription unless the requested instrument identifies a single enabled stream. All these settings can be defined in ConnectorStreamSetting. ConnectorStream has the following attributes and can be accessed via pending config or real-time config:

attributes required default settings attribute type description
connector Y – INT The ID of the Connector (shown by name in the Portal).
id Y – INT The ID of the stream, unique within the Connector; values 0 to 255 are supported.
name Y – VARCHAR The name of the ConnectorStream. Takers select a stream by this name in their subscriptions. A subscription that names no stream (n/a) is served the enabled stream that carries the requested instrument, provided exactly one does; a Connector with a single stream uses that stream, and a stream named * serves unnamed or * requests.
description N – VARCHAR Free text.
enable Y – INT Enables or disables pricing on this stream. This controls stream subscription activation; it does not disconnect or reconnect the Connector.

ConnectorStreamSetting

ConnectorStreamSetting contains Symbol settings for each stream of each Connector defined in the system. XCore owners can customize the pricing settings for each Symbol of a ConnectorStream. ConnectorStreamSetting has the following parameters and can be accessed via pending config or real-time config:

parameter required default settings attribute type description
connector Y – INT The ID of the Connector.
stream Y – INT The ID of the stream.
symbol Y – VARCHAR The name of the Symbol.
instrument Y – VARCHAR The instrument. The taker will know the symbol by the instrument. In the case of MT4 connectors the instrument is limited to 11 characters. One instrument name must map to a single symbol across all streams of the Connector; an unnamed-stream subscription for an instrument carried by several enabled streams is rejected as ambiguous.
lq_pool Y – VARCHAR The LiquidityPool used for the formation of the price stream.
lq_profile Y – VARCHAR The MarkupProfile used for the formation of the price stream.
mode Y aggregate VARCHAR The streaming mode used for the formation of the price stream.

For clarity, we define the following terms:

- pool_item: A data point of size and price per each maker quote in the assigned LiquidityPool. The size matches that of the maker quote, and the price is the maker quote’s price including markups and spread limitations specified in the assigned MarkupProfile.
- stream_item: A data point of size and price streamed to the taker. A stream_item is derived from one or several pool_items in accordance with the defined streaming mode.

The available streaming modes are:

- aggregate: Generates a stream_item for each pool_item maintaining the respective size and price.
- aggregate_ioc: Generates a stream_item for each distinct pool_item’s price, combining the sizes of the pool_items at that price. Rows are limited by depth, so a row does not necessarily contain all the liquidity available at its price; at depth 1, additional same-price liquidity can be omitted.
- layer: Generates a stream_item for each layer defined in the layers parameter. Its price matches the best-priced pool_item whose size either matches or exceeds the layer size.
- layer_ioc: Generates a stream_item for each layer defined in the layers parameter. Its price equates to the VWAP of pool_items, starting from the top of the book (ToB) and continuing until the cumulative quantity matches the layer size.
- volume: Generates a stream_item for each distinct pool_item’s size. Its price matches the best-priced pool_item of that exact size.

Note: The modes aggregate and volume are not supported for connectors of type MT5. The modes aggregate_ioc and layer_ioc are suitable for IOC (Immediate or Cancel) orders but are not recommended for orders with fill size restrictions, such as FOK (Fill or Kill) orders.
min Y 0 INT Internal parameter.
layers N n/a VARCHAR Defines streaming layer sizes as a comma-separated list for ‘layer’ or ‘layer_ioc’ modes. The assignment of MarkupProfile settings to the streaming layers is as follows:

MarkupProfileSetting.quantity = -1: MarkupProfile settings are assigned per each layer, starting with the first layer at position 0, by matching the layer’s position with MarkupProfileSetting.layer. To ensure consistency between streaming and execution, ConnectorAccountSetting.layers should match the layers defined in this list.

MarkupProfileSetting.quantity != -1: MarkupProfile settings are determined by MarkupProfileSetting.quantity, regardless of the layers specified here.

Note: Layers define the displayed quantities, written as plain numbers in symbol size units (for example 500000,1000000); suffixes such as 500k are not supported, and the list must not be empty in layer modes. Liquidity boost still affects the capacity and prices available to form those layers.
volume N 0 DOUBLE Applicable minimum streaming quantity, using the selected A-book or B-book capacity after liquidity lock and boost. Its effect depends on the streaming mode; LAYER has no final volume threshold. Where supported, fallback output may have a smaller quantity. A universal top-of-book fallback is not guaranteed. Expressed in symbol size units.
depth Y – INT Maximum number of published rows per side. Configured values are limited to 1–32 (0 is treated as 1); connector types that use full-refresh pricing are limited to 3 rows outside the layer modes. The taker’s subscription and protocol impose separate limits: MT4 receives 1 row, other full-refresh subscriptions up to 5, other connections up to 32. The lowest applicable limit determines the maximum output. Raising the configured depth does not enlarge an existing subscription; the taker must resubscribe. A row can combine multiple maker quotes or represent a configured layer, so this is not a count of input maker quotes.
lq_source Y a_book VARCHAR The lq_source attribute specifies whether the liquidity streamed to takers is based on the A-book or B-book liquidity available in the liquidity_pool.

The system independently tracks both A-book and B-book liquidity, maintaining two distinct liquidity books: one for A-book and one for B-book execution. When liquidity is consumed from either book, the system issues updates to clients, indicating changes in available liquidity. Since a single stream may cater to multiple clients with varying execution modes, lq_source should be configured to align with the execution mode predominantly used by the majority of clients receiving this stream.

The supported values for lq_source are a_book or b_book.
lq_lock Y 0 DOUBLE The lq_lock attribute defines the minimum liquidity that the system will recognize as available for each quote in the liquidity_pool. It is recommended to use lq_lock primarily when lq_source is set to b_book. To ensure consistency between execution and the streamed liquidity, lq_lock should be utilized in conjunction with connector_account_setting.b_lock, and both should be set to identical values.

The supported values for lq_lock are any non-negative numbers (0 or greater), in symbol size units. The displayed capacity of each quote is the larger of (quote size × lq_boost) and lq_lock; these settings change the displayed quantity only and do not create executable liquidity.
lq_boost Y 1 DOUBLE The lq_boost attribute defines a scaling factor that the system applies to the liquidity of each quote in the liquidity_pool. It is recommended to use lq_boost primarily when lq_source is set to b_book. To ensure consistency between execution and the streamed liquidity, lq_boost should be utilized in conjunction with connector_account_setting.b_boost, and both should be set to identical values.

The supported values for lq_boost are any positive numbers (greater than zero). The boost is applied before the lq_lock floor.
subscribe Y false INT Subscription behavior depends on connector type. MT4 uses automatic subscription independently of this field; MT5 and the applicable FIX connections require subscription requests. This field must not be treated as a general switch for that behavior.
session Y SUN|17:00:00-FRI|17:00:00 VARCHAR Represents the time interval during a week when the symbol will be active for this connector stream.

- price updates on this symbol as part of this connector stream will only work within the specified session; outside of the specified session the symbol will be disabled as part of this connector stream
- session times use the XCore system timezone. Semicolon-separated intervals in the form DAY|HH:mm:ss-DAY|HH:mm:ss (upper-case SUN–SAT), ordered from Sunday to Saturday and non-overlapping; starts are inclusive and ends exclusive. SUN|00:00:00-SAT|24:00:00 covers the whole week; gaps around EOD are configured as several intervals, for example SUN|17:05:00-MON|17:00:00;MON|17:05:00-TUE|17:00:00. Empty and n/a are not accepted. Confirm the intended timezone and supported change procedure; automatic daylight-saving refresh is not guaranteed.
- For more information on sessions please check our video here
enable Y true INT Represents if the symbol is enabled or disabled as part of this connector stream. It controls pricing only: orders for this instrument are still accepted.