Exemple #1
0
 public void OnCancelRejected(MbtOpenOrder order)
 {
     if (debug)
     {
         orderLog.Debug("OnCancelRejected( " + order.OrderNumber + " )");
     }
 }
Exemple #2
0
        public void OnExecute(MbtOpenOrder order)
        {
            m_orders[order.OrderNumber] = order;
            int elapsed = Environment.TickCount - orderStart;

            orderLog.Notice("OnExecute( " + order.OrderNumber + " ), " + elapsed + "ms");
        }
Exemple #3
0
 public void OnReplacePlaced(MbtOpenOrder order)
 {
     if (debug)
     {
         orderLog.Debug("OnReplacePlaced( " + order.OrderNumber + " )");
     }
 }
Exemple #4
0
        public void OnSubmit(MbtOpenOrder order)
        {
            m_orders[order.OrderNumber] = order;
            int elapsed = Environment.TickCount - orderStart;

            orderLog.Notice("OnSubmit( " + order.OrderNumber + " ) " + elapsed + "ms");
            orderSubmitted = false;
        }
 void OnRemove(MbtOpenOrder order)
 {
     for (int i = 0; i < readers.Count; i++)
     {
         if (readers[i].Symbol.Symbol == order.Symbol)
         {
             readers[i].OnRemove(order);
         }
     }
 }
 void OnCancelRejected(MbtOpenOrder order)
 {
     for (int i = 0; i < readers.Count; i++)
     {
         if (readers[i].Symbol.Symbol == order.Symbol)
         {
             readers[i].OnCancelRejected(order);
         }
     }
 }
Exemple #7
0
        void _orderClient_OnExecute(MbtOpenOrder pOrd)
        {
            if (pOrd.Acknowledged == false)
            {
                return;
            }

            //PlaceOrderOperation operation;
            //lock (this)
            //{
            //    // Operations stored in stub by order token / Id.
            //    operation = (PlaceOrderOperation)_operationStub.GetOperationById(pOrd.Token);
            //}

            OrderInfo?orderInfo = ConvertToOrderInfo(pOrd);

            if (orderInfo.HasValue == false)
            {
                SystemMonitor.Warning("Failed to convert order for order [" + pOrd.Token + "].");
                return;
            }

            TryCompleteOrderOperation(pOrd.Token, true, orderInfo);

            //if (operation == null)
            //{
            //    SystemMonitor.Error("Operation with this ID [" + pOrd.Token + "] not found.");
            //}
            //else
            //{
            //    //string x = orderInfo.Value.OpenPrice.ToString();

            //    if (orderInfo.HasValue == false)
            //    {
            //        SystemMonitor.Warning("Failed to convert order for order [" + pOrd.Token + "].");
            //        operation.Complete("Failed to convert order type. Operation failed.", null);
            //        return;
            //    }

            //    operation.Complete(string.Empty, orderInfo.Value);
            //}

            if (_accountInfo.HasValue == false)
            {
                SystemMonitor.Error("Order update received, but account not established.");
            }
            else
            {
                _adapter.OrderExecutionSourceStub.UpdateOrderInfo(_accountInfo.Value, Order.UpdateTypeEnum.Executed, orderInfo.Value);
            }
        }
Exemple #8
0
        string DisplayOrder(MbtOpenOrder order)
        {
//			TickConsole.Notice("Account: Old Order: " + Display(order));
            string retVal = "";

            retVal += "BuySell=" + (order.BuySell == MBConst.VALUE_BUY?"Buy":"Sell");
            retVal += ",Symbol=" + order.Symbol;
            retVal += ",Quantity=" + order.Quantity;
            retVal += ",Price=" + order.Price;
            retVal += ",OrderType=" + order.OrderType;
            retVal += ",OrderNumber=" + order.OrderNumber;
            retVal += ",SharesFilled=" + order.SharesFilled;
            return(retVal);
        }
        void m_OrderClient_OnSubmit(MbtOpenOrder pOrd)
        {
            OrderImpl o = new OrderImpl(pOrd.Symbol, pOrd.Quantity);

            o.side  = pOrd.BuySell == MBConst.VALUE_BUY;
            o.price = (decimal)pOrd.Price;
            o.stopp = (decimal)pOrd.StopLimit;
            o.TIF   = pOrd.TimeInForce == MBConst.VALUE_DAY ? "DAY" : "GTC";
            o.time  = Util.ToTLTime(pOrd.UTCDateTime);
            o.date  = Util.ToTLDate(pOrd.UTCDateTime);
            o.sec   = pOrd.UTCDateTime.Second;
            o.trail = (decimal)pOrd.TrailingOffset;
            //o.ex = pOrd.Route;
            o.id = Convert.ToUInt32(pOrd.OrderNumber);
            tl.newOrder(o);
        }
