Exemplo n.º 1
0
        //Shows example of parsing a custom TT group
        public void onGatewayStatusMessage(QuickFix42.Message message, SessionID session)
        {
            parseMessage(message, session);

            if (message.hasGroup(TT.NoGatewayStatus.FIELD))
            {
                updateDisplay(string.Format("Found {0} NoGatewayStatus groups", message.groupCount(TT.NoGatewayStatus.FIELD)));
                QuickFix.Group g = new Group(18201, 18202, new int[] { 18202, 207, 18203, 18204, 58, 0 });

                for (uint i = 1; i <= message.groupCount(TT.NoGatewayStatus.FIELD); i++)
                {
                    message.getGroup(i, g);
                    updateDisplay(string.Format("GatewayStatus:      {0}", g.getField(new TT.GatewayStatus())));
                    updateDisplay(string.Format("SecurityExchange:   {0}", g.getField(new QuickFix.SecurityExchange())));
                    updateDisplay(string.Format("ExchangeGateway:    {0}", g.getField(new TT.ExchangeGateway())));
                    updateDisplay(string.Format("SubExchangeGateway: {0}", g.getField(new TT.SubExchangeGateway())));
                    if (g.isSetField(new QuickFix.Text()))
                    {
                        updateDisplay(string.Format("Text: {0}", g.getField(new QuickFix.Text())));
                    }

                    string s = g.getField(new TT.ExchangeGateway()).ToString();
                    if (!_gateways.Contains(s))
                    {
                        _gateways.Add(s);
                    }
                }
            }

            updateFormData();
        }
Exemplo n.º 2
0
 /// <summary>
 /// 查询股份
 /// </summary>
 public void QueryHold()
 {
     QuickFix42.Message message = new QuickFix42.Message(new MsgType("UAN"));
     message.setString(710, getNextID());    // 请求ID
     message.setInt(724, 0);                 // 请求类别
     SendToServer(message);
 }
Exemplo n.º 3
0
        private void readFileInfo()
        {
            bool       endofmsgs = false;
            TextReader tr        = new StreamReader(persistentOrderFile);

            string line = tr.ReadLine();

            while (line != null)
            {
                if (line.Equals(";"))
                {
                    endofmsgs = true;
                    line      = tr.ReadLine();
                    continue;
                }

                if (!endofmsgs)
                {
                    QuickFix42.Message oldMsg = new QuickFix42.Message();
                }
                else
                {
                }
            }
        }
Exemplo n.º 4
0
        public void Logout()
        {
            QuickFix42.Message message = new QuickFix42.Message(new MsgType("5"));
            SendToServer(message);
            Session session = Session.lookupSession(ssnid);

            if ((session != null) && session.isLoggedOn())
            {
                session.logout();
            }
        }
Exemplo n.º 5
0
 public void SendToServer(QuickFix42.Message message)//发送信息请求
 {
     if (ssnid != null && Session.lookupSession(ssnid).isLoggedOn())
     {
         Session.sendToTarget(message, ssnid);
     }
     else
     {
         throw new Exception("missing ssnid");
     }
 }
