private void RunReceive(MarketTickData tickData) { try { m_currentTickIndex++; m_TickDatas.TryAdd(m_currentTickIndex, tickData); TickDataUpdateType tickDataUpdateType = GetUpdateType(tickData); if (tickDataUpdateType.HasFlag(TickDataUpdateType.Ask)) { m_TickDataHandlers[TickDataUpdateType.Ask].Add(tickData.Ask); m_TickDataHandlers[TickDataUpdateType.AskQty].Add(tickData.AskQty); } if (tickDataUpdateType.HasFlag(TickDataUpdateType.Bid)) { m_TickDataHandlers[TickDataUpdateType.Bid].Add(tickData.Bid); m_TickDataHandlers[TickDataUpdateType.BidQty].Add(tickData.BidQty); } if (tickDataUpdateType.HasFlag(TickDataUpdateType.SettlementPrice)) { m_TickDataHandlers[TickDataUpdateType.SettlementPrice].Add(tickData.SettlementPrice); m_TickDataHandlers[TickDataUpdateType.SettlementQty].Add(tickData.SettlementQty); } if (OnRealTimeTickDataUpdate != null) { OnRealTimeTickDataUpdate.Invoke("realtimetickdatahandler", tickData); } if (m_PreviousTickData == null) { m_PreviousTickData = tickData; } if (tickData.DataDate != m_PreviousTickData.DataDate) //change of date { if (OnRealTimeTickDataDateChange != null) { OnRealTimeTickDataDateChange.Invoke("realtimetickdatahandler", m_PreviousTickData.DataDate, tickData.DataDate); } } m_PreviousTickData = tickData; //set the prev tick data from the current } catch (Exception ex) { } }
private TickDataUpdateType GetUpdateType(MarketTickData tickData) { TickDataUpdateType tickDataUpdateType = TickDataUpdateType.None; if (tickData.Ask > 0 && tickData.Ask < 2000000) { tickDataUpdateType = TickDataUpdateType.Ask | TickDataUpdateType.AskQty; } if (tickData.Bid > 0 && tickData.Bid < 2000000) { tickDataUpdateType = tickDataUpdateType | TickDataUpdateType.Bid | TickDataUpdateType.BidQty; } if (tickData.SettlementPrice > 0 && tickData.SettlementPrice < 2000000) { tickDataUpdateType = tickDataUpdateType | TickDataUpdateType.SettlementPrice | TickDataUpdateType.SettlementQty; } return(tickDataUpdateType); }
private double GetTickData(TickDataUpdateType dataUpdateType, int index) { return(m_TickDataHandlers[dataUpdateType].TickData(index)); }