A data service for generating and storing mocked market data.
Build
To build use the scripts below:
npm install
npm run build
Output
Output bundles are available in format for usage.
Glue42 Desktop
"data-service": "dist/data-service-${projectVersion}.js",
"data-service-map": "dist/data-service-${projectVersion}.js.map"
"index.html": "dist/index.html",
Glue42 Core
Take the data-service js file and reference it in your Glue initialization file. Add plugin property to your glue config
webPlatform: {
config: {
plugins: {
definitions: [
{
name: 'data-service',
critical: true,
start: (glue) => {
async function main() {
await MockDataGenerator(glue)
}
}
main()
},
},
]
}
}
}
Registered methods
T42.OMS.GetBidData
Generates a list of bids for instrument.
ticker | string | Instrument ticker | Yes |
lastPrice | number | Price based on which the prices for the bids will be generated | Yes |
Returns
Example
{
bids: [
{
count: 5,
volume: 7900,
price: 2770.99,
side: '1',
},
{
count: 4,
volume: 10500,
price: 3192.67,
side: '2',
},
]
}
T42.OMS.MarketData [stream]
Stream market generated data for the specific instrument list. Subscribe for each symbol in the list.
Accepts
instrumentList | Fdc3InstrumentList | List with fdc3 instruments | Yes |
Returns
ticker | string | Instrument ticker |
lastTradedVolume | number | Last traded volume |
lastPrice | number | Last traded price |
openPrice | number | Open price |
lowPrice | number | Lowest traded price for the day |
highPrice | number | Highest traded price for the day |
prevClosePrice | number | Close price for yesterday |
totalVWAP | number | Volume-weighted average price |
time | Date | Time of generating the data |
description | String | Description name |
isin | string | International Securities Identification Number |
currency | string | Currency of the |
Example
{
data:
{
ticker: "BARC",
volume: 36564354,
lastTradedVolume: 10000,
lastPrice: 212.901,
openPrice: 237.003,
lowPrice: 241.01999999999998,
highPrice: 241.01999999999998,
prevClosePrice: 160.68,
totalVWAP: 236.60129999999998,
time: "2022-02-18T15:18:18.368Z",
description: "Barclays Plc",
isin: "GB0031348658",
currency: "GBX"
}
}
OrderManagementService
Stores custom orders and trades, created by T42.OMS.CreateOrder and T42.OMS.CreateTrade.
Generate orders, trades and slices. Once an order is generated slices are generated for the order until it's filled.
T42.OMS.GetOrders
Accepts
date | Date | End period of the generated orders. Start period is 00.00.00 the same day | Yes |
withSlices | boolean | Include the corresponding slices for the orders | No |
withTrades | boolean | Include the corresponding trades for the orders | No |
Returns
orders | OrderInfo [] |
slices | OrderSlice [] |
trades | OrderTrade [] |
Example
{
orders: [
{
orderId: 46342144,
clientId: 'TEST2',
instrument: 'ITV:LN',
currency: 'GBX',
side: '1',
quantity: 840,
quantityFilled: 840,
dateCreated: '2022-02-18T07:02:28.000Z',
orderType: '1',
timeInForce: '0',
limitPrice: 0,
comments: '',
averagePrice: 114.65121428571427,
tradeStatus: 'Done',
brokerId: 'XX',
bookId: 'AGENCY',
split: [
{
brokerIndex: 1,
quantity: 840,
},
],
},
],
trades: [
[
{
orderId: 46342144,
clientId: "TEST2",
sliceId: 4634214401,
side: "1",
instrument: "ITV:LN",
currency: "GBX",
timestamp: "2022-02-18T07:02:47.000Z",
quantity: 480,
price: 116.6715,
execBroker: "BROKER2",
exchange: "XOFF",
comments: "",
bookId: "AGENCY"
},
{
orderId: 46342144,
clientId: "TEST2",
sliceId: 4634214401,
side: "1",
instrument: "ITV:LN",
currency: "GBX",
timestamp: "2022-02-18T07:03:12.000Z",
quantity: 360,
price: 111.9575,
execBroker: "BROKER2",
exchange: "XOFF",
comments: "",
bookId: "AGENCY"
}
],
],
slices: [
[
{
orderId: 46342144,
clientId: "TEST2",
instrument: "ITV:LN",
currency: "GBX",
side: "1",
quantity: 840,
quantityFilled: 840,
dateCreated: "2022-02-18T07:02:28.000Z",
orderType: "1",
timeInForce: "0",
limitPrice: 0,
comments: "",
averagePrice: 114.65121428571427,
tradeStatus: "Done",
brokerId: "BROKER2",
bookId: "AGENCY",
split: [
{
brokerIndex: 1,
quantity: 840
}
],
sliceId: 4634214401,
brokerExchange: "XOFF"
}
]
]
}
T42.OMS.GetOrder
Returns single order with it's corresponding slices and trades if passed in the arguments.
Accepts
orderId | String | Id of the requested order | Yes |
date | Date | End period of the generated orders of which the order will be filtered from. Start period is 00.00.00 the same day | Yes |
withSlices | boolean | Include the corresponding slices for the orders | No |
withTrades | boolean | Include the corresponding trades for the orders | No |
Returns
order | OrderInfo |
slices | OrderSlice [] |
trades | OrderTrade [] |
Example
{
order: {
dateCreated: "2022-02-18T07:05:31.000Z",
side: "2",
currency: "GBX",
limitPrice: 0,
quantityFilled: 1920,
tradeStatus: "Done",
quantity: 1920,
brokerId: "XX",
split: [
{
"brokerIndex": 1,
"quantity": 1920
}
],
instrument: "BATS:LN",
clientId: "TEST1",
bookId: "AGENCY",
averagePrice: 2600.359375,
comments: "",
orderId: 46342146,
timeInForce: "0",
orderType: "1"
},
slices: [
{
dateCreated: "2022-02-18T07:05:31.000Z",
brokerExchange: "XOFF",
side: "2",
currency: "GBX",
limitPrice: 0,
quantityFilled: 1920,
tradeStatus: "Done",
quantity: 1920,
brokerId: "BROKER2",
split: [
{
brokerIndex: 1,
quantity: 1920
}
],
instrument: "BATS:LN",
clientId: "TEST1",
bookId: "AGENCY",
averagePrice: 2600.359375,
comments: "",
orderId: 46342146,
sliceId: 4634214601,
timeInForce: "0",
orderType: "1"
}
]
}
T42.OMS.GetAllTrades
Return all daily trades as of date/time
Accepts
date | Date | End period of the trades. Start period is 00.00.00 the same day | Yes |
Returns
Example
{
trades: [
{
orderId: 46342144,
clientId: 'TEST2',
sliceId: 4634214401,
side: '1',
instrument: 'ITV:LN',
currency: 'GBX',
timestamp: '2022-02-18T07:02:47.000Z',
quantity: 480,
price: 116.6715,
execBroker: 'BROKER2',
exchange: 'XOFF',
comments: '',
bookId: 'AGENCY',
},
]
}
T42.OMS.GetOrderId
Returns orderId corresponding to the provided sliceId
Accepts
sliceId | String | sliceId of the required order | Yes |
Returns
T42.OMS.TradingPositions
Returns trading positions as of date/time for trades grouped by book and after that instruments
Accepts
date | Date | End period of the generated orders of which the order will be filtered from. Start period is 00.00.00 the same day | Yes |
Returns
tradingPositions | TradePosition |
Example
{
tradingPositions: {
"AGENCY": {
"ITV:LN": {
book: "AGENCY",
instrument: "ITV:LN",
position: -1680,
averagePrice: 119.87719589552236,
totalVolume: 8040,
totalPrice: 963812.6549999998,
currency: "GBX"
},
"BATS:LN": {
book: "AGENCY",
instrument: "BATS:LN",
position: -2972,
averagePrice: 2474.029309596179,
totalVolume: 9212,
totalPrice: 22790758,
currency: "GBX"
}
},
"RISK": {
"HSBA:LN": {
book: "RISK",
instrument: "HSBA:LN",
position: 1260,
averagePrice: 502.15,
totalVolume: 7740,
totalPrice: 3886641,
currency: "GBX"
},
"BATS:LN": {
book: "RISK",
instrument: "BATS:LN",
position: -3660,
averagePrice: 2545.767027559055,
totalVolume: 7620,
totalPrice: 19398744.75,
currency: "GBX"
},
}
}
}
T42.OMS.CreateOrder
Accepts
order | OrderInfo | Order which will be part of the custom orders | Yes |
Example
{
order: {
dateCreated: "2022-02-18T14:03:41.416Z",
side: "2",
currency: "GBX",
limitPrice: 123,
quantityFilled: 0,
tradeStatus: "",
expireTime: "2022-02-16T22:00:00.000Z",
quantity: 123,
brokerId: "",
instrument: "BATS:LN",
clientId: "client@outlook.com",
averagePrice: 0,
comments: "Instructions",
orderId: 0,
timeInForce: "6",
orderType: "3"
}
}
T42.OMS.CreateTrade
Accepts
trade | OrderTrade | Trade which will be part of the custom orders | Yes |
Example
{
trade: {
side: "2",
currency: "GBX",
timestamp: "2022-02-18T09:59:00.000Z",
quantity: 332,
instrument: "BATS:LN",
clientId: "TEST1",
bookId: "AGENCY",
comments: "Instructions",
execBroker: "BROKER2",
exchange: "XOFF",
orderId: 46342146,
sliceId: 4634214601,
price: 123
}
}
T42.OMS.GetBrokers
Returns
Example
{
brokers: [
{
brokerId: 'BROKER1',
brokerExchange: 'XOFF',
},
{
brokerId: 'BROKER2',
brokerExchange: 'XOFF',
},
]
}
T42.OMS.GetInstruments
Retrieve a list of supported instruments
Returns
instruments | InstrumentInfo[] |
Example
{
instruments: {
ticker: 'AZN',
bbgExchange: 'LN',
isin: 'GB0009895292',
description: 'AstraZeneca Plc',
currency: 'GBX',
price: {
close: 9138.0,
yearLow: 6499.8,
yearHigh: 9258.4,
},
volume: {
average: 2120914,
},
}
}
GetFdc3Instruments
Returns a list of supported instruments with Fdc3InstrumentList
Returns
instruments | Fdc3InstrumentList[] |
Example
{
instruments: {
type: 'fdc3.instrumentList',
instruments: [{
type: 'fdc3.instrument',
name: 'AstraZeneca Plc',
id: { ticker: 'AZN' },
}]
}
}
T42.OMS.GetClients
Returns a list of clients
Returns
Example
{
clients: [
{
type: 'fdc3.contact',
name: 'TEST1',
id: {
email: 'test1.demo@tick42.com',
salesforceId: '0030900000aBhKYAA0',
clientId: 'TEST1',
},
},
]
}
T42.OMS.GetOrderValidity
Returns
orderValidity | [value]: {displayName: string, shortName: string, enabled: boolean} |
Example
{
orderValidity: {
'0': {
displayName: 'Day',
shortName: 'DAY',
enabled: true,
},
'1': {
displayName: 'Good Till Cancel',
shortName: 'GTC',
enabled: true,
},
}
}
T42.OMS.GetOrderTypes
Returns
orderTypes | [value]: {displayName: string, enabled: boolean} |
Example
{
orderTypes: {
'1': {
displayName: 'Market',
enabled: true,
},
'2': {
displayName: 'Limit',
enabled: true,
},
}
}
T42.OMS.GetOrderSides
Returns
orderSides | [value]: {displayName: string, shortName: string, enabled: boolean} |
{
orderSides: {
'1': {
displayName: 'Buy',
shortName: 'B',
enabled: true,
},
'2': {
displayName: 'Sell',
shortName: 'S',
enabled: true,
}
}
}
T42.OMS.GetFunds
Returns
{
funds: [
{
name: 'GAM Star Disruptive Growth Inst Acc GBP',
isin: 'IE00B5VMHR51',
url: 'https://www.morningstar.co.uk/uk/funds/snapshot/snapshot.aspx?id=F00000Q28W',
instruments: [
{
ticker: 'MSFT',
bbgExchange: 'US',
url: 'https://tools.morningstar.co.uk/uk/stockreport/default.aspx?Site=uk&id=0P000003MH',
portfolioPercent: 7.7,
currency: 'USD',
isin: 'US5949181045',
quantity: 7700000,
volume: {
average: 33954187,
},
price: {
close: 301.25,
yearLow: 224.26,
yearHigh: 349.67,
},
description: 'Microsoft',
},
],
},
]
}