AlgoTrader inbound FIX specification FIX.4.4

Introduction

AlgoTrader provides FIX based API (referred as Inbound FIX) which allows client to interact with AlgoTrader.
Inbound FIX gateway stays between the client and external adapters and systems, serving as a single point of interacting for the client, thus hiding all the complexity of different exchanges, providers, etc.
It includes the following flows:
  • Reference Data Retrieval
  • Market data subscription
  • Trading execution (regular trading, algo, smart order routing)
  • Requesting a quote (RFQ) and trading on in
This document defines an inbound FIX gateway specification. The document is intended to be used by clients as a technical reference when building systems that interact with AlgoTrader thought FIX.

You can test AlgoTrader Inbound FIX using a test client. This client is provided for testing only and by no means is supposed to be used in live trading environment. The client interface can be found and run from its configuration included in examples project directory.
Here is an example how to launch AlgoTrader with inbound FIX Api enabled:
Main Class: ch.algotrader.starter.ServerStarter
VM Options:
-Dspring.profiles.active=live,inboundFix,pooledDataSource,embeddedBroker,html5

Note: you can open the HTML5 UI (http://localhost:9090) and the orders you place via Inbound FIX API will be visible there.
QuickFixJ logs with FIX messages between Banzai and AlgoTrader can be found in
\log\FIX.4.4-AT-BANZAI.messages.log file.

Assumptions


The functionality of the FIX gateway depends on the configuration of the AlgoTrader, i.e. available securities, external adapters, historical data - all these is configured on AlgoTrader run configuration, for more details refer to the Starting Algotrader section in the reference guide.

Authentication


Connecting FIX sessions will be authenticated through password and user name in Logon message (no encryption)

FIX Sessions


For each connecting external FIX client, two separate FIX sessions will be provided:
  • trading and RFQ - this session has persistence enabled so messages can be recovered
  • market data and reference data - no persistence

The following FIX session config is an example of one client configuration. Particular configuration may vary depends on the use case and client's needs.
SettingDescriptionsExample
BeginStringFIX VersionFIX.4.4
SenderCompIDBank IdentifierBankXYZ
TargetCompIDAlgo Trader IDAT_FIX_MD
SocketConnectHostIP Address123.456.789.012
SocketConnectPortPort40001
SocketUseSSLEncryptionY
StartDaySession start dayMonday
StartTimeSession start time08:00:00
EndDaySession end dayFriday
EndTimeSession End time17:00:00
TimeZoneTime zone in which time is specifiedUTC
ResetOnLogonTo persist messages over the session, should be Y for trading and N for market dataN
ConnectionTypeClient is always an initiator of the sessioninitiator
HeartBtIntSession is using 30 sec heartbeat interval30
ReconnectIntervalWhen connection is broken, try to reestablish it once in 5 sec 5
Usernameuser nameBankXYZ_ORD_ACC_ID
Passwordpassword!@#$#
AllowMdallow market data on this sessiontrue
AllowRefDataallow reference data on this sessiontrue
AllowOrdallow orders and RFQ on this sessionfalse

Conformance test


Before going live the client would need to pass a conformance test which covers all the flows which are supposed to be used (test credentials and connection details for external adapters might be needed).

Data Dictionary Source

Algotrader is using QuickFixJ based FIX engine with a FIX dictionary; it is provided as is for guidance purposes only. The client is free to use any implementation of FIX engine which conforms with this spec

FIX44.xml

Message specifications

AlgoTrader inbound FIX is based on FIX 4.4 standard with some custom tags and values

Specification of each message is provided below. Also there are some examples of FIX messages for different flows in Appendix A below

Standard Message Header (HEADER)

Up

MsgType

Category

HEADER

HEADER/TRAILER

Fields

Tag

Field Name

Req’d

Data Type

Description

8

BeginString

Y

STRING

9

BodyLength

Y

LENGTH

35

MsgType

Y

STRING

0 - HEARTBEAT

1 - TEST_REQUEST

2 - RESEND_REQUEST

3 - REJECT

4 - SEQUENCE_RESET

A - LOGON

5 - LOGOUT

D - ORDER_SINGLE

8 - EXECUTION_REPORT

9 - ORDER_CANCEL_REJECT

F - ORDER_CANCEL_REQUEST

G - ORDER_CANCEL_REPLACE_REQUEST

q - ORDER_MASS_CANCEL_REQUEST

r - ORDER_MASS_CANCEL_REPORT

Q - DONT_KNOW_TRADE

R - QUOTE_REQUEST

AG - QUOTE_REQUEST_REJECT

S - QUOTE

Z - QUOTE_CANCEL

V - MARKET_DATA_REQUEST

Y - MARKET_DATA_REQUEST_REJECT

W - MARKET_DATA_SNAPSHOT_FULL_REFRESH

X - MARKET_DATA_INCREMENTAL_REFRESH

x - SECURITY_LIST_REQUEST

y - SECURITY_LIST

j - BUSINESS_MESSAGE_REJECT

49

SenderCompID

Y

STRING

56

TargetCompID

Y

STRING

115

OnBehalfOfCompID

N

STRING

128

DeliverToCompID

N

STRING

90

SecureDataLen

N

LENGTH

91

SecureData

N

DATA

34

MsgSeqNum

Y

SEQNUM

50

SenderSubID

N

STRING

142

SenderLocationID

N

STRING

57

TargetSubID

N

STRING

143

TargetLocationID

N

STRING

116

OnBehalfOfSubID

N

STRING

144

OnBehalfOfLocationID

N

STRING

129

DeliverToSubID

N

STRING

145

DeliverToLocationID

N

STRING

43

PossDupFlag

N

BOOLEAN

Y - YES

N - NO

97

PossResend

N

BOOLEAN

Y - YES

N - NO

52

SendingTime

Y

UTCTIMESTAMP

122

OrigSendingTime

N

UTCTIMESTAMP

212

XmlDataLen

N

LENGTH

213

XmlData

N

DATA

347

MessageEncoding

N

STRING

ISO-2022-JP - JIS

EUC-JP - EUC

Shift_JIS - FOR_USING_SJIS

UTF-8 - UNICODE

369

LastMsgSeqNumProcessed

N

SEQNUM

627

NoHops

N

NumInGroup

> 628

HopCompID

N

STRING

> 629

HopSendingTime

N

UTCTIMESTAMP

> 630

HopRefID

N

SEQNUM

Standard Message Trailer (TRAILER)

Up

MsgType

Category

TRAILER

HEADER/TRAILER

Fields

Tag

Field Name

Req’d

Data Type

Description

93

SignatureLength

N

LENGTH

89

Signature

N

DATA

10

CheckSum

Y

STRING

Heartbeat (0)

Up

MsgType

Category

0

ADMIN

Fields

Tag

Field Name

Req’d

Data Type

Description

112

TestReqID

N

STRING

TestRequest (1)

Up

MsgType

Category

1

ADMIN

Fields

Tag

Field Name

Req’d

Data Type

Description

112

TestReqID

Y

STRING

ResendRequest (2)

Up

MsgType

Category

2

ADMIN

Fields

Tag

Field Name

Req’d

Data Type

Description

7

BeginSeqNo

Y

SEQNUM

16

EndSeqNo

Y

SEQNUM

Reject (3)

Up

MsgType

Category

3

ADMIN

Fields

Tag

Field Name

Req’d

Data Type

Description

45

RefSeqNum

Y

SEQNUM

371

RefTagID

N

INT

372

RefMsgType

N

STRING

373

SessionRejectReason

N

INT

0 - INVALID_TAG_NUMBER

1 - REQUIRED_TAG_MISSING

2 - TAG_NOT_DEFINED_FOR_THIS_MESSAGE_TYPE

3 - UNDEFINED_TAG

4 - TAG_SPECIFIED_WITHOUT_A_VALUE

5 - VALUE_IS_INCORRECT

6 - INCORRECT_DATA_FORMAT_FOR_VALUE

7 - DECRYPTION_PROBLEM

8 - SIGNATURE_PROBLEM

9 - COMPID_PROBLEM

10 - SENDINGTIME_ACCURACY_PROBLEM

11 - INVALID_MSGTYPE

12 - XML_VALIDATION_ERROR

13 - TAG_APPEARS_MORE_THAN_ONCE

14 - TAG_SPECIFIED_OUT_OF_REQUIRED_ORDER

15 - REPEATING_GROUP_FIELDS_OUT_OF_ORDER

16 - INCORRECT_NUMINGROUP_COUNT_FOR_REPEATING_GROUP

17 - NON_DATA_VALUE_INCLUDES_FIELD_DELIMITER

99 - OTHER

58

Text

N

STRING

optional text

354

EncodedTextLen

N

LENGTH

355

EncodedText

N

DATA

SequenceReset (4)

Up

MsgType

Category

4

ADMIN

Fields

Tag

Field Name

Req’d

Data Type

Description

123

GapFillFlag

N

BOOLEAN

Y - YES

N - NO

36

NewSeqNo

Y

SEQNUM

Logon (A)

Up

MsgType

Category

A

ADMIN

Fields

Tag

Field Name

Req’d

Data Type

Description

98

EncryptMethod

Y

INT

0 - NONE

1 - PKCS

2 - DES

3 - PKCS_DES

4 - PGP_DES

5 - PGP_DES_MD5

6 - PEM_DES_MD5

108

HeartBtInt

Y

INT

141

ResetSeqNumFlag

N

BOOLEAN

Y - YES

N - NO

789

NextExpectedMsgSeqNum

N

SEQNUM

553

Username

N

STRING

554

Password

N

STRING

Logout (5)

Up

MsgType

Category

5

ADMIN

Fields

Tag

Field Name

Req’d

Data Type

Description

58

Text

N

STRING

optional text

354

EncodedTextLen

N

LENGTH

355

EncodedText

N

DATA

NewOrderSingle (D)

Up

MsgType

Category

D

APP

Submitting a new order to the market through AlgoTrader.
  • The instrument is identified by securityID which can be retrieved from reference data.
  • An order executing on a quote requires the QuoteID to be set. Orders do not require an existing market data subscription.
  • Soon after order placement, an Execution Report "SUBMITTED" will be sent, followed by an Execution Report "REPLACED" with an updated ID (external ID from the adapter).

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    11

    ClOrdID

    Y

    STRING

    client generated order Id

    20030

    PortfolioName

    N

    STRING

    portfolio name which will be used for trading

    54

    Side

    Y

    CHAR

    1 - BUY

    2 - SELL

    40

    OrdType

    C

    CHAR

    1 - MARKET

    2 - LIMIT

    3 - STOP

    4 - STOP_LIMIT

    D - PREVIOUSLY_QUOTED

    38

    OrderQty

    C

    QTY

    require for non Reject execution report

    20003

    ExchangeOrder

    N

    BOOLEAN

    required for SOR, for non SOR - if not specified then we try to derive from the exchange

    117

    QuoteID

    C

    STRING

    required for RFQ order only, specify quoteId to trade on

    131

    QuoteReqID

    C

    STRING

    required for RFQ order only, specify quote request Id

    1

    Account

    C

    STRING

    required for non SOR orders

    48

    SecurityID

    C

    STRING

    required for non SOR orders

    100

    ExDestination

    C

    INT

    exchangeId, optional for non SOR orders

    207

    SecurityExchange

    C

    STRING

    exchange Name, optional for non SOR orders. ExDestination or SecurityExchange optionally can indicate on which exchange order should be placed If nothing is set, then exchange will be derived from security definition, then if not - from the account.

    59

    TimeInForce

    C

    CHAR

    0 - DAY

    1 - GOOD_TILL_CANCEL

    2 - AT_THE_OPENING

    3 - IMMEDIATE_OR_CANCEL

    4 - FILL_OR_KILL

    5 - GOOD_TILL_CROSSING

    6 - GOOD_TILL_DATE

    7 - AT_THE_CLOSE

    432

    ExpireDate

    C

    LOCALMKTDATE

    required for GTD Tif

    126

    ExpireTime

    C

    UTCTIMESTAMP

    required for GTD Tif

    44

    Price

    C

    PRICE

    required for all non algo orders (RFQ as well), besides Market order

    99

    StopPx

    C

    PRICE

    required for any kind of a non algo Stop order

    957

    NoStrategyParameters

    N

    NumInGroup

    > 958

    StrategyParameterName

    Y

    STRING

    ALGO_NAME - mandatory for all, supported values: TWAP, VWAP, TRAILING_LIMIT, SMART_MARKET, SMART_LIMIT, SMART_STOP, SMART_STOP_LIMIT

    >

    START_TIME_UTC - for TWAP, VWAP, POV

    >

    END_TIME_UTC - for TWAP, VWAP, POV

    >

    DURATION_SEC - for TWAP, VWAP, POV

    >

    MIN_SLICE_QTY - for TWAP, VWAP, POV

    >

    MAX_VOL_PCT - for TWAP, VWAP, POV

    >

    SLICE_LENGTH - for TWAP, VWAP, POV

    >

    CANCEL_TIME - for TWAP, VWAP, POV

    >

    TIME_RAND - for TWAP, VWAP, POV

    >

    QTY_RAND - for TWAP, VWAP, POV, and for Iceberg

    >

    INCREMENT - for TWAP, VWAP, POV, and for Trailing Limit

    >

    INITIAL_OFFSET - for TWAP, VWAP, POV

    >

    MIN_OFFSET - for TWAP, VWAP, POV

    >

    MAX_OFFSET - for TWAP, VWAP, POV

    >

    BUCKET_SIZE - for WVAP, additionally to all TWAP values

    >

    LOOKBACK_PERIOD - for WVAP, additionally to all TWAP values

    >

    TRAILING_AMOUNT - for Trailing Limit order

    >

    LIMIT - for Iceberg, Market Sweep, Smart Limit, and Sniper orders

    >

    STOP - for Smart Stop and for Smart Stop Limit

    >

    VOLUME_PARTICIPATION - for POV order only, additionally to TWAP params

    >

    DISPLAY_SIZE - for Iceberg order only

    >

    FIXED_SIZE - for Iceberg order only

    >

    ENSURE_COMPLETE_FILL - for Marker Sweep order

    > 959

    StrategyParameterType

    N

    INT

    14 - STRING

    > 960

    StrategyParameterValue

    Y

    STRING

    treated depends on the parameter, i.e. as String, BigDecimal, etc

    20020

    NoRoutingCandidates

    N

    NumInGroup

    > 20021

    CandidateSecurityID

    Y

    INT

    secuirity ID of the routing candidate for SOR

    > 20022

    CandidateAccountId

    Y

    INT

    account ID of the routing candidate for SOR

    > 20023

    CandidateExchangeId

    C

    INT

    exchange ID of the routing candidate for SOR

    > 20024

    CandidateExchangeName

    C

    STRING

    exchange Name of the routing candidate for SOR (note: ID or name must be specified)

  • ExecutionReport (8)

    Up

    MsgType

    Category

    8

    APP

    Execution Report is sent back after client sends a New Order or Order Cancel requests
  • note: order can be modified in UI, for fiat FIX adapters it would mean cancellation and placing a new order. To update external ID Execution Report REPLACED will be sent (original ClOrdID and OrderID stays the same)
  • note: all external IDs may be propagated as Execution Report Replace
  • note: Order fill is propagated as Execution Report with ExecType = "ORDER STATUS" and OrdStatus="FILLED"
  • note: Fees are propagated if present in the original exchange exec report (only in ExecType=TRADE and OrdStatus=Filled, in ExecType=ORDER_STATUS there is no fee info)
  • note: sequence for FIX based adapters of exec reports when order is done is - ExecType=TRADE and OrdStatus=Filled, ExecType=ORDER_STATUS and OrdStatus=Filled. For other adapters it might be different, in general the user should not relay on the order"

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    11

    ClOrdID

    Y

    STRING

    client generated order Id

    117

    QuoteID

    C

    STRING

    required for RFQ order only

    131

    QuoteReqID

    C

    STRING

    required for RFQ order only

    17

    ExecID

    Y

    STRING

    unique ID of this particular report

    37

    OrderID

    Y

    STRING

    ID of the order, the same through life of the order

    198

    SecondaryOrderID

    N

    STRING

    ID of the order on the external exchange if available, for info purposes only

    150

    ExecType

    Y

    CHAR

    0 - NEW

    3 - DONE_FOR_DAY

    4 - CANCELED

    5 - REPLACE

    6 - PENDING_CANCEL

    7 - STOPPED

    8 - REJECTED

    9 - SUSPENDED

    A - PENDING_NEW

    B - CALCULATED

    C - EXPIRED

    D - RESTATED

    E - PENDING_REPLACE

    F - TRADE

    G - TRADE_CORRECT

    H - TRADE_CANCEL

    I - ORDER_STATUS

    39

    OrdStatus

    Y

    CHAR

    0 - NEW

    1 - PARTIALLY_FILLED

    2 - FILLED

    3 - DONE_FOR_DAY

    4 - CANCELED

    5 - REPLACED

    6 - PENDING_CANCEL

    7 - STOPPED

    8 - REJECTED

    9 - SUSPENDED

    A - PENDING_NEW

    B - CALCULATED

    C - EXPIRED

    D - ACCEPTED_FOR_BIDDING

    E - PENDING_REPLACE

    200

    MaturityMonthYear

    C

    MONTHYEAR

    for Futures only

    54

    Side

    Y

    CHAR

    1 - BUY

    2 - SELL

    59

    TimeInForce

    N

    CHAR

    0 - DAY

    1 - GOOD_TILL_CANCEL

    2 - AT_THE_OPENING

    3 - IMMEDIATE_OR_CANCEL

    4 - FILL_OR_KILL

    5 - GOOD_TILL_CROSSING

    6 - GOOD_TILL_DATE

    7 - AT_THE_CLOSE

    48

    SecurityID

    N

    STRING

    unique ID of the security

    38

    OrderQty

    Y

    QTY

    Quantity of the order/request

    151

    LeavesQty

    Y

    QTY

    remaining non filled quantity

    14

    CumQty

    Y

    QTY

    filled quantity (may be partifally)

    32

    LastQty

    Y

    QTY

    last quantity (quantity of the last fill in case of partial fill)

    6

    AvgPx

    Y

    PRICE

    average price over the filled quantity

    31

    LastPx

    Y

    PRICE

    Last price of the last fill (may be partial fill)

    1

    Account

    N

    STRING

    Account to trade on

    207

    SecurityExchange

    N

    STRING

    name of the exchange for an order

    12

    Commission

    N

    AMT

    exchange fee

    479

    CommCurrency

    N

    CURRENCY

    fee currency

    58

    Text

    C

    STRING

    mandatory for reject only

    103

    OrdRejReason

    C

    INT

    0 - BROKER

    1 - UNKNOWN_SYMBOL

    2 - EXCHANGE_CLOSED

    3 - ORDER_EXCEEDS_LIMIT

    4 - TOO_LATE_TO_ENTER

    5 - UNKNOWN_ORDER

    6 - DUPLICATE_ORDER

    7 - DUPLICATE_OF_A_VERBALLY_COMMUNICATED_ORDER

    8 - STALE_ORDER

    9 - TRADE_ALONG_REQUIRED

    10 - INVALID_INVESTOR_ID

    11 - UNSUPPORTED_ORDER_CHARACTERISTIC12_SURVEILLENCE_OPTION

    13 - INCORRECT_QUANTITY

    14 - INCORRECT_ALLOCATED_QUANTITY

    15 - UNKNOWN_ACCOUNT

    99 - OTHER

  • OrderCancelRequest (F)

    Up

    MsgType

    Category

    F

    APP

    Client can request to cancel particular order,
    If request can be sent to the exchange then Execution Report Pending Cancel will be returned and all updates will be sent as Execuction Reports

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    41

    OrigClOrdID

    Y

    STRING

    clOrdId to be cancelled

    37

    OrderID

    Y

    STRING

    OrderId of the order to be cancelled

    11

    ClOrdID

    Y

    STRING

    unique ID for this particular request

    OrderMassCancelRequest (q)

    Up

    MsgType

    Category

    q

    APP

    Client can request to cancel all open orders for its Order FIX sessions

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    11

    ClOrdID

    Y

    STRING

    unique ID for this particular request

    530

    MassCancelRequestType

    Y

    CHAR

    7 - CANCEL_ALL_ORDERS

    OrderMassCancelReport (r)

    Up

    MsgType

    Category

    r

    APP

    This report is sent as a response of previous Order Mass Cancel Request

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    11

    ClOrdID

    Y

    STRING

    id of the original mass cancel request

    37

    OrderID

    Y

    STRING

    id of this report

    531

    MassCancelResponse

    Y

    CHAR

    0 - CANCEL_REQUEST_REJECTED

    1 - CANCEL_ORDERS_FOR_A_SECURITY

    2 - CANCEL_ORDERS_FOR_AN_UNDERLYING_SECURITY

    3 - CANCEL_ORDERS_FOR_A_PRODUCT

    4 - CANCEL_ORDERS_FOR_A_CFICODE

    5 - CANCEL_ORDERS_FOR_A_SECURITYTYPE

    6 - CANCEL_ORDERS_FOR_A_TRADING_SESSION

    7 - CANCEL_ALL_ORDERS

    533

    TotalAffectedOrders

    Y

    INT

    number of orders affected by previous mass cancel request

    534

    NoAffectedOrders

    N

    NumInGroup

    > 41

    OrigClOrdID

    Y

    STRING

    original client order ID of the affected order

    58

    Text

    N

    STRING

    optional text

    OrderCancelReject (9)

    Up

    MsgType

    Category

    9

    APP

    This message is sent in response to Order Cancel Request by AlgoTrader if some internal error happens while handling the request, e.g. AlgoTrader can reject if order already done, could not be found, AlgoTrader is not initialised.
  • In all other cases the Cancel request is transferred to the external adapter. All further updates will be sent to the client as Execution Reports.

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    37

    OrderID

    Y

    STRING

    ID of the order, the same through life of the order

    11

    ClOrdID

    Y

    STRING

    client generated order Id

    41

    OrigClOrdID

    Y

    STRING

    original client order ID of the affected order

    39

    OrdStatus

    Y

    CHAR

    0 - NEW

    1 - PARTIALLY_FILLED

    2 - FILLED

    3 - DONE_FOR_DAY

    4 - CANCELED

    5 - REPLACED

    6 - PENDING_CANCEL

    7 - STOPPED

    8 - REJECTED

    9 - SUSPENDED

    A - PENDING_NEW

    B - CALCULATED

    C - EXPIRED

    D - ACCEPTED_FOR_BIDDING

    E - PENDING_REPLACE

    434

    CxlRejResponseTo

    Y

    CHAR

    1 - ORDER_CANCEL_REQUEST

    2 - ORDER_CANCEL_REPLACE_REQUEST

    58

    Text

    N

    STRING

    optional text

  • MarketDataRequest (V)

    Up

    MsgType

    Category

    V

    APP

    This request allows:
  • Subscribe for market data for a set of instruments.
  • Unsubscribe from market data for a particular instrument
  • Unsubscribe from all previously subscribed instruments

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    262

    MDReqID

    Y

    STRING

    Unique ID of this request or ID of previous request for unsubscription

    263

    SubscriptionRequestType

    Y

    CHAR

    0 - SNAPSHOT

    1 - SNAPSHOT_PLUS_UPDATES

    2 - DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST

    A - DISABLE_ALL_EXISTED_SUBSCRIPTIONS

    146

    NoRelatedSym

    N

    NumInGroup

    > 20051

    ATMDEntryType

    Y

    STRING

    TICK - TOB Bid/Offer

    >

    BAR - OHLC over predefined period

    >

    TRADE - trade

    >

    ORDER_BOOK - full book for one provider

    >

    AGGREGATED_BOOK - full book from several providers

    > 48

    SecurityID

    C

    STRING

    unique ID of the security

    > 55

    Symbol

    C

    STRING

    security Symbol, not unique across all securities

    > 20055

    AssetClass

    C

    STRING

    BOND

    >

    COMBINATION

    >

    COMMODITY

    >

    FOREX

    >

    FUND

    >

    FUTURE

    >

    INDEX

    >

    INTREST_RATE

    >

    OPTION

    >

    PERPETUAL_SWAP

    >

    STOCK

    >

    GENERIC_FUTURE

    > 264

    MarketDepth

    N

    INT

  • MarketDataSnapshotFullRefresh (W)

    Up

    MsgType

    Category

    W

    APP

    Market Data Full Snapshot with current market data

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    262

    MDReqID

    Y

    STRING

    Unique Id of the market data request

    20051

    ATMDEntryType

    Y

    STRING

    TICK - TOB Bid/Offer

    BAR - OHLC over predefined period

    TRADE - trade

    ORDER_BOOK - full book for one provider

    AGGREGATED_BOOK - full book from several providers

    48

    SecurityID

    C

    STRING

    ID of the security, required for non Aggregated book subscription

    55

    Symbol

    Y

    STRING

    security Symbol, not unique across all securities

    20055

    AssetClass

    C

    STRING

    BOND

    COMBINATION

    COMMODITY

    FOREX

    FUND

    FUTURE

    INDEX

    INTREST_RATE

    OPTION

    PERPETUAL_SWAP

    STOCK

    GENERIC_FUTURE

    20060

    BarDurationSec

    C

    INT

    required for BAR

    20061

    BarVolume

    C

    FLOAT

    required for BAR

    20065

    MdDateTime

    C

    UTCTIMESTAMP

    required for entries where date/time is ot part of MDIncGrp

    268

    NoMDEntries

    Y

    NumInGroup

    > 269

    MDEntryType

    Y

    CHAR

    0 - BID

    >

    1 - OFFER

    >

    2 - TRADE

    >

    B - TRADE_VOLUME

    >

    o - BAR_OPEN

    >

    c - BAR_CLOSE

    >

    l - BAR_LOW

    >

    h - BAR_HIGH

    > 278

    MDEntryID

    N

    STRING

    ID of this entry

    > 270

    MDEntryPx

    Y

    PRICE

    price of the entry

    > 271

    MDEntrySize

    N

    QTY

    size of the entry

    > 272

    MDEntryDate

    N

    UTCDATEONLY

    date of the entry

    > 273

    MDEntryTime

    N

    UTCTIMEONLY

    time of the entry

    > 290

    MDEntryPositionNo

    N

    INT

    position of the entry, 1 - TOB

    > 20056

    AggBookSecurityID

    C

    INT

    required for aggregated book, securityId

    > 20057

    AggBookExchangeID

    C

    INT

    required for aggregated book, exchangeId

    MarketDataIncrementalRefresh (X)

    Up

    MsgType

    Category

    X

    APP

    Used for trade's market data (i.e. info about done trades)

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    262

    MDReqID

    N

    STRING

    Unique Id of the market data request

    20051

    ATMDEntryType

    Y

    STRING

    TICK - TOB Bid/Offer

    BAR - OHLC over predefined period

    TRADE - trade

    ORDER_BOOK - full book for one provider

    AGGREGATED_BOOK - full book from several providers

    48

    SecurityID

    Y

    STRING

    unique ID of the security

    55

    Symbol

    Y

    STRING

    security Symbol, not unique across all securities

    268

    NoMDEntries

    Y

    NumInGroup

    > 269

    MDEntryType

    Y

    CHAR

    0 - BID

    >

    1 - OFFER

    >

    2 - TRADE

    >

    B - TRADE_VOLUME

    >

    o - BAR_OPEN

    >

    c - BAR_CLOSE

    >

    l - BAR_LOW

    >

    h - BAR_HIGH

    > 278

    MDEntryID

    N

    STRING

    ID of this entry

    > 270

    MDEntryPx

    Y

    PRICE

    price of the entry

    > 271

    MDEntrySize

    N

    QTY

    size of the entry

    > 272

    MDEntryDate

    N

    UTCDATEONLY

    date of the entry

    > 273

    MDEntryTime

    N

    UTCTIMEONLY

    time of the entry

    > 290

    MDEntryPositionNo

    N

    INT

    position of the entry, 1 - TOB

    > 20056

    AggBookSecurityID

    C

    INT

    required for aggregated book, securityId

    > 20057

    AggBookExchangeID

    C

    INT

    required for aggregated book, exchangeId

    MarketDataRequestReject (Y)

    Up

    MsgType

    Category

    Y

    APP

    If market data request can not be honoured - reject is sent back

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    262

    MDReqID

    Y

    STRING

    Unique Id of the market data request

    58

    Text

    N

    STRING

    optional text

    BusinessMessageReject (j)

    Up

    MsgType

    Category

    j

    APP

    This message indicates reject in business flow. For example, it is sent i nresponse to a new order a on market data session.

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    45

    RefSeqNum

    N

    SEQNUM

    372

    RefMsgType

    Y

    STRING

    379

    BusinessRejectRefID

    N

    STRING

    380

    BusinessRejectReason

    Y

    INT

    0 - OTHER

    1 - UNKOWN_ID

    2 - UNKNOWN_SECURITY

    3 - UNSUPPORTED_MESSAGE_TYPE

    4 - APPLICATION_NOT_AVAILABLE

    5 - CONDITIONALLY_REQUIRED_FIELD_MISSING

    6 - NOT_AUTHORIZED

    7 - DELIVERTO_FIRM_NOT_AVAILABLE_AT_THIS_TIME

    58

    Text

    N

    STRING

    optional text

    QuoteRequest (R)

    Up

    MsgType

    Category

    R

    APP

    Request for a quote, for particular security, side and quantity

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    131

    QuoteReqID

    Y

    STRING

    ID of the quote request

    1

    Account

    C

    STRING

    required for a new request

    48

    SecurityID

    C

    STRING

    either symbol or securityID must be specified for a new request

    55

    Symbol

    C

    STRING

    either symbol or securityID must be specified for a new request

    54

    Side

    N

    CHAR

    1 - BUY

    2 - SELL

    53

    Quantity

    C

    QTY

    required for a new request

    263

    SubscriptionRequestType

    C

    CHAR

    0 - SNAPSHOT

    1 - SNAPSHOT_PLUS_UPDATES

    2 - DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST

    A - DISABLE_ALL_EXISTED_SUBSCRIPTIONS

    Quote (S)

    Up

    MsgType

    Category

    S

    APP

    Quote, originally sent by external provider and passed to the client

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    131

    QuoteReqID

    N

    STRING

    ID of the quote request

    117

    QuoteID

    Y

    STRING

    internal ID (for example B2C2-RFQ-1591881115374), quoteID and QuoteReqID msut be specifie din an order request

    537

    QuoteType

    N

    INT

    0 - INDICATIVE

    1 - TRADEABLE

    2 - RESTRICTED_TRADEABLE

    3 - COUNTER

    54

    Side

    Y

    CHAR

    1 - BUY

    2 - SELL

    1

    Account

    N

    STRING

    Account to trade on

    132

    BidPx

    C

    PRICE

    when client wants to buy, Side=BUY must be specified and Bid price will be provided

    133

    OfferPx

    C

    PRICE

    when client wants to sell, Side=SELL must be specified and Offer price will be provided

    134

    BidSize

    N

    QTY

    Bid quantity

    135

    OfferSize

    N

    QTY

    Qffer quantity

    62

    ValidUntilTime

    N

    UTCTIMESTAMP

    quote validity time

    48

    SecurityID

    Y

    STRING

    unique ID of the security

    QuoteRequestReject (AG)

    Up

    MsgType

    Category

    AG

    APP

    This message is sent if quote request can not be handled

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    131

    QuoteReqID

    Y

    STRING

    ID of the quote request

    658

    QuoteRequestRejectReason

    Y

    INT

    1 - UNKNOWN_SYMBOL

    2 - EXCHANGE

    3 - QUOTE_REQUEST_EXCEEDS_LIMIT

    4 - TOO_LATE_TO_ENTER

    5 - INVALID_PRICE

    6 - NOT_AUTHORIZED_TO_REQUEST_QUOTE

    7 - NO_MATCH_FOR_INQUIRY

    8 - NO_MARKET_FOR_INSTRUMENT

    9 - NO_INVENTORY

    10 - PASS

    99 - OTHER

    58

    Text

    Y

    STRING

    optional text

    SecurityListRequest (x)

    Up

    MsgType

    Category

    x

    APP

    Request for reference data

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    320

    SecurityReqID

    Y

    STRING

    Id of the request for reference data

    559

    SecurityListRequestType

    Y

    INT

    0 - get Symbol of specified SecurityId

    4 - get All securities

    100 - get security(s) based on Symbol

    101 - get all secuirityes of a particular asset class

    110 - get all exchanges

    120 - get all accounts

    48

    SecurityID

    N

    STRING

    unique ID of the security

    55

    Symbol

    N

    STRING

    security Symbol, not unique across all securities

    20055

    AssetClass

    N

    STRING

    BOND

    COMBINATION

    COMMODITY

    FOREX

    FUND

    FUTURE

    INDEX

    INTREST_RATE

    OPTION

    PERPETUAL_SWAP

    STOCK

    GENERIC_FUTURE

    SecurityList (y)

    Up

    MsgType

    Category

    y

    APP

    Response to ref data request,
    Note: security parameters which are asset class specific are passed as a key value map, context of each parameter is self explanatory, for more details you can refer to RefDataParamName enum

    Fields

    Tag

    Field Name

    Req’d

    Data Type

    Description

    320

    SecurityReqID

    Y

    STRING

    Id of the request for reference data

    322

    SecurityResponseID

    Y

    STRING

    ID of the response

    560

    SecurityRequestResult

    Y

    INT

    0 - VALID_REQUEST

    1 - INVALID_OR_UNSUPPORTED_REQUEST

    2 - NO_INSTRUMENTS_FOUND_THAT_MATCH_SELECTION_CRITERIA

    3 - NOT_AUTHORIZED_TO_RETRIEVE_INSTRUMENT_DATA

    4 - INSTRUMENT_DATA_TEMPORARILY_UNAVAILABLE

    5 - REQUEST_FOR_INSTRUMENT_DATA_NOT_SUPPORTED

    58

    Text

    N

    STRING

    reason for reject

    20010

    NoSecurityRefData

    N

    NumInGroup

    > 48

    SecurityID

    Y

    STRING

    unique ID of the security

    > 55

    Symbol

    Y

    STRING

    security Symbol, not unique across all securities

    > 107

    SecurityDesc

    N

    STRING

    > 20055

    AssetClass

    Y

    STRING

    BOND

    >

    COMBINATION

    >

    COMMODITY

    >

    FOREX

    >

    FUND

    >

    FUTURE

    >

    INDEX

    >

    INTREST_RATE

    >

    OPTION

    >

    PERPETUAL_SWAP

    >

    STOCK

    >

    GENERIC_FUTURE

    > 100

    ExDestination

    Y

    INT

    id of the exchange

    > 20100

    SecurityDescription

    N

    STRING

    security description

    > 20101

    SecuritySymbol

    N

    STRING

    security symbol

    > 20102

    SecurityQuoteCurrency

    N

    STRING

    quoted currency

    > 20103

    SecuritySecurityFamily

    N

    INT

    family id

    > 20104

    SecurityExchangeId

    N

    INT

    exchange id

    > 20105

    SecurityContractSize

    N

    FLOAT

    > 20106

    SecurityUnderlying

    N

    INT

    id of underlaying security

    > 20107

    SecurityQuandlDatabase

    N

    STRING

    Quandl database code

    > 20108

    SecurityQuandlDataset

    N

    STRING

    Quandl dataset code

    > 20109

    SecurityAdapterTicker

    N

    STRING

    The adapter ticker

    > 20110

    SecurityIsin

    N

    STRING

    International Securities Identification Number

    > 20111

    SecurityBbgId

    N

    STRING

    Bloomberg Identifier

    > 20112

    SecurityRic

    N

    STRING

    Reuters Instrument Code

    > 20113

    SecurityConId

    N

    STRING

    Interactive Brokers conid

    > 20114

    SecurityLmaxId

    N

    STRING

    LMAX id

    > 20115

    SecurityTtId

    N

    STRING

    TradingTechnologies id

    > 20116

    SecurityCnpId

    N

    STRING

    The CoinAPI asset id

    > 20117

    SecurityXntId

    N

    STRING

    EXANTE id

    > 20118

    SecurityEgmId

    N

    STRING

    The Enigma product id

    > 20136

    SecurityCfiCode

    N

    STRING

    The CFI code

    > 20119

    SecurityExecutionCommissionPerOrder

    N

    FLOAT

    Estimated execution commission per whole order

    > 20120

    SecurityExecutionCommissionInPercent

    N

    FLOAT

    Estimated execution commission in percent of order value

    > 20121

    SecurityExecutionCommissionPerContract

    N

    FLOAT

    Estimated execution commission per single contract

    > 20122

    SecurityMaxGap

    N

    INT

    The Maximum Market Data Gap (in minutes) that is expected in normal Market Conditions

    > 20123

    SecuritySlippagePct

    N

    FLOAT

    Estimated execution slippage in percent used for simulation

    > 20124

    SecurityInverseContract

    N

    BOOLEAN

    True if security is a derivative with inverse contract PnL calculation, e.g. XBTUSD in BitMex

    > 20125

    SecuritySynthetic

    N

    BOOLEAN

    Represents virtual Securities that are only known to the Framework. Market Data needs to be calculated manually (e.g. a Combination)

    > 20126

    SecurityTradable

    N

    BOOLEAN

    Represents a Security for which an order can be directly sent to the Market or via an OTC order

    > 20127

    SecurityQtyIncr

    N

    FLOAT

    Minimum step size for quantity

    > 20128

    SecurityQuantityScale

    N

    INT

    The number of digits that quantity of Security are quoted in

    > 20129

    SecurityMinQty

    N

    FLOAT

    The minimum amount of Base asset

    > 20130

    SecurityMaxQty

    N

    FLOAT

    The Maximum amount of Base asset

    > 20131

    SecurityMinNotional

    N

    FLOAT

    Minimum order value

    > 20132

    SecurityPriceIncr

    N

    FLOAT

    Step size for price

    > 20133

    SecurityPriceScale

    N

    INT

    The number of digits that prices of Security are quoted in

    > 20134

    SecurityMinPrice

    N

    FLOAT

    The minimum amount of Transaction asset

    > 20135

    SecurityMaxPrice

    N

    FLOAT

    The maximum amount of Transaction asset

    > 20150

    ForexFiat

    N

    BOOLEAN

    true if FIAT

    > 20151

    ForexCrypto

    N

    BOOLEAN

    true if crypto

    > 20152

    ForexBaseCurrency

    N

    STRING

    base currency

    > 20155

    IntrestRateDuration

    N

    STRING

    duration of the intrest rate security, one of Duration enum

    > 20156

    GenericFutureDuration

    N

    STRING

    duration of the generic future security, one of Duration enum

    > 20157

    OptionExpiration

    N

    STRING

    expiration of the option security, ISO_DATE format

    > 20158

    OptionStrike

    N

    FLOAT

    The strike price

    > 20159

    OptionType

    N

    STRING

    OptionType enum (C for call and P for put)

    > 20160

    FutureExpiration

    N

    STRING

    expiration of the future security, ISO_DATE format

    > 20161

    FutureFirstNotice

    N

    STRING

    first notice of future, ISO_DATE format

    > 20162

    FutureMonthYear

    N

    STRING

    first month and year of future, yyyymm format

    > 20165

    CommodityType

    N

    STRING

    commodity type (CommodityType enum)

    > 20170

    CombinationUuid

    N

    STRING

    auto generated unique identifier

    > 20171

    CombinationComponents

    N

    STRING

    comma separated IDs of components

    > 20172

    CombinationComponentCount

    N

    INT

    number of components

    > 20173

    CombinationType

    N

    combination type (CombinationType enum)

    > 20174

    CombinationTotalQuantity

    N

    FLOAT

    sum of the quantities of all Components

    > 20180

    BondCoupon

    N

    FLOAT

    bond coupon

    > 20181

    BondMaturity

    N

    STRING

    bond maturity date, ISO_DATE format

    > 20182

    BondIssueDate

    N

    STRING

    bond issue date, ISO_DATE format

    > 20183

    BondCouponFrequency

    N

    STRING

    ANNUAL

    >

    SEMI_ANNUAL

    >

    QUARTERLY

    > 20184

    BondRatingSP

    N

    STRING

    bond rating Standard and Poors

    > 20186

    BondRatingMoodys

    N

    STRING

    bond rating Moodys

    > 20187

    BondRatingFitch

    N

    STRING

    bond rating Fitch

    > 20185

    StockGics

    N

    STRING

    gics for stock, stock specific

    20011

    NoExchangeRefData

    N

    NumInGroup

    > 100

    ExDestination

    Y

    INT

    id of the exchange

    > 207

    SecurityExchange

    N

    STRING

    > 20003

    ExchangeOrder

    Y

    BOOLEAN

    true if exchange trading is supported

    > 20004

    MarginOrder

    Y

    BOOLEAN

    true if margin trading is supported

    20012

    NoAccountRefData

    N

    NumInGroup

    > 1

    Account

    Y

    STRING

    Account to trade on

    > 20008

    AccountName

    Y

    STRING

    Appendix A. FIX message examples

    Decoded messages can be viewed using fix.aprics.net online parsing tool.
    All messages below have a link to this tool with messages already encoded in the link.

    Example of a logon authentication failure

    8=FIX.4.4|9=72|35=A|34=1|49=BANZAI_MD|52=20200703-18:45:42.244|56=AT|98=0|108=30|141=Y|10=102|
    8=FIX.4.4|9=80|35=5|34=1|49=AT|52=20200703-18:45:42.266|56=BANZAI_MD|58=authentication failure|10=170|
    8=FIX.4.4|9=54|35=5|34=2|49=BANZAI_MD|52=20200703-18:45:42.267|56=AT|10=026|

    Example of a correct logon

    8=FIX.4.4|9=104|35=A|34=1|49=BANZAI_MD|52=20200706-11:28:32.386|56=AT|553=banzai_md|554=banzai_md_pwd|98=0|108=30|141=Y|10=064|
    8=FIX.4.4|9=72|35=A|34=1|49=AT|52=20200706-11:28:42.326|56=BANZAI_MD|98=0|108=30|141=Y|10=100|

    Assuming that orders are not allowed on a session, reject flow is provided below

    8=FIX.4.4|9=129|35=D|34=3|49=BANZAI_MD|52=20200706-12:26:42.097|56=AT|1=100|11=BANZ-O-1594038402104|38=25000|40=1|48=25|54=1|59=3|100=1|20003=N|10=119|
    8=FIX.4.4|9=158|35=j|34=3|49=AT|52=20200706-12:26:42.417|56=BANZAI_MD|45=3|58=Message type is not allowed skip it, sessionId: FIX.4.4:AT->BANZAI_MD, msgType: D|372=D|380=0|10=118|

    Example of a New Market Order fill

    8=FIX.4.4|9=124|35=D|34=3|49=BANZAI|52=20200610-16:08:37.549|56=AT|1=7937|11=BANZ-O-1591805317551|38=1|40=1|48=7947|54=1|59=4|100=0|20003=Y|10=062|
    8=FIX.4.4|9=216|35=8|34=3|49=AT|52=20200610-16:08:45.179|56=BANZAI|1=7937|6=0|11=BANZ-O-1591805317551|14=0|17=b2c2ut13.0-42e5a9a3-a9fb-4c02-8f94-b27fd31860c5|31=0|32=0|37=b2c2ut13.0|38=1|39=0|48=7947|54=1|55=BTCUSD|59=4|150=I|151=1|10=244|
    8=FIX.4.4|9=267|35=8|34=4|49=AT|52=20200610-16:08:45.562|56=BANZAI|1=7937|6=9770.7|11=BANZ-O-1591805317551|14=1|17=b2c2ut13.0-77bc55b9-13f9-4157-83fc-808f68e03331|31=9770.7|32=1|37=b2c2ut13.0|38=1|39=2|48=7947|54=1|55=BTCUSD|59=4|150=I|151=0|198=b4c9152c-60cd-4045-ba6e-213198e25998|10=041|
    8=FIX.4.4|9=267|35=8|34=5|49=AT|52=20200610-16:08:45.639|56=BANZAI|1=7937|6=9770.7|11=BANZ-O-1591805317551|14=1|17=b2c2ut13.0-582c7003-3d21-44c2-81a0-8cccad0f153b|31=9770.7|32=1|37=b2c2ut13.0|38=1|39=2|48=7947|54=1|55=BTCUSD|59=4|150=F|151=0|198=b4c9152c-60cd-4045-ba6e-213198e25998|10=141|

    Example of a New Market Order fill for another security and provider

    8=FIX.4.4|9=124|35=D|34=15|49=BANZAI|52=20200611-18:21:14.502|56=AT|1=100|11=BANZ-O-1591899674508|38=100|40=1|48=25|54=1|59=3|100=1|20003=N|10=012|
    8=FIX.4.4|9=219|35=8|34=18|49=AT|52=20200611-18:21:14.532|56=BANZAI|1=100|6=0|11=BANZ-O-1591899674508|14=0|17=2419-4ad2ecf4-8254-4b10-8cb0-329113d8c56a|31=0|32=0|37=2419|38=100|39=0|48=25|54=1|55=EURUSD|59=3|150=I|151=100|207=IDEALPRO|10=040|
    8=FIX.4.4|9=233|35=8|34=19|49=AT|52=20200611-18:21:14.691|56=BANZAI|1=100|6=0|11=BANZ-O-1591899674508|14=0|17=2419-0f34dd35-11b1-4eae-86b7-f06c0ad8f8de|31=0|32=0|37=2419|38=100|39=5|48=25|54=1|55=EURUSD|59=3|150=5|151=100|198=842160485|207=IDEALPRO|10=155|
    8=FIX.4.4|9=233|35=8|34=20|49=AT|52=20200611-18:21:15.256|56=BANZAI|1=100|6=0|11=BANZ-O-1591899674508|14=0|17=2419-6c96a773-08ce-4440-82ce-ffff88a96415|31=0|32=0|37=2419|38=100|39=0|48=25|54=1|55=EURUSD|59=3|150=F|151=100|198=842160485|207=IDEALPRO|10=252|
    8=FIX.4.4|9=247|35=8|34=21|49=AT|52=20200611-18:21:15.343|56=BANZAI|1=100|6=1.13205|11=BANZ-O-1591899674508|14=100|17=2419-c005a330-c122-47f2-b067-d1a4f93b410a|31=1.13205|32=100|37=2419|38=100|39=2|48=25|54=1|55=EURUSD|59=3|150=I|151=0|198=842160485|207=IDEALPRO|10=076|

    Example of a New Limit Order fill

    8=FIX.4.4|9=132|35=D|34=26|49=BANZAI|52=20200611-18:35:05.531|56=AT|1=100|11=BANZ-O-1591900505548|38=100|40=2|44=1.12|48=25|54=2|59=1|100=1|20003=N|10=104|
    8=FIX.4.4|9=219|35=8|34=41|49=AT|52=20200611-18:35:05.546|56=BANZAI|1=100|6=0|11=BANZ-O-1591900505548|14=0|17=2427-9671cec4-de00-40d1-ba06-5f898a90805f|31=0|32=0|37=2427|38=100|39=0|48=25|54=2|55=EURUSD|59=1|150=I|151=100|207=IDEALPRO|10=039|
    8=FIX.4.4|9=233|35=8|34=42|49=AT|52=20200611-18:35:05.683|56=BANZAI|1=100|6=0|11=BANZ-O-1591900505548|14=0|17=2427-2e821b72-de28-4e55-91b9-0162a8973d2f|31=0|32=0|37=2427|38=100|39=5|48=25|54=2|55=EURUSD|59=1|150=5|151=100|198=842160492|207=IDEALPRO|10=114|
    8=FIX.4.4|9=233|35=8|34=43|49=AT|52=20200611-18:35:05.921|56=BANZAI|1=100|6=0|11=BANZ-O-1591900505548|14=0|17=2427-23a4375f-46f1-4fbe-9068-68ab415fa739|31=0|32=0|37=2427|38=100|39=0|48=25|54=2|55=EURUSD|59=1|150=F|151=100|198=842160492|207=IDEALPRO|10=174|
    8=FIX.4.4|9=245|35=8|34=44|49=AT|52=20200611-18:35:05.934|56=BANZAI|1=100|6=1.1318|11=BANZ-O-1591900505548|14=100|17=2427-6391dad0-e3af-48d1-9ead-a335f277acb3|31=1.1318|32=100|37=2427|38=100|39=2|48=25|54=2|55=EURUSD|59=1|150=I|151=0|198=842160492|207=IDEALPRO|10=241|

    Example of propagating commission fee (note it present only in exec report type TRADE)

    8=FIX.4.4|9=128|35=D|34=64|49=BANZAI|52=20200707-11:51:17.050|56=AT|1=9429|11=BANZ-O-1594122677051|38=1|40=1|48=9921|54=1|59=4|100=9428|20003=N|10=253|
    8=FIX.4.4|9=221|35=8|34=65|49=AT|52=20200707-11:51:17.100|56=BANZAI|1=9429|6=0|11=BANZ-O-1594122677051|14=0|17=drb4.0-da762c08-7f15-4329-99c7-9f6edeb059f2|31=0|32=0|37=drb4.0|38=1|39=0|48=9921|54=1|55=BTCUSD|59=4|150=I|151=1|207=Deribit|10=124|
    8=FIX.4.4|9=246|35=8|34=66|49=AT|52=20200707-11:51:17.170|56=BANZAI|1=9429|6=9272.997|11=BANZ-O-1594122677051|14=1|17=drb4.0-fe346d8a-07d2-4395-a3c4-e5bbe54b6570|31=9273|32=1|37=drb4.0|38=1|39=2|48=9921|54=1|55=BTCUSD|59=4|150=I|151=0|198=4173522103|207=Deribit|10=161|
    8=FIX.4.4|9=268|35=8|34=67|49=AT|52=20200707-11:51:23.332|56=BANZAI|1=9429|6=9272.997|11=BANZ-O-1594122677051|12=0.00000081|14=1|17=drb4.0-0ccdaa62-eb4f-41e7-8088-6543661f1e97|31=9273|32=1|37=drb4.0|38=1|39=2|48=9921|54=1|55=BTCUSD|59=4|150=F|151=0|198=4173522103|207=Deribit|479=BTC|10=186|

    New Order is rejected because external adapter B2C2 is not ready yet

    8=FIX.4.4|9=134|35=D|34=23|49=BANZAI|52=20200611-08:10:10.656|56=AT|1=7937|11=BANZ-O-1591863010654|38=1|40=2|44=10000|48=7947|54=1|59=4|100=0|20003=Y|10=248|
    8=FIX.4.4|9=217|35=8|34=22|49=AT|52=20200611-08:10:10.899|56=BANZAI|1=7937|6=0|11=BANZ-O-1591863010654|14=0|17=b2c2ut14.0-1345eb30-e569-43a6-8002-af691917ac15|31=0|32=0|37=b2c2ut14.0|38=1|39=0|48=7947|54=1|55=BTCUSD|59=4|150=I|151=1|10=089|
    8=FIX.4.4|9=384|35=8|34=23|49=AT|52=20200611-08:10:11.312|56=BANZAI|1=7937|6=0|11=BANZ-O-1591863010654|14=0|17=b2c2ut14.0-324a27c4-ac11-4d0e-ac88-50a1ea722412|31=0|32=0|37=b2c2ut14.0|38=1|39=8|48=7947|54=1|55=BTCUSD|58=java.util.concurrent.CompletionException: ch.algotrader.adapter.BrokerAdapterException: Message cannot be sent: session 'B2C2UT' does not exist or is not logged on|59=4|150=I|151=1|10=092|

    New Order is rejected because of order validation

    failure on AT side (B2C2 does not support margin trading)

    8=FIX.4.4|9=132|35=D|34=4|49=BANZAI|52=20200611-08:43:48.724|56=AT|1=7937|11=BANZ-O-1591865028625|38=1|40=2|44=9000|48=7947|54=1|59=4|100=0|20003=N|10=168|
    8=FIX.4.4|9=350|35=8|34=4|49=AT|52=20200611-08:43:48.766|56=BANZAI|6=0|11=BANZ-O-1591865028625|14=0|17=BANZ-O-1591865028625-9ba65703-e97b-4878-8341-de69dc0139c3|31=0|32=0|37=BANZ-O-1591865028625-11e20ca7-fad7-471a-ac62-cb7ef04b22d6|38=1|39=8|48=7947|54=1|58=ch.algotrader.entity.trade.OrderValidationException: B2C2 does not support margin orders|103=99|150=8|151=0|10=085|

    Order Cancel Reject for Order Cancel Request - no order found

    8=FIX.4.4|9=113|35=F|34=8|49=BANZAI|52=20200611-08:45:17.059|56=AT|11=BANZ-O-1591865117063|37=b2c2ut15.0|41=BANZ-O-1591865079747|10=046|
    8=FIX.4.4|9=270|35=9|34=9|49=AT|52=20200611-08:45:17.109|56=BANZAI|11=BANZ-O-1591865117063|37=b2c2ut15.0|39=8|41=BANZ-O-1591865079747|58=No order found for order cancel request, or order in terminated status, atOrderId: b2c2ut15.0, sessionId: FIX.4.4:AT->BANZAI, status: REJECTED|434=1|10=044|

    New Order is rejected - no price available anymore, rejected at the Adapter side

    8=FIX.4.4|9=133|35=D|34=14|49=BANZAI|52=20200611-08:48:09.068|56=AT|1=7937|11=BANZ-O-1591865289072|38=1|40=2|44=9000|48=7947|54=1|59=4|100=0|20003=Y|10=237|
    8=FIX.4.4|9=217|35=8|34=15|49=AT|52=20200611-08:48:09.113|56=BANZAI|1=7937|6=0|11=BANZ-O-1591865289072|14=0|17=b2c2ut16.0-d8544a64-22b6-4e44-9281-3270bbd838af|31=0|32=0|37=b2c2ut16.0|38=1|39=0|48=7947|54=1|55=BTCUSD|59=4|150=I|151=1|10=164|
    8=FIX.4.4|9=246|35=8|34=16|49=AT|52=20200611-08:48:09.841|56=BANZAI|1=7937|6=0|11=BANZ-O-1591865289072|14=0|17=b2c2ut16.0-62821b50-a520-4922-ac5b-14bde31ae306|31=0|32=0|37=b2c2ut16.0|38=1|39=8|48=7947|54=1|55=BTCUSD|58=Price no longer available|59=4|150=I|151=1|10=200|

    New Order is rejected with system error as AlgoTrader is not yet initialised

    8=FIX.4.4|9=131|35=D|34=2|49=BANZAI|52=20200611-18:16:33.931|56=AT|1=100|11=BANZ-O-1591899393935|38=100|40=2|44=1.06|48=25|54=1|59=1|100=1|20003=N|10=077|
    8=FIX.4.4|9=294|35=8|34=2|49=AT|52=20200611-18:16:34.770|56=BANZAI|6=0|11=BANZ-O-1591899393935|14=0|17=BANZ-O-1591899393935-7b8d46b7-ef20-43e2-994d-3911bda8a018|31=0|32=0|37=BANZ-O-1591899393935-e5ca5097-c9f7-445d-bf1b-a83ec2a9ad7b|38=100|39=8|48=25|54=1|58=AlgoTrader not yet initialised. |103=99|150=8|151=0|10=185|

    Example of order cancel flow, New Order Single, Order Cancel Request, Execution Report CANCELLED

    8=FIX.4.4|9=131|35=D|34=4|49=BANZAI|52=20200611-18:17:19.524|56=AT|1=100|11=BANZ-O-1591899439528|38=100|40=2|44=1.06|48=25|54=1|59=1|100=1|20003=N|10=081|
    8=FIX.4.4|9=218|35=8|34=4|49=AT|52=20200611-18:17:20.155|56=BANZAI|1=100|6=0|11=BANZ-O-1591899439528|14=0|17=2416-c6448069-1a92-4edf-8764-31eaf86c0f91|31=0|32=0|37=2416|38=100|39=0|48=25|54=1|55=EURUSD|59=1|150=I|151=100|207=IDEALPRO|10=222|
    8=FIX.4.4|9=232|35=8|34=5|49=AT|52=20200611-18:17:20.350|56=BANZAI|1=100|6=0|11=BANZ-O-1591899439528|14=0|17=2416-d7f3dcad-8fe3-47fe-a75f-ffec86547520|31=0|32=0|37=2416|38=100|39=5|48=25|54=1|55=EURUSD|59=1|150=5|151=100|198=842160482|207=IDEALPRO|10=162|
    8=FIX.4.4|9=107|35=F|34=5|49=BANZAI|52=20200611-18:17:27.442|56=AT|11=BANZ-O-1591899447448|37=2416|41=BANZ-O-1591899439528|10=058|
    8=FIX.4.4|9=232|35=8|34=6|49=AT|52=20200611-18:17:27.453|56=BANZAI|1=100|6=0|11=BANZ-O-1591899439528|14=0|17=2416-4fe094e2-69c6-4cbb-a0ab-d6636015bbb1|31=0|32=0|37=2416|38=100|39=6|48=25|54=1|55=EURUSD|59=1|150=6|151=100|198=842160482|207=IDEALPRO|10=040|
    8=FIX.4.4|9=232|35=8|34=7|49=AT|52=20200611-18:17:27.581|56=BANZAI|1=100|6=0|11=BANZ-O-1591899439528|14=0|17=2416-7582fdc6-303a-4f01-885b-2532c05849ee|31=0|32=0|37=2416|38=100|39=4|48=25|54=1|55=EURUSD|59=1|150=I|151=100|198=842160482|207=IDEALPRO|10=097|

    Example of cancelling of all client orders (for this particular order session)


    3 New Order Single followed by a Mass Cancel Request. 3 orders were cancelled and one cancel was rejected (system error: No SimpleOrderExecService found for service type B2C2)

    8=FIX.4.4|9=131|35=D|34=4|49=BANZAI|52=20200611-18:26:33.011|56=AT|1=100|11=BANZ-O-1591899993022|38=100|40=2|44=1.09|48=25|54=1|59=1|100=1|20003=N|10=065|
    8=FIX.4.4|9=218|35=8|34=4|49=AT|52=20200611-18:26:34.127|56=BANZAI|1=100|6=0|11=BANZ-O-1591899993022|14=0|17=2421-cb56b91f-6cb0-4bc9-b871-af77049b0777|31=0|32=0|37=2421|38=100|39=0|48=25|54=1|55=EURUSD|59=1|150=I|151=100|207=IDEALPRO|10=044|
    8=FIX.4.4|9=232|35=8|34=5|49=AT|52=20200611-18:26:34.459|56=BANZAI|1=100|6=0|11=BANZ-O-1591899993022|14=0|17=2421-41d24090-1b9c-4091-b6ca-7bff7637693d|31=0|32=0|37=2421|38=100|39=5|48=25|54=1|55=EURUSD|59=1|150=5|151=100|198=842160486|207=IDEALPRO|10=114|
    8=FIX.4.4|9=131|35=D|34=5|49=BANZAI|52=20200611-18:26:37.427|56=AT|1=100|11=BANZ-O-1591899997439|38=100|40=2|44=1.08|48=25|54=1|59=1|100=1|20003=N|10=096|
    8=FIX.4.4|9=218|35=8|34=6|49=AT|52=20200611-18:26:37.447|56=BANZAI|1=100|6=0|11=BANZ-O-1591899997439|14=0|17=2422-ebbe01d6-1e64-452d-ab5e-1838580ef081|31=0|32=0|37=2422|38=100|39=0|48=25|54=1|55=EURUSD|59=1|150=I|151=100|207=IDEALPRO|10=056|
    8=FIX.4.4|9=232|35=8|34=7|49=AT|52=20200611-18:26:37.586|56=BANZAI|1=100|6=0|11=BANZ-O-1591899997439|14=0|17=2422-91cd257e-a3bf-457a-8abb-af30e89fd3c2|31=0|32=0|37=2422|38=100|39=5|48=25|54=1|55=EURUSD|59=1|150=5|151=100|198=842160487|207=IDEALPRO|10=168|
    8=FIX.4.4|9=131|35=D|34=6|49=BANZAI|52=20200611-18:26:43.500|56=AT|1=100|11=BANZ-O-1591900003513|38=100|40=2|44=1.07|48=25|54=1|59=1|100=1|20003=N|10=039|
    8=FIX.4.4|9=218|35=8|34=8|49=AT|52=20200611-18:26:43.537|56=BANZAI|1=100|6=0|11=BANZ-O-1591900003513|14=0|17=2423-502bd4fc-8808-4984-9fc5-4f6e0fda6c92|31=0|32=0|37=2423|38=100|39=0|48=25|54=1|55=EURUSD|59=1|150=I|151=100|207=IDEALPRO|10=039|
    8=FIX.4.4|9=232|35=8|34=9|49=AT|52=20200611-18:26:43.671|56=BANZAI|1=100|6=0|11=BANZ-O-1591900003513|14=0|17=2423-39200fde-1751-49ba-9b3b-a2128a95f828|31=0|32=0|37=2423|38=100|39=5|48=25|54=1|55=EURUSD|59=1|150=5|151=100|198=842160488|207=IDEALPRO|10=087|
    8=FIX.4.4|9=92|35=q|34=7|49=BANZAI|52=20200611-18:26:55.050|56=AT|11=BANZ-O-1591900015064-CANCEL_ALL|530=7|10=137|
    8=FIX.4.4|9=249|35=r|34=10|49=AT|52=20200611-18:26:55.184|56=BANZAI|11=BANZ-O-1591900015064-CANCEL_ALL|37=BANZ-O-1591900015064-CANCEL_ALL-ACCEPT|531=7|533=4|534=4|41=BANZ-O-1591899993022|41=BANZ-O-1591899997439|41=BANZ-O-1591900003513|41=BANZ-RFQ-1591803084947-ORD|10=071|
    8=FIX.4.4|9=233|35=8|34=11|49=AT|52=20200611-18:26:55.193|56=BANZAI|1=100|6=0|11=BANZ-O-1591899993022|14=0|17=2421-136c49c8-8c70-40c7-a7d9-007e71954f70|31=0|32=0|37=2421|38=100|39=6|48=25|54=1|55=EURUSD|59=1|150=6|151=100|198=842160486|207=IDEALPRO|10=074|
    8=FIX.4.4|9=233|35=8|34=12|49=AT|52=20200611-18:26:55.221|56=BANZAI|1=100|6=0|11=BANZ-O-1591899997439|14=0|17=2422-d9a3fb5e-32f3-4dd1-b366-58cd938bf6f7|31=0|32=0|37=2422|38=100|39=6|48=25|54=1|55=EURUSD|59=1|150=6|151=100|198=842160487|207=IDEALPRO|10=123|
    8=FIX.4.4|9=233|35=8|34=13|49=AT|52=20200611-18:26:55.230|56=BANZAI|1=100|6=0|11=BANZ-O-1591900003513|14=0|17=2423-7b73b822-ebd9-4b09-af57-51b388aa309f|31=0|32=0|37=2423|38=100|39=6|48=25|54=1|55=EURUSD|59=1|150=6|151=100|198=842160488|207=IDEALPRO|10=229|
    8=FIX.4.4|9=257|35=8|34=14|49=AT|52=20200611-18:26:55.239|56=BANZAI|1=7937|6=0|11=BANZ-RFQ-1591803084947-ORD|14=0|17=b2c2ut3.0-551772f2-1a18-464e-89c8-17c2e7e2dcb0|31=0|32=0|37=b2c2ut3.0|38=1|39=6|48=7947|54=1|55=BTCUSD|59=4|117=8066|131=BANZ-RFQ-1591803084947|150=6|151=1|10=171|
    8=FIX.4.4|9=198|35=9|34=15|49=AT|52=20200611-18:26:55.254|56=BANZAI|11=BANZ-O-1591900015064-CANCEL_ALL|37=b2c2ut3.0|39=8|41=BANZ-RFQ-1591803084947-ORD|58=No SimpleOrderExecService found for service type B2C2|434=1|10=152|
    8=FIX.4.4|9=233|35=8|34=16|49=AT|52=20200611-18:26:55.349|56=BANZAI|1=100|6=0|11=BANZ-O-1591899993022|14=0|17=2421-16f54917-9449-4e5a-ba04-9e2aa665c8b2|31=0|32=0|37=2421|38=100|39=4|48=25|54=1|55=EURUSD|59=1|150=I|151=100|198=842160486|207=IDEALPRO|10=191|
    8=FIX.4.4|9=233|35=8|34=17|49=AT|52=20200611-18:26:55.416|56=BANZAI|1=100|6=0|11=BANZ-O-1591899997439|14=0|17=2422-a815135c-01a4-4dcf-b64d-3dbef2fb36dc|31=0|32=0|37=2422|38=100|39=4|48=25|54=1|55=EURUSD|59=1|150=I|151=100|198=842160487|207=IDEALPRO|10=213|
    8=FIX.4.4|9=233|35=8|34=18|49=AT|52=20200611-18:26:55.644|56=BANZAI|1=100|6=0|11=BANZ-O-1591900003513|14=0|17=2423-4c1bb6a1-4df1-4830-a245-5af54498b7ec|31=0|32=0|37=2423|38=100|39=4|48=25|54=1|55=EURUSD|59=1|150=I|151=100|198=842160488|207=IDEALPRO|10=247|

    Example of RFQ flow - Quote Request, New Order Single and Execution Report Fill


    Note: as for now if the quote is rejected on the adapter side or timed out then no response back to the client is sent

    8=FIX.4.4|9=108|35=R|34=28|49=BANZAI|52=20200611-08:54:54.606|56=AT|1=7937|53=1.0|54=1|55=BTCUSD|131=BANZ-RFQ-1591865694601|10=093|
    8=FIX.4.4|9=158|35=S|34=30|49=AT|52=20200611-08:54:54.919|56=BANZAI|1=7937|48=7947|54=1|62=20200611-08:55:14.392|117=8113|131=BANZ-RFQ-1591865694601|133=9821.4|135=1.0|537=1|10=063|
    8=FIX.4.4|9=161|35=D|34=29|49=BANZAI|52=20200611-08:55:03.768|56=AT|1=7937|11=BANZ-RFQ-1591865694601-ORD|38=1|40=D|48=7947|54=1|59=4|117=8113|131=BANZ-RFQ-1591865694601|20003=Y|10=211|
    8=FIX.4.4|9=259|35=8|34=31|49=AT|52=20200611-08:55:03.789|56=BANZAI|1=7937|6=0|11=BANZ-RFQ-1591865694601-ORD|14=0|17=b2c2ut17.0-ae0bd67d-7628-454c-96d0-6d63f7500709|31=0|32=0|37=b2c2ut17.0|38=1|39=0|48=7947|54=1|55=BTCUSD|59=4|117=8113|131=BANZ-RFQ-1591865694601|150=I|151=1|10=250|
    8=FIX.4.4|9=310|35=8|34=32|49=AT|52=20200611-08:55:04.385|56=BANZAI|1=7937|6=9821.4|11=BANZ-RFQ-1591865694601-ORD|14=1|17=b2c2ut17.0-d1d52937-8d35-4481-b958-7c341849b6a6|31=9821.4|32=1|37=b2c2ut17.0|38=1|39=2|48=7947|54=1|55=BTCUSD|59=4|117=8113|131=BANZ-RFQ-1591865694601|150=I|151=0|198=cfb635a1-855e-4c61-9669-4f0520a695c8|10=116|
    8=FIX.4.4|9=310|35=8|34=33|49=AT|52=20200611-08:55:04.451|56=BANZAI|1=7937|6=9821.4|11=BANZ-RFQ-1591865694601-ORD|14=1|17=b2c2ut17.0-272ebf97-0c3b-4d0a-9af7-b47dcbed6b83|31=9821.4|32=1|37=b2c2ut17.0|38=1|39=2|48=7947|54=1|55=BTCUSD|59=4|117=8113|131=BANZ-RFQ-1591865694601|150=F|151=0|198=cfb635a1-855e-4c61-9669-4f0520a695c8|10=008|

    Client can discard a quote using Quote Cancel Request

    8=FIX.4.4|9=107|35=R|34=5|49=BANZAI|52=20200611-13:13:28.489|56=AT|1=7937|53=1.0|54=1|55=BTCUSD|131=BANZ-RFQ-1591881208492|10=037|
    8=FIX.4.4|9=157|35=S|34=4|49=AT|52=20200611-13:13:28.865|56=BANZAI|1=7937|48=7947|54=1|62=20200611-13:13:48.567|117=8135|131=BANZ-RFQ-1591881208492|133=9694.4|135=1.0|537=1|10=017|
    8=FIX.4.4|9=84|35=R|34=6|49=BANZAI|52=20200611-13:13:32.304|56=AT|131=BANZ-RFQ-1591881208492|263=2|10=047|

    Example of Quote Request which is rejected on AlgoTrader side

    8=FIX.4.4|9=106|35=R|34=4|49=BANZAI|52=20200612-08:15:03.851|56=AT|1=100|53=1.0|54=1|55=BTCUSD|131=BANZ-RFQ-1591949703844|10=217|
    8=FIX.4.4|9=156|35=AG|34=4|49=AT|52=20200612-08:15:03.918|56=BANZAI|58=Internal server error, Quote Request service is unavailable for IB|131=BANZ-RFQ-1591949703844|658=99|10=000|

    Example of Quote Request which is rejected (timed out, not reaching the broker)

    8=FIX.4.4|9=107|35=R|34=2|49=BANZAI|52=20200709-11:36:21.363|56=AT|1=7937|53=1.0|54=2|55=EURUSD|131=BANZ-RFQ-1594294581369|10=057|
    8=FIX.4.4|9=157|35=AG|34=3|49=AT|52=20200709-11:36:27.673|56=BANZAI|58=No quote has arrived for request B2C2-RFQ-1594294550775, timed out.|131=BANZ-RFQ-1594294581369|658=99|10=170|

    Example of Quote Request which is rejected on the broker side

    8=FIX.4.4|9=108|35=R|34=11|49=BANZAI|52=20200709-11:40:30.170|56=AT|1=7937|53=1.0|54=2|55=EURUSD|131=BANZ-RFQ-1594294830178|10=092|
    8=FIX.4.4|9=233|35=AG|34=12|49=AT|52=20200709-11:40:30.434|56=BANZAI|58=Request for quote 'B2C2-RFQ-1594294550776 2 1.0 EURUSD.SPOT' failed: unspecified problem: Something went wrong, please contact a staff member.|131=BANZ-RFQ-1594294830178|658=99|10=016|

    Example of New Order Single which is rejected on AlgoTrader side (B2C2 does not support margin trading)

    8=FIX.4.4|9=160|35=D|34=7|49=BANZAI|52=20200612-08:15:49.305|56=AT|1=7937|11=BANZ-RFQ-1591949743961-ORD|38=1|40=D|48=7947|54=1|59=4|117=8193|131=BANZ-RFQ-1591949743961|20003=N|10=163|
    8=FIX.4.4|9=404|35=8|34=7|49=AT|52=20200612-08:15:49.414|56=BANZAI|6=0|11=BANZ-RFQ-1591949743961-ORD|14=0|17=BANZ-RFQ-1591949743961-ORD-8ff82162-c724-40d8-9673-44bdf00808f1|31=0|32=0|37=BANZ-RFQ-1591949743961-ORD-df77357e-9346-49f2-be40-1a1f516e6873|38=1|39=8|48=7947|54=1|58=ch.algotrader.entity.trade.OrderValidationException: B2C2 does not support margin orders|103=99|117=8193|131=BANZ-RFQ-1591949743961|150=8|151=0|10=226|

    Example of Quote Request followed by New Order Single and Executio Report Fill

    8=FIX.4.4|9=108|35=R|34=10|49=BANZAI|52=20200612-08:16:42.224|56=AT|1=7937|53=1.0|54=1|55=BTCUSD|131=BANZ-RFQ-1591949802227|10=074|
    8=FIX.4.4|9=158|35=S|34=10|49=AT|52=20200612-08:16:42.445|56=BANZAI|1=7937|48=7947|54=1|62=20200612-08:17:02.170|117=8195|131=BANZ-RFQ-1591949802227|133=9480.3|135=1.0|537=1|10=049|
    8=FIX.4.4|9=161|35=D|34=11|49=BANZAI|52=20200612-08:16:46.535|56=AT|1=7937|11=BANZ-RFQ-1591949802227-ORD|38=1|40=D|48=7947|54=1|59=4|117=8195|131=BANZ-RFQ-1591949802227|20003=Y|10=205|
    8=FIX.4.4|9=259|35=8|34=11|49=AT|52=20200612-08:16:46.748|56=BANZAI|1=7937|6=0|11=BANZ-RFQ-1591949802227-ORD|14=0|17=b2c2ut18.0-51c9320c-ac23-4ae0-8094-fb7adf116fa0|31=0|32=0|37=b2c2ut18.0|38=1|39=0|48=7947|54=1|55=BTCUSD|59=4|117=8195|131=BANZ-RFQ-1591949802227|150=I|151=1|10=159|
    8=FIX.4.4|9=310|35=8|34=12|49=AT|52=20200612-08:16:47.016|56=BANZAI|1=7937|6=9480.3|11=BANZ-RFQ-1591949802227-ORD|14=1|17=b2c2ut18.0-a00f59d2-6cea-4614-ae8c-0d6cba32f7fd|31=9480.3|32=1|37=b2c2ut18.0|38=1|39=2|48=7947|54=1|55=BTCUSD|59=4|117=8195|131=BANZ-RFQ-1591949802227|150=I|151=0|198=45ae236f-db9d-4233-be2d-d7c64c2c1402|10=170|
    8=FIX.4.4|9=310|35=8|34=13|49=AT|52=20200612-08:16:47.157|56=BANZAI|1=7937|6=9480.3|11=BANZ-RFQ-1591949802227-ORD|14=1|17=b2c2ut18.0-dc6cd7d2-7ea6-4262-ba01-feba490f92e3|31=9480.3|32=1|37=b2c2ut18.0|38=1|39=2|48=7947|54=1|55=BTCUSD|59=4|117=8195|131=BANZ-RFQ-1591949802227|150=F|151=0|198=45ae236f-db9d-4233-be2d-d7c64c2c1402|10=130|

    Example of AlgoOrder New Order Single which is rejected (no market data for EUR USD)

    8=FIX.4.4|9=365|35=D|34=34|49=BANZAI|52=20200615-11:07:18.959|56=AT|1=100|11=BANZ-O-1592219238963|38=1000|48=25|54=1|100=1|20003=N|957=8|958=MIN_QTY|959=14|960=0.1|958=MAX_DURATION|959=14|960=2.0|958=MIN_DURATION|959=14|960=1.0|958=ALGO_NAME|959=14|960=SLICING|958=MAX_DELAY|959=14|960=3.0|958=MIN_DELAY|959=14|960=2.0|958=MAX_VOL_PCT|959=14|960=1.0|958=MIN_VOL_PCT|959=14|960=0.2|10=153|
    8=FIX.4.4|9=299|35=8|34=34|49=AT|52=20200615-11:07:19.111|56=BANZAI|6=0|11=BANZ-O-1592219238963|14=0|17=BANZ-O-1592219238963-09683178-188d-450e-a3f9-97e9cfcc6efe|31=0|32=0|37=BANZ-O-1592219238963-32ddb0f2-3d7c-4c96-87e0-20363ecb117d|38=1000|39=8|48=25|54=1|58=No market data available for EURUSD|103=99|150=8|151=0|10=228|

    Example of AlgoOrder New Order Single which is cancel thereafter by the client, as a result order is partially filled and the rest is cancelled

    8=FIX.4.4|9=492|35=D|34=5|49=BANZAI|52=20200615-11:56:23.033|56=AT|1=100|11=BANZ-O-1592222183033|38=123|48=25|54=1|100=1|20003=N|957=12|958=MIN_SLICE_QTY|959=14|960=0.01|958=QTY_RAND|959=14|960=0.25|958=SLICE_LENGTH|959=14|960=10|958=INITIAL_OFFSET|959=14|960=0.5|958=MIN_OFFSET|959=14|960=0.05|958=INCREMENT|959=14|960=0.05|958=DURATION_SEC|959=14|960=600|958=ALGO_NAME|959=14|960=TWAP|958=MAX_OFFSET|959=14|960=0.95|958=CANCEL_TIME|959=14|960=0.5|958=MAX_VOL_PCT|959=14|960=1|958=TIME_RAND|959=14|960=0.25|10=190|
    8=FIX.4.4|9=216|35=8|34=6|49=AT|52=20200615-11:56:23.058|56=BANZAI|1=100|6=0|11=BANZ-O-1592222183033|14=0|17=a31-7390f20f-93e6-4120-a0ac-808d9c22af89|31=0|32=0|37=a31|38=123|39=0|48=25|54=1|55=EURUSD|59=1|150=I|151=123|207=IDEALPRO|10=171|
    8=FIX.4.4|9=216|35=8|34=7|49=AT|52=20200615-11:56:23.215|56=BANZAI|1=100|6=0|11=BANZ-O-1592222183033|14=0|17=a31-0af48299-e444-4118-a9be-2dfd16e41eec|31=0|32=0|37=a31|38=123|39=5|48=25|54=1|55=EURUSD|59=1|150=5|151=123|207=IDEALPRO|10=045|
    8=FIX.4.4|9=224|35=8|34=8|49=AT|52=20200615-11:56:36.581|56=BANZAI|1=100|6=1.126|11=BANZ-O-1592222183033|14=3|17=a31-297b1ee0-6577-4d49-b5bd-5be456ab4cb2|31=1.126|32=3|37=a31|38=123|39=1|48=25|54=1|55=EURUSD|59=1|150=I|151=120|207=IDEALPRO|10=216|
    8=FIX.4.4|9=227|35=8|34=9|49=AT|52=20200615-11:56:54.871|56=BANZAI|1=100|6=1.12595|11=BANZ-O-1592222183033|14=6|17=a31-c05fe39d-df70-4638-b061-4cb3f3829bca|31=1.1259|32=3|37=a31|38=123|39=1|48=25|54=1|55=EURUSD|59=1|150=I|151=117|207=IDEALPRO|10=137|
    8=FIX.4.4|9=106|35=F|34=8|49=BANZAI|52=20200615-11:57:39.416|56=AT|11=BANZ-O-1592222259420|37=a31|41=BANZ-O-1592222183033|10=253|
    8=FIX.4.4|9=228|35=8|34=11|49=AT|52=20200615-11:57:39.422|56=BANZAI|1=100|6=1.12595|11=BANZ-O-1592222183033|14=6|17=a31-80e70fc2-af6f-4b1e-80e6-51f6843a5356|31=1.1259|32=3|37=a31|38=123|39=6|48=25|54=1|55=EURUSD|59=1|150=6|151=117|207=IDEALPRO|10=071|
    8=FIX.4.4|9=217|35=8|34=12|49=AT|52=20200615-11:57:39.435|56=BANZAI|1=100|6=0|11=BANZ-O-1592222183033|14=6|17=a31-a4851e4f-c903-4844-b8ae-b696d250d7d4|31=0|32=0|37=a31|38=123|39=4|48=25|54=1|55=EURUSD|59=1|150=I|151=117|207=IDEALPRO|10=039|

    Example of TWAP Algo New Order Single which is filled

    8=FIX.4.4|9=491|35=D|34=27|49=BANZAI|52=20200615-12:05:58.854|56=AT|1=100|11=BANZ-O-1592222758861|38=7|48=25|54=1|100=1|20003=N|957=12|958=MIN_SLICE_QTY|959=14|960=0.01|958=QTY_RAND|959=14|960=0.25|958=SLICE_LENGTH|959=14|960=10|958=INITIAL_OFFSET|959=14|960=0.5|958=MIN_OFFSET|959=14|960=0.05|958=INCREMENT|959=14|960=0.05|958=DURATION_SEC|959=14|960=600|958=ALGO_NAME|959=14|960=TWAP|958=MAX_OFFSET|959=14|960=0.95|958=CANCEL_TIME|959=14|960=0.5|958=MAX_VOL_PCT|959=14|960=1|958=TIME_RAND|959=14|960=0.25|10=177|
    8=FIX.4.4|9=213|35=8|34=35|49=AT|52=20200615-12:05:58.877|56=BANZAI|1=100|6=0|11=BANZ-O-1592222758861|14=0|17=a34-78194bd1-1c8c-4e87-b28d-720e82d4630b|31=0|32=0|37=a34|38=7|39=0|48=25|54=1|55=EURUSD|59=1|150=I|151=7|207=IDEALPRO|10=069|
    8=FIX.4.4|9=213|35=8|34=36|49=AT|52=20200615-12:05:59.020|56=BANZAI|1=100|6=0|11=BANZ-O-1592222758861|14=0|17=a34-0e600985-b4f4-4db8-a1b5-dbc18d8fa056|31=0|32=0|37=a34|38=7|39=5|48=25|54=1|55=EURUSD|59=1|150=5|151=7|207=IDEALPRO|10=170|
    8=FIX.4.4|9=225|35=8|34=37|49=AT|52=20200615-12:05:59.189|56=BANZAI|1=100|6=1.12593|11=BANZ-O-1592222758861|14=1|17=a34-ff1aaf24-9d97-4741-8adc-f8e42ce5eef1|31=1.12593|32=1|37=a34|38=7|39=1|48=25|54=1|55=EURUSD|59=1|150=I|151=6|207=IDEALPRO|10=216|
    8=FIX.4.4|9=225|35=8|34=44|49=AT|52=20200615-12:09:26.180|56=BANZAI|1=100|6=1.12579|11=BANZ-O-1592222758861|14=2|17=a34-95691076-4669-4453-9de6-516b09ccbb81|31=1.12565|32=1|37=a34|38=7|39=1|48=25|54=1|55=EURUSD|59=1|150=I|151=5|207=IDEALPRO|10=037|
    8=FIX.4.4|9=224|35=8|34=45|49=AT|52=20200615-12:09:39.052|56=BANZAI|1=100|6=1.12573|11=BANZ-O-1592222758861|14=3|17=a34-48396ce8-55c5-45cb-8a15-6c0427d8b206|31=1.1256|32=1|37=a34|38=7|39=1|48=25|54=1|55=EURUSD|59=1|150=I|151=4|207=IDEALPRO|10=063|
    8=FIX.4.4|9=225|35=8|34=51|49=AT|52=20200615-12:12:13.802|56=BANZAI|1=100|6=1.12561|11=BANZ-O-1592222758861|14=4|17=a34-a6e40035-9245-42e2-9158-6cb527936142|31=1.12525|32=1|37=a34|38=7|39=1|48=25|54=1|55=EURUSD|59=1|150=I|151=3|207=IDEALPRO|10=153|
    8=FIX.4.4|9=224|35=8|34=52|49=AT|52=20200615-12:12:23.007|56=BANZAI|1=100|6=1.12551|11=BANZ-O-1592222758861|14=5|17=a34-068e6996-c187-4744-a7f1-2bc89d7a3e8d|31=1.1251|32=1|37=a34|38=7|39=1|48=25|54=1|55=EURUSD|59=1|150=I|151=2|207=IDEALPRO|10=108|
    8=FIX.4.4|9=225|35=8|34=53|49=AT|52=20200615-12:12:29.976|56=BANZAI|1=100|6=1.12542|11=BANZ-O-1592222758861|14=6|17=a34-123d5cc4-4cce-43fe-b74f-9ccffbe3e771|31=1.12495|32=1|37=a34|38=7|39=1|48=25|54=1|55=EURUSD|59=1|150=I|151=1|207=IDEALPRO|10=247|
    8=FIX.4.4|9=224|35=8|34=55|49=AT|52=20200615-12:13:14.983|56=BANZAI|1=100|6=1.12533|11=BANZ-O-1592222758861|14=7|17=a34-970e344f-69fc-4ab8-b826-bed797c881f1|31=1.1248|32=1|37=a34|38=7|39=2|48=25|54=1|55=EURUSD|59=1|150=I|151=0|207=IDEALPRO|10=226|

    Example of a Market Data Request - subscription for TICK data. Followed by a snapshot of market data

    8=FIX.4.4|9=111|35=V|34=35|49=BANZAI|52=20200611-15:39:43.731|56=AT|262=BANZ-MD-1591889983715-1|263=0|146=1|20051=TICK|48=7947|10=165|
    8=FIX.4.4|9=233|35=W|34=35|49=AT|52=20200611-15:39:45.129|56=BANZAI|48=7947|55=BTCUSD|262=BANZ-MD-1591889983715-1|20051=TICK|268=2|269=0|270=9508.1|271=1|272=20200611|273=15:39:44.788|290=1|269=1|270=9512.9|271=1|272=20200611|273=15:39:44.788|290=1|10=252|

    Client can cancel previous Market Data Request and do not receive updates anymore

    8=FIX.4.4|9=111|35=V|34=37|49=BANZAI|52=20200611-15:40:29.895|56=AT|262=BANZ-MD-1591889983715-1|263=2|146=1|20051=TICK|48=7947|10=176|

    Client can cancel all previous Market Data Requests

    8=FIX.4.4|9=97|35=V|34=11|49=BANZAI|52=20200611-16:09:30.125|56=AT|262=BANZ-MD-1591891770125-8-CANCEL_ALL|263=A|10=148|

    Example of a wrong Market Data Request - no security is specified and Market Data Request Reject is sent back to the client

    8=FIX.4.4|9=85|35=V|34=7|49=BANZAI|52=20200611-13:31:19.242|56=AT|262=BANZ-MD-1591882238226-2|263=0|10=068|
    8=FIX.4.4|9=219|35=Y|34=7|49=AT|52=20200611-13:31:19.244|56=BANZAI|58=Wrong strategy/securitySet/aggSymbolSet definition, mdRequestId: BANZ-MD-1591882238226-2, strategy: SERVER, security: [], aggSymbol: [],|262=BANZ-MD-1591882238226-2|10=246|

    Subscription for several market data types followed by snapshots (BARs are not ready yet and will be sent later)

    8=FIX.4.4|9=149|35=V|34=14|49=BANZAI|52=20200611-16:30:44.414|56=AT|262=BANZ-MD-1591893044414-17|263=0|146=3|20051=BAR|48=25|20051=ORDER_BOOK|48=25|20051=TICK|48=25|10=189|
    8=FIX.4.4|9=2445|35=W|34=2619|49=AT|52=20200611-16:30:44.982|56=BANZAI|48=25|55=EURUSD|262=BANZ-MD-1591893044414-17|20051=ORDER_BOOK|268=35|269=1|270=1.13772|271=4000000|272=20200611|273=16:30:44.937|290=1|269=1|270=1.13773|271=8000000|272=20200611|273=16:30:44.937|290=2|269=1|270=1.13774|271=8000000|272=20200611|273=16:30:44.937|290=3|269=1|270=1.13775|271=3000000|272=20200611|273=16:30:44.937|290=4|269=1|270=1.13776|271=1000000|272=20200611|273=16:30:44.937|290=5|269=1|270=1.13778|271=7000000|272=20200611|273=16:30:44.937|290=6|269=1|270=1.13779|271=20000|272=20200611|273=16:30:44.937|290=7|269=1|270=1.1378|271=1000000|272=20200611|273=16:30:44.937|290=8|269=1|270=1.13785|271=1000000|272=20200611|273=16:30:44.937|290=9|269=1|270=1.13786|271=1000000|272=20200611|273=16:30:44.937|290=10|269=0|270=1.13741|271=1000000|272=20200611|273=16:30:44.937|290=1|269=0|270=1.13742|271=1000000|272=20200611|273=16:30:44.937|290=2|269=0|270=1.13743|271=1000000|272=20200611|273=16:30:44.937|290=3|269=0|270=1.13744|271=1000000|272=20200611|273=16:30:44.937|290=4|269=0|270=1.13745|271=1000000|272=20200611|273=16:30:44.937|290=5|269=0|270=1.13746|271=1000000|272=20200611|273=16:30:44.937|290=6|269=0|270=1.13747|271=1000000|272=20200611|273=16:30:44.937|290=7|269=0|270=1.13748|271=1000000|272=20200611|273=16:30:44.937|290=8|269=0|270=1.13749|271=1000000|272=20200611|273=16:30:44.937|290=9|269=0|270=1.1375|271=1000000|272=20200611|273=16:30:44.937|290=10|269=0|270=1.13752|271=1000000|272=20200611|273=16:30:44.937|290=11|269=0|270=1.13753|271=1000000|272=20200611|273=16:30:44.937|290=12|269=0|270=1.13754|271=1000000|272=20200611|273=16:30:44.937|290=13|269=0|270=1.13755|271=1000000|272=20200611|273=16:30:44.937|290=14|269=0|270=1.13756|271=1000000|272=20200611|273=16:30:44.937|290=15|269=0|270=1.13759|271=1000000|272=20200611|273=16:30:44.937|290=16|269=0|270=1.13761|271=3000000|272=20200611|273=16:30:44.937|290=17|269=0|270=1.13762|271=3000000|272=20200611|273=16:30:44.937|290=18|269=0|270=1.13763|271=9000000|272=20200611|273=16:30:44.937|290=19|269=0|270=1.13764|271=1000000|272=20200611|273=16:30:44.937|290=20|269=0|270=1.13765|271=3000000|272=20200611|273=16:30:44.937|290=21|269=0|270=1.13766|271=4000000|272=20200611|273=16:30:44.937|290=22|269=0|270=1.13767|271=5000000|272=20200611|273=16:30:44.937|290=23|269=0|270=1.13768|271=6500000|272=20200611|273=16:30:44.937|290=24|269=0|270=1.1377|271=1000000|272=20200611|273=16:30:44.937|290=25|10=150|
    8=FIX.4.4|9=247|35=W|34=2620|49=AT|52=20200611-16:30:45.024|56=BANZAI|48=25|55=EURUSD|262=BANZ-MD-1591893044414-17|20051=TICK|268=2|269=0|270=1.1377|271=1000000|272=20200611|273=16:30:44.949|290=1|269=1|270=1.13772|271=5000000|272=20200611|273=16:30:44.949|290=1|10=111|

    Subscription for aggregated book and Tick data

    8=FIX.4.4|9=153|35=V|34=6|49=BANZAI|52=20200611-17:46:41.318|56=AT|262=BANZ-MD-1591897601315-23|263=0|146=2|20051=TICK|48=25|20051=AGGREGATED_BOOK|55=EURUSD|20055=FOREX|10=240|
    8=FIX.4.4|9=2024|35=W|34=35|49=AT|52=20200611-17:46:41.548|56=BANZAI|55=EURUSD|262=BANZ-MD-1591897601315-23|20051=AGGREGATED_BOOK|20055=FOREX|20065=20200611-17:46:41|268=35|269=1|270=1.13153|271=4000000|290=1|20056=25|20057=1|269=1|270=1.13154|271=1000000|290=2|20056=25|20057=1|269=1|270=1.13155|271=6500000|290=3|20056=25|20057=1|269=1|270=1.13156|271=4000000|290=4|20056=25|20057=1|269=1|270=1.13157|271=4500000|290=5|20056=25|20057=1|269=1|270=1.13158|271=2000000|290=6|20056=25|20057=1|269=1|270=1.1316|271=3000000|290=7|20056=25|20057=1|269=1|270=1.13163|271=7000000|290=8|20056=25|20057=1|269=1|270=1.13167|271=1000000|290=9|20056=25|20057=1|269=1|270=1.13168|271=1000000|290=10|20056=25|20057=1|269=0|270=1.13197|271=1000000|290=1|20056=25|20057=1|269=0|270=1.13196|271=1000000|290=2|20056=25|20057=1|269=0|270=1.13194|271=1000000|290=3|20056=25|20057=1|269=0|270=1.13192|271=1000000|290=4|20056=25|20057=1|269=0|270=1.1318|271=1000000|290=5|20056=25|20057=1|269=0|270=1.13178|271=2000000|290=6|20056=25|20057=1|269=0|270=1.13171|271=1000000|290=7|20056=25|20057=1|269=0|270=1.1317|271=1000000|290=8|20056=25|20057=1|269=0|270=1.13165|271=2500000|290=9|20056=25|20057=1|269=0|270=1.13161|271=1000000|290=10|20056=25|20057=1|269=0|270=1.1316|271=1000000|290=11|20056=25|20057=1|269=0|270=1.13159|271=1000000|290=12|20056=25|20057=1|269=0|270=1.13158|271=1000000|290=13|20056=25|20057=1|269=0|270=1.13157|271=1000000|290=14|20056=25|20057=1|269=0|270=1.13156|271=2000000|290=15|20056=25|20057=1|269=0|270=1.13155|271=1000000|290=16|20056=25|20057=1|269=0|270=1.13153|271=3000000|290=17|20056=25|20057=1|269=0|270=1.13152|271=1000000|290=18|20056=25|20057=1|269=0|270=1.13151|271=10500000|290=19|20056=25|20057=1|269=0|270=1.1315|271=5000000|290=20|20056=25|20057=1|269=0|270=1.13149|271=2000000|290=21|20056=25|20057=1|269=0|270=1.13148|271=1500000|290=22|20056=25|20057=1|269=0|270=1.13147|271=1000000|290=23|20056=25|20057=1|269=0|270=1.13146|271=8000000|290=24|20056=25|20057=1|269=0|270=1.13145|271=1000000|290=25|20056=25|20057=1|10=090|
    8=FIX.4.4|9=246|35=W|34=36|49=AT|52=20200611-17:46:41.637|56=BANZAI|48=25|55=EURUSD|262=BANZ-MD-1591897601315-23|20051=TICK|268=2|269=0|270=1.13152|271=1000000|272=20200611|273=17:46:41.622|290=1|269=1|270=1.13153|271=4000000|272=20200611|273=17:46:41.622|290=1|10=047|

    Example of Security List Request requesting a Symbol for particular securityId (i.e. client specifies securityID and wants to get a Symbol for this security), followed by Security List as a response

    8=FIX.4.4|9=91|35=x|34=23|49=BANZAI|52=20200703-08:08:05.560|56=AT|48=25|320=BANZ-REF-1593763685561|559=0|10=162|
    https://fix.aprics.net/#?q=8%3DFIX.4.4%7C9%3D91%7C35%3Dx%7C34%3D23%7C49%3DBANZAI%7C52%3D20200703-08:08:05.560%7C56%3DAT%7C48%3D25%7C320%3DBANZ-REF-1593763685561%7C559%3D0%7C10%3D162%7C%0A8%3DFIX.4.4%7C9%3D955%7C35%3Dy%7C34%3D23%7C49%3DAT%7C52%3D20200703-08:08:05.564%7C56%3DBANZAI%7C320%3DBANZ-REF-1593763685561%7C322%3DBANZ-REF-1593763685561-response%7C560%3D0%7C20010%3D1%7C48%3D25%7C55%3DEURUSD%7C20055%3DFOREX%7C100%3D1%7C20015%3D26%7C20016%3DMIN_QTY%7C20017%3D1E-8%7C20016%3DIS_CRYPTO%7C20017%3Dfalse%7C20016%3DIS_TRADEABLE%7C20017%3Dtrue%7C20016%3DXNTID%7C20017%3DEUR%2FUSD.E.FX%7C20016%3DMIN_PRICE%7C20017%3D1E-8%7C20016%3DIS_SYNTHETIC%7C20017%3Dfalse%7C20016%3DIS_FIAT%7C20017%3Dtrue%7C20016%3DBASE_CURRENCY%7C20017%3DEUR%7C20016%3DQUANDL_DATABASE%7C20017%3DCUR%7C20016%3DQUANDL_DATASET%7C20017%3DEUR_INVERSE%7C20016%3DQTY_INCR%7C20017%3D1%7C20016%3DPRICE_INCR%7C20017%3D0.00005%7C20016%3DEXCHANGE%7C20017%3DIDEALPRO%7C20016%3DPRICE_SCALE%7C20017%3D5%7C20016%3DLMAXID%7C20017%3D4001%7C20016%3DIS_INVERSE_CONTRACT%7C20017%3Dfalse%7C20016%3DBBGID%7C20017%3DBBG0013HGRV5%7C20016%3DCONID%7C20017%3D12087792%7C20016%3DMAX_QTY%7C20017%3D999999999999999%7C20016%3DSYMBOL%7C20017%3DEURUSD%7C20016%3DQUANTITY_SCALE%7C20017%3D0%7C20016%3DCONTRACT_SIZE%7C20017%3D1.0%7C20016%3DMIN_NOTIONAL%7C20017%3D1E-8%7C20016%3DQUOTE_CURRENCY%7C20017%3DUSD%7C20016%3DMAX_PRICE%7C20017%3D999999999999999%7C20016%3DSECURITY_FAMILY%7C20017%3DUSD%20FX%7C10%3D246%7C%0A

    Example of Security List Request requesting a securityID(s) for symbol (note: request can contain several securities with the same Symbol, for example from different providers), followed by Security List as a response

    8=FIX.4.4|9=97|35=x|34=24|49=BANZAI|52=20200703-08:08:32.606|56=AT|55=BTCUSD|320=BANZ-REF-1593763712611|559=100|10=090|
    8=FIX.4.4|9=1846|35=y|34=24|49=AT|52=20200703-08:08:32.650|56=BANZAI|320=BANZ-REF-1593763712611|322=BANZ-REF-1593763712611-response|560=0|20010=3|48=7947|55=BTCUSD|107=BTC/USD@B2C2|20055=FOREX|100=7936|20015=16|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=BTC|20016=SYMBOL|20017=BTCUSD|20016=DESCRIPTION|20017=BTC/USD@B2C2|20016=QUANTITY_SCALE|20017=8|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=1E-8|20016=PRICE_INCR|20017=1E-8|20016=EXCHANGE|20017=B2C2|20016=ADAPTER_TICKER|20017=BTCUSD.SPOT|20016=PRICE_SCALE|20017=8|20016=IS_INVERSE_CONTRACT|20017=false|48=6911|55=BTCUSD|107=BTC/USD@CoinbasePro|20055=FOREX|100=6875|20015=16|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=BTC|20016=SYMBOL|20017=BTCUSD|20016=DESCRIPTION|20017=BTC/USD@CoinbasePro|20016=QUANTITY_SCALE|20017=3|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=0.001|20016=PRICE_INCR|20017=0.01|20016=EXCHANGE|20017=CoinbasePro|20016=ADAPTER_TICKER|20017=BTC-USD|20016=PRICE_SCALE|20017=2|20016=IS_INVERSE_CONTRACT|20017=false|48=6970|55=BTCUSD|107=BTC/USD@LMAXDigital|20055=FOREX|100=6969|20015=18|20016=MIN_QTY|20017=0.01|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=BTC|20016=SYMBOL|20017=BTCUSD|20016=DESCRIPTION|20017=BTC/USD@LMAXDigital|20016=QUANTITY_SCALE|20017=2|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=0.01|20016=PRICE_INCR|20017=0.001|20016=EXCHANGE|20017=LMAXDigital|20016=ADAPTER_TICKER|20017=5004|20016=PRICE_SCALE|20017=3|20016=LMAXID|20017=5004|20016=IS_INVERSE_CONTRACT|20017=false|10=191|

    Example of Security List Request requesting all securities for a particular asset classes (FOREX), followed by Security List as a response. Note: fix message is cut as there are 202 entries in the response.

    8=FIX.4.4|9=100|35=x|34=133|49=BANZAI|52=20200703-08:59:38.672|56=AT|320=BANZ-REF-1593766778689|559=101|20055=FOREX|10=043|
    8=FIX.4.4|9=125131|35=y|34=133|49=AT|52=20200703-08:59:38.813|56=BANZAI|320=BANZ-REF-1593766778689|322=BANZ-REF-1593766778689-response|560=0|20010=202|48=12|55=EURCZK|20055=FOREX|100=1|20015=24|20016=MIN_QTY|20017=1E-8|20016=IS_CRYPTO|20017=false|20016=BBGID|20017=BBG0013HQG11|20016=IS_TRADEABLE|20017=true|20016=MIN_PRICE|20017=1E-8|20016=CONID|20017=75015678|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=true|20016=BASE_CURRENCY|20017=EUR|20016=MAX_QTY|20017=999999999999999|20016=SYMBOL|20017=EURCZK|20016=QUANDL_DATABASE|20017=CUR|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=MIN_NOTIONAL|20017=1E-8|20016=QUOTE_CURRENCY|20017=CZK|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.0005|20016=EXCHANGE|20017=IDEALPRO|20016=MAX_PRICE|20017=999999999999999|20016=PRICE_SCALE|20017=4|20016=LMAXID|20017=100479|20016=SECURITY_FAMILY|20017=CZK FX|20016=IS_INVERSE_CONTRACT|20017=false|48=6892|55=KNCBTC|107=KNC/BTC@CoinbasePro|20055=FOREX|100=6875|20015=16|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=KNC|20016=SYMBOL|20017=KNCBTC|20016=DESCRIPTION|20017=KNC/BTC@CoinbasePro|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=BTC|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=1E-8|20016=EXCHANGE|20017=CoinbasePro|20016=ADAPTER_TICKER|20017=KNC-BTC|20016=PRICE_SCALE|20017=8|20016=IS_INVERSE_CONTRACT|20017=false|48=25|55=EURUSD|20055=FOREX|100=1|20015=26|20016=MIN_QTY|20017=1E-8|20016=IS_CRYPTO|20017=false|20016=IS_TRADEABLE|20017=true|20016=XNTID|20017=EUR/USD.E.FX|20016=MIN_PRICE|20017=1E-8|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=true|20016=BASE_CURRENCY|20017=EUR|20016=QUANDL_DATABASE|20017=CUR|20016=QUANDL_DATASET|20017=EUR_INVERSE|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.00005|20016=EXCHANGE|20017=IDEALPRO|20016=PRICE_SCALE|20017=5|20016=LMAXID|20017=4001|20016=IS_INVERSE_CONTRACT|20017=false|20016=BBGID|20017=BBG0013HGRV5|20016=CONID|20017=12087792|20016=MAX_QTY|20017=999999999999999|20016=SYMBOL|20017=EURUSD|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=MIN_NOTIONAL|20017=1E-8|20016=QUOTE_CURRENCY|20017=USD|20016=MAX_PRICE|20017=999999999999999|20016=SECURITY_FAMILY|20017=USD FX|48=6893|55=BCHEUR|107=BCH/EUR@CoinbasePro|20055=FOREX|100=6875|20015=16|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=BCH|20016=SYMBOL|20017=BCHEUR|20016=DESCRIPTION|20017=BCH/EUR@CoinbasePro|20016=QUANTITY_SCALE|20017=2|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=EUR|20016=QTY_INCR|20017=0.01|20016=PRICE_INCR|20017=0.01|20016=EXCHANGE|20017=CoinbasePro|20016=ADAPTER_TICKER|20017=BCH-EUR|20016=PRICE_SCALE|20017=2|20016=IS_INVERSE_CONTRACT|20017=false|48=6983|55=XRPEUR|107=XRP/EUR@LMAXDigital|20055=FOREX|100=6969|20015=18|20016=MIN_QTY|20017=1|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=XRP|20016=SYMBOL|20017=XRPEUR|20016=DESCRIPTION|20017=XRP/EUR@LMAXDigital|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=EUR|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.00001|20016=EXCHANGE|20017=LMAXDigital|20016=ADAPTER_TICKER|20017=5020|20016=PRICE_SCALE|20017=5|20016=LMAXID|20017=5020|20016=IS_INVERSE_CONTRACT|20017=false|48=7994|55=LTCETH|107=LTC/ETH@B2C2|20055=FOREX|100=7936|20015=16|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=LTC|20016=SYMBOL|20017=LTCETH|20016=DESCRIPTION|20017=LTC/ETH@B2C2|20016=QUANTITY_SCALE|20017=8|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=ETH|20016=QTY_INCR|20017=1E-8|20016=PRICE_INCR|20017=1E-8|20016=EXCHANGE|20017=B2C2|20016=ADAPTER_TICKER|20017=LTCETH.SPOT|20016=PRICE_SCALE|20017=8|20016=IS_INVERSE_CONTRACT|20017=false|48=6880|55=CVCUSDC|107=CVC/USDC@CoinbasePro|20055=FOREX|100=6875|20015=16|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=CVC|20016=SYMBOL|20017=CVCUSDC|20016=DESCRIPTION|20017=CVC/USDC@CoinbasePro|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=USDC|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.000001|20016=EXCHANGE|20017=CoinbasePro|20016=ADAPTER_TICKER|20017=CVC-USDC|20016=PRICE_SCALE|20017=6|20016=IS_INVERSE_CONTRACT|20017=false|10=106|

    Example of Security List Request requesting all securities for a particular asset classes (COMBINATION) for which there are no any info, followed by Security List as a response.

    8=FIX.4.4|9=105|35=x|34=58|49=BANZAI|52=20200703-08:22:06.333|56=AT|320=BANZ-REF-1593764526349|559=101|20055=COMBINATION|10=142|
    8=FIX.4.4|9=142|35=y|34=58|49=AT|52=20200703-08:22:06.434|56=BANZAI|58=no securities found|320=BANZ-REF-1593764526349|322=BANZ-REF-1593764526349-reject|560=2|10=114|

    Example of Security List Request requesting all securities, followed by Security List as a response. Note: fix message is cut as there are 711 entries in the response.

    8=FIX.4.4|9=85|35=x|34=34|49=BANZAI|52=20200703-08:12:42.645|56=AT|320=BANZ-REF-1593763962653|559=4|10=154|
    8=FIX.4.4|9=497431|35=y|34=34|49=AT|52=20200703-08:12:42.846|56=BANZAI|320=BANZ-REF-1593763962653|322=BANZ-REF-1593763962653-response|560=0|20010=711|48=562|55=UTX|107=UNITED TECHNOLOGIES CORP|20055=STOCK|100=2|20015=22|20016=MIN_QTY|20017=1E-8|20016=BBGID|20017=BBG000BW8S60|20016=IS_TRADEABLE|20017=true|20016=MIN_PRICE|20017=1E-8|20016=CONID|20017=13364|20016=IS_SYNTHETIC|20017=false|20016=MAX_QTY|20017=999999999999999|20016=SYMBOL|20017=UTX|20016=DESCRIPTION|20017=UNITED TECHNOLOGIES CORP|20016=QUANDL_DATABASE|20017=EOD|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=QUANDL_DATASET|20017=UTX|20016=MIN_NOTIONAL|20017=1E-8|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.01|20016=EXCHANGE|20017=SMART|20016=MAX_PRICE|20017=999999999999999|20016=PRICE_SCALE|20017=2|20016=SECURITY_FAMILY|20017=S&P 500 Stocks|20016=IS_INVERSE_CONTRACT|20017=false|48=12|55=EURCZK|20055=FOREX|100=1|20015=24|20016=MIN_QTY|20017=1E-8|20016=IS_CRYPTO|20017=false|20016=BBGID|20017=BBG0013HQG11|20016=IS_TRADEABLE|20017=true|20016=MIN_PRICE|20017=1E-8|20016=CONID|20017=75015678|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=true|20016=BASE_CURRENCY|20017=EUR|20016=MAX_QTY|20017=999999999999999|20016=SYMBOL|20017=EURCZK|20016=QUANDL_DATABASE|20017=CUR|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=MIN_NOTIONAL|20017=1E-8|20016=QUOTE_CURRENCY|20017=CZK|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.0005|20016=EXCHANGE|20017=IDEALPRO|20016=MAX_PRICE|20017=999999999999999|20016=PRICE_SCALE|20017=4|20016=LMAXID|20017=100479|20016=SECURITY_FAMILY|20017=CZK FX|20016=IS_INVERSE_CONTRACT|20017=false|48=479|55=PYPL|107=PayPal|20055=STOCK|100=2|20015=22|20016=MIN_QTY|20017=1E-8|20016=BBGID|20017=BBG0077VNXV6|20016=IS_TRADEABLE|20017=true|20016=MIN_PRICE|20017=1E-8|20016=CONID|20017=199169591|20016=IS_SYNTHETIC|20017=false|20016=MAX_QTY|20017=999999999999999|20016=SYMBOL|20017=PYPL|20016=DESCRIPTION|20017=PayPal|20016=QUANDL_DATABASE|20017=EOD|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=QUANDL_DATASET|20017=PYPL|20016=MIN_NOTIONAL|20017=1E-8|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.01|20016=EXCHANGE|20017=SMART|20016=MAX_PRICE|20017=999999999999999|20016=PRICE_SCALE|20017=2|20016=SECURITY_FAMILY|20017=S&P 500 Stocks|20016=IS_INVERSE_CONTRACT|20017=false|48=120|55=AFL|107=AFLAC INC|20055=STOCK|100=2|20015=22|20016=MIN_QTY|20017=1E-8|20016=BBGID|20017=BBG000BBBNC6|20016=IS_TRADEABLE|20017=true|20016=MIN_PRICE|20017=1E-8|20016=CONID|20017=4227|20016=IS_SYNTHETIC|20017=false|20016=MAX_QTY|20017=999999999999999|20016=SYMBOL|20017=AFL|20016=DESCRIPTION|20017=AFLAC INC|20016=QUANDL_DATABASE|20017=EOD|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=QUANDL_DATASET|20017=AFL|20016=MIN_NOTIONAL|20017=1E-8|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.01|20016=EXCHANGE|20017=SMART|20016=MAX_PRICE|20017=999999999999999|20016=PRICE_SCALE|20017=2|20016=SECURITY_FAMILY|20017=S&P 500 Stocks|20016=IS_INVERSE_CONTRACT|20017=false|48=453|55=PDCO|107=PATTERSON COS INC|20055=STOCK|100=2|20015=22|20016=MIN_QTY|20017=1E-8|20016=BBGID|20017=BBG000BQY289|20016=IS_TRADEABLE|20017=true|20016=MIN_PRICE|20017=1E-8|20016=CONID|20017=273035|20016=IS_SYNTHETIC|20017=false|20016=MAX_QTY|20017=999999999999999|20016=SYMBOL|20017=PDCO|20016=DESCRIPTION|20017=PATTERSON COS INC|20016=QUANDL_DATABASE|20017=EOD|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=QUANDL_DATASET|20017=PDCO|20016=MIN_NOTIONAL|20017=1E-8|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.01|20016=EXCHANGE|20017=SMART|20016=MAX_PRICE|20017=999999999999999|20016=PRICE_SCALE|20017=2|20016=SECURITY_FAMILY|20017=S&P 500 Stocks|20016=IS_INVERSE_CONTRACT|20017=false|48=6892|55=KNCBTC|107=KNC/BTC@CoinbasePro|48=7947|55=BTCUSD|107=BTC/USD@B2C2|20055=FOREX|100=7936|20015=16|20016=IS_CRYPTO|20017=true|20016=IS_TRADEABLE|20017=true|20016=IS_SYNTHETIC|20017=false|20016=IS_FIAT|20017=false|20016=BASE_CURRENCY|20017=BTC|20016=SYMBOL|20017=BTCUSD|20016=DESCRIPTION|20017=BTC/USD@B2C2|20016=QUANTITY_SCALE|20017=8|20016=CONTRACT_SIZE|20017=1.0|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=1E-8|20016=PRICE_INCR|20017=1E-8|20016=EXCHANGE|20017=B2C2|20016=ADAPTER_TICKER|20017=BTCUSD.SPOT|20016=PRICE_SCALE|20017=8|20016=IS_INVERSE_CONTRACT|20017=false|48=184|55=CELG|107=CELGENE CORP|20055=STOCK|100=2|20015=22|20016=MIN_QTY|20017=1E-8|20016=BBGID|20017=BBG000BFC8J2|20016=IS_TRADEABLE|20017=true|20016=MIN_PRICE|20017=1E-8|20016=CONID|20017=267455|20016=IS_SYNTHETIC|20017=false|20016=MAX_QTY|20017=999999999999999|20016=SYMBOL|20017=CELG|20016=DESCRIPTION|20017=CELGENE CORP|20016=QUANDL_DATABASE|20017=EOD|20016=QUANTITY_SCALE|20017=0|20016=CONTRACT_SIZE|20017=1.0|20016=QUANDL_DATASET|20017=CELG|20016=MIN_NOTIONAL|20017=1E-8|20016=QUOTE_CURRENCY|20017=USD|20016=QTY_INCR|20017=1|20016=PRICE_INCR|20017=0.01|20016=EXCHANGE|20017=SMART|20016=MAX_PRICE|20017=999999999999999|20016=PRICE_SCALE|20017=2|20016=SECURITY_FAMILY|20017=S&P 500 Stocks|20016=IS_INVERSE_CONTRACT|20017=false|10=025|

    Example of Security List Request requesting all accounts defined in the system, followed by Security List as a response

    8=FIX.4.4|9=103|35=x|34=23|49=BANZAI|52=20200612-08:05:49.576|56=AT|48=25|55=BTCUSD|320=BANZ-REF-1591949149582|559=120|10=169|
    8=FIX.4.4|9=446|35=y|34=23|49=AT|52=20200612-08:05:49.586|56=BANZAI|320=BANZ-REF-1591949149582|322=BANZ-REF-1591949149582-response|560=0|20012=19|1=114|20008=XNT|1=103|20008=TT|1=6876|20008=CNB|1=7937|20008=B2C2|1=109|20008=LMAXG|1=105|20008=JPM|1=116|20008=LMAXD|1=110|20008=NXS|1=112|20008=PXM|1=102|20008=RT|1=115|20008=OZ|1=113|20008=SG|1=107|20008=DC|1=108|20008=FXCM|1=106|20008=UBS|1=111|20008=FTX|1=100|20008=IB_NATIVE|1=104|20008=CNX|1=101|20008=IB_FIX|10=250|

    Example of Security List Request requesting all exchanges defined in the system, followed by Security List as a response

    8=FIX.4.4|9=103|35=x|34=25|49=BANZAI|52=20200612-08:06:23.000|56=AT|48=25|55=BTCUSD|320=BANZ-REF-1591949183008|559=110|10=136|
    8=FIX.4.4|9=1225|35=y|34=25|49=AT|52=20200612-08:06:23.018|56=BANZAI|320=BANZ-REF-1591949183008|322=BANZ-REF-1591949183008-response|560=0|20011=32|100=120|207=CBOE|20003=N|20004=Y|100=114|207=HKFE|20003=N|20004=Y|100=103|207=ICEUS|20003=N|20004=Y|100=2|207=SMART|20003=Y|20004=Y|100=7936|207=B2C2|20003=Y|20004=N|100=5|207=NASDAQOMX|20003=N|20004=Y|100=109|207=ICEEU|20003=N|20004=Y|100=105|207=MONEP|20003=N|20004=Y|100=116|207=SNFE|20003=N|20004=Y|100=110|207=OMS|20003=N|20004=Y|100=124|207=CFECRYPTO|20003=N|20004=Y|100=112|207=SGX|20003=N|20004=Y|100=102|207=NYMEX|20003=N|20004=Y|100=122|207=CME|20003=N|20004=Y|100=118|207=NYBOT|20003=N|20004=Y|100=1|207=IDEALPRO|20003=Y|20004=Y|100=119|207=MATIF|20003=N|20004=Y|100=6875|207=Coinbase|20003=Y|20004=N|100=115|207=OSE.JPN|20003=N|20004=Y|100=121|207=CFE|20003=N|20004=Y|100=113|207=CDE|20003=N|20004=Y|100=125|207=Exante|20003=Y|20004=Y|100=107|207=MEFFRV|20003=N|20004=Y|100=108|207=IDEM|20003=N|20004=Y|100=106|207=DTB|20003=N|20004=Y|100=111|207=SOFFEX|20003=N|20004=Y|100=100|207=GLOBEX|20003=N|20004=Y|100=6969|207=LMAX Digital|20003=Y|20004=N|100=104|207=FTA|20003=N|20004=Y|100=101|207=ECBOT|20003=N|20004=Y|100=123|207=CMECRYPTO|20003=N|20004=Y|100=117|207=IPE|20003=N|20004=Y|10=115|