QXSP Application Programming Interface Recipient

21
Xentric ® Quote Source 3.5 Application Programming Interface - Recipient © Deutsche Börse AG All proprietary rights and interest in this Xetra ® publication shall be vested in Deutsche Börse AG and all other rights including, but without limitation to, patent, registered design, copyright, trade mark, service mark, connected with this publication shall also be vested in Deutsche Börse AG. Whilst all reasonable care has been taken to ensure that the details contained in this publication are accurate and not misleading at the time of publication, no liability is accepted by Deutsche Börse AG for the use of information contained herein in any circumstances connected with actual trading or otherwise. Neither Deutsche Börse AG, nor its servants nor agents, is responsible for any errors or omissions contained in this publication which is published for information only and shall not constitute an investment advice. This brochure is not intended for solicitation purposes but only for the use of general information. All descriptions, examples and calculations contained in this publication are for guidance purposes only and should not be treated as definitive. Deutsche Börse AG reserves the right to alter any of its rules or product specifications, and such an event may affect the validity of information contained in this publication. ® Registered trademark of Deutsche Börse AG

Transcript of QXSP Application Programming Interface Recipient

Xentric® Quote Source 3.5

Application Programming Interface - Recipient

© Deutsche Börse AG

All proprietary rights and interest in this Xetra® publication shall be vested in Deutsche Börse AG and all other rights including, but without

limitation to, patent, registered design, copyright, trade mark, service mark, connected with this publication shall also be vested in Deutsche

Börse AG. Whilst all reasonable care has been taken to ensure that the details contained in this publication are accurate and not misleading at

the time of publication, no liability is accepted by Deutsche Börse AG for the use of information contained herein in any circumstances

connected with actual trading or otherwise. Neither Deutsche Börse AG, nor its servants nor agents, is responsible for any errors or omissions

contained in this publication which is published for information only and shall not constitute an investment advice. This brochure is not

intended for solicitation purposes but only for the use of general information. All descriptions, examples and calculations contained in this

publication are for guidance purposes only and should not be treated as definitive. Deutsche Börse AG reserves the right to alter any of its rules

or product specifications, and such an event may affect the validity of information contained in this publication.

® Registered trademark of Deutsche Börse AG

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 2 of 21

Table of contents

1 Introduction ....................................................................................................... 3 1.1 Purpose of the Document ...................................................................................... 3 1.2 System Requirements ........................................................................................... 3 1.3 General Information ............................................................................................. 3 1.3.1 Functions of Xentric Quote Source 3.0 and upwards ................................................... 3 1.3.2 New Features in Xetra Release 9.1 / XQS Release 3.1................................................. 4 1.3.3 New Features in Xetra Release 10 / XQS Release 3.2.................................................. 4 1.3.4 New Features in Xetra Release 11 / XQS Release 3.3.................................................. 5 1.3.5 New Features in Xetra Release 11.1 / XQS Release 3.4............................................... 5 1.3.6 New Features in Xetra Release 12 / XQS Release 3.5.................................................. 6 1.4 System Overview ................................................................................................. 7

2 Connection between XQS System and Recipients ...................................................... 8 2.1 Assumptions....................................................................................................... 8 2.2 Data Connections between XQS and Recipients.......................................................... 9 2.3 Service Connection between XQS and Recipients........................................................ 9 2.4 Monitoring ......................................................................................................... 9 2.5 Exchange of Messages........................................................................................ 10

3 Detailed Description .......................................................................................... 12 3.1 Overview.......................................................................................................... 12 3.2 Subscription Processing in Error Scenarios .............................................................. 18 3.3 Quote Data....................................................................................................... 18 3.4 Deployment...................................................................................................... 21

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 3 of 21

1 Introduction

1.1 Purpose of the Document

This document describes the interface between the XQS server application and user applications receiving quotes. The interface, in this document referred to as “Client-Access-Layer”, is implemented in java distributed as a jar file containing the required class files.

1.2 System Requirements

The version of the required JRE is 1.6.0_14 or higher.

1.3 General Information

For Xetra Frankfurt 2 which has been launched with Xetra Release 9.0, issuers for structured products have been obliged to continuously send quotes in their instruments to Deutsche Börse AG / Scoach on a real-time basis.