Exemple #10
0
        public void OnRemove(MbtOpenOrder order)
        {
            int elapsed = Environment.TickCount - orderStart;

            orderLog.Notice("OnRemove( " + order.OrderNumber + " ), " + elapsed + "ms, position: " + Display(m_position));
            if (followupSignal != 0)
            {
                orderLog.Notice("Followup Signal = " + followupSignal);
                InternalSignal(followupSignal);
                followupSignal = 0;
            }
            else
            {
                orderLog.Notice("Account Status: " + Display(m_account));
            }
            m_orders.Remove(order.OrderNumber);
        }
Exemple #11
0
        void _orderClient_OnAcknowledge(MbtOpenOrder pOrd)
        {
            if (pOrd.Acknowledged == false)
            {
                return;
            }

            OrderInfo?orderInfo = ConvertToOrderInfo(pOrd);

            //if (orderInfo.HasValue && orderInfo.Value.State == OrderStateEnum.Canceled)
            //{// There might be a pending operation on this order.
            //    TryCompleteOrderOperation(pOrd.Token, false, orderInfo);
            //}

            if (_accountInfo.HasValue == false)
            {
                SystemMonitor.Error("Order update received, but account not established.");
            }
            else
            {
                _adapter.OrderExecutionSourceStub.UpdateOrderInfo(_accountInfo.Value, Order.UpdateTypeEnum.Submitted, orderInfo.Value);
            }
        }
        void _orderClient_OnExecute(MbtOpenOrder pOrd)
        {
            if (pOrd.Acknowledged == false)
            {
                return;
            }

            //PlaceOrderOperation operation;
            //lock (this)
            //{
            //    // Operations stored in stub by order token / Id.
            //    operation = (PlaceOrderOperation)_operationStub.GetOperationById(pOrd.Token);
            //}

            OrderInfo? orderInfo = ConvertToOrderInfo(pOrd);

            if (orderInfo.HasValue == false)
            {
                SystemMonitor.Warning("Failed to convert order for order [" + pOrd.Token + "].");
                return;
            }

            TryCompleteOrderOperation(pOrd.Token, true, orderInfo);

            //if (operation == null)
            //{
            //    SystemMonitor.Error("Operation with this ID [" + pOrd.Token + "] not found.");
            //}
            //else
            //{
            //    //string x = orderInfo.Value.OpenPrice.ToString();

            //    if (orderInfo.HasValue == false)
            //    {
            //        SystemMonitor.Warning("Failed to convert order for order [" + pOrd.Token + "].");
            //        operation.Complete("Failed to convert order type. Operation failed.", null);
            //        return;
            //    }

            //    operation.Complete(string.Empty, orderInfo.Value);
            //}

            if (_accountInfo.HasValue == false)
            {
                SystemMonitor.Error("Order update received, but account not established.");
            }
            else
            {
                _adapter.OrderExecutionSourceStub.UpdateOrderInfo(_accountInfo.Value, Order.UpdateTypeEnum.Executed, orderInfo.Value);
            }
        }
