public T GetPosition <T>(Security security, bool create = true) where T : LivePosition, new() { var ret = (from position in Positions where position.Security.Ticker == security.Ticker //where position.IsOpen select position).SingleOrDefault(); if (ret != null) { return((T)ret); } ret = Positions.AddAndReturn(new T() { Security = security }); ret.PositionChanged += (s, e) => OnPositionChanged(e.Position); return((T)ret); }