Since then, Specialists in certificates and warrants must monitor all order books they are responsible for by means of limit control systems. For this purpose, they receive and process issuer quotes from XQS. In addition, XQS provides quote information to the market via CEF.

Throughout this document, following definitions are used:

n Sender

Specialists and Issuers as quoting entities sending quotes to XQS are referred to as "Senders".

n Recipients

Specialists and CEF as entities receiving quotes from XQS are referred to as “Recipients”.

1.3.1 Functions of Xentric Quote Source 3.0 and upwards

XQS performs the following functions:

1. receipt of quotes, quote deletes and heartbeat messages from all connected senders via a standardized interface

2. support for the trading models “Continuous Auction with Issuer” and “Continuous Auction with Specialist” introduced by Xetra 9.0

3. in the “Continuous Auction with Specialist” trading model, realtime distribution of quotes to defined recipients via the Client-Access-Layer interface

4. in the “Continuous Auction with Issuer” trading model, XQS serves as direct interface between the Quote Provider (Issuer) and Xetra Frankfurt 2. In this part, the Client-Access-Layer interface is not used.

This document describes the application programming interface defined for item 3.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 4 of 21

The dissemination of quote information is based on push technology, i.e. once the quote information of a specific instrument has been subscribed through the Client-Access-Layer the user application will be notified automatically of each subsequent quote update.

The Client-Access-Layer supports a system configuration with two redundant XQS instances. Both XQS instances are equally active and transmit the quotes they receive from the various senders to the defined recipients. For this reason, they are referenced as “first and second XQS instance”.

1.3.2 New Features in Xetra Release 9.1 / XQS Release 3.1

With Xetra Release 9.1 the technical and functional capability is set to introduce further products on the new trading platform Xetra Frankfurt 2.

As of December 1, 2008, Deutsche Börse AG is planning to introduce mutual funds trading in the “Continuous Auction with Specialist” trading model on Xetra Frankfurt 2.

Changes in XQS Release 3.1

n In XQS 3.1, XQS will provide support for the quoting of funds by implementing direct connection channels between Specialists and XQS as well as between XQS and CEF. In funds, Specialists do not receive quotes from Issuers. Instead, they forward their own quotes directly to XQS which routes them through to CEF. For quoting in funds, separate connection channels are used both between Specialist and Sender and between XQS and CEF.

n The connection of the Java Client Lib to the XQS Support Server is initialized through an Init method. With the new release, a corresponding “DeInit” method will be provided to enable proper disruption of the connection when the Java Client Lib is stopped.

n The number of error message 90107 “More than one issuer is sending quotes for this instrument" will be changed to the new error message number 80008.

n In previous versions of the Java Client Lib, the methods “Get“, “Using“, “NotUsing“ and “Pull“ were used for advance subscription of quotes and receipt of single quotes. These methods will no longer be available with XQS 3.1.

XQS Release 3.1 is a mandatory release and not backwards compatible, this means the XQS 3.1 version of the Java Client Lib must be used.

1.3.3 New Features in Xetra Release 10 / XQS Release 3.2

Xetra Release 10.0 is characterized by the introduction of two new optional high-speed interfaces to access Xetra. The “Enhanced Broadcast Solution” and the “Enhanced Transaction Solution”, both already known from Eurex, provide members with high-performance, low-latency access to market data and order management, respectively.

Apart from this new technology two new order types, the “Discretionary Order” and the “Hidden Order”, will be introduced. Additionally “Non-Persistent Orders and Quotes” will be provided for members requiring a faster response from Xetra concerning their order status.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 5 of 21

With the introduction of Xetra 10.0 all quotes will become non-persistent by definition, i.e. if there are technical problems on the exchange’s back-end side or when an instrument leaves the “HALT” state the orders marked as non-persistent and quotes will be removed from the order book. Non-persistent orders and quotes entered via the new interface Enhanced Transaction Solution are deleted if the trading session loses the connection.

Changes in XQS Release 3.2

In XQS Release 3.2, quotes in funds will be transferred to Xetra Frankfurt 2. There, the quotes are published to the market. This is different from Release 3.1 where quotes in funds were forwarded to CEF.

1.3.4 New Features in Xetra Release 11 / XQS Release 3.3

