Lean  $LEAN_TAG$
IndexedBasedData.cs
1 /*
2  * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
3  * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14 */
15 
16 using System;
17 
18 namespace QuantConnect.Data
19 {
20  /// <summary>
21  /// Abstract indexed base data class of QuantConnect.
22  /// It is intended to be extended to define customizable data types which are stored
23  /// using an intermediate index source
24  /// </summary>
25  public abstract class IndexedBaseData : BaseData
26  {
27  /// <summary>
28  /// Returns the source for a given index value
29  /// </summary>
30  /// <param name="config">Configuration object</param>
31  /// <param name="date">Date of this source file</param>
32  /// <param name="index">The index value for which we want to fetch the source</param>
33  /// <param name="isLiveMode">true if we're in live mode, false for backtesting mode</param>
34  /// <returns>The <see cref="SubscriptionDataSource"/> instance to use</returns>
35  public virtual SubscriptionDataSource GetSourceForAnIndex(SubscriptionDataConfig config, DateTime date, string index, bool isLiveMode)
36  {
37  throw new NotImplementedException($"{nameof(IndexedBaseData)} types should implement 'GetSourceForAnIndex'. " +
38  "The implementation should determine the source to use for a given index value.");
39  }
40 
41  /// <summary>
42  /// Returns the index source for a date
43  /// </summary>
44  /// <param name="config">Configuration object</param>
45  /// <param name="date">Date of this source file</param>
46  /// <param name="isLiveMode">true if we're in live mode, false for backtesting mode</param>
47  /// <returns>The <see cref="SubscriptionDataSource"/> instance to use</returns>
48  public override SubscriptionDataSource GetSource(SubscriptionDataConfig config, DateTime date, bool isLiveMode)
49  {
50  throw new NotImplementedException($"{nameof(IndexedBaseData)} types should implement 'GetSource'. " +
51  "The implementation should determine the index source to use for a given date.");
52  }
53  }
54 }