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 { } } }