Skip to content

ConnectorAccount

ConnectorAccount contains the trading accounts defined on each connector of the system. Each account contains a set of execution settings that can be configured for a Connector, and a Connector can have multiple accounts, each with its own dedicated set of execution settings. The execution settings can also be defined to the level of each individual symbol. These settings can be defined in ConnectorAccountSetting. ConnectorAccount has the following attributes and can be accessed via the pending config or real-time config

attributes required default settings attribute type description
connector Y INT The ID of the Connector.
id Y INT The ID of the ConnectorAccount.
name Y VARCHAR The name of the account within the Connector.
trade_limit N -1 INT Maximum admitted requests across all symbols on this ConnectorAccount during the rolling trade_span window. Set to -1 to disable the limit; otherwise use a positive count and a positive trade_span. Requests rejected by later trading checks can still count toward this limit.
trade_span N -1 INT The rolling request-limit window in milliseconds. Used when trade_limit is enabled.
profile_lock N -1 INT The ID of the trade_lock profile; -1 (shown as n/a) = none.
profile_xhedge N -1 INT The ID of the XHedge profile; -1 (shown as n/a) = none.
margin N INT The XCore account used for margin and exposure checks and for recording the account’s positions, including both A-book and B-book trades. Usually a MARGIN account; NOP accounts are also supported. Set n/a if unused.
risk N n/a INT Optionally assigns an enabled RISK account with no child accounts to track retained B-book exposure. This assignment does not itself set the B-book percentage. Without a risk assignment, the ordinary b_book=0 allocation is entirely A-book. Configure allocation in the symbol settings. Disabling the linked Account (enable = false) is not supported, also when this connector account is disabled.
enable Y INT Specifies if the connector account is enabled or disabled.
description N VARCHAR Free Text
broker N INT Enables the special broker offload setup: assign a RISK account with no child accounts in margin, leave risk unassigned, and use A-book symbol settings with b_book=0. A filled sell reduces a long base position; a filled buy reduces a short base position. The resulting exposure change depends on actual fills. Confirm the supported activation procedure before changing broker mode on an existing account.
Account selection

XCore first checks the routing keys, then the requested account name. If neither identifies an account, it uses the Connector’s only account, if there is one. On a Connector with multiple accounts, n/a is an ordinary account name.

ConnectorAccountSetting

ConnectorAccountSetting contains symbol settings for each account of each connector defined in the system. ConnectorAccountSetting has the following attributes and can be accessed via the pending config or real-time config:

Order sizes in these settings (min, max, step, fok, layers, a_min, a_step, b_lock, b_bob) are expressed in the symbol’s size units (see Symbol), not in lots or currency. min and step are raised to at least the symbol size unit and max to at least min, so 0 does not mean unlimited. A request whose size is not a multiple of step, within the symbol’s size tolerance, is rejected with invalid size: step=….

attributes required default settings attribute type description
connector Y – INT The ID of the Connector (shown by name in the Portal).
account Y – INT The ID of the ConnectorAccount within the Connector (shown by name in the Portal).
security – – VARCHAR Read-only: the security of the selected symbol, shown by the Portal.
enable Y – INT Enable/disable ConnectorAccount symbol.
symbol Y – VARCHAR The name of the Symbol.
lq_pool Y – VARCHAR The LiquidityPool linked to this symbol, for the defined account.

• the liquidity pool linked to this symbol will determine the liquidity book that the system will use to execute trades on this connector account.
• all the settings defined at the level of the liquidity pool specified, for this symbol, will apply for the symbol, for this connector account (i.e. if the symbol was disabled at the level of the liquidity pool, then the symbol will be considered disabled for this connector account, etc.).
• only one liquidity pool can be linked to a symbol, on a specific connector account.
lq_profile Y – VARCHAR The MarkupProfile linked to this symbol, for the defined account.

• the markup profile linked to this symbol will determine the markup and related settings that the system will use when executing trades on this connector account
• all the settings defined in the markup profile for this symbol apply to this connector account
• only one markup profile can be linked to a symbol, on a specific connector account
layers N n/a VARCHAR Optional comma-separated, positive, increasing order-size thresholds for selecting a MarkupProfile layer for the whole order. Crossing a threshold advances the layer, up to the last available markup row; an order equal to a threshold stays in the lower layer. Two thresholds can therefore select three markup rows. Without explicit thresholds, MarkupProfile quantity settings determine the layer. These settings do not create provider depth.
mode Y sweep VARCHAR Execution mode for this connector account, used together with the LiquidityPool mode and provider constraints.