A new order execution restriction "book-or-cancel" will be introduced.

An additional quote type "indicative quote" to place indicative quotes with quantities to the Issuer Trading Model will be introduced.

Changes in XQS Release 3.3

A new version of the Java Client Lib will be delivered and is mandatory for XQS Release 3.3 / Xetra 11.

This version requires Java 1.6.14 or above.

The usage and the interface of the Java Client Lib version is not changed.

Internal performance enhancements are implemented.

The failover algorithms are changed and supports a better handlings of connects/disconnects.

The unavailability of an instrument will always be delivered now.

1.3.5 New Features in Xetra Release 11.1 / XQS Release 3.4

A new modify order field “membExcIdCodObo “ will be introduced.

A new quote field “stlCurrExcRat” will be introduced.

Changes in XQS Release 3.4

Quotes in funds are not supported anymore in XQS, they have to be entered in Xetra Frankfurt 2 by the specialist.

The “QXSP Application Programming Interface Recipient.doc” (this document) has been re-worked. A short summary of the changes is given here:

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 6 of 21

n The section “1.3 General Information” has been reorganized to match the XETRA and XQS releases based on their timelines

1.3.6 New Features in Xetra Release 12 / XQS Release 3.5

Flexible trading times – exchange segments and control segments will be introduced.

Clearing member stop button will be introduced.

Multi exchange capability will be introduced.

External reference price feed will be introduced.

Cross request will be introduced.

TOP order will be introduced.

ETF enhancements will be introduced.

Changes in XQS Release 3.5

All instrument and/or member based transactions need the market MIC as additional attribute, according to the new Xetra Multi exchange capability.

A new version of the Java Client Lib will be delivered and is optional for XQS Release 3.5 / Xetra 12.

This version requires Java 1.6.0_14 or above.

The usage and the interface of the Java Client Lib version is not changed, except of the Login/Loginresponse:

The Login is expanded by the optional parameter market MIC. If it is used, it will be tested against the market MIC of the XQS-Instanz and on fail, the login will fail.

The Loginresponse is expanded by the parameter market MIC. There is no testing inside the Java Client Lib, but the implementing application may examine it.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 7 of 21

1.4 System Overview

Figure 1: System Overview of XQS

Xentric Quote Source Routing

The XQS routing system is responsible for getting current quotes from issuers and Specialists, additional internal processing and for sending them realtime to the Client-Access-Layer as part of a user application.

It forwards the quotes it has received from XQS to the user application, e.g. a limit control system.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 8 of 21

2 Connection between XQS System and Recipients

2.1 Assumptions

The following assumptions apply to the communication between XQS and the Client-Access-Layer:

n Communication between XQS and the Client-Access-Layer is transparent for the user application.

n Each user application instantiates one object of the Client-Access-Layer. The user application logs in to one XQS instance with a unique client ID. For each client ID, only one login is possible.

n Due to performance reasons, it may be necessary for a user application to establish several connections to one XQS instance from which it will receive quotes. The configuration data for the connection setup will be provided by Deutsche Börse AG. In general, there are two options for the implementation of the so-called Multi Connect:

­ One user application can establish all configurable connections to an XQS instance and thus receive all quotes for the instruments it has subscribed.

­ Several user applications can establish a subset of all configurable connections to an XQS instance and thus receive quotes for a subset of instruments only. In this case, all subsets taken together will comprise the total number of quotes for all instruments which a recipient has subscribed overall.

n XQS and the Client-Access-Layer ensure that always the most current quote per ISIN is transferred to the user application by preventing the queuing of quote data in the communication between XQS and the Client-Access-Layer. If a user application should process quote data at such a slow rate that XQS would have to queue quotes it will silently discard outdated quotes. The Client-Access-Layer does not provide the possibility to recover discarded quotes.

n During normal operation, the Client-Access-Layer will receive quote data from both XQS instances. If the Client-Access-Layer fails to establish a connection to one XQS instance, e.g. because of a partial or a complete failure of this instance, it will switch to the other instance and try to get the required quote data from this one. Failover-processing of the Client-Access-Layer in its interaction with the configured XQS instances is transparent for the user application.

n Quote messages and all other system messages the Client-Access-Layer receives from XQS are forwarded asynchronously to the user application. Calling threads are not blocked.