Exemple #13
0
        void m_OrderClient_OnSubmit(MbtOpenOrder pOrd)
        {
            OrderImpl o = new OrderImpl(pOrd.Symbol,pOrd.Quantity);
            o.side = pOrd.BuySell == MBConst.VALUE_BUY;
            o.price = (decimal)pOrd.Price;
            o.stopp = (decimal)pOrd.StopLimit;
            o.TIF = pOrd.TimeInForce == MBConst.VALUE_DAY ? "DAY" : "GTC";
            o.time = Util.ToTLTime(pOrd.UTCDateTime);
            o.date = Util.ToTLDate(pOrd.UTCDateTime);
            o.sec = pOrd.UTCDateTime.Second;
            o.trail = (decimal)pOrd.TrailingOffset;
            //o.ex = pOrd.Route;
            o.id = Convert.ToUInt32(pOrd.OrderNumber);
            tl.newOrder(o);


        }
        void _orderClient_OnAcknowledge(MbtOpenOrder pOrd)
        {
            if (pOrd.Acknowledged == false)
            {
                return;
            }

            OrderInfo? orderInfo = ConvertToOrderInfo(pOrd);

            //if (orderInfo.HasValue && orderInfo.Value.State == OrderStateEnum.Canceled)
            //{// There might be a pending operation on this order.
            //    TryCompleteOrderOperation(pOrd.Token, false, orderInfo);
            //}

            if (_accountInfo.HasValue == false)
            {
                SystemMonitor.Error("Order update received, but account not established.");
            }
            else
            {
                _adapter.OrderExecutionSourceStub.UpdateOrderInfo(_accountInfo.Value, Order.UpdateTypeEnum.Submitted, orderInfo.Value);
            }
        }
        void m_OrderClient_OnRemove(MbtOpenOrder pOrd)
        {
            uint num = Convert.ToUInt32(pOrd.OrderNumber);

            tl.newOrderCancel((long)num);
        }
Exemple #16
0
 void m_OrderClient_OnRemove(MbtOpenOrder pOrd)
 {
     uint num = Convert.ToUInt32(pOrd.OrderNumber);
     tl.newOrderCancel((long)num);
 }
        /// <summary>
        /// Convert real order to order orderInfo.
        /// </summary>
        /// <param name="pOrd"></param>
        /// <returns></returns>
        OrderInfo? ConvertToOrderInfo(MbtOpenOrder pOrd)
        {
            OrderInfo result = new OrderInfo(pOrd.Token);
            result.Tag = pOrd.OrderNumber;

            result.OpenPrice = (decimal)pOrd.Price;
            bool replaceable = pOrd.Replaceable;

            string dateTimeString = pOrd.Date + " " + pOrd.Time;

            DateTime dateTime;
            if (DateTime.TryParse(dateTimeString, out dateTime) == false)
            {
                SystemMonitor.Error("Failed to parse order date time [" + dateTimeString + "].");
                dateTime = DateTime.Now;
            }

            string currentEvent = pOrd.CurrentEvent.ToLower();
            if (currentEvent.Contains("live"))
            {
                result.State = OrderStateEnum.Submitted;
            }
            else if (currentEvent.Contains("executed"))
            {
                result.State = OrderStateEnum.Executed;
            }
            else if (currentEvent.Contains("suspended"))
            {
                result.State = OrderStateEnum.Suspended;
            }
            else
            {
                if (pOrd.Acknowledged)
                {
                    result.State = OrderStateEnum.Submitted;
                }
            }

            if (result.State == OrderStateEnum.Unknown)
            {
            }

            result.OpenTime = dateTime;

            result.StopLoss = (decimal)pOrd.StopLimit;
            result.TakeProfit = (decimal)pOrd.StopLimit;

            Symbol? symbol = _adapter.GetSymbolByName(pOrd.Symbol, false);
            if (symbol.HasValue == false)
            {// Start usage for this symbol.
                return null;
            }

            result.Symbol = symbol.Value;
            result.Type = ConvertFromMBTOrderType(pOrd.OrderType, pOrd.BuySell);

            if (result.Type == OrderTypeEnum.UNKNOWN)
            {
                SystemMonitor.OperationWarning("Failed to recognize order type [" + pOrd.OrderType.ToString()  + "].");
                //return null;
            }

            result.Volume = pOrd.Quantity;

            return result;
        }
Exemple #18
0
 void m_OrderClient_OnAcknowledge(MbtOpenOrder pOrd)
 {
     debug(String.Format("order acknowledge:{0}", pOrd.OrderNumber));
 }
