<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
*
 * Copyright (C) 2015 MarketFactory, Inc. All rights reserved.
 * Use in source and binary forms, with or without modification, is permitted provided that the following conditions are met:
 * 1. You may only use this software for internal evaluation and testing purposes and may not use the software for engaging
 * in live trades, unless and until you have entered into a separate agreement with MarketFactory governing the use of
 * MarketFactory software in a production environment.
 * 2. You may not distribute the software (in either source or binary forms) to third parties.
 * 3. All copies of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
 *    THIS SOFTWARE IS PROVIDED BY MARKETFACTORY AND ITS LICENSORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
 *    BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
 *    NO EVENT SHALL MARKETFACTORY OR ITS LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 *    OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 *    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * CHANGELOG
 * Jan 29 2020 - Ver4 Deprecated the ResendRequest message. Added a new ExecType enum value 'Restated'.
 * Apr 30 2023 - Ver400 mfproto-trading-400 Breaking change. ExecutionReport ExecID and TradeID fields increased length to 64.
 *               Moved to version 400 because it's a breaking change branched from version 4.
 -->
<sbe:messageSchema xmlns:sbe="http://www.fixprotocol.org/ns/simple/RC3"
                   package="mftrading"
                   id="2"
                   version="400"
                   semanticVersion="MF-FIX5.0SP2"
                   description="Schema for order messages to MF.  Based on FIX5.0SP2 spec. The protocol supports TCP, UDP unicast, shared memory, and reliable UDP multicast transports."
                   byteOrder="littleEndian">
    <!-- SBE defined types -->
    <types>
        <composite name="messageHeader" description="The SBE header that is part of each message.">
            <type name="blockLength" primitiveType="uint16" description=" The length of the message root block before repeating groups or variable data commences."/>
            <type name="templateId"  primitiveType="uint16" description="The identifier for the template type of the message that is to follow."/>
            <type name="schemaId"    primitiveType="uint16" description="The identifier for the schema that defines the message."/>
            <type name="version"     primitiveType="uint16" description="The version of the schema allowing for extension."/>
        </composite>
        <composite name="varDataEncoding" description="Definition for a variable length string.">
            <type name="length"  primitiveType="uint8" description="Length of string." maxValue="1300"/>
            <type name="varData" primitiveType="uint8" description="Array of UTF-8 characters." length="0" characterEncoding="UTF-8"/>
        </composite>
        <composite name="groupSizeEncoding" description="Repeating group dimensions." semanticType="NumInGroup">
            <type name="blockLength" description="Length of element."                  primitiveType="uint8"/>
            <type name="numInGroup"  description="Number of items in repeating group." primitiveType="uint8"/>
        </composite>
    </types>
    <!-- Primitive types -->
    <types>
        <type name="CharNULL" description="Nullable character." presence="optional" nullValue="0" primitiveType="char" semanticType="char"/>
        <type name="Int32NULL" description="Nullable, signed 32-bit integer." presence="optional" nullValue="-2147483648" primitiveType="int32" semanticType="int"/>
        <type name="Int8NULL" description="Nullable, signed 8-bit integer." presence="optional" nullValue="-128"        primitiveType="int8"/>
        <type name="uInt32NULL" description="Nullable, unsigned 32-bit integer." presence="optional" nullValue="4294967295"  primitiveType="uint32"/>
        <type name="uInt8NULL" description="Nullable, unsigned 8-bit integer." presence="optional" nullValue="255"         primitiveType="uint8"/>
        <type name="LocalMktDate" description="Local calendar date in days since epoch."   presence="optional" nullValue="65535"       primitiveType="uint16" semanticType="LocalMktDate"/>
        <type name="SeqNum"       presence="optional" description="Sequence number for detecting missed messages. Can be null in the case of a rejected order, a rejected cancel request, or a rejected cancel replace request." primitiveType="uint32" nullValue="4294967295" semanticType="SeqNum"/>
        <type name="MDComponentValue" description="An untyped array for storing a value." primitiveType="uint8" length="32"/>
        <type name="SecurityID"   description="Numeric ID of a given security." primitiveType="uint32"/>
        <type name="VenueID"      description="Numeric ID of a given venue." nullValue="4294967295" primitiveType="uint32"/>
        <type name="Timestamp"    description="Number of nanoseconds since epoch" primitiveType="uint64"/>
        <type name="OrderID" presence="optional" nullValue="18446744073709551615"   description="Order ID assigned by MF." primitiveType="uint64"/>
    </types>
    <!-- String types -->
    <types>
        <type name="Text"              description="Free format text string."                  length="64"  primitiveType="char" semanticType="String"/>
        <type name="SecurityRequestID" description="UniqueID for security definition request." length="32"  primitiveType="char" semanticType="String"/>
        <type name="Symbol"            description="Identifier for a security."                length="32"  primitiveType="char" semanticType="String"/>
        <type name="Username"          description="Id given to user for logging on."          length="32"  primitiveType="char" semanticType="String"/>
        <type name="Password"          description="Password used to logon."                   length="32"  primitiveType="char" semanticType="String"/>
    </types>
    <!-- Price and Qty types -->
    <types>
        <composite name="DecimalQtyNULL" description="A number representing quantity" semanticType="Qty">
            <type name="mantissa" description="The significant digits of the quantity value with an optional NULL value." primitiveType="int64" presence="optional" nullValue="-9223372036854775807"/>
            <type name="exponent" description="The scale of the decimal number as a power of 10."                         primitiveType="int8"  presence="constant">-5</type>
        </composite>
        <composite name="PriceNULL" description="Price NULL" semanticType="Price">
            <type name="mantissa" description="The significant digits of the price value with an optional NULL value." primitiveType="int64" presence="optional" nullValue="-9223372036854775807"/>
            <type name="exponent" description="The scale of the decimal number as a power of 10."                      primitiveType="int8"  presence="constant">-9</type>
        </composite>
    </types>
    <types>
        <type name="ClOrdIDString" description="ID constructed by client to build order.  It is restricted in the following ways:
                                                     1.  Must be less than 20 characters.
                                                     2.  All valid ASCII from decimal 32 to decimal 126 excluding
                                                         ~`_!*,-:=[]" primitiveType="char" length="32"/>
        <type name="OrderIDString" description="Fixed length string type for IDs assigned by venues." primitiveType="char" length="32"/>
        <type name="OrderIDStringExtra" description="Fixed length string type for IDs assigned by venues." primitiveType="char" length="64"/>
        <!-- FIX types -->
        <enum name="Boolean" encodingType="char" description="Indicates if this message may have already been processed (it is a resent message)." semanticType="Boolean">
            <validValue name="True">Y</validValue>
            <validValue name="False">N</validValue>
        </enum>
        <enum name="Side" description="Side" encodingType="char">
            <validValue name="Buy">1</validValue>
            <validValue name="Sell">2</validValue>
        </enum>
        <enum name="OrdType" encodingType="CharNULL">
            <validValue name="Market" description="Standard Market order. Buys or sells the order quantity regardless of price.">1</validValue>
            <validValue name="Limit" description="Standard Limit order. Buys or sells the order quantity without exceeding the order's price.">2</validValue>
            <validValue name="StopLoss" description="Standard Stop Loss order. Executes an exposure reducing market order when market exceeds order's price.">3</validValue>
            <validValue name="StopLimit" description="Standard Stop Limit order. Executes an exposure reducing limit order when market exceeds order's price.">4</validValue>
            <validValue name="MarketWithLeftOverAsLimit" description="Order that starts as a Market order and executes any leaves quantity as a limit order.">K</validValue>
            <validValue name="PreviouslyQuoted" description="An order to hit an individual quote.  To hit multiple quotes, aka sweeping,
                                                             the user must submit individual orders from best to worst price.">D</validValue>
            <validValue name="VwapSweep" description="An order that can hit/lift one or multiple quotes by submitting an order
                with the desired amount and the Volume Weighted Average Price (VWAP) of the total amount.">y</validValue>
            <validValue name="PreviouslyQuotedAmountTier" description="An order to hit an individual quote within a
                Amount Tier Quote Book.Only one tier may be executed on per collection.">z</validValue>
        </enum>
        <enum name="TimeInForce" encodingType="char">
            <validValue name="Day">0</validValue>
            <validValue name="GTC">1</validValue>
            <validValue name="IOC">3</validValue>
            <validValue name="FOK">4</validValue>
        </enum>
        <enum name="SecurityRequestType" description="Market data security request type." encodingType="uint8">
            <validValue name="AllSecurities" description="Request for all securities.">8</validValue>
        </enum>
        <type name="StrategyParameter" description="Extra execution information. Used to config algos, add extra venue-specific order details (for example, iceberg parameters), or other non-standard data." presence="optional" primitiveType="char" length="32" semanticType="String"/>
        <enum name="StrategyParameterType" description="Type of the extra execution inforamtion." encodingType="uint8">
            <validValue name="Int">1</validValue>
            <validValue name="Length">2</validValue>
            <validValue name="NumInGroup">3</validValue>
            <validValue name="SeqNum">4</validValue>
            <validValue name="TagNum">5</validValue>
            <validValue name="Float">6</validValue>
            <validValue name="Qty">7</validValue>
            <validValue name="Price">8</validValue>
            <validValue name="PriceOffset">9</validValue>
            <validValue name="Amt">10</validValue>
            <validValue name="Percentage">11</validValue>
            <validValue name="Char">12</validValue>
            <validValue name="Boolean">13</validValue>
            <validValue name="String">14</validValue>
            <validValue name="MultipleCharValue">15</validValue>
            <validValue name="Currency">17</validValue>
            <validValue name="MonthYear">18</validValue>
            <validValue name="UTCTimestamp">19</validValue>
            <validValue name="UTCTimeOnly">20</validValue>
            <validValue name="LocalMktDate">21</validValue>
            <validValue name="data">23</validValue>
            <validValue name="MultipleStringValue">24</validValue>
            <validValue name="Country">25</validValue>
            <validValue name="Language">26</validValue>
            <validValue name="TZTimeOnly">27</validValue>
            <validValue name="TZTimestamp">28</validValue>
            <validValue name="Tenor">29</validValue>
        </enum>
        <enum name="SubscriptionRequestType" description="Type of subscription request." encodingType="char">
            <validValue name="Subscribe">1</validValue>
            <validValue name="Unsubscribe">2</validValue>
        </enum>
        <enum name="TradingSubscriptionStatus" description="Status of trading subscription." encodingType="uint8">
            <validValue name="Enabled">0</validValue>
            <validValue name="Disabled">1</validValue>
            <validValue name="RequestRejected">2</validValue>
            <validValue name="NextExpectedMsgSeqNumTooHigh" description="A rejection the indicates bad seqNum on subscription">3</validValue>
        </enum>
        <enum name="TradSesStatus" description="Status of a trading session." encodingType="uint8">
            <validValue name="Open" description="Market is open and ready to trade.">2</validValue>
            <validValue name="Closed" description="Market is not trading.">3</validValue>
            <validValue name="PrimeBrokerLoggedOff" description="Reuters specific.  The PB is logged off and therefore
                                                                 new orders are not able to be submitted.">250</validValue>
            <validValue name="CreditLow" description="EBS specific credit status.">252</validValue>
            <validValue name="CreditExhausted" description="EBS specific credit status.">253</validValue>
            <validValue name="Disconnected" description="MF is not connected to the venue, therfore trading is unavailable.">254</validValue>
        </enum>
        <enum name="OrdStatus" description="Order status." encodingType="char">
            <validValue name="New">0</validValue>
            <validValue name="PartiallyFilled">1</validValue>
            <validValue name="Filled">2</validValue>
            <validValue name="Canceled">4</validValue>
            <validValue name="Rejected">8</validValue>
            <validValue name="Error" description="Used for Reuters/EBS when a trade fails validation.  Also used
                                                  when an order goes into a bad state.  Both situations
                                                  require manual intervention.">Y</validValue>
            <validValue name="ReceivedByMF">Z</validValue>
        </enum>
        <enum name="ExecType" description="Execution Type." encodingType="char">
            <validValue name="New">0</validValue>
            <validValue name="Canceled">4</validValue>
            <validValue name="Rejected">8</validValue>
            <validValue name="Trade">F</validValue>
            <validValue name="CanceledLastLook" description="Fastmatch returns an indication that the Cancel reason is 
                                                             that the order was rejected because of a Last Look">W</validValue>
            <validValue name="PendingMatch" description="Used for Reuters and EBS when there is an execution
                                                         that is awaiting validation.">X</validValue>
            <validValue name="Error" description="Used for Reuters/EBS when a trade fails validation.  Also used
                                                  when an order goes into a bad state.  Both situations
                                                  require manual intervention.">Y</validValue>
            <validValue name="ReceivedByMF">Z</validValue>
            <validValue name="Restated" description="Resent message. No information has changed from previous. Ignorable. "
                        sinceVersion="4">D</validValue>
        </enum>
        <enum name="CxlRejReason" description="Cancel Request Rejection Reason." encodingType="uint8">
            <validValue name="TooLateToCancel">0</validValue>
            <validValue name="UnknownOrder">1</validValue>
            <validValue name="DuplicateClOrdIDReceived">6</validValue>
            <validValue name="Other">99</validValue>
        </enum>
    </types>

    <!-- Session messages -->
    <sbe:message name="Logon" id="0" description="Used to logon to a trading data session." semanticType="A">
        <field name="Username" id="533" type="Username" semanticType="String"/>
        <field name="Password" id="554" type="Password" semanticType="String"/>
    </sbe:message>
    <sbe:message name="LogonResponse" id="1" description="An acknowledgement from the server that the logon was successful as well as the expected heartbeat interval." semanticType="A">
    </sbe:message>
    <sbe:message name="ResendRequest" id="2" description="Deprecated - Use the TradingSessionStatus mechanism to replay" semanticType="2">
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="BeginSeqNo" id="7" type="SeqNum" semanticType="SeqNum"/>
        <field name="Count" id="20018" type="uint32" semanticType="int" description="Number of messages, starting at the BeginSeqNo, to resend."/>
    </sbe:message>
    <sbe:message name="SequenceResetGapFill" id="3" description="A request to replay messages for a given venue" semanticType="4">
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="NewSeqNo" id="36" type="SeqNum" semanticType="SeqNum"/>
    </sbe:message>
    <sbe:message name="TradingSessionStatusRequest" id="4" description="A request to subscribe to a venue in order to begin trading." semanticType="g">
        <field name="SubscriptionRequestType" id="263" type="SubscriptionRequestType" semanticType="char"/>
        <field name="VenueID"   id="20022" type="VenueID"/>
        <field name="NextExpectedMsgSeqNum" id="789" type="SeqNum" semanticType="SeqNum"/>
    </sbe:message>
    <sbe:message name="TradingSessionStatus" id="5" description="A response to a TradingSessionStatusRequest indicating the state of the venue.
                                                                 This event will be sent if the state of the venue changes." semanticType="g">
        <field name="VenueID"   id="20022" type="VenueID"/>
        <field name="TradingSubscriptionStatus" id="20020" type="TradingSubscriptionStatus"/>
        <field name="TradSesStatus" id="263" type="TradSesStatus" semanticType="int"/>
        <field name="Text" id="58" type="Text" description="Explanation of status state, if any."/>
    </sbe:message>
    <sbe:message name="Heartbeat" id="7" description="This is sent from each side of the connection periodically." semanticType="0">
        <field name="VenueID" id="20022" type="VenueID"/>
        <field name="CurrentSeqNum" id="20019" type="SeqNum" description="This is the last sequence number sent.  Used to detect message drops." />
    </sbe:message>
    <sbe:message name="Logout" id="8" description="A request to stop the session." semanticType="5">
        <field name="Text" id="58" type="Text" description="Free format text string. May include reason for logout." semanticType="String"/>
    </sbe:message>
    <sbe:message name="LogoutResponse" id="9" description="An acknowledgement that the session has been terminated." semanticType="5"/>

    <!-- Configuration information -->
    <sbe:message name="MarketDefinitionRequest" id="10" description="Request for a definition of the venue." semanticType="BT">
        <field name="SubscriptionRequestType" id="263" type="SubscriptionRequestType" />
    </sbe:message>
    <sbe:message name="MarketDefinition" id="11" description="Contains attributes of the given venue." semanticType="BU">
      <field name="VenueID"   id="20022" type="VenueID"/>
      <field name="MarketID"   id="1301" type="Text" description="General name of the Market/Value. EBS-Ai for example."/>
      <field name="VenueName" id="20024" type="Text" description="MF defined market/venue name. Used to identify a special, specific MF configuration/connection to a market/venue. EBS-Ai-metals for example."/>
      <group name="NoOrdTypeRules" id="1237" description="A list of the supported order types." dimensionType="groupSizeEncoding">
          <field name="OrdType" id="40" type="OrdType" semanticType="char"/>
          <field name="TimeInForce" id="59" type="TimeInForce" semanticType="char"/>
      </group>
    </sbe:message>

    <!-- Application messages -->
    <sbe:message name="NewOrderSingle" id="12" description="Message for submitting a single order." semanticType="D">
        <field name="MsgSeqNum" id="34" type="SeqNum" description="Currently not used."/>
        <field name="PossDupFlag" id="43" type="Boolean"/>
        <field name="VenueID"   id="20022" type="VenueID"/>
        <field name="ClOrdID"   id="11" type="ClOrdIDString" description="Unique identifier for Order as assigned by the buy-side." semanticType="String"/>
        <field name="SecurityID"  id="48" type="SecurityID"/>
        <field name="Side"   id="54" type="Side"/>
        <field name="TransactTime" id="60" type="Timestamp" description="Time when the order is generated." semanticType="UTCTimestamp"/>
        <field name="OrderQty"   id="38" type="DecimalQtyNULL" description="Required. Order quantity in mantissa format."/>
        <field name="MinQty"   id="110" type="DecimalQtyNULL" description="Minimum quantity to execute. Used to prevent partial fills under the defined quantity. Must be in mantissa format."/>
        <field name="OrdType"   id="40" type="OrdType"/>
        <field name="Price"   id="44" type="PriceNULL" description="Order limit price. Not required on all order types (for example, Market order). Must be in mantissa format."/>
        <field name="StopPx"   id="99" type="PriceNULL" description="Stop price. Only required if this order is a Stop-type order. Must be in mantissa format."/>
        <field name="TimeInForce"   id="59" type="TimeInForce"/>
        <field name="MaxShow"   id="210" type="DecimalQtyNULL" description="Where available, sets the maximum amount to show. Must be in mantissa format."/>
        <group name="StrategyParametersGrp" id="957" description="Used to send any additional parameters with for an order.">
            <field name="StrategyParameterName" id="958" type="StrategyParameter" semanticType="String"/>
            <field name="StrategyParameterType" id="959" type="StrategyParameterType" semanticType="int"/>
            <field name="StrategyParameterValue" id="960" type="StrategyParameter" semanticType="String"/>
        </group>
    </sbe:message>
    <sbe:message name="OrderCancelRequest" id="13" description="Cancel an outstanding order." semanticType="F">
        <field name="MsgSeqNum" id="34" type="SeqNum" description="Currently not used."/>
        <field name="PossDupFlag" id="43" type="Boolean"/>
        <field name="VenueID"   id="20022" type="VenueID"/>
        <field name="SecurityID"  id="48" type="SecurityID"/>
        <field name="ClOrdID"     id="11" type="ClOrdIDString" description="Identifier of this cancel request." semanticType="String"/>
        <field name="OrigClOrdID" id="41" type="ClOrdIDString" description="ClOrdID of the order to cancel." semanticType="String"/>
        <field name="OrderID" id="37" type="OrderID" description="The MF assigned orderID of the order to cancel.  Can set to null.  It is quicker to set it, since making it null requires the system to look up the value to retrieve it." />
        <field name="TransactTime" id="60" type="Timestamp" description="Time when the cancel is generated." semanticType="UTCTimestamp"/>
    </sbe:message>
    <sbe:message name="OrderCancelReject" id="14" description="Response order was not able to be canceled." semanticType="9">
        <field name="MsgSeqNum" id="34" type="SeqNum"/>
        <field name="PossDupFlag" id="43" type="Boolean" description="True if this message could be a duplicate. If true, the handler of this message needs to lookup previously received messages and process appropriately."/>
        <field name="VenueID"   id="20022" type="VenueID"/>
        <field name="SecurityID"  id="48" type="SecurityID"/>
        <field name="ClOrdID"   id="11" type="ClOrdIDString" description="The ClOrdID of the Cancel request." semanticType="String"/>
        <field name="OrigClOrdID"   id="41" type="ClOrdIDString" description="The ClOrdID of the order to be canceled" semanticType="String"/>
        <field name="OrderID" id="37" type="OrderID" description="The MF assigned orderID of the order to cancel." />
        <field name="SecondaryOrderID"   id="198" type="OrderIDString" description="The OrderID assigned by the venue." semanticType="String"/>
        <field name="OrdStatus"   id="39" type="OrdStatus" semanticType="char"/>
        <field name="CxlRejReason"   id="102" type="CxlRejReason" semanticType="int"/>
        <field name="TransactTime" id="60" type="Timestamp" description="Time when the cancel is generated." semanticType="UTCTimestamp"/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time when the execution report is received by MF." semanticType="UTCTimestamp"/>
        <field name="Text" id="58" type="Text" description="Free format text string. May include extra information about the rejection."/>
    </sbe:message>
    <sbe:message name="ExecutionReport" id="15" description="A message for responses from the venue for order actions and events." semanticType="8">
        <field name="MsgSeqNum" id="34" type="SeqNum"/>
        <field name="PossDupFlag" id="43" type="Boolean"/>
        <field name="VenueID"   id="20022" type="VenueID"/>
        <field name="SecurityID"  id="48" type="SecurityID"/>
        <field name="ClOrdID"   id="11" type="OrderIDString" description="The current ClOrdID of the order. Can differ from the originally submitted value on the NewOrderSingle message if, for example, edits have been made." semanticType="String"/>
        <field name="OrigClOrdID"   id="41" type="OrderIDString" description="The ClOrdID of the original value submitted on the NewOrderSingle message." semanticType="String"/>
        <field name="OrderID" id="37" type="OrderID" description="The MF assigned orderID." />
        <field name="SecondaryOrderID"   id="198" type="OrderIDString" description="The OrderID assigned by the venue." semanticType="String"/>
        <field name="LastQty"   id="32" type="DecimalQtyNULL" description="Quantity of order executed in this execution, if any."/>
        <field name="LastPx"   id="31" type="PriceNULL" description="Price of this last fill, if any."/>
        <field name="OrdType"   id="40" type="OrdType"/>
        <field name="TimeInForce"   id="59" type="TimeInForce"/>
        <field name="Side"      id="54" type="Side"/>
        <field name="LeavesQty" id="151" type="DecimalQtyNULL" description="Quantity remaining to execute on this order. After a system crash, this maybe NULL.  Therefore, if this is
                                                                            NULL, there will be a terminal execution report with LastQty=0
                                                                            and LeavesQty=0, along with ExecType and OrdStatus set to filled,
                                                                            to signal the order is filled."/>
        <field name="ExecID"   id="17" type="OrderIDStringExtra" description="Unique identifier for this execution report." semanticType="String"/>
        <field name="ExecType" id="150" type="ExecType" semanticType="char"/>
        <field name="TradeID"   id="1003" type="OrderIDStringExtra" description="TradeID as assigned by EBSAi." semanticType="String"/>
        <field name="OrdStatus" id="39" type="OrdStatus" semanticType="char"/>
        <field name="TradeDate" id="75" type="LocalMktDate" semanticType="LocalMktDate" description="Trade date."/>
        <field name="SettlDate" id="64" type="LocalMktDate" semanticType="LocalMktDate" description="Settlement date."/>
        <field name="CounterPartyID"   id="20023" type="OrderIDString" description="Counterparty ID" semanticType="String"/>
        <field name="TransactTime" id="60" type="Timestamp" description="Time when the execution report was generated." semanticType="UTCTimestamp"/>
        <field name="TimeArrival" id="20008" type="Timestamp" description="Time when the execution report was received by MF." semanticType="UTCTimestamp"/>
        <field name="Text" id="58" type="Text" description="Free format text string. May include extra information about the execution."/>
        <field name="OrigVenueID"   id="20025" type="VenueID" sinceVersion="1" description="VenueID of the source of this execution report.
                                                                                            Used when placing orders on the smart order router."/>
    </sbe:message>
    <sbe:message name="OrderCancelReplaceRequest" id="16" description="" semanticType="G">
        <field name="MsgSeqNum" id="34" type="SeqNum" description="Currently not used."/>
        <field name="PossDupFlag" id="43" type="Boolean"/>
        <field name="VenueID"   id="20022" type="VenueID"/>
        <field name="SecurityID"  id="48" type="SecurityID"/>
        <field name="ClOrdID"     id="11" type="ClOrdIDString" description="Identifier of this request." semanticType="String"/>
        <field name="OrigClOrdID" id="41" type="ClOrdIDString" description="ClOrdID of the order to modify." semanticType="String"/>
        <field name="OrderID" id="37" type="OrderID" description="The MF assigned orderID of the order to cancel.  Can set to null.  It is quicker to set it, since making it null requires the system to look up the value to retrieve it." />
        <field name="Side"   id="54" type="Side" description="The original order side."/>
        <field name="TransactTime" id="60" type="Timestamp" description="Time when the cancel is generated." semanticType="UTCTimestamp"/>
        <field name="OrderQty"   id="38" type="DecimalQtyNULL" description="The new order quantity, if changing, or the original order quantity if not."/>
        <field name="OrdType"   id="40" type="OrdType"/>
        <field name="Price"   id="44" type="PriceNULL" description="The new order price, if changing, or the original price if not. "/>
        <field name="TimeInForce"   id="59" type="TimeInForce" description="The original order time in force."/>
    </sbe:message>
    <sbe:message name="SecurityDefinitionRequest" id="17" description="A request for a list of a venue's securities and their attributes." semanticType="a">
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="SecurityRequestType" id="321" type="SecurityRequestType" />
    </sbe:message>
    <sbe:message name="SecurityDefinition" id="18" description="Describes the attributes of a given security." semanticType="d">
        <field name="TotNumReports" id="911" type="uint32" description="The total number of security definitions in group.  This is used in the multicast stream so the application can detect the receipt of all security definitions."  semanticType="int"/>
        <field name="VenueID" id="20022" type="VenueID" semanticType="int"/>
        <field name="Symbol" id="55" type="Symbol" semanticType="String"/>
        <field name="SecurityID"  id="48" type="SecurityID"/>
        <field name="MinPriceIncrement" id="969" type="PriceNULL" description="The minimum price movement." semanticType="Price"/>
        <field name="BigPriceIncrement" id="20004" type="PriceNULL" description="PIP position" semanticType="Price"/>
    </sbe:message>
</sbe:messageSchema>
