Section 8 - Code architecture
FX tiles display Executable Streaming Prices (ESP) for a currency pair and allow users to immediately trade on those prices.
Overview
They consist of a single blade where all the code is under the directory <YOURAPP>/fxexecution-bladeset/blades/fxtile
. They are implemented as a Presenter component whose main presentation model class is caplinx.fxexecution.tile.FxTile
, and HTML template is <blade-home>/html/resources/FxTile.html.
Configuration is held in the FxTile
factory object, which is retreived from the service registry as follows:
var oAppService = caplin.core.ServiceRegistry.getService("caplin.config-service");
var oTileFactory = oAppService.getProperty("FX.TILE.FACTORY");
The factory object is registered when the app is bootstrapped. In caplinx.AppConfig
replace the default factory class caplinx.fxexecution.fxtile.multiway.config.MultiWayTileConfig
with one of your own that extends caplinx.fxexecution.fxtile.config.DefaultFxTileConfig
.
Each trade panel is split into a setup and execution section. For example in the volume ladder the setup section is used to specify the trade date and the quoted currency. The execution section contains a set of rows with the amount and buy/sell buttons. Each row is an instance of the caplinx.fxexecution.fxtile.presentation.VolumeLadderRow
.
Every ladder row subclasses caplinx.fxexecution.fxtile.presentation.AbstractTileRow
. In the execution section of the one-way and two-way outright panels a single subclassed instance of AbstractTileRow
is used. The execution buttons (caplinx.fxexecution.presenter.InstrumentPriceButton
) display the price that is used for the trade. This value could depend on a number of factors, the trade date, the users price tier and the amount. Indeed the purpose of the volume ladder is to show how the price varies dependent on the amount traded. This is encapsulated inside the caplinx.fxexecution.fxtile.TilePriceSourceModel
which the InstrumentPriceButton
uses as its model.
Trade Model
The caplinx.fxexecution.fxtile.FXTileBootstrap
class registers a trade factory, for the ESP protocol, with the trade service. See ESP Trade Message Specifications for details of the message protocol.
When the execute button is clicked, it hands off to the caplinx.fxexecution.fxtile.trading.TradeExecutor
class that creates an instance of the trade model (via the trade service), copies over the appropriate data and executes the trade. While the trade is executing, the caplinx.fxexecution.fxtile.trading.DefaultTradeStateHandler
updates the appropriate properties in the Tile so the GUI represents the state of the trade, finally displaying the confirmation message.
Metals
The ESP Tile can be configured to allow metals to be traded. For that reason there are a parallel set of HTML templates that are available in the directory <blade-home>/html/resources/metal. To support these there are a parallel set of presentation nodes found in the directory <blade-home>/src/caplinx/fxexecution/fxtile/metal
. The directory contains a DefaultMetalTileConfig
class contains the appropriate configuration that uses these metal classes and templates.
Common behaviour between Foreign Exchange and Metals resides in superclasses of code that are specialized in the metal
and fx
source directories.
FX Tiles documentation: