Lean  $LEAN_TAG$
ILeanManager.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 using QuantConnect.Packets;
19 using System.ComponentModel.Composition;
21 
23 {
24  /// <summary>
25  /// Provides scope into Lean that is convenient for managing a lean instance
26  /// </summary>
27  [InheritedExport(typeof(ILeanManager))]
28  public interface ILeanManager : IDisposable
29  {
30  /// <summary>
31  /// Initialize the ILeanManager implementation
32  /// </summary>
33  /// <param name="systemHandlers">Exposes lean engine system handlers running LEAN</param>
34  /// <param name="algorithmHandlers">Exposes the lean algorithm handlers running lean</param>
35  /// <param name="job">The job packet representing either a live or backtest Lean instance</param>
36  /// <param name="algorithmManager">The Algorithm manager</param>
37  void Initialize(LeanEngineSystemHandlers systemHandlers, LeanEngineAlgorithmHandlers algorithmHandlers, AlgorithmNodePacket job, AlgorithmManager algorithmManager);
38 
39  /// <summary>
40  /// Sets the IAlgorithm instance in the ILeanManager
41  /// </summary>
42  /// <param name="algorithm">The IAlgorithm instance being run</param>
43  void SetAlgorithm(IAlgorithm algorithm);
44 
45  /// <summary>
46  /// Update ILeanManager with the IAlgorithm instance
47  /// </summary>
48  void Update();
49 
50  /// <summary>
51  /// This method is called after algorithm initialization
52  /// </summary>
53  void OnAlgorithmStart();
54 
55  /// <summary>
56  /// This method is called before algorithm termination
57  /// </summary>
58  void OnAlgorithmEnd();
59 
60  /// <summary>
61  /// Callback fired each time that we add/remove securities from the data feed
62  /// </summary>
64  }
65 }