Пример #1
0
        public override void ProcessTrades(Trade[] trades)
        {
            if (trades.Length == 0)
            return;

              XDocument document = XDocument.Load(FileName);
              XElement tradesElement = document.Root.Element(TradesElementName);
              XElement ordersElement = document.Root.Element(OrdersElementName);
              XElement stocksElement = document.Root.Element(StocksElementName);

              UpdateStockPrice(trades.First().StockId, trades.First().Price, stocksElement);

              foreach (Trade trade in trades)
              {
            XElement tradeElement = PrepareTradeElement(trade);
            tradesElement.Add(tradeElement);

            XElement buyOrderElement = GetOrderElement(trade.BuyOrderId, ordersElement);
            ProcessOrderElement(buyOrderElement, trade);

            XElement sellOrderElement = GetOrderElement(trade.SellOrderId, ordersElement);
            ProcessOrderElement(sellOrderElement, trade);
              }

              using (XmlWriter writer = new XmlTextWriter(FileName, Encoding.UTF8))
              {
            document.WriteTo(writer);
              }
        }
        public override void ProcessTrades(Trade[] trades)
        {
            if (trades.Length == 0)
            return;

              OdbcCommand command = new OdbcCommand();
              OdbcTransaction transaction = null;
              DateTime now = DateTime.Now;

              try
              {
            transaction = connection.BeginTransaction();
            command.Connection = connection;
            command.Transaction = transaction;

            // stock
            command.CommandText =
            "UPDATE stocks SET price = " + trades.First().StockId + " WHERE id = " + trades.First().StockId;
            command.ExecuteNonQuery();

            foreach (Trade trade in trades)
            {
              // trade
              command.CommandText =
              "INSERT INTO trades (boid, soid, sid, buyer, seller, amount, price, executed) VALUES " +
              string.Format("({0}, {1}, {2}, {3}, {4}, {5}, {6}, TIMESTAMP '{7}');",
              trade.BuyOrderId, trade.SellOrderId, trade.StockId, trade.BuyerId, trade.SellerId,
              trade.Amount, trade.Price.ToString(CultureInfo.CreateSpecificCulture("en-US")), now);
              command.ExecuteNonQuery();

              // buy order
              ProcessTradeOrder(trade.Amount, command, now, trade.BuyOrderId);

              // sell order
              ProcessTradeOrder(trade.Amount, command, now, trade.SellOrderId);
            }

            transaction.Commit();
              }
              catch (Exception ex)
              {
            Console.WriteLine(ex.Message);
            try
            {
              transaction.Rollback();
            }
            catch { }
              }
        }