Exemple #19
0
		  void m_OrderClient_OnRemove(MbtOpenOrder pOrd)
			{
				debug("m_OrderClient_OnRemove: " + pOrd.OrderNumber);
				/*
				//order has been completely filled so do cleanup
				string bid = pOrd.OrderNumber;
				debug(String.Format("Cleaning up orders for {0}", bid));
				//clean up the orders list
				if( orders.ContainsKey(bid) ) orders.Remove(bid);
				else debug(String.Format("order {0} did not exist in orders", bid));
				//clean up mappings
				long tlid = 0;
				if( broker2tl.TryGetValue(bid, out tlid ) )
				{
					//got the tradelink id so clear the broker mapping
					debug(String.Format("Cleaning up broker2tl mapping {0} - {1}", bid, tlid));
					broker2tl.Remove(bid);
					//then clear the tradelink mapping
					debug(String.Format("cleaning up tl2broker mapping {0} - {1}", tlid, bid));
					if( tl2broker.ContainsKey(tlid ) ) tl2broker.Remove(tlid);
					else debug(String.Format("Order {0} did not have a matching tlid {1} to remove.", bid, tlid));
				}
				*/
			}
Exemple #20
0
		  void m_OrderClient_OnReplaceRejected(MbtOpenOrder pOrd)
		  {
			  debug("m_OrderClient_OnReplaceRejected: " + pOrd.OrderNumber);
		  }
Exemple #21
0
 void _orderClient_OnSubmit(MbtOpenOrder pOrd)
 {
 }
Exemple #22
0
 /// <summary>
 /// Store executed orders in a dictionary so we have access to info later on
 /// </summary>
 /// <param name="pOrd"></param>
 void m_OrderClient_OnExecute(MbtOpenOrder pOrd)
 {
     //add successfully executed orders to the orders dictionary
     //done in the history now
     //if (!orders.ContainsKey(pOrd.OrderNumber)) orders.Add(pOrd.OrderNumber, pOrd);
 }
Exemple #23
0
 void m_OrderClient_OnAcknowledge(MbtOpenOrder pOrd)
 {
     debug("m_OrderClient_OnAcknowledge: " + pOrd.OrderNumber);
 }
Exemple #24
0
        /// <summary>
        /// Return a descriptive string of this order
        /// TODO: one for history as well
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        string DisplayOrder(MbtOpenOrder order)
        {
            //string orderType = ( order.OrderType == MBConst.VALUE_MARKET ) ? MBConst.TYPE_MARKET : MBConst.TYPE_STOP;
            string retVal = "";
				retVal += "BuySell=" + (order.BuySell == MBConst.VALUE_BUY ? "Buy" : (order.BuySell == MBConst.VALUE_SELL ? "Sell" : "undefined BuySell: " + order.BuySell));
            retVal += " Symbol=" + order.Symbol;
            retVal += " Quantity=" + order.Quantity;
            retVal += " Price=" + order.Price;
            retVal += " OrderType=" + order.OrderType; //compare with OrderType values
            retVal += " OrderNumber=" + order.OrderNumber;
            retVal += " Token=" + order.Token;
            retVal += " SharesFilled=" + order.SharesFilled;
            return retVal;
        }
Exemple #25
0
 void m_OrderClient_OnCancelPlaced(MbtOpenOrder pOrd)
 {
     debug(String.Format("Order cancel placed for {0}", pOrd.OrderNumber));
 }
 void _orderClient_OnReplacePlaced(MbtOpenOrder pOrd)
 {
 }
Exemple #27
0
		  /// <summary>
		  /// Store submitted orders in a dictionary so we have access to info later on
		  /// </summary>
		  /// <param name="pOrd"></param>
		  void m_OrderClient_OnSubmit(MbtOpenOrder pOrd)
		  {
			  debug("m_OrderClient_OnSubmit: " + pOrd.OrderNumber);
			  if (!orders.ContainsKey(pOrd.OrderNumber)) orders.Add(pOrd.OrderNumber, pOrd);
		  }
 void _orderClient_OnSubmit(MbtOpenOrder pOrd)
 {
 }
