Example #1
0
        private void Session_TablesUpdates(object sender, TablesUpdatesEventArgs e)
        {
            var responseFactory             = _session.getResponseReaderFactory();
            var responsGTablesUpdatesReader = responseFactory.createTablesUpdatesReader(e.Response);

            for (int i = 0; i < responsGTablesUpdatesReader.Count; i++)
            {
                if (responsGTablesUpdatesReader.getUpdateTable(i) == O2GTableType.Offers)
                {
                    if (responsGTablesUpdatesReader.getUpdateType(i) == O2GTableUpdateType.Update)
                    {
                        O2GOfferRow offer          = responsGTablesUpdatesReader.getOfferRow(i);
                        var         _offerID       = offer.OfferID;
                        var         _currentSymbol = offer.Instrument;

                        PriceUpdate pu = new PriceUpdate
                        {
                            Symbol        = offer.Instrument,
                            TradeDateTime = offer.Time,
                            Price         = (offer.Bid + offer.Ask) / 2,
                            Volume        = offer.Volume,
                            Bid           = offer.Bid,
                            Ask           = offer.Ask
                        };
                        priceUpdates.Add(pu);
                    }
                }
            }
        }
Example #2
0
        private void Session_TablesUpdates(object sender, TablesUpdatesEventArgs e)
        {
            var responseTablesUpdatesReader = _factory.createTablesUpdatesReader(e.Response);

            Parallel.For(0, responseTablesUpdatesReader.Count, i =>
            {
                if (responseTablesUpdatesReader.getUpdateTable(i) == O2GTableType.Offers && responseTablesUpdatesReader.getUpdateType(i) == O2GTableUpdateType.Update)
                {
                    var offer = responseTablesUpdatesReader.getOfferRow(i);

                    if (!string.IsNullOrEmpty(offer.Instrument))
                    {
                        var pu = new PriceUpdate
                        {
                            Symbol        = offer.Instrument,
                            TradeDateTime = offer.Time,
                            Price         = GetPrice(offer.Bid, offer.Ask),
                            Volume        = offer.Volume,
                            Bid           = offer.Bid,
                            Ask           = offer.Ask,
                            High          = offer.High,
                            Low           = offer.Low
                        };

                        lock (priceUpdateObject)
                        {
                            var firstPriceUpdate = priceUpdates.FirstOrDefault(f => f.Symbol.Equals(pu.Symbol));
                            if (firstPriceUpdate != null)
                            {
                                firstPriceUpdate.Ask           = pu.Ask;
                                firstPriceUpdate.Bid           = pu.Bid;
                                firstPriceUpdate.Volume        = pu.Volume;
                                firstPriceUpdate.PrevPrice     = firstPriceUpdate.Price;
                                firstPriceUpdate.Price         = pu.Price;
                                firstPriceUpdate.TradeDateTime = pu.TradeDateTime;
                            }
                            else
                            {
                                priceUpdates.Add(pu);
                            }
                        }
                    }
                }
            });

            OnRowCountChange();
        }