Example #1
0
        private void Trade(OrderStackRow osr, MarketSide side)
        {
            if (osr == null)
            {
                throw new ArgumentNullException("osr");
            }

            // The server currently does not support click trading, so we fake
            // it here by adding a matching order to the other side of the market.
            // If the server supported ImmediateOrCancel then we'd use that.
            var isBid = side == MarketSide.Bid;
            var matchingOrderDetails = new OrderRecord
            {
                ClOrdID        = _clOrdIDGenerator.CreateClOrdID(),
                LastUpdateTime = DateTime.UtcNow,
                OrderID        = string.Empty, // Set by server
                OrdType        = OrderType.Limit,
                Price          = decimal.Parse(isBid ? osr.BidPrice : osr.AskPrice),
                Quantity       = decimal.Parse(isBid ? osr.BidQty : osr.AskQty),
                Side           = isBid ? MarketSide.Ask : MarketSide.Bid,
                Symbol         = osr.Symbol,
                Status         = OrderStatus.New
            };

            _serverFacade.CreateOrder(matchingOrderDetails);
        }
Example #2
0
        private static List <OrderStackRow> CreateOrderStackRows(
            string symbol,
            OrderStack stack,
            Color rowColour)
        {
            var bids    = stack.GetBids();
            var asks    = stack.GetAsks();
            var maxSize = Math.Max(bids.Count, asks.Count);
            var rows    = new List <OrderStackRow>();

            for (var i = 0; i < maxSize; ++i)
            {
                var bid = bids.ElementAtOrDefault(i);
                var ask = asks.ElementAtOrDefault(i);
                Debug.Assert(bid != null || ask != null);
                var osr = new OrderStackRow
                {
                    Symbol   = symbol,
                    RowColor = rowColour
                };
                if (bid != null)
                {
                    osr.BidClOrdID = bid.ClOrdID;
                    osr.BidStatus  = bid.Status.ToString();
                    osr.BidPrice   = bid.Price.ToString(CultureInfo.CurrentUICulture);
                    osr.BidQty     = bid.Quantity.ToString(CultureInfo.CurrentUICulture);
                }
                if (ask != null)
                {
                    osr.AskClOrdID = ask.ClOrdID;
                    osr.AskStatus  = ask.Status.ToString();
                    osr.AskPrice   = ask.Price.ToString(CultureInfo.CurrentUICulture);
                    osr.AskQty     = ask.Quantity.ToString(CultureInfo.CurrentUICulture);
                }
                rows.Add(osr);
            }
            return(rows);
        }
Example #3
0
 private static List<OrderStackRow> CreateOrderStackRows(
     string symbol,
     OrderStack stack,
     Color rowColour)
 {
     var bids = stack.GetBids();
     var asks = stack.GetAsks();
     var maxSize = Math.Max(bids.Count, asks.Count);
     var rows = new List<OrderStackRow>();
     for (var i = 0; i < maxSize; ++i)
     {
         var bid = bids.ElementAtOrDefault(i);
         var ask = asks.ElementAtOrDefault(i);
         Debug.Assert(bid != null || ask != null);
         var osr = new OrderStackRow
         {
             Symbol = symbol,
             RowColor = rowColour
         };
         if (bid != null)
         {
             osr.BidClOrdID = bid.ClOrdID;
             osr.BidStatus = bid.Status.ToString();
             osr.BidPrice = bid.Price.ToString(CultureInfo.CurrentUICulture);
             osr.BidQty = bid.Quantity.ToString(CultureInfo.CurrentUICulture);
         }
         if (ask != null)
         {
             osr.AskClOrdID = ask.ClOrdID;
             osr.AskStatus = ask.Status.ToString();
             osr.AskPrice = ask.Price.ToString(CultureInfo.CurrentUICulture);
             osr.AskQty = ask.Quantity.ToString(CultureInfo.CurrentUICulture);
         }
         rows.Add(osr);
     }
     return rows;
 }
Example #4
0
 public void SellOrder(OrderStackRow osr)
 {
     Trade(osr, MarketSide.Ask);
 }
Example #5
0
 public void BuyOrder(OrderStackRow osr)
 {
     Trade(osr, MarketSide.Bid);
 }
Example #6
0
        private void Trade(OrderStackRow osr, MarketSide side)
        {
            if (osr == null) throw new ArgumentNullException("osr");

            // The server currently does not support click trading, so we fake
            // it here by adding a matching order to the other side of the market.
            // If the server supported ImmediateOrCancel then we'd use that.
            var isBid = side == MarketSide.Bid;
            var matchingOrderDetails = new OrderRecord
            {

                ClOrdID = _clOrdIDGenerator.CreateClOrdID(),
                LastUpdateTime = DateTime.UtcNow,
                OrderID = string.Empty, // Set by server
                OrdType = OrderType.Limit,
                Price = decimal.Parse(isBid ? osr.BidPrice : osr.AskPrice),
                Quantity = decimal.Parse(isBid ? osr.BidQty : osr.AskQty),
                Side = isBid ? MarketSide.Ask : MarketSide.Bid,
                Symbol = osr.Symbol,
                Status = OrderStatus.New
            };

            _serverFacade.CreateOrder(matchingOrderDetails);
        }
Example #7
0
 public void SellOrder(OrderStackRow osr)
 {
     Trade(osr, MarketSide.Ask);
 }
Example #8
0
 public void BuyOrder(OrderStackRow osr)
 {
     Trade(osr, MarketSide.Bid);
 }