n Important events are recorded in a log file. The user application can register a callback function in the Client-Access-Layer in order to be notified of log data. The log information should be used for monitoring the operation of the system.

n If no quote data is available for an instrument XQS sends a defined error code to the requesting user application and the subscription of quote data for this instrument is rejected. This response is due to the fact that XQS cannot distinguish the subscription of quote data for an invalid ISIN from the subscription of quote data for a valid ISIN for which data could be sent in principle but for which a sender has not transmitted any quote data yet.

n If quote data for such an instrument should become available later on the Client-Access-Layer will invoke an ISIN availability callback the user application has registered before. On the notification of this event, the user application has to re-subscribe the quotes of this instrument.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 9 of 21

n If a quote for a specified instrument should be sent from more than one issuer the Client-Access-Layer will reject the subscription of quote data for this instrument. The reason for this is that the Client-Access-Layer cannot determine from which issuer the quotes of this ISIN are to be delivered.

n If the Client-Access-Layer is disconnected from one XQS instance it will automatically re-establish connections. The user application is informed about the reconnect. The interval between reconnect attempts is configurable.

n If the Client-Access-Layer is disconnected from both XQS instances all subscriptions are automatically invalidated and discarded.

2.2 Data Connections between XQS and Recipients

The Client-Access-Layer receives quotes via XQS data connections. In general, connections between an XQS instance and recipients are established through a firewall. As network protocol TCP/IP is used.

In order to ensure failover processing in cases of failure, the system of a recipient must be installed redundantly in two physically separate environments.

With regard to one installation of a recipient’s system, it can be set up with connections to one or two XQS instances. However, the configuration of two separate XQS instances is strongly recommended since it guarantees that quotes can be received from another XQS instance in case they should no longer be available from the first one.

IP hostname and port which are to be used in order to establish connections to an XQS instance will be communicated by Deutsche Börse AG.

2.3 Service Connection between XQS and Recipients

In addition to data connections, an XQS instance also offers a service connection through which it is possible to get information about the internal status of the Client-Access-Layer. This information includes initialisation parameters, lists of the instruments which are currently available or subscribed as well as the internal process status of the Client-Access-Layer.

This information is especially useful in case of support calls. In these situations it is therefore recommended to activate the service connection by configuring it in the Client-Access-Layer. Hostname and port-number of the service port will be communicated by Deutsche Börse AG.

2.4 Monitoring

Relevant events are recorded using the log interface. User applications should monitor the log output by checking the log level, alerting on severe errors.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 10 of 21

2.5 Exchange of Messages

The following figure illustrates the logical sequence of the communication between the user application with its Client-Access-Layer and between the Client-Access-Layer and XQS.

Xentric Quote Dispatcher User-Application (Limit-Control-System)

Connect to Quote DispatcherXentric Client-Access-Layer Business layer of user application

1

Processing of initial quotesubscriptions by validating

search criteria against ISIN

3

Subscribe for instrument XY1

Processing of received quotedata, e.g. by enriching withstanding data and checkingagainst orders

4

5

6 7

8

ISIN XJ9ISIN XR5

ISIN WY9

ISIN XY1

QuoteCache

Transmission of Quote-Data forinstrument XY1

Enrichment of quote-data, callof the registered callback

Subscribe for instrument XY1,registration of callback-func.

Transmission of ISIN availabilities

2

Figure 2: Sequence of Operation

The sequence of the message flow can be described in the following steps1:

On start of the user application, the Client-Access-Layer is instantiated and initialized with all required parameters (e.g. hostnames and ports of XQS instances) and references (e.g. callback objects). This step is not included in the figure.

1. According to the configuration of the Client-Access-Layer, it establishes TCP/IP connections to an XQS instance (redundant setup, multiple connect).

2. The XQS instance transfers a list of all ISINs for which quotes are available to the Client-Access-Layer.

3. The user application performs its start-up processing. From the ISIN list of available instruments, it selects the instruments to be subscribed.

4. For each instrument, it invokes the subscribe method of the Client-Access-Layer and registers a callback function. This callback function is called by the Xentric-Access-Layer when new quote data are received.

1 The numbering of the steps corresponds to the numbers in the figure. Sections without numbers contain additional information which cannot be seen in the figure.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 11 of 21

