#ifndef _LIFFE_BIN_API_V1_SIZES_H_ #define _LIFFE_BIN_API_V1_SIZES_H_ static const char LiffeBinApiV1MessagesSizes[] = { "$Id: //utp_depot/projects/Exchange/CCG/Mkt_Liffe/trunk/gateway/sessions/LiffeBinApi/LiffeBinApiV1Parser/LiffeBinApiV1Sizes.h#6 $ $DateTime: 2010/09/09 06:45:15 $" }; /* * Field sizes */ #define LIFFE_MSGTYPE_LEN 2 #define LIFFE_CLORDID_LEN 30 #define LIFFE_COMPID_LEN 5 #define LIFFE_EXECREFID_LEN 20 #define LIFFE_TESTREQID_LEN 20 #define LIFFE_SUBID_LEN 4 #define LIFFE_TEXT_LEN 40 #define LIFFE_FREE_TEXT_LEN 250 #define LIFFE_ACC_LEN 14 #define LIFFE_STRIKEDATE_LEN 8 #define LIFFE_MAX_PARTY_ID_LEN 4 #define LIFFE_SECURITY_ID_LEN 15 /* Security ID Len */ #define LIFFE_RISK_ID_LEN 5 #define LIFFE_STOCK_TRADER_REF_LEN 25 #define LIFFE_PRIV_REF_LEN 16 #define LIFFE_INP_DEVICE_LEN 3 // INPUT DEVICE LENGTH #define LIFFE_INST_LEN 2 #define LIFFE_PARTY_ROLE_LEN 2 #define LIFFE_PARTY_ID_LEN 4 #define LIFFE_CROSS_ID_LEN 30 #define LIFFE_REQUEST_ID_LEN 30 #define LIFFE_PASSWORD_LEN 3 #define LIFFE_TRADER_ID_LEN 3 #define LIFFE_SECONDARY_ORDID_LEN 8 #define LIFFE_PACKAGE_ID_LEN 12 #define LIFFE_LEG_REF_LEN 14 #define LIFFE_STRATEGY_TYPE_LEN 2 #define LIFFE_RATIO_LEN 5 // Leg ratio #define LIFFE_MASSCANCELID_LEN 20 #define LIFFE_SECURITY_RPT_ID_LEN 20 #define LIFFE_STATUS_LEN 10 #define LIFFE_STOCK_REF_LEN 16 #define LIFFE_MM_STATUS_LEN 10 #define LIFFE_OWN_ORDERID_LEN 12 #define LIFFE_CLIENT_INFO_LEN 14 #define LIFFE_POSITION_EFFECT_LEN 4 #define LIFFE_SECTYPE_LEN 4 #define LIFFE_FILLID_LEN 12 #define LIFFE_STOCK_TEXT_LEN 25 #define LIFFE_MAX_CANCELS 32 /* Maximum number of legs */ #define LIFFE_MAX_LEGS 32 /* Maximum number of legs */ #define LIFFE_MAX_MM_BATCHES 200 // Max batch recs in Mkt Maker msg #define LIFFE_MAX_MM_EXPIRIES 100 // Max expiry recs in Mkt Maker msg #define LIFFE_MAX_ORDERS 16 // Max Order allowed #define LIFFE_MAX_QUOTES 65 #define LIFFE_MAX_REVISIONS 32 // Max Order Revisions allowed #define LIFFE_MAX_SIDES 2 #define LIFFE_MAX_CONTRACTS 200 #define LIFFE_MAX_CANCEL_BATCH 40 // // Mifid 2 Sizes // #define LIFFE_MIFID2_LEN_8 11 #define LIFFE_MIFID2_LEN_4 11 #define LIFFE_MIFID2_LEN_SSTISYS 14 // Order extensions #define LIFFE_MIFID2_LEN_INCOMMINGMSGID 20 #define LIFFE_MIFID2_LEN_ORIGCLORDID 30 #define LIFFE_MIFID2_LEN_CROSSID 30 #define LIFFE_MIFID2_LEN_TRANSACTIME 21 #define LIFFE_MIFID2_LEN_COUNTRY 2 #define LIFFE_MIFID2_LEN_CURRENCY 3 #define LIFFE_MIFID2_LEN_COMPLEXTRADE 35 #define LIFFE_MIFID2_LEN_WAIVERIND 13 #define LIFFE_MIFID2_LEN_NID 4 #define LIFFE_MIFID2_LEN_CODE 20 #define LIFFE_MIFID2_LEN_NAME 140 #define LIFFE_MIFID2_LEN_DATE 8 #define LIFFE_MIFID2_LEN_ID 50 #define LIFFE_MIFID2_LEN_NOITEMS 2 #define LIFFE_MIFID2_LEN_CONCERNFIELDS 5 #define LIFFE_MIFID2_LEN_FREETEXT 37 #define LIFFE_MIFID2_MAX_EA_REP 99 #define LIFFE_MIFID2_MAX_OE_REP 2 #endif // _BIN_CLIENT_MESSAGES_ // LIFFE Binary API Messages // // Shows the correct field order and fillers to use when constructing // messages to send and parsing messsage received. // // Byte Ordering: All integers in the structures are expected to be in // network byte order (i.e. Big Endian). // // Version: v1.8 // Release: $Change: 677100 $ // Date : $Date: 2017/06/13 $ // // Copyright Euronext, 2017 // #ifndef _LIFFE_BIN_API_MSG_H_ #define _LIFFE_BIN_API_MSG_H_ #include // For offsetof() macro // Message Signature Macros. The message signature is an unsigned 16-bit // integer value and is contained in the 1st 2 bytes of the message. // NOTE: These mappings are not guaranteed to be preserved from version to // version. // MsgType Variant #define LIFFE_MSG_01 (0x0001) // 0 01 #define LIFFE_MSG_11 (0x0011) // 1 01 #define LIFFE_MSG_A1 (0x0021) // A 01 #define LIFFE_MSG_51 (0x0031) // 5 01 #define LIFFE_MSG_D1 (0x0041) // D 01 #define LIFFE_MSG_E1 (0x0051) // E 01 #define LIFFE_MSG_F1 (0x0061) // F 01 #define LIFFE_MSG_G1 (0x0071) // G 01 #define LIFFE_MSG_s1 (0x0081) // s 01 #define LIFFE_MSG_a1 (0x0091) // a 01 #define LIFFE_MSG_81 (0x00A1) // 8 01 #define LIFFE_MSG_91 (0x00B1) // 9 01 #define LIFFE_MSG_N1 (0x00C1) // N 01 #define LIFFE_MSG_I1 (0x00D1) // I 01 #define LIFFE_MSG_b1 (0x00E1) // b 01 #define LIFFE_MSG_U71 (0x00F1) // U7 01 #define LIFFE_MSG_U31 (0x0101) // U3 01 #define LIFFE_MSG_q1 (0x0111) // q 01 #define LIFFE_MSG_U81 (0x0121) // U8 01 #define LIFFE_MSG_U41 (0x0131) // U4 01 #define LIFFE_MSG_L1 (0x0141) // L 01 #define LIFFE_MSG_r1 (0x0151) // r 01 #define LIFFE_MSG_AF1 (0x0161) // AF 01 #define LIFFE_MSG_U51 (0x0171) // U5 01 #define LIFFE_MSG_U11 (0x0181) // U1 01 #define LIFFE_MSG_UA1 (0x0191) // UA 01 #define LIFFE_MSG_UB1 (0x01A1) // UB 01 #define LIFFE_MSG_AG1 (0x01B1) // AG 01 #define LIFFE_MSG_R1 (0x01C1) // R 01 #define LIFFE_MSG_d1 (0x01E1) // d 01 #define LIFFE_MSG_c1 (0x01F1) // c 01 #define LIFFE_MSG_U61 (0x0201) // U6 01 #define LIFFE_MSG_U21 (0x0211) // U2 01 #define LIFFE_MSG_U91 (0x0221) // U9 01 #define LIFFE_MSG_U01 (0x0231) // U0 01 #define LIFFE_MSG_CB1 (0x0241) // CB 01 #define LIFFE_MSG_UC1 (0x0251) // UC 01 #define LIFFE_MSG_UD1 (0x0261) // UD 01 #define LIFFE_MSG_OE (0x0271) // OE 01 #define LIFFE_MSG_EA (0x0281) // EA 01 #define LIFFE_MSG_82 (0x00A2) // 8 02 #define LIFFE_MSG_92 (0x00B2) // 9 02 #define LIFFE_MSG_N2 (0x00C2) // N 02 #define LIFFE_MSG_b2 (0x00E2) // b 02 #define LIFFE_MSG_U72 (0x00F2) // U7 02 #define LIFFE_MSG_r2 (0x0152) // r 02 #define LIFFE_MSG_U52 (0x0172) // U5 02 #define LIFFE_MSG_R2 (0x01C2) // R 02 #define LIFFE_MSG_U62 (0x0202) // U6 02 #define LIFFE_MSG_UD2 (0x0262) // UD 02 // Header common to all messages. // // Note that the header has to end on a double-word boundary to // allow for 64 bit elements to follow in the message body. #define LIFFE_HEADER \ uint16_t MsgId; /* message signature */ \ uint16_t iLen; /* total message length */ \ int32_t lSeqNum; /* internal sequence number */ struct Liffe_Header { LIFFE_HEADER; }; // ---------------------------------------------------------------- // Message Structures // ---------------------------------------------------------------- // Name: Heartbeat // FIX Type: 0 // Variant: 1 // Message length: Fixed struct LiffeBinApi_HeartBeat_01 { LIFFE_HEADER; uint64_t TestReqID; // Test request Id enum { MSGTYPE = LIFFE_MSG_01 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "0"; } static size_t fixedSize() {return sizeof(LiffeBinApi_HeartBeat_01);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Test Message // FIX Type: 1 // Variant: 1 // Message length: Fixed struct LiffeBinApi_TestMsg_11 { LIFFE_HEADER; uint64_t TestReqID; // Test request Id enum { MSGTYPE = LIFFE_MSG_11 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "1"; } static size_t fixedSize() {return sizeof(LiffeBinApi_TestMsg_11);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Adjust MM Position Request Ack // FIX Type: U7 // Variant: 1 // Message length: Fixed struct LiffeBinApi_AdjustMMPositionReqAck_U71 { LIFFE_HEADER; uint32_t AdjustMMPositionID; // Unique Client Identifier int32_t ProductPosition; // Current Product position int32_t ExpiryProtectionPosition; // Current protection position uint32_t MMPUpdateReason; // Reason for MM position update uint32_t ProductProtectionStatus; // Product protection status uint32_t ExpiryProtectionStatus; // Expiry protection status uint32_t MaturityMonthYear; // Product Expiry date (YYYYMM) uint16_t RejectReasonCode; // Reject Reason uint8_t ProtectionType; // Type of Risk mitigation char ProductLimitBreached; // Limit breach indicator char ProductQuotesPulled; // Product Quotes pulled indicator char ExpiryLimitBreached; // Expiry Limit breach indicator char ExpiryQuotesPulled; // Expiry Quotes pulled indicator char Text[LIFFE_TEXT_LEN]; // Message from the Exchange char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code enum { MSGTYPE = LIFFE_MSG_U71 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U7"; } static size_t fixedSize() {return sizeof(LiffeBinApi_AdjustMMPositionReqAck_U71);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Adjust MM Position Request Ack - Long version - CCG DC SMARTS // FIX Type: U7 // Variant: 2 // Message length: Fixed struct LiffeBinApi_AdjustMMPositionReqAck_U72 { LIFFE_HEADER; uint32_t AdjustMMPositionID; // Unique Client Identifier int32_t ProductPosition; // Current Product position int32_t ExpiryProtectionPosition; // Current protection position uint32_t MMPUpdateReason; // Reason for MM position update uint32_t ProductProtectionStatus; // Product protection status uint32_t ExpiryProtectionStatus; // Expiry protection status uint32_t MaturityMonthYear; // Product Expiry date (YYYYMM) uint16_t RejectReasonCode; // Reject Reason uint8_t ProtectionType; // Type of Risk mitigation char ProductLimitBreached; // Limit breach indicator char ProductQuotesPulled; // Product Quotes pulled indicator char ExpiryLimitBreached; // Expiry Limit breach indicator char ExpiryQuotesPulled; // Expiry Quotes pulled indicator char Text[LIFFE_TEXT_LEN]; // Message from the Exchange char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg enum { MSGTYPE = LIFFE_MSG_U72 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "U7"; } static size_t fixedSize() {return sizeof(LiffeBinApi_AdjustMMPositionReqAck_U72);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Adjust MM Position Request // FIX Type: U3 // Variant: 1 // Message length: Fixed struct LiffeBinApi_AdjustMMPositionReq_U31 { LIFFE_HEADER; uint32_t AdjustMMPositionID; // Unique Client Identifier int32_t PositionShift; // Requested shift in position uint32_t RequestLevel; // Level at which protection to be adjusted uint32_t MaturityMonthYear; // Product expiry date uint8_t ProtectionType; // Type of Risk mitigation char SecurityIDSource; // Type of SecurityID (48) char SecurityID[LIFFE_SECURITY_ID_LEN]; // Automated Market Reference enum { MSGTYPE = LIFFE_MSG_U31 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U3"; } static size_t fixedSize() {return sizeof(LiffeBinApi_AdjustMMPositionReq_U31);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Cancel Order Request // FIX Type: F // Variant: 1 // Message length: Fixed struct LiffeBinApi_CancelOrderReq_F1 { LIFFE_HEADER; uint64_t OrderID; // Exchange order id uint32_t ClOrdID; // Client request id uint32_t OrigClOrdID; // Order id to be cancelled char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM //MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; char DEAIndicator; enum { MSGTYPE = LIFFE_MSG_F1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "F"; } static size_t fixedSize() {return sizeof(LiffeBinApi_CancelOrderReq_F1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Mass Cancel Request // FIX Type: q // Variant: 1 // Message length: Fixed struct LiffeBinApi_MassCancelOrderReq_q1 { LIFFE_HEADER; uint32_t ClOrdID; // Client request id uint32_t MaturityMonthYear; // Product expiry date char MassCancelRequestType; // Scope of request char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM //MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; char DEAIndicator; enum { MSGTYPE = LIFFE_MSG_q1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "q"; } static size_t fixedSize() {return sizeof(LiffeBinApi_MassCancelOrderReq_q1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: New Order Cross // FIX Type: s // Variant: 1 // Message length: Variable // Varying length array: LegDetail // Array size field: NoLegs struct LiffeBinApi_CrossOrderReq_s1 { LIFFE_HEADER; uint32_t CrossID; // Client's Request ID uint32_t ClOrdLinkID; // Component leg group Id int32_t Price; // Order Price uint32_t OrderQty; // Order Volume uint32_t OtherLegLastPx; // Underlying cash leg price uint8_t CrossType; // Cross Order Type uint8_t WholesaleTradeType; // Wholesale trade type char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char MatchingCode[LIFFE_PASSWORD_LEN]; // Trade match password char OtherParty[LIFFE_TRADER_ID_LEN]; // ITM of matching half trade char OrderCapacity; // ITM role on trade char OtherLegSecurityIDSource; // Type of other SecurityID char OtherLegSecurityID[LIFFE_SECURITY_ID_LEN]; // AA or UL leg leg security code // MiFid 2 fields int32_t ExecutionWithinFirmShortCode; char ExecWFirmAlgoTradingIndicator; char SSTISystem[LIFFE_MIFID2_LEN_SSTISYS]; char ESCBMembership; char PackageIndicator; char OtherLegReferenceNo[LIFFE_LEG_REF_LEN]; // Free text uint8_t NoSides; // FIX-552 Number of sides; char Filler1[3]; // Fixed length array - fill unused records with NULLs struct side_detail { uint32_t ClOrdID; // Client order id uint16_t ClearingInstruction; // Clearing Instruction uint8_t CustOrderCapacity; // Type of customer uint8_t PartyRole; // Party Id indicator char Side; // Side char AccountCode; // Type of account char SecondaryClOrdID[LIFFE_PRIV_REF_LEN]; // Traders' reference char PartyID[LIFFE_PARTY_ID_LEN]; // Member/Trader for order allocation char Account[LIFFE_ACC_LEN]; // Addl client Id char ClientInfo[LIFFE_CLIENT_INFO_LEN]; // Trader's free text char PackageID[LIFFE_PACKAGE_ID_LEN]; // Trade package Id char PostingAction[LIFFE_POSITION_EFFECT_LEN]; // Strategy posting action char OrderOrigin; // Origin of the order // MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t InvestmentDecisionWFirmShortCode; int32_t NonExecutingBrokerShortCode; char DEAIndicator; char InvDecWFirmAlgoTradingIndicator; char DeferralIndicator; char CommodityDerivativeIndicator; char TradingCapacity; } SideDetail[LIFFE_MAX_SIDES]; uint8_t NoLegs; // Number of Strategy legs char Filler2[3]; // Variable length array struct leg_detail { int32_t LegPrice; // Leg Order Price uint32_t LegOrderQty; // Leg Fill Volume char LegSecurityIDSource; // Leg security code type char LegSecurityID[LIFFE_SECURITY_ID_LEN]; // Leg security code } LegDetail[LIFFE_MAX_LEGS]; enum { MSGTYPE = LIFFE_MSG_s1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "s"; } static size_t fixedSize() {return offsetof(LiffeBinApi_CrossOrderReq_s1, LegDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_CrossOrderReq_s1::leg_detail);} size_t numVarRecs() const {return NoLegs;} }; // Name: Execution Report // FIX Type: 8 // Variant: 1 // Message length: Variable // Varying length array: LegDetail // Array size field: NoLegs struct LiffeBinApi_ExecReport_81 { LIFFE_HEADER; uint64_t OrderID; // Exchange order id uint64_t TradeID; // Trade Id for matched orders uint64_t ExecID; // Id for this message uint32_t ClOrdID; // Client order id uint32_t OrigClOrdID; // Cancelled/Revised Client order id uint32_t CrossID; // Id for Cross Order uint32_t ListID; // List request Id uint64_t TransactTime; // Transaction time uint32_t ClOrdLinkID; // Id to group component legs int32_t LastPx; // Order Fill Price int32_t Price; // Order Price int32_t StopPx; // Stop order trigger price uint32_t ReturnCode; // Exchange response status uint32_t ExpireDate; // Expire Date of a GTD order uint32_t CumQty; // Number of filled lots uint32_t LastQty; // Order fill lots/Deleted volume uint32_t OrderQty; // Total Order Quantity uint32_t MinQty; // Min volume uint32_t LeavesQty; // Volume remaining int32_t QtyDelta; // Volume change uint32_t MassStatusReqID; // Mass Status request Id uint32_t OtherLegLastPx; uint16_t OrdRejReason; // Reject reason uint16_t ClearingInstruction; // Posting code for clearing uint8_t TradingSessionID; // Trading session Id uint8_t CrossType; // Cross Order Type uint8_t CustOrderCapacity; // Type of customer trading uint8_t PartyRole; // Member/Trader allocation char ExecRefID[LIFFE_EXECREFID_LEN]; // Exec Id of Corrected Fill char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg char LastRptRequested; // Last response msg indicator char Text[LIFFE_TEXT_LEN]; // Message from the exchange char SecondaryClOrdID[LIFFE_PRIV_REF_LEN]; // Traders' reference char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char Account[LIFFE_ACC_LEN]; // Additional client Id char PackageID[LIFFE_PACKAGE_ID_LEN]; // Trade package identifier char SecondaryOrderID[LIFFE_SECONDARY_ORDID_LEN]; // Order Id for clearing char RiskID[LIFFE_COMPID_LEN]; // Risk Manager's ITM char MatchingCode[LIFFE_PASSWORD_LEN]; // Trade match password char TradeInputDevice[LIFFE_INP_DEVICE_LEN]; // Automatic order injection model char OtherParty[LIFFE_TRADER_ID_LEN]; // ITM of trader for other half char OrdStatus; // Order status char OrdType; // Order type char Side; // Side char TimeInForce; // Order duration char ExecType; // Execution report type char OrderOrigin; // Origin of the order char OrderCapacity; // ITM role on trade char TradeInputSource; // Auto trade injection indicator char AccountCode; // Type of account char ClientInfo[LIFFE_CLIENT_INFO_LEN]; // Trader's free Text */ char PartyID[LIFFE_PARTY_ID_LEN]; // Member/Trader order allocated to char PostingAction[LIFFE_POSITION_EFFECT_LEN];// Leg posting action codes // MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; int32_t InvestmentDecisionWFirmShortCode; int32_t NonExecutingBrokerShortCode; uint8_t WaiverIndicator; char DEAIndicator; char ExecWFirmAlgoTradingIndicator; char InvDecWFirmAlgoTradingIndicator; char DeferralIndicator; char CommodityDerivativeIndicator; char TradingCapacity; char SSTISystem[LIFFE_MIFID2_LEN_SSTISYS]; char ESCBMembership; char PackageIndicator; char PassiveOrder; char OtherLegSecurityIDSource; char OtherLegSecurityID[LIFFE_SECURITY_ID_LEN]; char OtherLegReferenceNo[LIFFE_LEG_REF_LEN]; uint8_t NoLegs; // Number of legs struct leg_detail { uint32_t LegLastPx; uint32_t LegLastQty; char LegSecurityIDSource; char LegSecurityID[LIFFE_SECURITY_ID_LEN]; } LegDetail[LIFFE_MAX_LEGS]; enum { MSGTYPE = LIFFE_MSG_81 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "8"; } static size_t fixedSize() {return offsetof(LiffeBinApi_ExecReport_81, LegDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_ExecReport_81::leg_detail);} size_t numVarRecs() const {return NoLegs;} }; // Name: Execution Report - Long version - CCG DC SMARTS // FIX Type: 8 // Variant: 2 // Message length: Variable // Varying length array: LegDetail // Array size field: NoLegs struct LiffeBinApi_ExecReport_82 { LIFFE_HEADER; uint64_t OrderID; // Exchange order id uint64_t TradeID; // Trade Id for matched orders uint64_t ExecID; // Id for this message uint32_t ListID; // List request Id uint32_t TransactTime; // Transaction time uint32_t ClOrdLinkID; // Id to group component legs int32_t LastPx; // Order Fill Price int32_t Price; // Order Price int32_t StopPx; // Stop order trigger price uint32_t ReturnCode; // Exchange response status uint32_t ExpireDate; // Expire Date of a GTD order uint32_t CumQty; // Number of filled lots uint32_t LastQty; // Order fill lots/Deleted volume uint32_t OrderQty; // Total Order Quantity uint32_t MinQty; // Min volume uint32_t LeavesQty; // Volume remaining int32_t QtyDelta; // Volume change uint32_t OtherLegLastPx; uint16_t OrdRejReason; // Reject reason uint16_t ClearingInstruction; // Posting code for clearing uint8_t TradingSessionID; // Trading session Id uint8_t CrossType; // Cross Order Type uint8_t CustOrderCapacity; // Type of customer trading uint8_t PartyRole; // Member/Trader allocation char ExecRefID[LIFFE_EXECREFID_LEN]; // Exec Id of Corrected Fill char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg char LastRptRequested; // Last response msg indicator char Text[LIFFE_TEXT_LEN]; // Message from the exchange char SecondaryClOrdID[LIFFE_PRIV_REF_LEN]; // Traders' reference char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char Account[LIFFE_ACC_LEN]; // Additional client Id char PackageID[LIFFE_PACKAGE_ID_LEN]; // Trade package identifier char SecondaryOrderID[LIFFE_SECONDARY_ORDID_LEN]; // Order Id for clearing char RiskID[LIFFE_COMPID_LEN]; // Risk Manager's ITM char MatchingCode[LIFFE_PASSWORD_LEN]; // Trade match password char TradeInputDevice[LIFFE_INP_DEVICE_LEN]; // Automatic order injection model char OtherParty[LIFFE_TRADER_ID_LEN]; // ITM of trader for other half char OrdStatus; // Order status char OrdType; // Order type char Side; // Side char TimeInForce; // Order duration char ExecType; // Execution report type char OrderOrigin; // Origin of the order char OrderCapacity; // ITM role on trade char TradeInputSource; // Auto trade injection indicator char AccountCode; // Type of account char ClientInfo[LIFFE_CLIENT_INFO_LEN]; // Trader's free Text */ char PartyID[LIFFE_PARTY_ID_LEN]; // Member/Trader order allocated to char PostingAction[LIFFE_POSITION_EFFECT_LEN];// Leg posting action codes char OtherLegSecurityIDSource; char OtherLegSecurityID[LIFFE_SECURITY_ID_LEN]; char OtherLegReferenceNo[LIFFE_LEG_REF_LEN]; char ClOrdID[LIFFE_CLORDID_LEN]; // Client order id char OrigClOrdID[LIFFE_CLORDID_LEN]; // Cancelled/Revised Client order id char CrossID[LIFFE_REQUEST_ID_LEN]; // Id for Cross Order char MassStatusReqID[LIFFE_REQUEST_ID_LEN];// Mass Status request Id uint8_t NoLegs; // Number of legs struct leg_detail { int32_t LegLastPx; uint32_t LegLastQty; char LegSecurityIDSource; char LegSecurityID[LIFFE_SECURITY_ID_LEN]; } LegDetail[LIFFE_MAX_LEGS]; enum { MSGTYPE = LIFFE_MSG_82 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "8"; } static size_t fixedSize() {return offsetof(LiffeBinApi_ExecReport_82, LegDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_ExecReport_82::leg_detail);} size_t numVarRecs() const {return NoLegs;} }; // Name: Order Acknowledgement // FIX Type: a // Variant: 1 // Message length: Fixed struct LiffeBinApi_OrderAck_a1 { LIFFE_HEADER; uint64_t OrderID; // Exchange order id uint32_t ClOrdID; // Client order id enum { MSGTYPE = LIFFE_MSG_a1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "a"; } static size_t fixedSize() {return sizeof(LiffeBinApi_OrderAck_a1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Get MM Protection Request Ack // FIX Type: U8 // Variant: 1 // Message length: Variable // Varying length array: ExpiryDetail // Array size field: NoExpiries struct LiffeBinApi_GetMMProtectionReqAck_U81 { LIFFE_HEADER; uint32_t GetMMProtectionStatusID; // Unique Client Identifier uint32_t ProductProtectionPeriod; // Product protection period int32_t ProductProtectionPosition; // Current protection position uint32_t ProductProtectionStatus; // Product protection status uint32_t ProductLimit; // Limit for Product Protection uint32_t ProductLimitBreachAct; // Product limit breach action uint16_t RejectReasonCode; // Reject Reason char ProductProtectionActive; // Product protection active indicator char ProductLimitBreached; // Limit breach indicator char ProductQuotesPulled; // Quotes pulled indicator char Text[LIFFE_TEXT_LEN]; // Message from the exchange char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code uint8_t NoExpiries; // Number of expiry limit entries char Filler1[2]; // Word align following array struct expiry_detail { uint32_t MaturityMonthYear; // Product expiry date (YYYYMM) int32_t ExpiryProtectionPosition; // Current protection position uint32_t ExpiryLimit; // Limit for Expiry Protection uint32_t ExpiryProtectionStatus; // Expiry protection status char ExpiryLimitBreached; // Expiry Limit breach indicator char ExpiryQuotesPulled; // Quotes pulled indicator char Filler[2]; // Keep array word aligned } ExpiryDetail[LIFFE_MAX_MM_EXPIRIES]; enum { MSGTYPE = LIFFE_MSG_U81 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U8"; } static size_t fixedSize() {return offsetof(LiffeBinApi_GetMMProtectionReqAck_U81, ExpiryDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_GetMMProtectionReqAck_U81::expiry_detail);} size_t numVarRecs() const {return NoExpiries;} }; // Name: Get MM Protection Request // FIX Type: U4 // Variant: 1 // Message length: Variable // Varying length array: ExpiryDetail // Array size field: NoExpiries struct LiffeBinApi_GetMMProtectionReq_U41 { LIFFE_HEADER; uint32_t GetMMProtectionStatusID; // Unique Client Identifier uint32_t RequestLevel; // Level of Risk Mitigation uint8_t ProtectionType; // Type of Risk mitigation char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Automated Market Reference uint8_t NoExpiries; // Number of expiry entries char Filler1[2]; struct expiry_detail { uint32_t MaturityMonthYear; // Product expiry date } ExpiryDetail[LIFFE_MAX_MM_EXPIRIES]; enum { MSGTYPE = LIFFE_MSG_U41 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U4"; } static size_t fixedSize() {return offsetof(LiffeBinApi_GetMMProtectionReq_U41, ExpiryDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_GetMMProtectionReq_U41::expiry_detail);} size_t numVarRecs() const {return NoExpiries;} }; // Name: List Status // FIX Type: N // Variant: 1 // Message length: Variable // Varying length array: ListStatusDetail // Array size field: NoOrders struct LiffeBinApi_ListStatus_N1 { LIFFE_HEADER; uint32_t ListID; // Clients unique List id uint16_t ListRejectReason; // Reason of Rejection for a Order List char Text[LIFFE_TEXT_LEN]; // Message from the exchange uint8_t NoOrders; // Number of status records in the list char Filler1; // Padding for double word alignment struct list_status_detail { uint64_t OrderID; // Exchange order id uint32_t ClOrdID; // Client order id uint32_t OrigClOrdID; // Client order id that was cancelled/revised char OrdStatus; // Status of the Order char Filler[7]; // Padding for double word alignment } ListStatusDetail[LIFFE_MAX_REVISIONS]; // Variable length enum { MSGTYPE = LIFFE_MSG_N1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "N"; } static size_t fixedSize() {return offsetof(LiffeBinApi_ListStatus_N1, ListStatusDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_ListStatus_N1::list_status_detail);} size_t numVarRecs() const {return NoOrders;} }; // Name: List Status - Long version - CCG DC SMARTS // FIX Type: N // Variant: 2 // Message length: Variable // Varying length array: ListStatusDetail // Array size field: NoOrders struct LiffeBinApi_ListStatus_N2 { LIFFE_HEADER; uint32_t ListID; // Clients unique List id uint16_t ListRejectReason; // Reason of Rejection for a Order List char Text[LIFFE_TEXT_LEN]; // Message from the exchange char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg char Filler1[4]; // Padding for double word alignment uint8_t NoOrders; // Number of status records in the list struct list_status_detail { uint64_t OrderID; // Exchange order id char ClOrdID[LIFFE_CLORDID_LEN]; // Client order id char OrigClOrdID[LIFFE_CLORDID_LEN]; // Cancelled/Revised Client order id char OrdStatus; // Status of the Order char Filler[3]; // Padding for double word alignment } ListStatusDetail[LIFFE_MAX_REVISIONS]; // Variable length enum { MSGTYPE = LIFFE_MSG_N2 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "N"; } static size_t fixedSize() {return offsetof(LiffeBinApi_ListStatus_N2, ListStatusDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_ListStatus_N2::list_status_detail);} size_t numVarRecs() const {return NoOrders;} }; // Name: Logon Rejection // FIX Type: L // Variant: 1 // Message length: Fixed struct LiffeBinApi_LogonReject_L1 { LIFFE_HEADER; uint32_t LastRcvdSeqNumber; // Sequence number of last msg received from client uint32_t LastSentSeqNumber; // Sequence number of last msg sent to client uint16_t RejectReasonCode; // Rejection Reason char Text[LIFFE_TEXT_LEN]; // Message from the exchange enum { MSGTYPE = LIFFE_MSG_L1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "L"; } static size_t fixedSize() {return sizeof(LiffeBinApi_LogonReject_L1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; #define MSG_SLOT_COUNT 14 // Name: Logon Request // FIX Type: A // Variant: 1 // Message length: Fixed struct LiffeBinApi_LogonRequest_A1 { LIFFE_HEADER; int32_t LastSeqNum; // Last sequence number processed int16_t HeartBtInt; // Heartbeat Interval (seconds) char SenderCompId[LIFFE_COMPID_LEN]; // ITM or 'EXCHG' sending message char SenderSubId[LIFFE_SUBID_LEN]; // Member mnemonic char Versions[3*MSG_SLOT_COUNT]; // Message versions to use char CancelOnDisconnect; // Cancel non GTC orders on disconnect enum { MSGTYPE = LIFFE_MSG_A1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "A"; } static size_t fixedSize() {return sizeof(LiffeBinApi_LogonRequest_A1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Logout Request // FIX Type: 5 // Variant: 1 // Message length: Fixed struct LiffeBinApi_LogoutRequest_51 { LIFFE_HEADER; enum { MSGTYPE = LIFFE_MSG_51 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "5"; } static size_t fixedSize() {return sizeof(LiffeBinApi_LogoutRequest_51);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Mass Cancel Report // FIX Type: r // Variant: 1 // Message length: Fixed struct LiffeBinApi_MassCancelReport_r1 { LIFFE_HEADER; uint32_t ClOrdID; // Client order id uint32_t TotalAffectedOrders; // Number of orders affected uint16_t MassCanelRejectReason; // Reject reason char MassCancelRequestType; // Scope of request char Text[LIFFE_TEXT_LEN]; // Message from the exchange char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM char MassCancelResponse; // Cancel result type enum { MSGTYPE = LIFFE_MSG_r1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "r"; } static size_t fixedSize() {return sizeof(LiffeBinApi_MassCancelReport_r1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Mass Cancel Report - Long version - CCG DC SMARTS // FIX Type: r // Variant: 2 // Message length: Fixed struct LiffeBinApi_MassCancelReport_r2 { LIFFE_HEADER; uint32_t TotalAffectedOrders; // Number of orders affected uint16_t MassCanelRejectReason; // Reject reason char MassCancelRequestType; // Scope of request char Text[LIFFE_TEXT_LEN]; // Message from the exchange char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM char MassCancelResponse; // Cancel result type char ClOrdID[LIFFE_CLORDID_LEN];// Client order id char OrigCompID[LIFFE_COMPID_LEN];// Target Comp Id of orig msg enum { MSGTYPE = LIFFE_MSG_r2 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "r"; } static size_t fixedSize() {return sizeof(LiffeBinApi_MassCancelReport_r2);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Order Mass Status Request // FIX Type: AF // Variant: 1 // Message length: Fixed struct LiffeBinApi_MassOrderStatusReq_AF1 { LIFFE_HEADER; uint32_t MassStatusReqID; // Client request Id uint8_t MassStatusReqType; // Mass Status Request type char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code enum { MSGTYPE = LIFFE_MSG_AF1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "AF"; } static size_t fixedSize() {return sizeof(LiffeBinApi_MassOrderStatusReq_AF1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Market Maker Configuration Status Ack // FIX Type: U5 // Variant: 1 // Message length: Variable // Varying length array: BatchDetail // Array size field: NoBatchSize struct LiffeBinApi_MMConfigStatusReqAck_U51 { LIFFE_HEADER; uint32_t MMConfigStatusRequestID; // Client request identifier uint32_t ConfigRequestStatus; // Request result status uint16_t RejectReasonCode; // Rejection reason char Text[LIFFE_TEXT_LEN]; // Message from the exchange uint8_t NoBatchSize; // Number of batch detail entries struct batch_detail { uint8_t BatchSize; // MM Contract batch size char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code } BatchDetail[LIFFE_MAX_MM_BATCHES]; enum { MSGTYPE = LIFFE_MSG_U51 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U5"; } static size_t fixedSize() {return offsetof(LiffeBinApi_MMConfigStatusReqAck_U51, BatchDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_MMConfigStatusReqAck_U51::batch_detail);} size_t numVarRecs() const {return NoBatchSize;} }; // Name: Market Maker Configuration Status Ack - Long version - CCG DC SMARTS // FIX Type: U5 // Variant: 2 // Message length: Variable // Varying length array: BatchDetail // Array size field: NoBatchSize struct LiffeBinApi_MMConfigStatusReqAck_U52 { LIFFE_HEADER; uint32_t MMConfigStatusRequestID; // Client request identifier uint32_t ConfigRequestStatus; // Request result status uint16_t RejectReasonCode; // Rejection reason char Text[LIFFE_TEXT_LEN]; // Message from the exchange char OrigCompID[LIFFE_COMPID_LEN];// Target Comp Id of orig msg uint8_t NoBatchSize; // Number of batch detail entries struct batch_detail { uint8_t BatchSize; // MM Contract batch size char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code } BatchDetail[LIFFE_MAX_MM_BATCHES]; enum { MSGTYPE = LIFFE_MSG_U52 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "U5"; } static size_t fixedSize() {return offsetof(LiffeBinApi_MMConfigStatusReqAck_U52, BatchDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_MMConfigStatusReqAck_U52::batch_detail);} size_t numVarRecs() const {return NoBatchSize;} }; // Name: Market Maker Config Status Request // FIX Type: U1 // Variant: 1 // Message length: Fixed struct LiffeBinApi_MMConfigStatusReq_U11 { LIFFE_HEADER; uint32_t MMConfigStatusRequestID; // Client request identifier enum { MSGTYPE = LIFFE_MSG_U11 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U1"; } static size_t fixedSize() {return sizeof(LiffeBinApi_MMConfigStatusReq_U11);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: New Order (Single) // FIX Type: D // Variant: 1 // Message length: Fixed struct LiffeBinApi_NewOrderReq_D1 { LIFFE_HEADER; uint32_t ClOrdID; // Client order id int32_t Price; // Price int32_t StopPx; // Stop Price uint32_t ExpireDate; // Order expiry date uint32_t OrderQty; // Volume uint32_t MinQty; // Min fill qty uint16_t ClearingInstruction; // Posting code for Clearing uint8_t TradingSessionID; // Trading session id uint8_t PartyRole; // Party Id indicator uint8_t CustOrderCapacity; // Type of customer char SecondaryClOrdID[LIFFE_PRIV_REF_LEN]; // Traders' reference char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char Account[LIFFE_ACC_LEN]; // Order Account char TradeInputSource; // Auto order injection indicator char TradeInputDevice[LIFFE_INP_DEVICE_LEN];// Auto order injection model char OrdType; // Order type char Side; // Side char TimeInForce; // Order duration char OrderOrigin; // Origin of the order char AccountCode; // Type of account char ClientInfo[LIFFE_CLIENT_INFO_LEN]; // Trader's free text char PartyID[LIFFE_PARTY_ID_LEN]; // Member/Trader for order allocation char PostingAction[LIFFE_POSITION_EFFECT_LEN]; // Strategy posting action // MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; int32_t InvestmentDecisionWFirmShortCode; int32_t NonExecutingBrokerShortCode; char DEAIndicator; char ExecWFirmAlgoTradingIndicator; char InvDecWFirmAlgoTradingIndicator; char DeferralIndicator; char CommodityDerivativeIndicator; char TradingCapacity; enum { MSGTYPE = LIFFE_MSG_D1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "D"; } static size_t fixedSize() {return sizeof(LiffeBinApi_NewOrderReq_D1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: New Order List // FIX Type: E // Variant: 1 // Message length: Variable // Varying length array: OrderDetail // Array size field: NoOrders struct LiffeBinApi_NewOrderListReq_E1 { LIFFE_HEADER; uint32_t ListID; // Client request id uint8_t NoOrders; // Number of orders in list char Filler1[3]; // Pad to word align order detail array struct order_detail { uint32_t ClOrdID; // Client order id int32_t Price; // Price int32_t StopPx; // Stop Price uint32_t ExpireDate; // Order expiry date uint32_t OrderQty; // Volume uint32_t MinQty; // Min fill qty uint16_t ClearingInstruction; // Posting code for Clearing uint8_t TradingSessionID; // Trading session id uint8_t PartyRole; // Party Id indicator uint8_t CustOrderCapacity; // Type of customer char SecondaryClOrdID[LIFFE_PRIV_REF_LEN]; // Traders' reference char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char Account[LIFFE_ACC_LEN]; // Order Account char TradeInputSource; // Auto order injection indicator char TradeInputDevice[LIFFE_INP_DEVICE_LEN]; // Auto order injection model char OrdType; // Order type char Side; // Side char TimeInForce; // Order duration char OrderOrigin; // Origin of the order char AccountCode; // Type of account char ClientInfo[LIFFE_CLIENT_INFO_LEN]; // Trader's free text char PartyID[LIFFE_PARTY_ID_LEN]; // Member/Trader for order allocation char PostingAction[LIFFE_POSITION_EFFECT_LEN]; // Strategy posting action // MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; int32_t InvestmentDecisionWFirmShortCode; int32_t NonExecutingBrokerShortCode; char DEAIndicator; char ExecWFirmAlgoTradingIndicator; char InvDecWFirmAlgoTradingIndicator; char DeferralIndicator; char CommodityDerivativeIndicator; char TradingCapacity; } OrderDetail[LIFFE_MAX_ORDERS]; enum { MSGTYPE = LIFFE_MSG_E1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "E"; } static size_t fixedSize() {return offsetof(LiffeBinApi_NewOrderListReq_E1, OrderDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_NewOrderListReq_E1::order_detail);} size_t numVarRecs() const {return NoOrders;} }; // Name: Order Cancel Reject // FIX Type: 9 // Variant: 1 // Message length: Fixed struct LiffeBinApi_OrderCancelReject_91 { LIFFE_HEADER; uint64_t OrderID; // Exchange order id uint32_t ClOrdID; // Client id of request being rejected uint32_t OrigClOrdID; // Client id of order to be canceled uint32_t ReturnCode; // Exchange response code uint16_t CxlRejReason; // Cancel rejection reason char CxlRejResponseTo; // Type of request that was rejected char Text[LIFFE_TEXT_LEN]; // Message from exchange char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM enum { MSGTYPE = LIFFE_MSG_91 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "9"; } static size_t fixedSize() {return sizeof(LiffeBinApi_OrderCancelReject_91);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Order Cancel Reject - Long Version - CCG DC SMARTS // FIX Type: 9 // Variant: 2 // Message length: Fixed struct LiffeBinApi_OrderCancelReject_92 { LIFFE_HEADER; uint64_t OrderID; // Exchange order id uint32_t ReturnCode; // Exchange response code uint16_t CxlRejReason; // Cancel rejection reason char CxlRejResponseTo; // Type of request that was rejected char Text[LIFFE_TEXT_LEN]; // Message from exchange char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM char ClOrdID[LIFFE_CLORDID_LEN];// Client order id char OrigClOrdID[LIFFE_CLORDID_LEN];// Cancelled/Revised Client order id char OrigCompID[LIFFE_COMPID_LEN];// Target Comp Id of orig msg enum { MSGTYPE = LIFFE_MSG_92 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "9"; } static size_t fixedSize() {return sizeof(LiffeBinApi_OrderCancelReject_92);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Order Revision Request // FIX Type: G // Variant: 1 // Message length: Fixed struct LiffeBinApi_OrderRevisionReq_G1 { LIFFE_HEADER; uint64_t OrderID; // Exchange order id uint32_t ClOrdID; // Client order id uint32_t OrigClOrdID; // Order id to be revised int32_t Price; // Order Price int32_t StopPx; // Stop order trigger Price uint32_t ExpireDate; // Order expiry date uint32_t OrderQty; // Order Volume char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code //MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; char DEAIndicator; enum { MSGTYPE = LIFFE_MSG_G1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "G"; } static size_t fixedSize() {return sizeof(LiffeBinApi_OrderRevisionReq_G1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Order Revision List // FIX Type: UA // Variant: 1 // Message length: Variable // Varying length array: RevisionDetail // Array size field: NoOrders struct LiffeBinApi_OrderRevisionListReq_UA1 { LIFFE_HEADER; uint32_t ListID; // Client request id char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code uint8_t NoOrders; // Number of order revisions char Filler1[3]; // Pad to double word alignment struct order_revision_detail { uint64_t OrderID; // Exchange order id uint32_t OrigClOrdID; // Order id to be revised int32_t Price; // Order Price int32_t StopPx; // Stop order trigger Price uint32_t ExpireDate; // Order expiry date uint32_t OrderQty; // Order Volume //MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; char DEAIndicator; char Filler[3]; // Double word align record } RevisionDetail[LIFFE_MAX_REVISIONS]; enum { MSGTYPE = LIFFE_MSG_UA1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "UA"; } static size_t fixedSize() {return offsetof(LiffeBinApi_OrderRevisionListReq_UA1, RevisionDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_OrderRevisionListReq_UA1::order_revision_detail);} size_t numVarRecs() const {return NoOrders;} }; // Name: Order Cancellation List // FIX Type: UB // Variant: 1 // Message length: Variable // Varying length array: Orders // Array size field: NoOrders struct LiffeBinApi_OrderCancelListReq_UB1 { LIFFE_HEADER; uint32_t ListID; // List Cancel request id char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code uint8_t NoOrders; // Number of order revisions char Filler1[3]; // Pad to double word alignment struct order_id_detail { uint64_t OrderID; // Exchange order id uint32_t OrigClOrdID; // Order id to be revised //MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; char DEAIndicator; char Filler[3]; // Double word align record } Orders[LIFFE_MAX_CANCELS]; enum { MSGTYPE = LIFFE_MSG_UB1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "UB"; } static size_t fixedSize() {return offsetof(LiffeBinApi_OrderCancelListReq_UB1, Orders[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_OrderCancelListReq_UB1::order_id_detail);} size_t numVarRecs() const {return NoOrders;} }; // Name: Cancel Notification // FIX Type: UD // Variant: 1 // Message length: Variable // Varying length array: CancelledOrders // Array size field: NoOrders struct LiffeBinApi_CancelNotification_UD1 { LIFFE_HEADER; uint32_t ClOrdID; // Client request id uint32_t ListID; // List Cancel request id uint32_t ReturnCode; // Exchange response code char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg char LastRptRequested; char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM char OrdStatus; // Order status uint8_t NoOrders; // Number of order revisions char Filler1[7]; // Pad to double word alignment struct cancelled_order_detail { uint64_t OrderID; // Exchange order id uint32_t OrigClOrdID; // Order id to be revised char Filler[4]; // Double word align record } CancelledOrders[LIFFE_MAX_CANCEL_BATCH]; enum { MSGTYPE = LIFFE_MSG_UD1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "UD"; } static size_t fixedSize() {return offsetof(LiffeBinApi_CancelNotification_UD1, CancelledOrders[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_CancelNotification_UD1::cancelled_order_detail);} size_t numVarRecs() const {return NoOrders;} }; // Name: Cancel Notification - Long version - CCG DC SMARTS // FIX Type: UD // Variant: 2 // Message length: Variable // Varying length array: CancelledOrders // Array size field: NoOrders struct LiffeBinApi_CancelNotification_UD2 { LIFFE_HEADER; uint32_t ListID; // List Cancel request id uint32_t ReturnCode; // Exchange response code char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg char LastRptRequested; char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM char OrdStatus; // Order status char ClOrdID[LIFFE_CLORDID_LEN]; // Client order id char Filler1[5]; // Pad to double word alignment uint8_t NoOrders; // Number of order revisions struct cancelled_order_detail { uint64_t OrderID; // Exchange order id char OrigClOrdID[LIFFE_CLORDID_LEN]; // Cancelled/Revised Client order id char Filler[2]; // Double word align record } CancelledOrders[LIFFE_MAX_CANCEL_BATCH]; enum { MSGTYPE = LIFFE_MSG_UD2 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "UD"; } static size_t fixedSize() {return offsetof(LiffeBinApi_CancelNotification_UD2, CancelledOrders[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_CancelNotification_UD2::cancelled_order_detail);} size_t numVarRecs() const {return NoOrders;} }; // Name: Contract Availability // FIX Type: UC // Variant: 1 // Message length: Variable // Varying length array: Contracts // Array size field: NoContracts struct LiffeBinApi_ContractAvailability_UC1 { LIFFE_HEADER; uint32_t ContractAvailabilityID; // Contract availability id char SecurityIDSource; // Type of SecurityID char AvailabilityStatus; char LastRptRequested; uint8_t NoContracts; // Number of order revisions struct contract_list_detail { char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code } ContractList[LIFFE_MAX_CONTRACTS]; enum { MSGTYPE = LIFFE_MSG_UC1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "UC"; } static size_t fixedSize() {return offsetof(LiffeBinApi_ContractAvailability_UC1, ContractList[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_ContractAvailability_UC1::contract_list_detail);} size_t numVarRecs() const {return NoContracts;} }; // Name: Quote Request Reject // FIX Type: AG // Variant: 1 // Message length: Fixed struct LiffeBinApi_QuoteRequestReject_AG1 { LIFFE_HEADER; uint32_t QuoteReqID; // Client's quote request id uint32_t ReturnCode; // Exchange response code uint16_t QuoteRejectReason; // Quote Request Reject Reason char Text[LIFFE_TEXT_LEN]; // Message from the exchange enum { MSGTYPE = LIFFE_MSG_AG1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "AG"; } static size_t fixedSize() {return sizeof(LiffeBinApi_QuoteRequestReject_AG1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Mass Quote Request Ack // FIX Type: b // Variant: 1 // Message length: Variable // Varying length array: QuotesDetail // Array size field: NoQuotes struct LiffeBinApi_MassQuoteReqAck_b1 { LIFFE_HEADER; uint32_t QuoteReqID; // Client's quote request id uint16_t QuoteRejectReason; // Quote Request Reject Reason char Text[LIFFE_TEXT_LEN]; // Message from the exchange char Filler1[1]; // Pad msg so array is 8 byte aligned uint8_t NoQuotes; // Number of quotes detail entries struct quotes_detail { uint64_t BuyOrderID; // Exchange Buy order ID uint64_t SellOrderID; // Exchange Sell order ID uint32_t BuyStatus; // Buy Quote Ack Status uint32_t SellStatus; // Sell Quote Ack status char BuyRevisionFlag; // Buy side Quote/Revision indicator char SellRevisionFlag; // Sell side Quote/Revision indicator char Filler[6]; // Pad record length to 8 byte multiple } QuotesDetail[LIFFE_MAX_QUOTES]; enum { MSGTYPE = LIFFE_MSG_b1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "b"; } static size_t fixedSize() {return offsetof(LiffeBinApi_MassQuoteReqAck_b1, QuotesDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_MassQuoteReqAck_b1::quotes_detail);} size_t numVarRecs() const {return NoQuotes;} }; // Name: Mass Quote Request Ack - Long Version - CCG DC SMARTS // FIX Type: b // Variant: 12 // Message length: Variable // Varying length array: QuotesDetail // Array size field: NoQuotes struct LiffeBinApi_MassQuoteReqAck_b2 { LIFFE_HEADER; uint32_t QuoteReqID; // Client's quote request id uint16_t QuoteRejectReason; // Quote Request Reject Reason char Text[LIFFE_TEXT_LEN]; // Message from the exchange char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg char Filler1[4]; // Pad msg so array is 8 byte aligned uint8_t NoQuotes; // Number of quotes detail entries struct quotes_detail { uint64_t BuyOrderID; // Exchange Buy order ID uint64_t SellOrderID; // Exchange Sell order ID uint32_t BuyStatus; // Buy Quote Ack Status uint32_t SellStatus; // Sell Quote Ack status char BuyRevisionFlag; // Buy side Quote/Revision indicator char SellRevisionFlag; // Sell side Quote/Revision indicator char Filler[6]; // Pad record length to 8 byte multiple } QuotesDetail[LIFFE_MAX_QUOTES]; enum { MSGTYPE = LIFFE_MSG_b2 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "b"; } static size_t fixedSize() {return offsetof(LiffeBinApi_MassQuoteReqAck_b2, QuotesDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_MassQuoteReqAck_b2::quotes_detail);} size_t numVarRecs() const {return NoQuotes;} }; // Name: Quote Request // FIX Type: R // Variant: 1 // Message length: Fixed struct LiffeBinApi_QuoteReq_R1 { LIFFE_HEADER; uint32_t QuoteReqID; // Client request identifier char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code uint32_t OrderQty; // Order Volume //MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; char DEAIndicator; enum { MSGTYPE = LIFFE_MSG_R1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "R"; } static size_t fixedSize() {return sizeof(LiffeBinApi_QuoteReq_R1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Quote Request - Long Version - CCG DC SMARTS // FIX Type: R // Variant: 2 // Message length: Fixed struct LiffeBinApi_QuoteReq_R2 { LIFFE_HEADER; char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code uint32_t OrderQty; // Order Volume char QuoteReqID[LIFFE_REQUEST_ID_LEN]; // Client request identifier char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg enum { MSGTYPE = LIFFE_MSG_R2 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "R"; } static size_t fixedSize() {return sizeof(LiffeBinApi_QuoteReq_R2);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Mass Quote Request // FIX Type: I // Variant: 1 // Message length: Variable // Varying length array: QuotesDetail // Array size field: NoQuotes struct LiffeBinApi_MassQuoteReq_I1 { LIFFE_HEADER; uint32_t QuoteID; // Client request identifier uint16_t ClearingInstruction; // Posting code for clearing uint8_t CustOrderCapacity; // Type of customer char AccountCode; // Type of account char SecondaryClOrdID[LIFFE_PRIV_REF_LEN]; // Traders' reference char ClientInfo[LIFFE_CLIENT_INFO_LEN]; // Trader's free text char SecurityIDSource; // Type of SecurityID // MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; int32_t InvestmentDecisionWFirmShortCode; int32_t NonExecutingBrokerShortCode; char DEAIndicator; char ExecWFirmAlgoTradingIndicator; char InvDecWFirmAlgoTradingIndicator; char DeferralIndicator; char CommodityDerivativeIndicator; char TradingCapacity; uint8_t NoQuotes; // Number of Quote Entries char Filler3[2]; struct quotes_detail { int32_t BidPx; // Bid Price int32_t OfferPx; // Offer Price uint32_t BidSize; // Bid Quantity uint32_t OfferSize; // Offer Quantity char SideRevised; // Sides affected char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code } QuotesDetail[LIFFE_MAX_QUOTES]; enum { MSGTYPE = LIFFE_MSG_I1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "I"; } static size_t fixedSize() {return offsetof(LiffeBinApi_MassQuoteReq_I1, QuotesDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_MassQuoteReq_I1::quotes_detail);} size_t numVarRecs() const {return NoQuotes;} }; // Name: Security Defn Update Report // FIX Type: d // Variant: 1 // Message length: Fixed struct LiffeBinApi_SecurityDefn_d1 { LIFFE_HEADER; uint32_t SecurityReqID; // Client request identifier uint32_t ReturnCode; // Exchange response code uint16_t RejectReasonCode; // Reject Reason code char Text[LIFFE_TEXT_LEN]; // Message from exchange char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code enum { MSGTYPE = LIFFE_MSG_d1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "d"; } static size_t fixedSize() {return sizeof(LiffeBinApi_SecurityDefn_d1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Security Defn Request // FIX Type: c // Variant: 1 // Message length: Variable // Varying length array: LegDetail // Array size field: NoLegs struct LiffeBinApi_SecurityDefReq_c1 { LIFFE_HEADER; uint32_t SecurityReqID; // Client request identifier uint8_t SecurityRequestType; // Security defn request type char SecurityIDSource; // Type of SecurityID char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char SecuritySubType[LIFFE_STRATEGY_TYPE_LEN]; // Strategy Code uint8_t NoLegs; // Number of legs struct leg_detail { uint32_t LegRatioQty; // Ratio for this leg uint32_t LegPrice; // Leg Price uint32_t LegStrikePrice; // Leg Strike Price uint32_t LegMaturityMonthYear; // Product expiry date char LegSecurityIDSource; // Type of SecurityID char LegSecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char LegSecurityType[LIFFE_SECTYPE_LEN]; // Type of leg product char LegPutOrCall; // Option Put/Call indicator char LegSide; // Side char Filler[2]; // Word align record } LegDetail[LIFFE_MAX_LEGS]; enum { MSGTYPE = LIFFE_MSG_c1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "c"; } static size_t fixedSize() {return offsetof(LiffeBinApi_SecurityDefReq_c1, LegDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_SecurityDefReq_c1::leg_detail);} size_t numVarRecs() const {return NoLegs;} }; // Name: Set MM Protection Request Ack // FIX Type: U6 // Variant: 1 // Message length: Variable // Varying length array: ExpiryStatusDetail // Array size field: NoExpiries struct LiffeBinApi_SetMMProtectionReqAck_U61 { LIFFE_HEADER; uint32_t SetMMProtectionID; // Client Request Identifier uint32_t ProductProtectionStatus; // Product protection status uint16_t RejectReasonCode; // Reject Reason code char Text[LIFFE_TEXT_LEN]; // Message from the exchange char SecurityIDSource; // Type of Security code char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code uint8_t NoExpiries; // Num of expiry limit entries char Filler1[1]; struct expiry_status_detail { uint32_t ExpiryProtectionStatus; // Expiry protection status } ExpiryStatusDetail[LIFFE_MAX_MM_EXPIRIES]; enum { MSGTYPE = LIFFE_MSG_U61 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U6"; } static size_t fixedSize() {return offsetof(LiffeBinApi_SetMMProtectionReqAck_U61, ExpiryStatusDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_SetMMProtectionReqAck_U61::expiry_status_detail);} size_t numVarRecs() const {return NoExpiries;} }; // Name: Set MM Protection Request Ack - Long version - CCG DC SMARTS // FIX Type: U6 // Variant: 2 // Message length: Variable // Varying length array: ExpiryStatusDetail // Array size field: NoExpiries struct LiffeBinApi_SetMMProtectionReqAck_U62 { LIFFE_HEADER; uint32_t SetMMProtectionID; // Client Request Identifier uint32_t ProductProtectionStatus; // Product protection status uint16_t RejectReasonCode; // Reject Reason code char Text[LIFFE_TEXT_LEN]; // Message from the exchange char SecurityIDSource; // Type of Security code char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char OrigCompID[LIFFE_COMPID_LEN]; // Target Comp Id of orig msg uint8_t NoExpiries; // Num of expiry limit entries struct expiry_status_detail { uint32_t ExpiryProtectionStatus; // Expiry protection status } ExpiryStatusDetail[LIFFE_MAX_MM_EXPIRIES]; enum { MSGTYPE = LIFFE_MSG_U62 }; enum { MSGVARIANT = 2 }; static const char* getMsgType() { return "U6"; } static size_t fixedSize() {return offsetof(LiffeBinApi_SetMMProtectionReqAck_U62, ExpiryStatusDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_SetMMProtectionReqAck_U62::expiry_status_detail);} size_t numVarRecs() const {return NoExpiries;} }; // Name: Set MM Protection Request // FIX Type: U2 // Variant: 1 // Message length: Variable // Varying length array: ExpiryDetail // Array size field: NoExpiries struct LiffeBinApi_SetMMProtectionReq_U21 { LIFFE_HEADER; uint32_t SetMMProtectionID; // Client Request Identifier uint32_t ProductProtectionPeriod; // Product protection period uint32_t ProductLimit; // Limit for Product Protection uint32_t ProductLimitBreachAct; // Product limit breach action uint32_t ExpiryLimitBreachAct; // Expiry limit breach action uint8_t ProtectionType; // Type of Risk mitigation char ProductProtectionActive; // Product protection active indicator char SecurityIDSource; // Type of Security code char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code uint8_t NoExpiries; // Num of expiry limit entries char Filler1[1]; struct expiry_detail { uint32_t MaturityMonthYear; // Product expiry date (YYYYMM) uint32_t ExpiryLimit; // Limit for Expiry Protection } ExpiryDetail[LIFFE_MAX_MM_EXPIRIES]; enum { MSGTYPE = LIFFE_MSG_U21 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U2"; } static size_t fixedSize() {return offsetof(LiffeBinApi_SetMMProtectionReq_U21, ExpiryDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_SetMMProtectionReq_U21::expiry_detail);} size_t numVarRecs() const {return NoExpiries;} }; // Name: Stock Order Routing Request // FIX Type: U9 // Variant: 1 // Message length: Fixed struct LiffeBinApi_StockOrdRoutingReq_U91 { LIFFE_HEADER; uint64_t StockOrdTransactTime; // Transaction time uint64_t SendingTime; // Sending Time uint64_t OrderID; uint32_t AccountNumber; // Order Account uint32_t StockOrderRequestID; // Client Id for this request int32_t LastPx; // Order fill price int32_t Price; // order price uint32_t LastQty; // Order fill lots uint32_t OrderQty; // Total order volume uint32_t StockOrdStatus; // Order status uint8_t StockOrderRequestType; // Stock order request type char OwnOrderID[LIFFE_OWN_ORDERID_LEN]; // Client Id for Stock Order char AccountType[LIFFE_INST_LEN]; // Type of Account char ClientDuplicate; // Duplicate client instruction char StockRef[LIFFE_STOCK_REF_LEN]; // Security code char DelivertoCompID[LIFFE_COMPID_LEN]; // ITM to route to char OnBehalfOfCompID[LIFFE_COMPID_LEN]; // ITM char FreeText[LIFFE_STOCK_TEXT_LEN]; char StockFillID[LIFFE_FILLID_LEN]; char OrdType; // Order Type char Side; // Order Side enum { MSGTYPE = LIFFE_MSG_U91 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U9"; } static size_t fixedSize() {return sizeof(LiffeBinApi_StockOrdRoutingReq_U91);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: Stock Order Routing Response // FIX Type: U0 // Variant: 1 // Message length: Fixed struct LiffeBinApi_StockOrdRoutingResponse_U01 { LIFFE_HEADER; uint64_t OrderID; uint32_t StockOrderRequestID; // Client Id for this request uint32_t ReturnCode; // Exchange response code uint16_t RejectReasonCode; // Reject Reason code char Text[LIFFE_TEXT_LEN]; // Message from exchange enum { MSGTYPE = LIFFE_MSG_U01 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "U0"; } static size_t fixedSize() {return sizeof(LiffeBinApi_StockOrdRoutingResponse_U01);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: User Notification // FIX Type: CB // Variant: 1 // Message length: Fixed struct LiffeBinApi_UserNotification_CB1 { LIFFE_HEADER; uint32_t ReturnCode; // Exchange Response Status uint8_t UserStatus; // User Status char Text[LIFFE_TEXT_LEN]; // Message from the exchange char SecurityIDSource; // Type of Security code char SecurityID[LIFFE_SECURITY_ID_LEN]; // Security code char RiskID[LIFFE_COMPID_LEN]; // Risk manager's ITM //MiFid 2 fields int32_t ClientIdentificationShortCode; int32_t ExecutionWithinFirmShortCode; char DEAIndicator; enum { MSGTYPE = LIFFE_MSG_CB1 }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "CB"; } static size_t fixedSize() {return sizeof(LiffeBinApi_UserNotification_CB1);} static size_t varRecSize() {return 0;} size_t numVarRecs() const {return 0;} }; // Name: New Order Extension (OE) // FIX Type: H // Variant: 1 // Message length: Fixed struct LiffeBinApi_NewOrderExtension_OE { LIFFE_HEADER; char PartyID[LIFFE_MAX_PARTY_ID_LEN]; int64_t IncomingMessageID; int32_t OrigClOrdID; int32_t CrossID; int64_t TradeID; uint64_t TransactTime; char Side; uint8_t InvestmentFirmDirectiveIndicator; char SecurityIDSource; char SecurityID[LIFFE_SECURITY_ID_LEN]; char AccountCode; uint8_t TransmissionOfOrderIndicator; char TransmittingFirmIDBuyer[LIFFE_MIFID2_LEN_CODE]; char TransmittingFirmIDSeller[LIFFE_MIFID2_LEN_CODE]; char NotionalIncreaseDecrease[LIFFE_MIFID2_LEN_NID]; int64_t UpFrontPayment; char UpFrontPaymentCurrency[LIFFE_MIFID2_LEN_CURRENCY]; char CountryBranchMembership[LIFFE_MIFID2_LEN_COUNTRY]; char CntryOfInvestor[LIFFE_MIFID2_LEN_COUNTRY]; char CntryOfExecutor[LIFFE_MIFID2_LEN_COUNTRY]; char ComplexTradeComponentId[LIFFE_MIFID2_LEN_COMPLEXTRADE]; char WaiverIndicator[LIFFE_MIFID2_LEN_WAIVERIND]; char ShortSellingIndicator[LIFFE_MIFID2_LEN_NID]; char SecFinancingTransactionIndicator; char FreeText1[LIFFE_MIFID2_LEN_FREETEXT]; char FreeText2[LIFFE_MIFID2_LEN_FREETEXT]; char FreeText3[LIFFE_MIFID2_LEN_FREETEXT]; char FreeText4[LIFFE_MIFID2_LEN_FREETEXT]; char FreeText5[LIFFE_MIFID2_LEN_FREETEXT]; char ClientDecisionMakerCode[LIFFE_MIFID2_LEN_CODE]; char ClientDecisionMakerFirstName[LIFFE_MIFID2_LEN_NAME]; char ClientDecisionMakerSurname[LIFFE_MIFID2_LEN_NAME]; int32_t ClientDecisionMakerBirth; char ClientDecisionMakerNID[LIFFE_MIFID2_LEN_ID]; char ClientDecisionMakerPassportID[LIFFE_MIFID2_LEN_ID]; uint8_t NoClients; char Filler1[3]; struct client_detail_bin { char ClientIdentificationCode[LIFFE_MIFID2_LEN_CODE]; char ClientCountryBranch[LIFFE_MIFID2_LEN_COUNTRY]; char ClientFirstName[LIFFE_MIFID2_LEN_NAME]; char ClientSurname[LIFFE_MIFID2_LEN_NAME]; int32_t ClientBirthDate; char ClientNationalID[LIFFE_MIFID2_LEN_ID]; char ClientPassportID[LIFFE_MIFID2_LEN_ID]; char Filler2; } clientDetail[LIFFE_MIFID2_MAX_OE_REP]; enum { MSGTYPE = LIFFE_MSG_OE }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "OE"; } static size_t fixedSize() {return offsetof(LiffeBinApi_NewOrderExtension_OE, clientDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_NewOrderExtension_OE::client_detail_bin);} size_t numVarRecs() const {return NoClients;} }; // Name: New Order Extension Ack (EA) // FIX Type: K // Variant: 1 // Message length: Fixed struct LiffeBinApi_NewOrderExtensionAck_EA { LIFFE_HEADER; uint64_t IncomingMessageID; uint32_t OrigClOrdID; char Side; uint64_t TradeID; uint32_t CrossID; char SecurityIDSource; char SecurityID[LIFFE_SECURITY_ID_LEN]; uint32_t ReturnCode; uint16_t NoItems; char Filler[1]; struct item_detail { uint32_t ConcernedField; uint32_t ReturnCode; } itemDetail[LIFFE_MIFID2_MAX_EA_REP]; enum { MSGTYPE = LIFFE_MSG_EA }; enum { MSGVARIANT = 1 }; static const char* getMsgType() { return "EA"; } static size_t fixedSize() {return offsetof(LiffeBinApi_NewOrderExtensionAck_EA, itemDetail[0]);} static size_t varRecSize() {return sizeof(LiffeBinApi_NewOrderExtensionAck_EA::item_detail);} size_t numVarRecs() const {return NoItems;} }; #endif