Exemple #1
0
 private void ClientMarketData(object sender, TWSMarketDataEventArgs e)
 {
     if (InvokeRequired)
     {
         TWSMarketDataSnapshot s = e.Snapshot.Clone() as TWSMarketDataSnapshot;
         BeginInvoke(_updateGridRowDelegate, s, e.TickType);
     }
     else
     {
         _updateGridRowDelegate(e.Snapshot, e.TickType);
     }
 }
Exemple #2
0
        private void UpdateGridRow(TWSMarketDataSnapshot s, IBTickType t)
        {
            var record = _symbolDataMap[s.Contract];

            record.Snapshot = s;
            // Make sure we don't crash and burn on the first invocation
            if (record.PreviousSnapshot == null)
            {
                record.PreviousSnapshot = record.Snapshot;
            }

            var g = record.Grid;
            var r = record.Row;
            var p = record.PreviousSnapshot;

            try {
                UnHighlightCells(record);

                if (s.LastTimeStamp != p.LastTimeStamp)
                {
                    SetValue(record, IBGridColumn.UpdateTime, s.LastTimeStamp);
                }
                if (s.Last != p.Last)
                {
                    SetValue(record, IBGridColumn.LastPrice, s.Last);
                }
                if (s.LastSize != p.LastSize)
                {
                    SetValue(record, IBGridColumn.LastSize, s.LastSize);
                }
                if (s.Volume != p.Volume)
                {
                    SetValue(record, IBGridColumn.Volume, s.Volume);
                }
                if (s.VolumeEvents != p.VolumeEvents)
                {
                    SetValue(record, IBGridColumn.VolumeEvents, s.VolumeEvents);
                }
                if (s.VolumeMisses != p.VolumeMisses)
                {
                    SetValue(record, IBGridColumn.VolumeMisses, s.VolumeMisses);
                }

                if (s.TradeDups != p.TradeDups)
                {
                    SetValue(record, IBGridColumn.TradeDups, s.TradeDups);
                }
                if (s.BidDups != p.BidDups)
                {
                    SetValue(record, IBGridColumn.BidDups, s.BidDups);
                }
                if (s.AskDups != p.AskDups)
                {
                    SetValue(record, IBGridColumn.AskDups, s.AskDups);
                }

                if (s.Bid != p.Bid)
                {
                    SetValue(record, IBGridColumn.BidPrice, s.Bid);
                }
                if (s.Ask != p.Ask)
                {
                    SetValue(record, IBGridColumn.AskPrice, s.Ask);
                }
                if (s.BidSize != p.BidSize)
                {
                    SetValue(record, IBGridColumn.BidSize, s.BidSize);
                }
                if (s.AskSize != p.AskSize)
                {
                    SetValue(record, IBGridColumn.AskSize, s.AskSize);
                }
                if (s.Close != p.Close)
                {
                    SetValue(record, IBGridColumn.Close, s.Close);
                }
                if (s.High != p.High)
                {
                    SetValue(record, IBGridColumn.High, s.High);
                }
                if (s.Low != p.Low)
                {
                    SetValue(record, IBGridColumn.Low, s.Low);
                }
                if (s.SyntheticVolume != p.SyntheticVolume)
                {
                    SetValue(record, IBGridColumn.SyntheticVolume, s.SyntheticVolume);
                }
                if (s.TradeEvents != p.TradeEvents)
                {
                    SetValue(record, IBGridColumn.TradeEvents, s.TradeEvents);
                }
                if (s.BidEvents != p.BidEvents)
                {
                    SetValue(record, IBGridColumn.BidEvents, s.BidEvents);
                }
                if (s.AskEvents != p.AskEvents)
                {
                    SetValue(record, IBGridColumn.AskEvents, s.AskEvents);
                }

                if (s.Contract.SecurityType != IBSecurityType.Option &&
                    s.Contract.SecurityType != IBSecurityType.FutureOption)
                {
                    return;
                }

                if (s.AskImpliedVol != p.AskImpliedVol)
                {
                    SetValue(record, IBGridColumn.AskImpVol, s.AskImpliedVol);
                }
                if (s.BidImpliedVol != p.BidImpliedVol)
                {
                    SetValue(record, IBGridColumn.BidImpVol, s.BidImpliedVol);
                }
                if (s.AskDelta != p.AskDelta)
                {
                    SetValue(record, IBGridColumn.AskDelta, s.AskDelta);
                }
                if (s.BidDelta != p.BidDelta)
                {
                    SetValue(record, IBGridColumn.BidDelta, s.BidDelta);
                }
                if (s.Delta != p.Delta)
                {
                    SetValue(record, IBGridColumn.Delta, s.Delta);
                }
                if (s.ImpliedVol != p.ImpliedVol)
                {
                    SetValue(record, IBGridColumn.Volatility, s.ImpliedVol);
                }
                if (s.ModelPrice != p.ModelPrice)
                {
                    SetValue(record, IBGridColumn.Price, s.ModelPrice);
                }
                if (s.PVDividend != p.PVDividend)
                {
                    SetValue(record, IBGridColumn.PVDividend, s.PVDividend);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                record.PreviousSnapshot = record.Snapshot;
                record.Snapshot         = null;
            }
        }