5. The Client-Access-Layer reformats the request and sends it to XQS.

6. XQS sends the requested quote data to the Client-Access-Layer. After having subscribed an instrument, the business layer of the user application will be notified of each quote update. This processing will continue until the subscription is finished.

7. The Client-Access-Layer receives quote data from XQS. The data is reformatted according to the definition of the interface (conversion into a simple java object). New quote data is automatically requested from XQS. The business layer of the user application is notified of each new quote update. If the user application processes quotes at a slower rate than they are provided by XQS quotes are silently discarded thus ensuring that the user application always receives the latest quote at one point in time.

8. The business layer of the user application processes the quote data that it has received from the Client-Access-Layer. It depends on the functionality of the user application how it will use the received quote information. In limit control systems, it will be used for automatically monitoring order books for executable orders.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 12 of 21

3 Detailed Description

3.1 Overview

QXJCAccess

+connect() : QXJCErrorStatus+createAccess() : QXJCAccess+disconnect() : void+get( sIsinCod : String, nTimeout : int ) : QXJCQuote+init( properties : java.util.Properties ) : void+isReady() : boolean+notUsing( sIsinCod : String ) : void+removeIsinAvailabilityListener( sIsin : String ) : void+removeServerAvailabilityListener() : void+setIsinAvailabilityListener( aListener : QXJCIsinAvailabilityListener ) : boolean+setLogger( aLogger : Object, aMethod : Method ) : void+setLogger( aLogger : Object ) : void+setServerAvailabilityListener( aListener : QXJCServerAvailabilityListener ) : void+subscribe( sIsinCod : String, aListener : QXJCQuoteListener ) : void+unSubscribe( sIsinCod : String ) : void+using( sIsinCod : String ) : void

QXJCIsinAvailabilityListener

+isinNotification( sIsin : String, bAvailable : boolean ) : void

QXJCQuoteListener

+notify( quote : QXJCQuote, bFinalNotification : boolean ) : void

QXJCErrorStatus

#m_nStatusID : int#m_nStatusLevel : int#m_sFixErrorText : String#m_sVarErrorText : String

+clone()+dump()+getFixErrorText()+getStatusID()+getStatusLevel()+getVarErrorText()+QSJCErrorStatus()

...

QXJCQuote

+clone() : Object+dump() : String+getBestAsk() : String+getBestAskQuantity() : String+getBestBid() : String+getBestBidQuantity() : String+getDateLastUpdate() : Date+getErrorStatus() : QXJCErrorStatus+getIsinCode() : String+getIssuerCode() : String+getSource() : int+getValidityFlag() : char+unnamed1()

QXJCServerAvailabilityListener

+serverNotification()

UserListener

UserListener

UserListener

<<use>>

<<use>>

Figure 3: class diagram of the interface

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 13 of 21

Main Entry Point is the class QXJCAccess. This class encapsulates the core functions of the interface. After its initialization and the connect to XQS, the Client-Access-Layer can obtain quotes from the system.

Quotes are entirely described by QXJCQuote objects.

QXJCQuote objects contain all data of a quote. Quotes are always identified by the ISIN which is stored in a string object.

The classes to be used are contained in the package Xentric.XentricQuoteSourceXetra_QX.JavaClient_QXJC.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 14 of 21

Usage of the QXJCAccess-Layer

The following sequence diagram shows how the QXJCAccess-Layer is used.

[ ]

par

: QXJCAccess

: QXJCQuote

UserObject

Registration of an availability listener of the provided isin. The listener is notified, if the specified isin can be subscribed(again).If the XQS-Server rejects a subscription with a final notification and an error code, e.g. QSJCINVALIDNOISSUER, the notification can be used to restart the subscription.

The listener's notify function is called every time a new quote has been received.

stops support server connection

unSubscribe to stop the notification mechanism

<<creates>>*8:

isinNotification(isins, bAvailable)6:

aListener.notify (quote, bFinalNotification)*9:

createAccess1:

setLogger(aLogger=)2:

init(properties=)3:

setIsinAvailabilityListener(aListener=)4:

connect()5:

subscribe(sIsinCod=, aListener=)7:

<<destroys>>10:

unSubscribe(sIsinCod=)11:

disconnect()12:

deinit()13:

[ ]

par

Figure 4: Sequence diagram of usage

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 15 of 21

Number Description 1 This function creates an Access-Layer object which is subsequently used to

access quote data. 2 Passing of a Logger object that the Adapter can use to log messages.

The function uses Java-Reflection to extract a method which can be used for logging. If there are several methods the desired method must be explicitly stated. If no such method exists an exception will be thrown. The following functions are supported: public void log(Level level, String msg) from java.util.logging.Logger (java 1.4) public void log(int level, String msg) in this context, the passed-in level values correspond to the level values from java.util.logging.Logger The string corresponds to a Xentric-LogTrace-String

3 The method initializes the Client-Access-Layer. Parameters: properties For initialization the following information items can be passed: Property Description Domain Mandatory ClientID Freely allocable

unique ID of the client

Yes

MIC Market MIC code No XQS_1.Conn_1.Host Hostname of

connection 1 on XQS instance 1

Yes

XQS_1.Conn_1.Port Port number of connection 1 XQS instance 1

Yes

XQS_1.Conn_#.Host Hostname of connection # on XQS instance 1 # means a continuous number

No

XQS_1.Conn_#.Port Port number of connection # on XQS instance 1 # means a continuous number

No

XQS_2.Conn_1.Host Hostname of connection XQS

If NoBackupSystem!=Yes

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 16 of 21

instance 2 XQS_2.Conn_1.Port Port number of

connection 1 on XQS instance 2

If NoBackupSystem!=Yes

XQS_2.Conn_#.Host Hostname of connection # on XQS instance 2 # means a continuous number

No

XQS_2.Conn_#.Port Port number of connection # on XQS instance 2 # means a continuous number

No

NoBackupSystem No second XQS instance is configured

yes No

SupportServer Hostname of support server

No

SupportPort Port number of support server

No

ConnectionLossGC Use this parameter to call Java garbage collector after connection loss to all XQS instances.

yes No: Default: no

ConnectInterval Interval in seconds in which the client attempts a reconnect an XQS instance in case of a loss of connection.

No. Default: 300s

4 An IsinAvailabilityListener should be registered by the user to be notified

upon general availability of ISINs. The passed listener object contains a callback function that will be invoked on arrival of newly available ISINs. This callback function should be used to subscribe relevant ISINs.

5 Connect to XQS. The function returns an error if the connect has been unsuccessful: StatusLevel != OK

In order to obtain quotes, the following functions are being continuously invoked during normal operation:

6 Straight after the successful connect and later on the user application is informed about the ISINs which have become available.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 17 of 21

This information should be used to start a subscription only if an ISIN has become available. If an ISIN is unavailable, a subscription attempt will be immediately rejected by the library with an error code.

7 Subscribe for the passed ISIN. The passed listener object contains a callback function that will be invoked on arrival of new quotes. Depending on the quotes sent by the XQS system, the Client Access Layer will deliver or skip identical quotes, i.s. quotes where the bid/ask and the quantity values are identical and only the timestamp has changed. After a subscribe, the notify function will always be called at least once. In case the subscribe cannot be performed, the notify function will be called with an error message. For each instrument, only one subscribe can be performed.

8-10 Call of notify function by the Client-Access-Layer on receipt of a new quote from the system. After the call of the notify function, the Client-Access-Layer does no longer hold any references to the passed quote. The user application is therefore not restricted in its use of the quote. In addition to the quote, the notify function receives a flag which indicates if the notification is a final one. After receipt of a final notification, the instrument has been unsubscribed by Xentric Quote Source due to an error which is specified in the quote object.

11 If quote updates for a specific instrument are no longer needed the unsubscribe function for this instrument can be called. After the call of this function, the user application will no longer be notified via the notify function that has been registered previously.

12 Finish Data Connections For a proper closure of all data connections between the Client Access Layer and the XQS Server, the disconnect should be called before the termination of the user application. Otherwise, a simple socket close is performed which may cause errors in the Xentric Quote Source System and alarm the system administration.

13 Finish Service Connection This method is introduced with XQS 3.1. Invoke it in order to finish the connection between the Client Access Layer and the Support Server.

Table 1: Description of Figure 4

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 18 of 21

3.2 Subscription Processing in Error Scenarios