• sweep permits execution across eligible liquidity.
• single_ioc restricts liquidity selection instead of sweeping and permits partial fills.
• single_fok restricts selection and requires a single quote that covers the full current execution portion; the combined size of several quotes does not count. The request sent to the provider is fill-or-kill.

Client minimum-fill instructions and other execution checks still apply. Client IOC instructions do not override a configured SINGLE_FOK requirement. For split A-book/B-book orders, a full-portion requirement does not by itself guarantee a complete fill of the original order.
min Y 0.01 DOUBLE The minimum trade size, inclusive, that the system will accept for execution.
max Y 10000000 DOUBLE The maximum trade size, inclusive, that the system will accept for execution.
step Y 0.01 DOUBLE The trade size increment that the system will accept for execution. B-book fills limited by the available B-book liquidity are rounded down to a multiple of step.
fok Y -1 DOUBLE Size threshold, in symbol size units, at or above which only a single quote that covers the full current execution portion is used, whatever the mode; the combined size of several quotes does not count. The request sent to the provider is not fill-or-kill, so a partial provider fill leaves a remainder that XCore requests again. -1 disables the threshold. This applies to supported FX-classified symbols; it must not be assumed equivalent to a client whole-order FOK instruction for every provider or split A/B execution setup.
ttl Y 350 INT Time in milliseconds available for new execution attempts. Once the deadline is reached, XCore stops initiating further requests and outstanding maker responses remain a separate concern. Precedence: a request that carries a TTL of 0 or more uses that value; a request TTL of -1 uses 2,147,483,647 ms (about 24.85 days); a request without a TTL uses this configured value. MT4/MT5 requests are capped at 90,000 ms. On every connector, each request XCore sends to a maker is also capped at 90,000 ms, even when the order's TTL is longer, except an A-book LIMIT order forwarded to rest with the provider (LiquidityPool boost FORWARD). Use 0 or a positive value here. The deadline does not guarantee that a maker has confirmed cancellation or that every outstanding response has arrived.
b_book Y 0 DOUBLE Represents the percentage of the trade to be internalized by the system, expressed as a decimal value.

• a value of 0 requests a nominally all-A-book allocation. If a risk account is assigned, A-book minimum and step settings can still leave a B-book remainder.
• a value of 1.0 means that the order will be fully B-booked (i.e. internalized in the system)
100% B-book Order Execution (The b_book column is set to 1): In this case 100% of the order is executed internally in the system.
• a value of 0.4 means that 40% of the order should be B-booked and the rest 60% of the order should be A-booked. Further you can check a couple case scenarios of partial B-book order execution and their end result:
Partial B-book and Fully Fill : If the A-book leg is fully filled (e.g. 50%), then the corresponding B-book leg is filled fully as well as long there is enough Liquidity.(The b_book column is set to 0.5).
Partial B-book and Partial Fill : If the A-book leg is filled partially (e.g. 50%), then the corresponding percentage (e.g.50%) of the B-book leg is filled partially using the A-book leg fill price. (The b_book column is set to 0.5).
Partial B-book (Reject by provider) : In partial B-book, the A-book leg sent for execution first. Following that, the B-book leg is filled using the A-book fill price. If the A-book leg is rejected, then the B-book leg will be also rejected. (The b_book column is set to 0.5).
A-book part below the provider minimum : If the A-book part of the order, or the A-book remainder after a partial fill, is below the provider's minimum trade size and not larger than min, no A-book leg is sent for it and the rest of the order is B-booked (see b_delay). Otherwise the order can end unfilled or partially filled.
• a value above 1 requests nominally full B-book allocation and an additional reverse copy, scaled by the excess above 1, using the trade_copy feature. Copies are based on actual filled quantity.
• a value below 0 requests an additional same-direction copy, scaled by the absolute value, using the trade_copy feature. Ordinary allocation still follows the applicable account and sizing rules.

