/// <summary> /// Apply order details /// </summary> /// <param name="message"></param> /// <returns></returns> public bool ApplyOrderDetails(FIXMessage message) { bool bRetVal = true; //add details message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESTickerMnemonic,m_sESTickerMnemonic); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESTickerSymbol,m_sESTickerSymbol); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESExchange, ESExchange); message.set_AsNumber(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESPriceFormatCode,m_lESPriceFormatCode); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagSecurityExchange, SecurityExchange); message.set_AsNumber(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagPutOrCall, m_nOptionType); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagSecurityType, CommodityType); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagSymbol,m_sSymbol); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESStrategyCode,m_sStrategyCode); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagSecurityID,m_sSecurityID); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagIDSource,m_sIDSource); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagCFICode,m_sCFICode); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagCurrency,m_sCurrency); message.set_AsNumber(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESDecimalPlaces,m_nESDecimalPlaces); message.set_AsDouble(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESUnitTickValue,m_dUnitTickValue); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESCombinedCommodityCode, m_sCombinedCommodityCode); message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESClearingHouse, m_sClearingHouse); message.set_AsDouble(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESCompositeDelta, m_dCompositeDelta); message.set_AsDouble(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESShortOptAdjust, m_dESShortOptAdjust); ApplyRiskArray(message); return bRetVal; }
//to do /// <summary> /// Basic defaults that are hard coded and not required /// </summary> /// <param name="message"></param> private void AddConstants(FIXMessage message) { //cannot be arsed as eurex does not care for this fields :) - TO DO message.set_AsString(FIXTagConstants.esFIXTagOpenClose, MESSAGEFIX3Lib.FIXOpenCloseConstants.esFIXOpen); message.set_AsNumber(FIXTagConstants.esFIXTagStopPx, 0); //Confusion in eat message.set_AsString(FIXTagConstants.esFIXTagTradingSessionID, MESSAGEFIX3Lib.FIXSessionConstants.esFIXSessionNormal); if(m_nPrimaryBOID != 0) { message.set_AsNumber(FIXTagConstants.esFIXTagESBOIDPrimary,m_nPrimaryBOID); } }
/// <summary> /// Apply ticker defaults /// </summary> /// <param name="sExchange"></param> /// <param name="message"></param> public void ApplyDefaults(string sExchange, FIXMessage message) { int iClientID; if (!message.GetNumber(out iClientID, MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESAccountID) && m_nAccountID.HasValue) message.set_AsNumber(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESAccountID, (int)m_nAccountID.Value); TickerDefaults tickerDefaults = GetTickerDefaults(sExchange); if (tickerDefaults != null) { tickerDefaults.ApplyTickerDefaults(message); } }
//TODO: [16/04/07] YKC - Hack as i donot care about order types etc /// <summary> /// Generate a fix message /// </summary> /// <param name="MsgType"></param> /// <returns></returns> public FIXMessage CreateFixMessage(MESSAGEFIX3Lib.FIXMsgConstants MsgType) { FIXMessage message = new FIXMessage(); if (Instrument != null) { message.MsgType = MsgType; Instrument.ApplyOrderDetails(message); AddConstants(message); //Add order details if (m_dPrice.HasValue) message.set_AsDouble(FIXTagConstants.esFIXTagPrice, m_dPrice.Value); message.set_AsNumber(FIXTagConstants.esFIXTagOrderQty, (int)m_nOrderQty); message.set_AsString(FIXTagConstants.esFIXTagSide, m_sSide); message.set_AsString(FIXTagConstants.esFIXTagTimeInForce, GetFIXTimeInForce()); message.set_AsString(FIXTagConstants.esFIXTagOrdType, GetFIXOrderType()); if (m_iAccountID.HasValue) message.set_AsNumber(FIXTagConstants.esFIXTagESAccountID, (int)m_iAccountID.Value); return message; } return null; }