Exemplo n.º 6
0
        /// <summary>
        /// Submit FIX request to retreive all the days trades, SODs and manual Fills
        /// </summary>
        /// <param name="session"></param>
        /// <param name="reqtype"></param>
        public void ttRequestForPosition(int reqtype)
        {
            try
            {
                QuickFix42.Message rfp = new QuickFix42.Message(new QuickFix.MsgType("UAN"));

                rfp.setField(new TT.PosReqId(uniqueID()));
                rfp.setField(new TT.PosReqType(reqtype));

                QuickFix.Session.sendToTarget(rfp, orderSessionID);
            }
            catch (Exception ex)
            { Console.WriteLine(ex.ToString()); }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Submit a FIX message to subscribe to gateway status.  Status is displayed but no action is attached.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="SubscriptionRequestType"></param>
        public void ttGatewayStatusRequest(char SubscriptionRequestType)
        {
            try
            {
                //Gateway Status Request
                QuickFix42.Message gsr = new QuickFix42.Message(new QuickFix.MsgType("UAR"));

                gsr.setChar(QuickFix.SubscriptionRequestType.FIELD, SubscriptionRequestType);

                gsr.setField(new TT.GatewayStatusReqId(uniqueID()));

                QuickFix.Session.sendToTarget(gsr, orderSessionID);
            }
            catch (Exception ex)
            { Console.WriteLine(ex.ToString()); }
        }
Exemplo n.º 8
0
        public QuickFix42.OrderCancelRequest GenerateCancelRequest(string clOrdId, int index)
        {
            string originalId = (string)LimitOrders[index];

            QuickFix42.Message msg = Msgs[originalId];


            //check for a recent ID
            string temp = LimitLib.GetRecentId(originalId);

            if (temp != null)
            {
                //limitLib.add(originalID, clOrdId);  //associate new Id
                originalId = temp;                  //send with most recent from previous request
            }

            Side oldSide = new Side();

            msg.getField(oldSide);

            TransactTime uTime = new TransactTime();

            msg.getField(uTime);

            QuickFix42.OrderCancelRequest ocr = new QuickFix42.OrderCancelRequest(
                new OrigClOrdID(originalId),
                new ClOrdID(clOrdId),
                new Symbol(msg.getField(Symbol.FIELD)),                                         //Necessary Field for canceling child orders
                oldSide,                                                                        //Necessary Field for canceling child orders
                uTime);

            OrderID oid = new OrderID("x");

            ocr.setField(oid);

            //Neccessary Field for canceling child orders
            Price limitPrice = new Price();

            msg.getField(limitPrice);
            //OCR.setField(limitPrice);

            ocr.setField(57, msg.getField(57));
            ocr.setField(9102, msg.getField(9102));

            return(ocr);
        }
Exemplo n.º 9
0
        public static void Add(QuickFix42.Message msg)
        {
            ClOrdID clientId  = new ClOrdID();
            OrdType orderType = new OrdType();

            msg.getField(clientId);


            Msgs.Add(clientId.getValue(), msg);


            if (msg.isSetField(orderType))
            {
                msg.getField(orderType);
                if (orderType.getValue() == OrdType.LIMIT)
                {
                    LimitOrders.Add(clientId.getValue());
                    LimitLib.Add(clientId.getValue());
                }
            }
        }
Exemplo n.º 10
0
        public int PrintLimitList()
        {
            Symbol   sym = new Symbol();
            Side     sd  = new Side();
            OrderQty oq  = new OrderQty();

            Console.WriteLine("      Index\tOrderID");
            int count = 0;

            foreach (string strOrdId in LimitOrders)
            {
                QuickFix42.Message msg = Msgs[strOrdId];

                msg.getField(sym);
                msg.getField(sd);
                msg.getField(oq);

                Console.WriteLine("\t" + count + "\t" + strOrdId + "\t" + sym + " " + sd + " " + oq);
                count++;
            }

            return(count);
        }
Exemplo n.º 11
0
        public QuickFix42.OrderCancelReplaceRequest GenerateReplaceRequest(string clOrdId, int qty, double limitPx, double stopPx, int index)
        {
            string originalId = (string)LimitOrders[index];

            QuickFix42.Message msg = Msgs[originalId];


            //check for a recent ID
            string temp = LimitLib.GetRecentId(originalId);

            if (temp != null)
            {
                LimitLib.Add(originalId, clOrdId);  //associate new Id
                originalId = temp;                  //send with most recent from previous request
            }
            else
            {
                LimitLib.Add(originalId, clOrdId);
            }

            Side oldSide = new Side();

            msg.getField(oldSide);

            TransactTime uTime = new TransactTime();

            msg.getField(uTime);

            QuickFix42.OrderCancelReplaceRequest ocrr = new QuickFix42.OrderCancelReplaceRequest(
                new OrigClOrdID(originalId),
                new ClOrdID(clOrdId),
                new HandlInst('1'),
                new Symbol(msg.getField(Symbol.FIELD)),
                oldSide,
                uTime,
                new OrdType(OrdType.LIMIT));

            // Update prices and quantity
            ocrr.set(limitPx > 0 ? new Price(limitPx) : new Price(double.Parse(msg.getField(Price.FIELD))));

            if (stopPx > 0) // If the user specified a new stop price
            {
                ocrr.set(new StopPx(stopPx));
            }
            else
            { // Otherwise use the original stop price
                StopPx spx = new StopPx();
                if (msg.isSetField(spx))
                {
                    msg.getField(spx);
                    ocrr.set(spx);
                }
                else
                {
                    msg.setField(spx);
                }
            }

            ocrr.set(qty > 0 ? new OrderQty(qty) : new OrderQty(int.Parse(msg.getField(OrderQty.FIELD))));

            OrderID oid = new OrderID("x");

            ocrr.setField(oid);
            ocrr.setField(57, msg.getField(57));
            ocrr.setField(9102, msg.getField(9102));

            return(ocrr);
        }
Exemplo n.º 12
0
 public void onPositionReportMessage(QuickFix42.Message message, SessionID session)
 {
     parseMessage(message, session);
 }