•Note: when a percentage is specified to be B-booked, it is important to understand how the order can be split, in order for the splits (i.e. the A-book part and the B-book part) to represent orders of valid sizes, such that the A-book part will be accepted by the LPs; in such situation, the use of “a_min” and “a_step” can be important, to influence the actual allocation

•Note: The connector accounts referenced in system.synthetics (see synthetic execution), system.xhedge and system.trade_copy must use b_book = 0 on all their symbol settings; any other value is rejected at startup.
b_lock N 0 DOUBLE Minimum B-book liquidity recognized for each eligible quote, in symbol size units. Supported values are -1 or a nonnegative number. -1 removes this quantity limit for the requested amount; eligible prices, size, session, account and minimum-fill checks still apply. It does not guarantee a fill or top-of-book execution.
b_bob N 0 DOUBLE Additional minimum B-book liquidity at the last eligible quote when B-book quantity remains. Supported values are -1 or a nonnegative number. -1 removes this quantity limit for the requested amount. Other execution checks still apply, so this setting does not guarantee a fill.
b_boost Y 1 DOUBLE The b_boost attribute defines a scaling factor that the system applies to the B-book liquidity for each quote in the liquidity_pool.

The supported values for b_boost are any positive numbers (greater than zero).
b_delay Y 0 INT Initial execution delay in milliseconds for B-only orders, combined with b_jitter. Orders with an initial A-book portion use a_delay instead, including mixed A/B orders. Stopout orders do not use these initial delays. A delay changes when execution can begin; it does not guarantee a particular price or reproduce provider execution timing. A-to-B fallback separately uses b_delay measured from the order’s opening time, without jitter.
b_jitter Y 0 INT Random variation of the initial B-only delay, chosen once per order: with b_jitter = J, an offset between −J and J−1 milliseconds is added, so the effective delay can be shorter or longer than b_delay. Zero adds no variation. Keep b_delay greater than b_jitter if a positive delay is required. Changes to these settings do not resample the delay already assigned to an order.
a_min N 0 DOUBLE Minimum A-book size of an order, in symbol size units. With a_step it sets how an order is split between A-book and B-book; only when b_book is 0 and the connector account has no risk account does the whole order go A-book:
• size_A = 0 if order.size < a_min or b_book ≥ 1
• otherwise size_A = max(floor(order.size × (1 − b_book), a_step), a_min)
• size_B = order.size − size_A

The split therefore also happens at b_book 0 when a risk account is assigned (size 125, a_step 100, a_min 10: A 100, B 25), and an order smaller than a_min goes entirely to B-book. A value below the symbol's size unit is raised to the size unit.
a_step N 0 DOUBLE Increment to which the A-book part is floored; see a_min for the calculation. Separate from step, which validates the incoming order size. A value below the symbol's size unit is raised to the size unit.
a_delay Y 0 INT Initial execution delay in milliseconds when the order has a positive A-book allocation, including mixed A/B orders. Stopout orders do not use this delay. The setting does not guarantee a provider response time or execution price.
improvements Y 1 DOUBLE Prefer TradeLock Profile settings for new configurations. An applicable TradeLock setting takes precedence. If no TradeLock rule applies, improvements can still affect existing configurations.

If the execution encounters a price improvement, this attribute specifies if the improvement will be passed to the client.

• Percentage based: range 0-1
0 = no improvement will be passed.
0.3 = 30% of improvement will be passed.
1 = all improvement will be passed.
session Y SUN|17:00:00-FRI|17:00:00 VARCHAR The weekly intervals for admitting trades on this ConnectorAccount symbol, interpreted in the XCore system timezone. Semicolon-separated intervals in the form DAY|HH:mm:ss-DAY|HH:mm:ss with upper-case day names SUN to SAT, ordered from Sunday to Saturday and non-overlapping; each start must be before its end, and touching intervals are allowed. Starts are inclusive and ends exclusive. SUN|00:00:00-SAT|24:00:00 covers the whole week; a schedule that crosses the Sunday boundary must be split into two intervals, and daily gaps 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 timezone and supported schedule-change procedure; automatic daylight-saving refresh is not guaranteed.

• For more information on sessions please check our video here