n If the system is used in a redundant setup, that is with 2 XQS instances, an automatic failover will be performed that is transparent to the user application.

n In case no XQS instance can deliver quotes for a subscription, a final notification is passed to the user. Thus, the subscription is invalidated and discarded. If, at a later time, there are again quote data available for the respective ISIN, the subscription must be performed again. If an IsinAvailabilityListener has been registered the user application will be informed that all ISINs have become unavailable.

n In case no XQS instance is available, all subscriptions are automatically removed and the appropriate final notifications are sent to the user. If an XQS instance has become available again required subscriptions must be performed again. The registered IsinAvailabilityListeners are always informed about the availability resp. unavailability of instruments.

3.3 Quote Data

Quote Data are described entirely by the QXJCQuote class.

All data are transmitted as strings. Their functional data formats are as follows:

Name Description Initialization Char A – Z; 0 – 9; ‚ ‚(Blank) Num numbers 0-9 without sign „“ (empty string) Price (+)num[0-8](.)num[0-3] „“ (empty string Volume (+)num[0-9] „“ (empty string) Time HH24MISS(tttt) “” (empty string) (tttt) precision of time to a maximum of a ten thousandth

part of a second 0000

The following table describes the contents of the delivered data:

Field name Format Description ISIN Char[12] ISIN of quoted instrument BestBid Price Best bid BestBidQty Volume Quantity of Best Bid BestAsk Price Best ask BestAskQty Volume Quantity of Best Ask.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 19 of 21

ValidityFlag Char Validity of Quote. • ’ ‚ (Blank)

Quote is valid.

• ’U’ No quote is available from issuer, i.e. no issuer is currently sending quotes for this instrument.

• ’N’ Issuer has transmitted an invalid quote.

• ‚X’ No quote is available because of a technical problem in Xentric Quote Source. This problem may have occurred either in the Client-Access-Layer or in the XQS server.

• ‘E’ End of Day – no more quote updates will be received for this instrument

IssuerCode Char[5] Identification of issuer, as it is transmitted by the issuer. QuoteTypeIndicator Char Indicator of the quote type. In terms of the Specialist Trading

Model the only valid value is blank (indicative quote). MemberTimestamp tTime Timestamp filled by sender of quote

If the quote contains 0.0 in the BestBid or BestAsk field the respective side has been removed by the issuer.

Quotes do not necessarily contain a quantity; the quantity fields can also have value 0.

For the issuer, the issuer code and member timestamp are optional fields. If the issuer code is not transmitted by the issuer XQS system puts in the corresponding issuer code from its configuration data.

For a detailed real-time analysis of errors, it is possible to use the Xentric error message which is provided in the QXJCErrorStatus object.

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 20 of 21

Field name Format Description

StatusLevel Int 0 – LOG, 1 – FAT, 2 – ERR, 3 – WAR • 0 – LOG

No error has occurred.

• 1 – FAT A fatal error has occurred. Administrative action is required to recover from this error.

• 2 – ERR An error has occurred (recoverable).

• 3 – WAR Warning, but the quote is valid, e.g. no second instance available.

StatusID Int Xentric error ID FixErrorText String Fixed description of error

All Xentric error IDs together with their FixErrorText are listed in the administration manual of XQS.

VarErrorText String Additional variable information on the error

The following table lists some specific error codes and explains the situation in which those errors may happen.

StatusID ValidityFlag FixedError Text Description

90101 U Data type not available

There is currently no issuer sending a quote for the instrument.

80008 U Data type not unique More than one issuer is sending quotes for the instrument.

90103 X End of Stream For a technical reason, that quote stream is currently not available from system.

90104 X Lost or removed connection to system

Network connection to system has been lost.

Errors occurring in the Client-Access-Layer are logged via the passed logger object.

Additional information

Field name Format Description Source Int Source of quote

• 0 - first XQS instance

• 1 - second XQS instance

Date time Reception time of quote in XQS

Deutsche Börse Group Xetra Release 12

Xentric® Quote Source 3.5

30.05.2011

Application Programming Interface - Recipient Page 21 of 21

3.4 Deployment

The Client-Access-Layer is delivered as jar file. The programmer’s reference is delivered as a set of javadoc generated html-pages.