Exemple #29
0
 /// <summary>
 /// Convert an MbtOpenOrder to a TradeLink OrderImpl and check if the order token
 /// is mapped to an existing TradeLink order. If so, replace the token with the OrderNumber and
 /// update the mapping for tl2broker with the order number as well. If not generate a new order number
 /// </summary>
 /// <param name="pOrd"></param>
 /// <returns></returns>
 OrderImpl ToTradeLinkOrder(MbtOpenOrder pOrd)
 {
     //get the token
     string token = pOrd.Token;
     //get the actual broker ID number now
     string bid = pOrd.OrderNumber, s = "";
     //check for a matching tradelink order
     long tlid = 0, v = 0;
     //first try to get the tlid by token
     if (!broker2tl.TryGetValue(token, out tlid))
     {
         //ok now try to get it by broker OrderNumber if it has been processed once before.
         if (!broker2tl.TryGetValue(bid, out tlid))
         {
             //this order must be initiated by MB Trading so assign a new one
             tlid = _idt.AssignId;
             debug(String.Format("No matching TradeLink ID found for token {0}, generated {1}", token, tlid));
         }
         //save the mappings
         if (!broker2tl.ContainsKey(bid))
         {
             broker2tl.Add(bid, tlid);
         }
         else
         {
             broker2tl.TryGetValue(bid, out v);
             debug(String.Format("WARNING! OrderNumber {0} is already mapped to {1}. Overwriting it with {2}", bid, v, tlid));
             broker2tl[bid] = tlid;
         }
         if (!tl2broker.ContainsKey(tlid))
         {
             tl2broker.Add(tlid, bid);
         }
         else
         {
             tl2broker.TryGetValue(tlid, out s);
             debug(String.Format("WARNING! TradeLinkID {0} is already mapped to {1}. Overwriting it with {2}", tlid, s, bid));
             tl2broker[tlid] = bid;
         }
     }
     else
     {
         //we have a match so this order was generated by TradeLink
         //overwrite the Token with the OrderNumber
         debug(String.Format("Overwriting token {0} with OrderNumber {1} for TradeLink order ID {2}", token, bid, tlid));
         tl2broker[tlid] = bid;
         //remove the Token mapping
         broker2tl.Remove(token);
         //and map the OrderNumber to the TradeLink ID
         if (!broker2tl.ContainsKey(bid)) broker2tl.Add(bid, tlid);
     }
     OrderImpl o = new OrderImpl(pOrd.Symbol, pOrd.Quantity);
     o.id = tlid;
     o.Account = pOrd.Account.Account;
     o.side = (pOrd.BuySell == MBConst.VALUE_BUY);
     o.price = (decimal)pOrd.Price;
     o.stopp = (decimal)pOrd.StopPrice;
     o.ValidInstruct = pOrd.TimeInForce == MBConst.VALUE_DAY ? OrderInstructionType.DAY : OrderInstructionType.GTC;
     o.time = Util.DT2FT(pOrd.UTCDateTime);
     o.date = Util.ToTLDate(pOrd.UTCDateTime);
     o.trail = (decimal)pOrd.TrailingOffset;
     return o;
 }
Exemple #30
0
 void _orderClient_OnReplacePlaced(MbtOpenOrder pOrd)
 {
 }
Exemple #31
0
        TradeImpl ToTradeLinkFill(MbtOpenOrder pOrd, MbtOrderHistory pHist)
        {
            //debug(String.Format("pOrd\n{0}\n\npHist\n{1}", Util.DumpObjectProperties(pOrd), Util.DumpObjectProperties(pHist)));
            debug(String.Format("pOrd: {0}", DisplayOrder(pOrd)));
            //TODO:Add hstory to this debug
            TradeImpl f = new TradeImpl();
            f.symbol = pOrd.Symbol;
            f.Account = pOrd.Account.Account;
            //f.xprice = (pOrd.Price > 0) ? (decimal)pOrd.Price : (decimal)pOrd.StopLimit;
            //f.xprice = Math.Abs((decimal)pOrd.Price);
            f.xprice = (decimal)pHist.Price;
            //f.xsize = pHist.Event == "Executed" ? pHist.Quantity : pHist.SharesFilled;
            f.xsize = pHist.Quantity;
            f.side = (pOrd.BuySell == MBConst.VALUE_BUY);
            f.xtime = Util.DT2FT(pOrd.UTCDateTime);
            f.xdate = Util.ToTLDate(pOrd.UTCDateTime);
            long tlid = 0;
            if (broker2tl.TryGetValue(pOrd.OrderNumber, out tlid))
                f.id = tlid;
            else
					debug(String.Format("WARNING: No order matching fill for pOrd.OrderNumber {0}", pOrd.OrderNumber));
            //debug(String.Format("New fill {1}\n is valid:{0}\ndump:{2}", f.isValid, f.ToString(), Util.DumpObjectProperties(f)));
            debug(String.Format("New fill {1} is valid? {0}", f.isValid, f.ToString()));
            return f;
        }
