Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1485 lines (1192 sloc) 40 KB
syntax = "proto2";
package DTC_PB;
//============================================================================
// DTC protocol version
enum DTCVersion
{
CURRENT_VERSION = 8;
}
//============================================================================
// All messages are preceeded by the following 4-byte little-endian binary
// header on the wire:
//
// uint16 Size; // size of the entire message including this 4-byte header
// uint16 Type; // DTC message type - see DTCProtocol.h
//
// Note: All fields are marked optional in preparation for using proto3 syntax
// in the future when all fields are optional. Similarly, the fields do
// not have default values set.
//
// Note: DateTime fields have three different types based on the field type:
//
// * sfixed64 - standard UNIX Date-Time
// * sfixed32 - 4-byte UNIX Date-Time value used in messages where compactness is an important consideration. Or where only the Date is needed.
// * double - UNIX Date-Time value with fractional portion for milliseconds
//
//============================================================================
//----Message types----
enum DTCMessageType
{
// Authentication and connection monitoring
LOGON_REQUEST = 1;
LOGON_RESPONSE = 2;
HEARTBEAT = 3;
LOGOFF = 5;
ENCODING_REQUEST = 6;
ENCODING_RESPONSE = 7;
// Market data
MARKET_DATA_REQUEST = 101;
MARKET_DATA_REJECT = 103;
MARKET_DATA_SNAPSHOT = 104;
MARKET_DATA_SNAPSHOT_INT = 125;
MARKET_DATA_UPDATE_TRADE = 107;
MARKET_DATA_UPDATE_TRADE_COMPACT = 112;
MARKET_DATA_UPDATE_TRADE_INT = 126;
MARKET_DATA_UPDATE_LAST_TRADE_SNAPSHOT = 134;
MARKET_DATA_UPDATE_BID_ASK = 108;
MARKET_DATA_UPDATE_BID_ASK_COMPACT = 117;
MARKET_DATA_UPDATE_BID_ASK_INT = 127;
MARKET_DATA_UPDATE_SESSION_OPEN = 120;
MARKET_DATA_UPDATE_SESSION_OPEN_INT = 128;
MARKET_DATA_UPDATE_SESSION_HIGH = 114;
MARKET_DATA_UPDATE_SESSION_HIGH_INT = 129;
MARKET_DATA_UPDATE_SESSION_LOW = 115;
MARKET_DATA_UPDATE_SESSION_LOW_INT = 130;
MARKET_DATA_UPDATE_SESSION_VOLUME = 113;
MARKET_DATA_UPDATE_OPEN_INTEREST = 124;
MARKET_DATA_UPDATE_SESSION_SETTLEMENT = 119;
MARKET_DATA_UPDATE_SESSION_SETTLEMENT_INT = 131;
MARKET_DATA_UPDATE_SESSION_NUM_TRADES = 135;
MARKET_DATA_UPDATE_TRADING_SESSION_DATE = 136;
MARKET_DEPTH_REQUEST = 102;
MARKET_DEPTH_REJECT = 121;
MARKET_DEPTH_SNAPSHOT_LEVEL = 122;
MARKET_DEPTH_SNAPSHOT_LEVEL_INT = 132;
MARKET_DEPTH_UPDATE_LEVEL = 106;
MARKET_DEPTH_UPDATE_LEVEL_COMPACT = 118;
MARKET_DEPTH_UPDATE_LEVEL_INT = 133;
MARKET_DEPTH_FULL_UPDATE_10 = 123;
MARKET_DEPTH_FULL_UPDATE_20 = 105;
MARKET_DATA_FEED_STATUS = 100;
MARKET_DATA_FEED_SYMBOL_STATUS = 116;
// Order entry and modification
SUBMIT_NEW_SINGLE_ORDER = 208;
SUBMIT_NEW_SINGLE_ORDER_INT = 206;
SUBMIT_NEW_OCO_ORDER = 201;
SUBMIT_NEW_OCO_ORDER_INT = 207;
CANCEL_ORDER = 203;
CANCEL_REPLACE_ORDER = 204;
CANCEL_REPLACE_ORDER_INT = 205;
// Trading related
OPEN_ORDERS_REQUEST = 300;
OPEN_ORDERS_REJECT = 302;
ORDER_UPDATE = 301;
HISTORICAL_ORDER_FILLS_REQUEST = 303;
HISTORICAL_ORDER_FILL_RESPONSE = 304;
HISTORICAL_ORDER_FILLS_REJECT = 308;
CURRENT_POSITIONS_REQUEST = 305;
CURRENT_POSITIONS_REJECT = 307;
POSITION_UPDATE = 306;
// Account list
TRADE_ACCOUNTS_REQUEST = 400;
TRADE_ACCOUNT_RESPONSE = 401;
// Symbol discovery and security definitions
EXCHANGE_LIST_REQUEST = 500;
EXCHANGE_LIST_RESPONSE = 501;
SYMBOLS_FOR_EXCHANGE_REQUEST = 502;
UNDERLYING_SYMBOLS_FOR_EXCHANGE_REQUEST = 503;
SYMBOLS_FOR_UNDERLYING_REQUEST = 504;
SECURITY_DEFINITION_FOR_SYMBOL_REQUEST = 506;
SECURITY_DEFINITION_RESPONSE = 507;
SYMBOL_SEARCH_REQUEST = 508;
SECURITY_DEFINITION_REJECT = 509;
// Account balance
ACCOUNT_BALANCE_REQUEST = 601;
ACCOUNT_BALANCE_REJECT = 602;
ACCOUNT_BALANCE_UPDATE = 600;
// Logging
USER_MESSAGE = 700;
GENERAL_LOG_MESSAGE = 701;
// Historical price data
HISTORICAL_PRICE_DATA_REQUEST= 800;
HISTORICAL_PRICE_DATA_RESPONSE_HEADER = 801;
HISTORICAL_PRICE_DATA_REJECT = 802;
HISTORICAL_PRICE_DATA_RECORD_RESPONSE = 803;
HISTORICAL_PRICE_DATA_TICK_RECORD_RESPONSE = 804;
HISTORICAL_PRICE_DATA_RECORD_RESPONSE_INT = 805;
HISTORICAL_PRICE_DATA_TICK_RECORD_RESPONSE_INT = 806;
}
//============================================================================
enum EncodingEnum
{
BINARY_ENCODING = 0;
BINARY_WITH_VARIABLE_LENGTH_STRINGS = 1;
JSON_ENCODING = 2;
JSON_COMPACT_ENCODING = 3;
PROTOCOL_BUFFERS = 4;
}
//============================================================================
enum LogonStatusEnum
{
LOGON_SUCCESS = 1;
LOGON_ERROR = 2;
LOGON_ERROR_NO_RECONNECT = 3;
LOGON_RECONNECT_NEW_ADDRESS = 4;
}
//============================================================================
enum MessageSupportedEnum
{
MESSAGE_UNSUPPORTED = 0;
MESSAGE_SUPPORTED = 1;
}
//============================================================================
enum TradeModeEnum
{
TRADE_MODE_UNSET= 0;
TRADE_MODE_DEMO = 1;
TRADE_MODE_SIMULATED = 2;
TRADE_MODE_LIVE = 3;
}
//============================================================================
enum RequestActionEnum
{
SUBSCRIBE = 1;
UNSUBSCRIBE = 2;
SNAPSHOT = 3;
}
/*==========================================================================*/
enum UnbundledTradeIndicatorEnum
{
UNBUNDLED_TRADE_NONE = 0;
FIRST_SUB_TRADE_OF_UNBUNDLED_TRADE = 1;
LAST_SUB_TRADE_OF_UNBUNDLED_TRADE = 2;
};
//============================================================================
enum OrderStatusEnum
{
ORDER_STATUS_UNSPECIFIED = 0;
ORDER_STATUS_ORDER_SENT = 1;
ORDER_STATUS_PENDING_OPEN = 2;
ORDER_STATUS_PENDING_CHILD = 3;
ORDER_STATUS_OPEN = 4;
ORDER_STATUS_PENDING_CANCEL_REPLACE = 5;
ORDER_STATUS_PENDING_CANCEL = 6;
ORDER_STATUS_FILLED = 7;
ORDER_STATUS_CANCELED = 8;
ORDER_STATUS_REJECTED = 9;
ORDER_STATUS_PARTIALLY_FILLED = 10;
}
//============================================================================
enum OrderUpdateReasonEnum
{
ORDER_UPDATE_REASON_UNSET = 0;
OPEN_ORDERS_REQUEST_RESPONSE = 1;
NEW_ORDER_ACCEPTED = 2;
GENERAL_ORDER_UPDATE = 3;
ORDER_FILLED = 4;
ORDER_FILLED_PARTIALLY = 5;
ORDER_CANCELED = 6;
ORDER_CANCEL_REPLACE_COMPLETE = 7;
NEW_ORDER_REJECTED = 8;
ORDER_CANCEL_REJECTED = 9;
ORDER_CANCEL_REPLACE_REJECTED = 10;
}
//============================================================================
enum AtBidOrAskEnum
{
BID_ASK_UNSET = 0;
AT_BID = 1;
AT_ASK = 2;
}
//============================================================================
enum AtBidOrAskEnum8
{
BID_ASK_UNSET_8 = 0;
AT_BID_8 = 1;
AT_ASK_8 = 2;
}
//============================================================================
enum MarketDepthUpdateTypeEnum
{
DEPTH_UNSET = 0;
MARKET_DEPTH_INSERT_UPDATE_LEVEL = 1; // Insert or update depth at the given price level
MARKET_DEPTH_DELETE_LEVEL = 2; // Delete depth at the given price level
}
//============================================================================
enum OrderTypeEnum
{
ORDER_TYPE_UNSET = 0;
ORDER_TYPE_MARKET = 1;
ORDER_TYPE_LIMIT = 2;
ORDER_TYPE_STOP = 3;
ORDER_TYPE_STOP_LIMIT = 4;
ORDER_TYPE_MARKET_IF_TOUCHED = 5;
ORDER_TYPE_LIMIT_IF_TOUCHED = 6;
}
//============================================================================
enum TimeInForceEnum
{
TIF_UNSET = 0;
TIF_DAY = 1;
TIF_GOOD_TILL_CANCELED = 2;
TIF_GOOD_TILL_DATE_TIME = 3;
TIF_IMMEDIATE_OR_CANCEL = 4;
TIF_ALL_OR_NONE = 5;
TIF_FILL_OR_KILL = 6;
}
//============================================================================
enum BuySellEnum
{
BUY_SELL_UNSET = 0;
BUY = 1;
SELL = 2;
}
//============================================================================
enum OpenCloseTradeEnum
{
TRADE_UNSET = 0;
TRADE_OPEN = 1;
TRADE_CLOSE = 2;
}
//============================================================================
enum PartialFillHandlingEnum
{
PARTIAL_FILL_UNSET = 0;
PARTIAL_FILL_HANDLING_REDUCE_QUANTITY = 1;
PARTIAL_FILL_HANDLING_IMMEDIATE_CANCEL = 2;
}
//============================================================================
enum MarketDataFeedStatusEnum
{
MARKET_DATA_FEED_UNAVAILABLE = 1;
MARKET_DATA_FEED_AVAILABLE = 2;
}
//============================================================================
enum PriceDisplayFormatEnum
{
PRICE_DISPLAY_FORMAT_UNSET = -1;
PRICE_DISPLAY_FORMAT_DECIMAL_0 = 0;
PRICE_DISPLAY_FORMAT_DECIMAL_1 = 1;
PRICE_DISPLAY_FORMAT_DECIMAL_2 = 2;
PRICE_DISPLAY_FORMAT_DECIMAL_3 = 3;
PRICE_DISPLAY_FORMAT_DECIMAL_4 = 4;
PRICE_DISPLAY_FORMAT_DECIMAL_5 = 5;
PRICE_DISPLAY_FORMAT_DECIMAL_6 = 6;
PRICE_DISPLAY_FORMAT_DECIMAL_7 = 7;
PRICE_DISPLAY_FORMAT_DECIMAL_8 = 8;
PRICE_DISPLAY_FORMAT_DECIMAL_9 = 9;
PRICE_DISPLAY_FORMAT_DENOMINATOR_256 = 356;
PRICE_DISPLAY_FORMAT_DENOMINATOR_128 = 228;
PRICE_DISPLAY_FORMAT_DENOMINATOR_64 = 164;
PRICE_DISPLAY_FORMAT_DENOMINATOR_32_QUARTERS = 136;
PRICE_DISPLAY_FORMAT_DENOMINATOR_32_HALVES = 134;
PRICE_DISPLAY_FORMAT_DENOMINATOR_32 = 132;
PRICE_DISPLAY_FORMAT_DENOMINATOR_16 = 116;
PRICE_DISPLAY_FORMAT_DENOMINATOR_8 = 108;
PRICE_DISPLAY_FORMAT_DENOMINATOR_4 = 104;
PRICE_DISPLAY_FORMAT_DENOMINATOR_2 = 102;
}
//============================================================================
enum SecurityTypeEnum
{
SECURITY_TYPE_UNSET = 0;
SECURITY_TYPE_FUTURE = 1;
SECURITY_TYPE_STOCK = 2;
SECURITY_TYPE_FOREX = 3;
SECURITY_TYPE_INDEX = 4;
SECURITY_TYPE_FUTURES_STRATEGY = 5;
SECURITY_TYPE_FUTURES_OPTION = 7;
SECURITY_TYPE_STOCK_OPTION = 6;
SECURITY_TYPE_INDEX_OPTION = 8;
SECURITY_TYPE_BOND = 9;
SECURITY_TYPE_MUTUAL_FUND = 10;
}
//============================================================================
enum PutCallEnum
{
PC_UNSET = 0;
PC_CALL = 1;
PC_PUT = 2;
}
//============================================================================
enum SearchTypeEnum
{
SEARCH_TYPE_UNSET = 0;
SEARCH_TYPE_BY_SYMBOL = 1;
SEARCH_TYPE_BY_DESCRIPTION = 2;
}
//============================================================================
enum HistoricalDataIntervalEnum
{
INTERVAL_TICK = 0;
INTERVAL_1_SECOND = 1;
INTERVAL_2_SECONDS = 2;
INTERVAL_4_SECONDS = 4;
INTERVAL_5_SECONDS = 5;
INTERVAL_10_SECONDS = 10;
INTERVAL_30_SECONDS = 30;
INTERVAL_1_MINUTE = 60;
INTERVAL_1_DAY = 86400;
INTERVAL_1_WEEK = 604800;
}
//============================================================================
enum HistoricalPriceDataRejectReasonCodeEnum
{
HPDR_UNSET = 0;
HPDR_UNABLE_TO_SERVE_DATA_RETRY_LATER = 1;
HPDR_UNABLE_TO_SERVE_DATA_DO_NOT_RETRY = 2;
HPDR_DATA_REQUEST_OUTSIDE_BOUNDS_OF_AVAILABLE_DATA = 3;
HPDR_GENERAL_REJECT_ERROR = 4;
}
//============================================================================
message EncodingRequest
{
optional int32 ProtocolVersion = 1;
optional EncodingEnum Encoding = 2;
optional string ProtocolType = 3;
}
//============================================================================
message EncodingResponse
{
optional int32 ProtocolVersion = 1;
optional EncodingEnum Encoding = 2;
optional string ProtocolType = 3;
}
//============================================================================
message LogonRequest
{
optional int32 ProtocolVersion = 1;
optional string Username = 2;
optional string Password = 3;
optional string GeneralTextData = 4;
optional int32 Integer_1 = 5;
optional int32 Integer_2 = 6;
optional int32 HeartbeatIntervalInSeconds = 7;
optional TradeModeEnum TradeMode = 8;
optional string TradeAccount = 9;
optional string HardwareIdentifier = 10;
optional string ClientName = 11;
}
//============================================================================
message LogonResponse
{
optional int32 ProtocolVersion = 1;
optional LogonStatusEnum Result = 2;
optional string ResultText = 3;
optional string ReconnectAddress = 4;
optional int32 Integer_1 = 5;
optional string ServerName = 6;
optional uint32 MarketDepthUpdatesBestBidAndAsk = 7;
optional uint32 TradingIsSupported = 8;
optional uint32 OCOOrdersSupported = 9;
optional uint32 OrderCancelReplaceSupported = 10;
optional string SymbolExchangeDelimiter = 11;
optional uint32 SecurityDefinitionsSupported = 12;
optional uint32 HistoricalPriceDataSupported = 13;
optional uint32 ResubscribeWhenMarketDataFeedAvailable = 14;
optional uint32 MarketDepthIsSupported = 15;
optional uint32 OneHistoricalPriceDataRequestPerConnection = 16;
optional uint32 BracketOrdersSupported = 17;
optional uint32 UseIntegerPriceOrderMessages = 18;
optional uint32 UsesMultiplePositionsPerSymbolAndTradeAccount = 19;
optional uint32 MarketDataSupported = 20;
}
//============================================================================
message Logoff
{
optional string Reason = 1;
optional uint32 DoNotReconnect = 2;
}
//============================================================================
message Heartbeat
{
optional uint32 NumDroppedMessages = 1;
optional sfixed64 CurrentDateTime = 2;
}
//============================================================================
message MarketDataFeedStatus
{
optional MarketDataFeedStatusEnum Status = 1;
}
//============================================================================
message MarketDataFeedSymbolStatus
{
optional uint32 SymbolID = 1;
optional MarketDataFeedStatusEnum Status = 2;
}
//============================================================================
message MarketDataRequest
{
optional RequestActionEnum RequestAction = 1;
optional uint32 SymbolID = 2;
optional string Symbol = 3;
optional string Exchange = 4;
}
//============================================================================
message MarketDepthRequest
{
optional RequestActionEnum RequestAction = 1;
optional uint32 SymbolID = 2;
optional string Symbol = 3;
optional string Exchange = 4;
optional int32 NumLevels = 5;
}
//============================================================================
message MarketDataReject
{
optional uint32 SymbolID = 1;
optional string RejectText = 2;
}
//============================================================================
message MarketDataSnapshot
{
optional uint32 SymbolID = 1;
optional double SessionSettlementPrice = 2;
optional double SessionOpenPrice = 3;
optional double SessionHighPrice = 4;
optional double SessionLowPrice = 5;
optional double SessionVolume = 6;
optional uint32 SessionNumTrades = 7;
optional uint32 OpenInterest = 8;
optional double BidPrice = 9;
optional double AskPrice = 10;
optional double AskQuantity = 11;
optional double BidQuantity = 12;
optional double LastTradePrice = 13;
optional double LastTradeVolume = 14;
optional double LastTradeDateTime = 15;
optional double BidAskDateTime = 16;
optional uint32 SessionSettlementDateTime = 17;
optional uint32 TradingSessionDate = 18;
}
//============================================================================
message MarketDataSnapshot_Int
{
optional uint32 SymbolID = 1;
optional int32 SessionSettlementPrice = 2;
optional int32 SessionOpenPrice = 3;
optional int32 SessionHighPrice = 4;
optional int32 SessionLowPrice = 5;
optional int32 SessionVolume = 6;
optional uint32 SessionNumTrades = 7;
optional uint32 OpenInterest = 8;
optional int32 BidPrice = 9;
optional int32 AskPrice = 10;
optional int32 AskQuantity = 11;
optional int32 BidQuantity = 12;
optional int32 LastTradePrice = 13;
optional int32 LastTradeVolume = 14;
optional double LastTradeDateTime = 15;
optional double BidAskDateTime = 16;
optional uint32 SessionSettlementDateTime = 17;
optional uint32 TradingSessionDate = 18;
}
//============================================================================
message DepthEntry
{
optional double Price = 1;
optional float Quantity = 12;
}
//============================================================================
message MarketDepthFullUpdate20
{
optional uint32 SymbolID = 1;
repeated DepthEntry BidDepth = 2;
repeated DepthEntry AskDepth = 3;
}
//============================================================================
message MarketDepthFullUpdate10
{
optional uint32 SymbolID = 1;
repeated DepthEntry BidDepth = 2;
repeated DepthEntry AskDepth = 3;
}
//============================================================================
message MarketDepthSnapshotLevel
{
optional uint32 SymbolID = 1;
optional AtBidOrAskEnum Side = 2;
optional double Price = 3;
optional double Quantity = 4;
optional uint32 Level = 5;
optional uint32 IsFirstMessageInBatch = 6;
optional uint32 IsLastMessageInBatch = 7;
optional double DateTime = 8;
optional uint32 NumOrders = 9;
}
//============================================================================
message MarketDepthSnapshotLevel_Int
{
optional uint32 SymbolID = 1;
optional AtBidOrAskEnum Side = 2;
optional int32 Price = 3;
optional int32 Quantity = 4;
optional uint32 Level = 5;
optional uint32 IsFirstMessageInBatch = 6;
optional uint32 IsLastMessageInBatch = 7;
optional double DateTime = 8;
optional uint32 NumOrders = 9;
}
//============================================================================
message MarketDepthUpdateLevel
{
optional uint32 SymbolID = 1;
optional AtBidOrAskEnum Side = 2;
optional double Price = 3;
optional double Quantity = 4;
optional MarketDepthUpdateTypeEnum UpdateType = 5;
optional double DateTime = 6;
optional uint32 NumOrders = 7;
}
//============================================================================
message MarketDepthUpdateLevel_Int
{
optional uint32 SymbolID = 1;
optional AtBidOrAskEnum Side = 2;
optional int32 Price = 3;
optional int32 Quantity = 4;
optional MarketDepthUpdateTypeEnum UpdateType = 5;
optional double DateTime = 6;
optional uint32 NumOrders = 7;
}
//============================================================================
message MarketDepthUpdateLevelCompact
{
optional uint32 SymbolID = 1;
optional AtBidOrAskEnum Side = 2;
optional float Price = 3;
optional float Quantity = 4;
optional MarketDepthUpdateTypeEnum UpdateType = 5;
optional uint32 DateTime = 6;
optional uint32 NumOrders = 7;
}
//============================================================================
message MarketDataUpdateSessionSettlement
{
optional uint32 SymbolID = 1;
optional double Price = 2;
optional uint32 DateTime = 3;
}
//============================================================================
message MarketDataUpdateSessionSettlement_Int
{
optional uint32 SymbolID = 1;
optional int32 Price = 2;
optional int32 DateTime = 3;
}
//============================================================================
message MarketDataUpdateSessionOpen
{
optional uint32 SymbolID = 1;
optional double Price = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateSessionOpen_Int
{
optional uint32 SymbolID = 1;
optional int32 Price = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateSessionNumTrades
{
optional uint32 SymbolID = 1;
optional int32 NumTrades = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateTradingSessionDate
{
optional uint32 SymbolID = 1;
optional uint32 Date = 2;
}
//============================================================================
message MarketDepthReject
{
optional uint32 SymbolID = 1;
optional string RejectText = 2;
}
//============================================================================
message MarketDataUpdateTrade
{
optional uint32 SymbolID = 1;
optional AtBidOrAskEnum AtBidOrAsk = 2;
optional double Price = 3;
optional double Volume = 4;
optional double DateTime = 5;
}
//============================================================================
message MarketDataUpdateTrade_Int
{
optional uint32 SymbolID = 1;
optional AtBidOrAskEnum AtBidOrAsk = 2;
optional int32 Price = 3;
optional int32 Volume = 4;
optional double DateTime = 5;
}
//============================================================================
message MarketDataUpdateTradeWithUnbundledIndicator
{
optional uint32 SymbolID = 1;
optional AtBidOrAskEnum8 AtBidOrAsk = 2;
optional UnbundledTradeIndicatorEnum UnbundledTradeIndicator = 3;
optional double Price = 4;
optional uint32 Volume = 5;
optional double DateTime = 6;
}
//============================================================================
message MarketDataUpdateBidAsk
{
optional uint32 SymbolID = 1;
optional double BidPrice = 2;
optional float BidQuantity = 3;
optional double AskPrice = 4;
optional float AskQuantity = 5;
optional sfixed32 DateTime = 6;
}
//============================================================================
message MarketDataUpdateBidAsk_Int
{
optional uint32 SymbolID = 1;
optional int32 BidPrice = 2;
optional int32 BidQuantity = 3;
optional int32 AskPrice = 4;
optional int32 AskQuantity = 5;
optional sfixed32 DateTime = 6;
}
//============================================================================
message MarketDataUpdateBidAskCompact
{
optional float BidPrice = 1;
optional float BidQuantity = 2;
optional float AskPrice = 3;
optional float AskQuantity = 4;
optional sfixed32 DateTime = 5;
optional uint32 SymbolID = 6;
}
//============================================================================
message MarketDataUpdateTradeCompact
{
optional float Price = 1;
optional float Volume = 2;
optional sfixed32 DateTime = 3;
optional uint32 SymbolID = 4;
optional AtBidOrAskEnum AtBidOrAsk = 5;
}
//============================================================================
message MarketDataUpdateSessionVolume
{
optional uint32 SymbolID = 1;
optional double Volume = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateOpenInterest
{
optional uint32 SymbolID = 1;
optional uint32 OpenInterest = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateSessionHigh
{
optional uint32 SymbolID = 1;
optional double Price = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateSessionHigh_Int
{
optional uint32 SymbolID = 1;
optional int32 Price = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateSessionLow
{
optional uint32 SymbolID = 1;
optional double Price = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateSessionLow_Int
{
optional uint32 SymbolID = 1;
optional int32 Price = 2;
optional uint32 TradingSessionDate = 3;
}
//============================================================================
message MarketDataUpdateLastTradeSnapshot
{
optional uint32 SymbolID = 1;
optional double LastTradePrice = 2;
optional double LastTradeVolume = 3;
optional double LastTradeDateTime = 4;
}
//============================================================================
message SubmitNewSingleOrder
{
optional string Symbol = 1;
optional string Exchange = 2;
optional string TradeAccount = 3;
optional string ClientOrderID = 4;
optional OrderTypeEnum OrderType = 5;
optional BuySellEnum BuySell = 6;
optional double Price1 = 7;
optional double Price2 = 8;
optional double Quantity = 9;
optional TimeInForceEnum TimeInForce = 10;
optional sfixed64 GoodTillDateTime = 11;
optional uint32 IsAutomatedOrder = 12;
optional uint32 IsParentOrder = 13;
optional string FreeFormText = 14;
optional OpenCloseTradeEnum OpenOrClose = 15;
}
//============================================================================
message SubmitNewSingleOrderInt
{
optional string Symbol = 1;
optional string Exchange = 2;
optional string TradeAccount = 3;
optional string ClientOrderID = 4;
optional OrderTypeEnum OrderType = 5;
optional BuySellEnum BuySell = 6;
optional int64 Price1 = 7;
optional int64 Price2 = 8;
optional float Divisor = 9;
optional int64 Quantity = 10;
optional TimeInForceEnum TimeInForce = 11;
optional sfixed64 GoodTillDateTime = 12;
optional uint32 IsAutomatedOrder = 13;
optional uint32 IsParentOrder = 14;
optional string FreeFormText = 15;
optional OpenCloseTradeEnum OpenOrClose = 16;
}
//============================================================================
message CancelReplaceOrder
{
optional string ServerOrderID = 1;
optional string ClientOrderID = 2;
optional double Price1 = 3;
optional double Price2 = 4;
optional double Quantity = 5;
optional uint32 Price1IsSet = 6;
optional uint32 Price2IsSet = 7;
optional TimeInForceEnum TimeInForce = 9;
optional uint64 GoodTillDateTime = 10;
optional uint32 UpdatePrice1OffsetToParent = 11;
}
//============================================================================
message CancelReplaceOrderInt
{
optional string ServerOrderID = 1;
optional string ClientOrderID = 2;
optional int64 Price1 = 3;
optional int64 Price2 = 4;
optional float Divisor = 5;
optional int64 Quantity = 6;
optional uint32 Price1IsSet = 7;
optional uint32 Price2IsSet = 8;
optional TimeInForceEnum TimeInForce = 10;
optional uint64 GoodTillDateTime = 11;
optional uint32 UpdatePrice1OffsetToParent = 12;
}
//============================================================================
message CancelOrder
{
optional string ServerOrderID = 1;
optional string ClientOrderID = 2;
}
//============================================================================
message SubmitNewOCOOrder
{
optional string Symbol = 1;
optional string Exchange = 2;
optional string ClientOrderID_1 = 3;
optional OrderTypeEnum OrderType_1 = 4;
optional BuySellEnum BuySell_1 = 5;
optional double Price1_1 = 6;
optional double Price2_1 = 7;
optional double Quantity_1 = 8;
optional string ClientOrderID_2 = 9;
optional OrderTypeEnum OrderType_2 = 10;
optional BuySellEnum BuySell_2 = 11;
optional double Price1_2 = 12;
optional double Price2_2 = 13;
optional double Quantity_2 = 14;
optional TimeInForceEnum TimeInForce = 15;
optional sfixed64 GoodTillDateTime = 16;
optional string TradeAccount = 17;
optional uint32 IsAutomatedOrder = 18;
optional string ParentTriggerClientOrderID = 19;
optional string FreeFormText = 20;
optional OpenCloseTradeEnum OpenOrClose = 21;
optional PartialFillHandlingEnum PartialFillHandling = 22;
}
//============================================================================
message SubmitNewOCOOrderInt
{
optional string Symbol = 1;
optional string Exchange = 2;
optional string ClientOrderID_1 = 3;
optional OrderTypeEnum OrderType_1 = 4;
optional BuySellEnum BuySell_1 = 5;
optional int64 Price1_1 = 6;
optional int64 Price2_1 = 7;
optional int64 Quantity_1 = 8;
optional string ClientOrderID_2 = 9;
optional OrderTypeEnum OrderType_2 = 10;
optional BuySellEnum BuySell_2 = 11;
optional int64 Price1_2 = 12;
optional int64 Price2_2 = 13;
optional int64 Quantity_2 = 14;
optional TimeInForceEnum TimeInForce = 15;
optional sfixed64 GoodTillDateTime = 16;
optional string TradeAccount = 17;
optional uint32 IsAutomatedOrder = 18;
optional string ParentTriggerClientOrderID = 19;
optional string FreeFormText = 20;
optional float Divisor = 21;
optional OpenCloseTradeEnum OpenOrClose = 22;
optional PartialFillHandlingEnum PartialFillHandling = 23;
}
//============================================================================
message OpenOrdersRequest
{
optional int32 RequestID = 1;
optional int32 RequestAllOrders = 2;
optional string ServerOrderID = 3;
optional string TradeAccount = 4;
}
//============================================================================
message HistoricalOrderFillsRequest
{
optional int32 RequestID = 1;
optional string ServerOrderID = 2;
optional int32 NumberOfDays = 3;
optional string TradeAccount = 4;
}
//============================================================================
message HistoricalOrderFillsReject
{
optional int32 RequestID = 1;
optional string RejectText = 2;
}
//============================================================================
message CurrentPositionsRequest
{
optional int32 RequestID = 1;
optional string TradeAccount = 2;
}
//============================================================================
message CurrentPositionsReject
{
optional int32 RequestID = 1;
optional string RejectText = 2;
}
//============================================================================
message OrderUpdate
{
optional int32 RequestID = 1;
optional int32 TotalNumMessages = 2;
optional int32 MessageNumber = 3;
optional string Symbol = 4;
optional string Exchange = 5;
optional string PreviousServerOrderID = 6;
optional string ServerOrderID = 7;
optional string ClientOrderID = 8;
optional string ExchangeOrderID = 9;
optional OrderStatusEnum OrderStatus = 10;
optional OrderUpdateReasonEnum OrderUpdateReason = 11;
optional OrderTypeEnum OrderType = 12;
optional BuySellEnum BuySell = 13;
optional double Price1 = 14;
optional double Price2 = 15;
optional TimeInForceEnum TimeInForce = 16;
optional sfixed64 GoodTillDateTime = 17;
optional double OrderQuantity = 18;
optional double FilledQuantity = 19;
optional double RemainingQuantity = 20;
optional double AverageFillPrice = 21;
optional double LastFillPrice = 22;
optional sfixed64 LastFillDateTime = 23;
optional double LastFillQuantity = 24;
optional string LastFillExecutionID = 25;
optional string TradeAccount = 26;
optional string InfoText = 27;
optional uint32 NoOrders = 28;
optional string ParentServerOrderID = 29;
optional string OCOLinkedOrderServerOrderID = 30;
optional OpenCloseTradeEnum OpenOrClose = 31;
optional string PreviousClientOrderID = 32;
optional string FreeFormText = 33;
optional sfixed64 OrderReceivedDateTime = 34;
}
//============================================================================
message OpenOrdersReject
{
optional int32 RequestID = 1;
optional string RejectText = 2;
}
//============================================================================
message HistoricalOrderFillResponse
{
optional int32 RequestID = 1;
optional int32 TotalNumberMessages = 2;
optional int32 MessageNumber = 3;
optional string Symbol = 4;
optional string Exchange = 5;
optional string ServerOrderID = 6;
optional BuySellEnum BuySell = 7;
optional double Price = 8;
optional sfixed64 DateTime = 9;
optional double Quantity = 10;
optional string UniqueExecutionID = 11;
optional string TradeAccount = 12;
optional OpenCloseTradeEnum OpenClose = 13;
optional uint32 NoOrderFills = 14;
}
//============================================================================
message PositionUpdate
{
optional int32 RequestID = 1;
optional int32 TotalNumberMessages = 2;
optional int32 MessageNumber = 3;
optional string Symbol = 4;
optional string Exchange = 5;
optional double Quantity = 6;
optional double AveragePrice = 7;
optional string PositionIdentifier = 8;
optional string TradeAccount = 9;
optional uint32 NoPositions = 10;
optional uint32 Unsolicited = 11;
}
//============================================================================
message TradeAccountsRequest
{
optional int32 RequestID = 1;
}
//============================================================================
message TradeAccountResponse
{
optional int32 TotalNumberMessages = 1;
optional int32 MessageNumber = 2;
optional string TradeAccount = 3;
optional int32 RequestID = 4;
}
//============================================================================
message ExchangeListRequest
{
optional int32 RequestID = 1;
}
//============================================================================
message ExchangeListResponse
{
optional int32 RequestID = 1;
optional string Exchange = 2;
optional uint32 IsFinalMessage = 3;
optional string Description = 4;
}
//============================================================================
message SymbolsForExchangeRequest
{
optional int32 RequestID = 1;
optional string Exchange = 2;
optional SecurityTypeEnum SecurityType = 3;
optional RequestActionEnum RequestAction = 4;
optional string Symbol = 5;
}
//============================================================================
message UnderlyingSymbolsForExchangeRequest
{
optional int32 RequestID = 1;
optional string Exchange = 2;
optional SecurityTypeEnum SecurityType = 3;
}
//============================================================================
message SymbolsForUnderlyingRequest
{
optional int32 RequestID = 1;
optional string UnderlyingSymbol = 2;
optional string Exchange = 3;
optional SecurityTypeEnum SecurityType = 4;
}
//============================================================================
message SymbolSearchRequest
{
optional int32 RequestID = 1;
optional string SearchText = 2;
optional string Exchange = 3;
optional SecurityTypeEnum SecurityType = 4;
optional SearchTypeEnum SearchType = 5;
}
//============================================================================
message SecurityDefinitionForSymbolRequest
{
optional int32 RequestID = 1;
optional string Symbol = 2;
optional string Exchange = 3;
}
//============================================================================
message SecurityDefinitionResponse
{
optional int32 RequestID = 1;
optional string Symbol = 2;
optional string Exchange = 3;
optional SecurityTypeEnum SecurityType = 4;
optional string Description = 5;
optional float MinPriceIncrement = 6;
optional PriceDisplayFormatEnum PriceDisplayFormat = 7;
optional float CurrencyValuePerIncrement = 8;
optional uint32 IsFinalMessage = 9;
optional float FloatToIntPriceMultiplier = 10;
optional float IntToFloatPriceDivisor = 11;
optional string UnderlyingSymbol = 12;
optional uint32 UpdatesBidAskOnly = 13;
optional float StrikePrice = 14;
optional PutCallEnum PutOrCall = 15;
optional uint32 ShortInterest = 16;
optional sfixed32 SecurityExpirationDate = 17;
optional float BuyRolloverInterest = 18;
optional float SellRolloverInterest = 19;
optional float EarningsPerShare = 20;
optional uint32 SharesOutstanding = 21;
optional float IntToFloatQuantityDivisor = 22;
optional uint32 HasMarketDepthData = 23;
optional float DisplayPriceMultiplier = 24;
optional string ExchangeSymbol = 25;
optional float InitialMarginRequirement = 26;
optional float MaintenanceMarginRequirement = 27;
}
//============================================================================
message SecurityDefinitionReject
{
optional int32 RequestID = 1;
optional string RejectText = 2;
}
//============================================================================
message AccountBalanceRequest
{
optional int32 RequestID = 1;
optional string TradeAccount = 2;
}
//============================================================================
message AccountBalanceReject
{
optional int32 RequestID = 1;
optional string RejectText = 2;
}
//============================================================================
message AccountBalanceUpdate
{
optional int32 RequestID = 1;
optional double CashBalance = 2;
optional double BalanceAvailableForNewPositions = 3;
optional string AccountCurrency = 4;
optional string TradeAccount = 5;
optional double SecuritiesValue = 6; // Not including cash
optional double MarginRequirement = 7;
optional int32 TotalNumberMessages = 8;
optional int32 MessageNumber = 9;
optional uint32 NoAccountBalances = 10;
optional uint32 Unsolicited = 11;
}
//============================================================================
message UserMessage
{
optional string UserMessage = 1;
optional uint32 IsPopupMessage = 2;
}
//============================================================================
message GeneralLogMessage
{
optional string MessageText = 3;
}
//============================================================================
message HistoricalPriceDataRequest
{
optional int32 RequestID = 1;
optional string Symbol = 2;
optional string Exchange = 3;
optional HistoricalDataIntervalEnum RecordInterval = 4;
optional sfixed64 StartDateTime = 5;
optional sfixed64 EndDateTime = 6;
optional uint32 MaxDaysToReturn = 7;
optional uint32 UseZLibCompression = 8;
optional uint32 RequestDividendAdjustedStockData = 9;
optional uint32 Flag_1 = 10;
}
//============================================================================
message HistoricalPriceDataResponseHeader
{
optional int32 RequestID = 1;
optional HistoricalDataIntervalEnum RecordInterval = 2;
optional uint32 UseZLibCompression = 3;
optional uint32 NoRecordsToReturn = 4;
optional float IntToFloatPriceDivisor = 5;
}
//============================================================================
message HistoricalPriceDataReject
{
optional int32 RequestID = 1;
optional string RejectText = 2;
optional HistoricalPriceDataRejectReasonCodeEnum RejectReasonCode = 3;
optional uint32 RetryTimeInSeconds = 4;
}
//============================================================================
message HistoricalPriceDataRecordResponse
{
optional int32 RequestID = 1;
optional sfixed64 StartDateTime = 2;
optional double OpenPrice = 3;
optional double HighPrice = 4;
optional double LowPrice = 5;
optional double LastPrice = 6;
optional double Volume = 7;
optional uint32 NumTrades = 8;
optional double BidVolume = 9;
optional double AskVolume = 10;
optional uint32 IsFinalRecord = 11;
}
//============================================================================
message HistoricalPriceDataTickRecordResponse
{
optional int32 RequestID = 1;
optional double DateTime = 2;
optional AtBidOrAskEnum AtBidOrAsk = 3;
optional double Price = 4;
optional double Volume = 5;
optional uint32 IsFinalRecord = 6;
}
//============================================================================
message HistoricalPriceDataRecordResponse_Int
{
optional int32 RequestID = 1;
optional sfixed64 StartDateTime = 2;
optional int32 OpenPrice = 3;
optional int32 HighPrice = 4;
optional int32 LowPrice = 5;
optional int32 LastPrice = 6;
optional int32 Volume = 7;
optional uint32 NumTrades = 8;
optional int32 BidVolume = 9;
optional int32 AskVolume = 10;
optional uint32 IsFinalRecord = 11;
}
//============================================================================
message HistoricalPriceDataTickRecordResponse_Int
{
optional int32 RequestID = 1;
optional double DateTime = 2;
optional int32 Price = 3;
optional int32 Volume = 4;
optional AtBidOrAskEnum AtBidOrAsk = 5;
optional uint32 IsFinalRecord = 6;
}
//============================================================================
message HistoricalPriceDataResponseTrailer
{
optional int32 RequestID = 1;
optional double FinalRecordLastDateTime = 2;
}
You can’t perform that action at this time.