Messages in FX Professional

This documentation is for FX Professional 2.18 and earlier. From version 2.19 (2 Jun 2019), FX Professional requires back end adapters to implement the FX Integration API 3. For documentation on FX Integration API 3 messages, see FX Integration API.

Various message specifications are used across the FX Professional Motif 2. Each message contains fields and values required to successfully perform a specific action.

You will find a full list of all message specifications in the links at the very bottom of this page. Although each message specification is necessarily different, there are common field terminologies and conventions used across all of them.

Field terminology and conventions

  • Fields that relate to a trade leg are prefixed by L<leg number>_. For example, L1_Amount represents the amount on the first leg of a trade.

  • There is no leg zero, therefore no field will start with the prefix L0_.

  • A trade always has at least one leg.

  • Some fields relate to a trade as a whole rather than any individual leg, and these fields have no prefix. For example, CurrencyPair and TradingType.

  • Fields that relate only to forwards begin with Fwd, for example L1_FwdBidPips.

  • Fields that relate only to swaps begin with Swap, for example SwapBidPips.

  • The term rate always denotes a field containing an FX rate, for example 1.52312.

  • The term points always denotes a field containing forward points specified as a decimal number. For example, if there are 6.5 forward points on a GBP/USD rate then the value of the L1_FwdBidPoints field would contain the value 0.00065. This is because 0.00065 added to a spot rate such as 1.50000 would give a forward rate of 1.50065, which is a 6.5 points higher than the spot rate. Note that this field is typically not useful for display to the client.

  • The term pips always denotes a field containing forward points specified as pips. For example, if there are 6.5 forward points on a GBP/USD rate then the value of the L1_FwdBidPips field would contain the value 6.5. This is typically the field you want to display to the client for forwards and swaps.

  • The term price is deprecated and should no longer be used in any field names due to its ambiguous nature.

Subjects

Assuming a typical back end system has the following integration adapters: Rates, Trading, Orders, Calendar, Historic. The following table denotes what is requested:

Item Data Type Adapters Providing Route Unmapped Subject Mapped Subject

Streaming rates

Record

Rates

Direct

/FX/USDJPY/<Tenor>/<DealtCurrency>/<Amount>

/FX/USDJPY/<Tenor>/<DealtCurrency>/<Amount>/<MarginBand>

ESP, RFS and PostAllocation trade channel

Record

Trading

Direct

/PRIVATE/TRADE/FX%1

/PRIVATE/%U/TRADE/FX%1

Post Allocations - Viewing

Record

Historic

Direct

/PRIVATE/FX/ALLOCATIONS/<TradeId>

/PRIVATE/%u/FX/ALLOCATIONS/<TradeId>

Orders trade channel

Record

Orders

Direct

/PRIVATE/ORDERS/FX%1

/PRIVATE/%U/ORDERS/FX%1

Pricing Grids

Container

Rates

via Transformer

/FX/CONTAINER/<ContainerName>

/FX/CONTAINER/<ContainerName>

Activity Blotter

Container

Trading

via Transformer

/PRIVATE/FX/BLOTTER/ACTIVITY

/PRIVATE/%u/FX/BLOTTER/ACTIVITY

Activity blotter items

Record

Trading

via Transformer

/PRIVATE/FX/BLOTTER/ACTIVITY/ITEM/%1

/PRIVATE/%u/FX/BLOTTER/ITEM/%1

Execution Blotter

Container

Trading, Historic

via Transformer

/PRIVATE/FX/BLOTTER/ACTIVITY

/PRIVATE/%u/FX/BLOTTER/ACTIVITY

Execution blotter items

Record

Trading, Historic

via Transformer

/PRIVATE/FX/BLOTTER/ACTIVITY/ITEM/%1

/PRIVATE/%u/FX/BLOTTER/ITEM/%1

Historic blotter

Container

Historic

Direct

/PRIVATE/FX/BLOTTER/HISTORIC

/PRIVATE/%u/FX/BLOTTER/HISTORIC

Historic blotter items

Record

Historic

Direct

/PRIVATE/FX/BLOTTER/HISTORIC-ITEM/%1

/PRIVATE/%u/FX/BLOTTER/HISTORIC-ITEM/%1

Order Blotter

Container

Orders

via Transformer

/PRIVATE/FX/BLOTTER/ORDER

/PRIVATE/%u/FX/BLOTTER/ORDER

Tenor Dates

Record

Calendar

Direct

/CALENDAR/TENORDATES/<CurrencyPair>

No mapping

Settlement Dates

Record

Calendar

Direct

/CALENDAR/SETTLEMENTDATE/<CurrencyPair>/<Year>/<Month>

No mapping

For explanations on data types (records and containers) see here.

A Direct route implies a request for data sent directly through a Liberator and not via a Transformer