DealerLink

Dealer Link is used to send specific values to providers via predetermined tags in the order request message. One of its primary functions is to enable the configuration of client identifiers. The tags utilized for this purpose depend on the provider’s type or implementation, and up to five values can be transmitted. In addition it can also be utilized to redirect the execution flow to a single provider that supports multiple account Tag 1 values over a single trading session or to a single provider with multiple trading sessions.
| attributes | required | default settings | attribute type | description |
|---|---|---|---|---|
| id | Y | – | INT | The ID of the rule; generated. |
| connectors | Y | – | VARCHAR | The name(s) of one or several connectors acting as the source. • A wildcard (*) can be used to specify all connectors. |
| lq_pools | Y | * | VARCHAR | The name of the liquidity pool(s) through which the trade is executed. |
| providers | Y | * | VARCHAR | Name(s) or patterns matching the original quote provider before any execution redirection. This is separate from the destination selected by provider. |
| accounts | Y | – | VARCHAR | The name(s) of one or several connector accounts (all belonging to the connector specified under connectors) acting as the source. If a specific account name is used, then it is highly advisable to specify only one connector • If all accounts available (under one or more connectors) need to be specified, then the wildcard (*) should be used. |
| securities | Y | * | VARCHAR | The name(s) of the securities acting as the source. |
| symbols | Y | * | VARCHAR | The name(s) of the symbols acting as the source. |
| sides | Y | * | VARCHAR | The trade execution side(s). Available values: SELL, BUY or *. |
| ord_types | Y | * | VARCHAR | The trade execution type(s): MARKET, LIMIT, STOP, PQ (prequoted) or *, in upper case. Matching uses the order type current at the time of the check, after any TradeLock conversion. |
| pos_types | Y | * | VARCHAR | The trade position type(s). Available values: ENTRY, EXIT, NONE or *. A request is classified as ENTRY or EXIT only when the source adapter supplies that information (MT4); other requests, including MT5, carry NONE. Note: editable only for dealer link rules which are configured for connector of type MT4 |
| enable | Y | 1 | INT | Enables/Disables the dealer link rule. If the rule is disabled, then the system will revert to the default routing (the original quote provider, trade group 0 and trading configuration 1) and will not consider any rules of lower priority. XCore will consider the priority number before considering the status of enable. |
| priority | Y | 1 | INT | The priority of the current row. If a leg matches with more than one row then the row with the higher priority (bigger integer number) will be applied for this leg. |
| provider | Y | n/a | INT | The target provider for routing order execution. Allows orders to be sent to one provider with prices from a different provider. n/a (stored as -1) keeps the original quote provider; provider_trade, provider_config and values still apply in that case.WARNING: Using a different Provider for execution than pricing may cause significant slippage on market orders. |
| provider_trade | Y | 0 | INT | The target provider’s provider_trade group ID; 0 selects group 0. Independent of provider_config. |
| provider_config | Y | 0 | INT | The target provider’s trading provider_config (stored as provider_target), using zero-based indexing; it never selects the pricing configuration 0:• provider_config = 0 refers to provider_config.config = 1 • provider_config = 1 refers to provider_config.config = 2, and so on. |
| values | – | VARCHAR | Includes 5 value fields that can be used to send information to LPs, in specific FIX tags, on the order request messages; these values can be either static values or parameters. The fields are entered as a comma-separated list of up to five positions (Value 0 to Value 4). An omitted position is sent as n/a, which the adapter can omit or replace with its default, whereas an explicitly empty position between two commas is sent blank; trailing empty positions are dropped and commas cannot be escaped. Available parameters:• #conn# – represents the name of the connector of the trading account selected for execution (after connector routing) • #conn_id# – represents the ID of the connector where the order request was received • #acc# – represents the name of the connector trading account selected for execution (after connector routing) • #acc_id# – represents the ID of the connector trading account selected for execution • #sub1# – represents the SubID1 value received with the order request • #sub2# – represents the SubID2 value received with the order request, If the order is received from an MT4/MT5 connector, this represents the MT4 /MT5 group. • #sub3# – represents the SubID3 value received with the order request. If the order is received from an MT4/MT5 connector, this represents the MT4 /MT5 Login. • #sub4# – represents the SubID4 value received with the order request (i.e., in the case of an order received from an MT4 connector, this represents the MT4 Ticket associated with the order request). • #clordid# – represents the clOrdID value received with the order request. • #group# – represents the MT4/MT5 request group; contributes no text for other request kinds. The parameters can also be used together within the same value field; e.g., if an order is executed from a connector with ID 2 and a connector trading account named testABook, then if the content of a value field is set to #conn_id#_#acc#, in the FIX message the output for this field, for that particular order, will be: 2_testABook If specific accounts on the LP side need to be specified for different trade flows, this can be achieved by specifying in the dealer link rules, the account name on the LP side, as a static value; this is in general done in the first value field (i.e., Value 0) which will then be placed in the corresponding FIX tag that the LPs recognizes as the account The 5 available value fields are each mapped to specific FIX tag numbers based on the implementation for each liquidity provider. For different LPs, the FIX tag numbers can be different. For the PrimeXM_FIX44 Liquidity Provider type, the value fields are mapped to FIX tag numbers as per below: • Value 0 – FIX tag 1 • Value 1 – FIX tag 115 • Value 2 – FIX tag 116 • Value 3 – FIX tag 526 • Value 4 – FIX tag 527 Other adapters use only some positions: the ACM adapter reads Value 0, Value 3 and Value 4, and the KuCoin adapter does not use the value fields. For PrimeXM_FIX44, Value 0 set to n/a falls back to the account configured for the provider; other n/a positions are omitted. |
The name selectors (connectors, lq_pools, providers, accounts, securities, symbols) are ordered, comma-separated, case-sensitive patterns: * matches any text, a leading ! excludes a match, and the first matching token decides, so !ABC,* excludes ABC while *,!ABC admits it. No other pattern syntax is supported. Each name selector must match at least one configured name at startup.
Use distinct priorities for overlapping rules; equal-priority precedence is not guaranteed. A selected destination must have usable trading connectivity and symbol settings. If it cannot execute a candidate quote, that quote is not automatically retried through the original provider or a lower-priority DealerLink rule; other eligible quotes may still be considered.
DealerLink values are separate from ProviderTradeSetting values, and their meanings depend on the provider adapter. Confirm the supported procedure for applying DealerLink changes; saving a configuration does not establish immediate adoption by an active connection.