/// <summary>
 /// Event object holding fix data from exchange handler
 /// </summary>
 /// <param name="msg">FIX 4.2 Message</param>
 public FIXMessageEventArgs(MESSAGEFIX3Lib.FIXMessage msg)
 {
     if (msg != null)
     {
         m_Msg = msg;
         m_MsgType = m_Msg.MsgType;
     }
 }
Exemplo n.º 2
0
        //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;
        }
Exemplo n.º 3
0
 /// <summary>
 /// default implemtation to handle market status - does nothing 
 /// </summary>
 /// <param name="msg"></param>
 public virtual void RecvFIXStatusMsg(MESSAGEFIX3Lib.FIXMessage msg)
 {
     /*override*/
 }
Exemplo n.º 4
0
        /// <summary>
        /// write data to the tcp server 
        /// </summary>
        /// <param name="msg"></param>
        bool SendFIXMsg(MESSAGEFIX3Lib.FIXMessage msg)
        {
            bool bSuccess = false;
            string sMessage = (string)msg.Render(ClientReader.Delimiter, MESSAGEFIX3Lib.FIXRenderConstants.esFIXRenderFix42);

            if (sMessage != null)
            {
                if (sMessage.Length > 0)
                {
                    try
                    {
                        //write to stream
                        m_StreamOut.Write(sMessage.ToCharArray());
                        m_StreamOut.Flush();
                        bSuccess = true;
                    }
                    catch(Exception e)
                    {
                        //log
                        Disconnect(new ErrorEventArgs(e));
                    }
                }
            }
            return bSuccess;
        }
Exemplo n.º 5
0
        /// <summary>
        /// virtual function to handle incoming data
        /// </summary>
        /// <param name="msgType"></param>
        /// <param name="msg"></param>
        public virtual void RecvFIXMsg(MESSAGEFIX3Lib.FIXMsgConstants msgType,MESSAGEFIX3Lib.FIXMessage msg)
        {
            switch (msgType)
            {
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgOrderCancelReject: RecvFIXOrderMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgBusinessReject: RecvFIXOrderMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgExecutionReport: RecvFIXOrderMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgReject: RecvFIXOrderMsg(msg); break;

                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgMarketDataSnapFull: RecvFIXPriceMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgMarketDataSnapInc: RecvFIXPriceMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgQuote : RecvFIXPriceMsg(msg); break;

                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgSecuritySts: RecvFIXStatusMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgTradingSessSts : RecvFIXStatusMsg(msg); break;

                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgLogout: RecvFIXDriverMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgESComponentStatus : RecvFIXDriverMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgEHControl : RecvFIXDriverMsg(msg); break;
                case MESSAGEFIX3Lib.FIXMsgConstants.esFIXMsgEHError : RecvFIXDriverMsg(msg); break;
                default: /*do nothing*/ break;
            }
        }