Exemple #32
0
		  void m_OrderClient_OnCancelRejected(MbtOpenOrder pOrd)
		  {
			  debug("m_OrderClient_OnCancelRejected: " + pOrd.OrderNumber);
		  }
Exemple #33
0
 void m_OrderClient_OnCancelRejected(MbtOpenOrder pOrd)
 {
     debug(String.Format("Order Cancel REJECTED for {0}", pOrd.OrderNumber));
 }
Exemple #34
0
        /// <summary>
        /// Convert real order to order orderInfo.
        /// </summary>
        /// <param name="pOrd"></param>
        /// <returns></returns>
        OrderInfo?ConvertToOrderInfo(MbtOpenOrder pOrd)
        {
            OrderInfo result = new OrderInfo(pOrd.Token);

            result.Tag = pOrd.OrderNumber;

            result.OpenPrice = (decimal)pOrd.Price;
            bool replaceable = pOrd.Replaceable;

            string dateTimeString = pOrd.Date + " " + pOrd.Time;

            DateTime dateTime;

            if (DateTime.TryParse(dateTimeString, out dateTime) == false)
            {
                SystemMonitor.Error("Failed to parse order date time [" + dateTimeString + "].");
                dateTime = DateTime.Now;
            }

            string currentEvent = pOrd.CurrentEvent.ToLower();

            if (currentEvent.Contains("live"))
            {
                result.State = OrderStateEnum.Submitted;
            }
            else if (currentEvent.Contains("executed"))
            {
                result.State = OrderStateEnum.Executed;
            }
            else if (currentEvent.Contains("suspended"))
            {
                result.State = OrderStateEnum.Suspended;
            }
            else
            {
                if (pOrd.Acknowledged)
                {
                    result.State = OrderStateEnum.Submitted;
                }
            }

            if (result.State == OrderStateEnum.Unknown)
            {
            }

            result.OpenTime = dateTime;

            result.StopLoss   = (decimal)pOrd.StopLimit;
            result.TakeProfit = (decimal)pOrd.StopLimit;

            Symbol?symbol = _adapter.GetSymbolByName(pOrd.Symbol, false);

            if (symbol.HasValue == false)
            {// Start usage for this symbol.
                return(null);
            }

            result.Symbol = symbol.Value;
            result.Type   = ConvertFromMBTOrderType(pOrd.OrderType, pOrd.BuySell);

            if (result.Type == OrderTypeEnum.UNKNOWN)
            {
                SystemMonitor.OperationWarning("Failed to recognize order type [" + pOrd.OrderType.ToString() + "].");
                //return null;
            }

            result.Volume = pOrd.Quantity;

            return(result);
        }
Exemple #35
0
		  /* pmh - 9/21/12 - See note on DefaultAccount at end of document!
		  void m_OrderClient_OnDefaultAccountChanged(MbtAccount pAcct)
		  {
			  debug("m_OrderClient_OnDefaultAccountChanged: " + pAcct.Account);
		  }
		   */
		  void m_OrderClient_OnExecute(MbtOpenOrder pOrd)
		  {
			  //add successfully executed orders to the orders dictionary
			  //done in the history now
			  //if (!orders.ContainsKey(pOrd.OrderNumber)) orders.Add(pOrd.OrderNumber, pOrd);
			  debug("m_OrderClient_OnExecute: " + pOrd.OrderNumber); //pmh - go ahead and log the event anyway.
		  }