Ejemplo n.º 1
0
 /// <summary>
 /// override base order price as this is a trade price
 /// </summary>
 /// <param name="FIXMsg"></param>
 public override void SetPrice(VDMIFIXMessage FIXMsg)
 {
     double dPrice = 0;
     if (FIXMsg.GetDouble(out dPrice, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagPrice))
     {
         m_dTradePrice = dPrice;
         m_dTotalFilledPrice = dPrice * m_nExecQty;
     }
     m_dPrice = null;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Parse FIX msg to obtain trade information
        /// </summary>
        /// <param name="FIXMsg"></param>
        /// <returns></returns>
        public override bool ParseFix(VDMIFIXMessage FIXMsg)
        {
            bool bSuccess = true;

            string sExecID = string.Empty;
            if (FIXMsg.GetString(out sExecID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagExecID))
                m_sExecID = sExecID;

            int nExecQty = 0;
            if (FIXMsg.GetNumber(out nExecQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagLastShares))
                m_nExecQty = nExecQty;

            EASYROUTERCOMCLIENTLib.IFIXGroup defaultGroup = FIXMsg.GetGroupByTag(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoUnderlyingFills, null);

            if (defaultGroup != null)
            {
                int nDefaultCount = defaultGroup.get_NumberOfGroups(null);

                if (nDefaultCount == 1)
                {
                    //outright
                    //do nothing
                }
                else
                {
                    for (int j = 0; j < nDefaultCount; j++)
                    {
                        TradeLegs leg = new TradeLegs();

                        string sESUnderlyingTickerMnemonic = string.Empty;
                        if (FIXMsg.GetString(out sESUnderlyingTickerMnemonic, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingTickerMnemonic))
                            leg.UnderlyingTickerMnemonic = sESUnderlyingTickerMnemonic;

                        string sUnderlyingExecID = string.Empty;
                        if (FIXMsg.GetString(out sUnderlyingExecID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingExecID))
                            leg.ExecID = sExecID;

                        int nUnderlyingExecQty = 0;
                        if (FIXMsg.GetNumber(out nUnderlyingExecQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingLastShares))
                            leg.ExecQty = nUnderlyingExecQty;

                        int nLegNumber = 0;
                        if (FIXMsg.GetNumber(out nLegNumber, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingLegNumber))
                            leg.LegNumber = nLegNumber;

                        double dPrice = 0;
                        if (FIXMsg.GetDouble(out dPrice, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingLastPx))
                            m_dTradePrice = dPrice;

                        string sSide = string.Empty;
                        if (FIXMsg.GetString(out sSide, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingSide))
                            leg.Side = sExecID;

                        m_Legs.Add(leg);
                    }
                }
            }

            bSuccess = base.ParseFix(FIXMsg);

            return bSuccess;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Set the order price
 /// </summary>
 /// <param name="FIXMsg"></param>
 public virtual void SetPrice(VDMIFIXMessage FIXMsg)
 {
     double dPrice = 0;
     if (FIXMsg.GetDouble(out dPrice, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagPrice))
         m_dPrice = dPrice;
 }
Ejemplo n.º 4
0
        /// <summary>
        /// set order status - exec type
        /// </summary>
        /// <param name="FIXMsg"></param>
        public virtual void SetStatus(VDMIFIXMessage FIXMsg)
        {
            string sStatus;
            if (FIXMsg.GetString(out sStatus, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagExecType))
                m_sExecutionReportStatus = (Status)sStatus[0];

            else if (FIXMsg.MsgType == EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgOrderCancelReject)
                m_sExecutionReportStatus = Status.Rejected;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Parse the FIX message for order details
        /// </summary>
        /// <param name="FIXMsg"></param>
        /// <returns></returns>
        public virtual bool ParseFix(VDMIFIXMessage FIXMsg)
        {
            bool bSuccess = true;

            try
            {
                SetPrice(FIXMsg);

                int nOrderQty = 0;
                if (FIXMsg.GetNumber(out nOrderQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagOrderQty))
                    m_nOrderQty = nOrderQty;

                DateTime TransactTime;
                if (FIXMsg.GetTime(out TransactTime, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagTransactTime))
                    m_TransactTime = TransactTime;

                string sClOrdID = string.Empty;
                if (FIXMsg.GetString(out sClOrdID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagClOrdID))
                    m_sClOrdID = sClOrdID;

                string sOrdID = string.Empty;
                if (FIXMsg.GetString(out sOrdID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagOrderID))
                    m_sOrdID = sOrdID;

                int nPrimaryBOID = 0;
                if (FIXMsg.GetNumber(out nPrimaryBOID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESBOIDPrimary))
                    m_nPrimaryBOID = nPrimaryBOID;
            #if DEBUG
                //if (nPrimaryBOID != 366)
                //    return false;
            #endif

                int nSecondBOID = 0;
                if (FIXMsg.GetNumber(out nSecondBOID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESBOIDSecondary))
                    m_nSecondBOID = nSecondBOID;

                int nLeavesQty = 0;
                if (FIXMsg.GetNumber(out nLeavesQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagLeavesQty))
                    m_nLeavesQty = nLeavesQty;

                int nCumQty = 0;
                if (FIXMsg.GetNumber(out nCumQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagCumQty))
                    m_nCumQty = nCumQty;

                int AccountID = 0;
                if (FIXMsg.GetNumber(out AccountID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESAccountID))
                    m_iAccountID = AccountID;

                string sSide = string.Empty;
                if (FIXMsg.GetString(out sSide, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSide))
                    m_sSide = sSide;

                string sTimeInForce = String.Empty;
                if (FIXMsg.GetString(out sTimeInForce, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagTimeInForce))
                    SetFIXTimeInForce(sTimeInForce);

                string sOrderType = String.Empty;
                if (FIXMsg.GetString(out sOrderType, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagOrdType))
                    SetFIXOrderType(sOrderType);

                SetStatus(FIXMsg);
            }
            catch (Exception)
            {
                bSuccess = false;
            }

            return bSuccess;
        }