/* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections.Generic; using System.Linq; namespace QuantConnect.Data { /// /// Provides convenient methods for holding several /// public class SubscriptionDataConfigList : List { /// /// for which this class holds /// public Symbol Symbol { get; private set; } /// /// Assume that the InternalDataFeed is the same for both /// public bool IsInternalFeed { get { var first = this.FirstOrDefault(); return first != null && first.IsInternalFeed; } } /// /// Default constructor that specifies the that the represent /// /// public SubscriptionDataConfigList(Symbol symbol) { Symbol = symbol; } /// /// Sets the for all contained in the list /// /// public void SetDataNormalizationMode(DataNormalizationMode normalizationMode) { if (Symbol.SecurityType.IsOption() && normalizationMode != DataNormalizationMode.Raw) { throw new ArgumentException($"DataNormalizationMode.Raw must be used with SecurityType {Symbol.SecurityType}"); } foreach (var config in this) { config.DataNormalizationMode = normalizationMode; } } } }