Lean
$LEAN_TAG$
LiveMappingEventProvider.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
17
using
System.Linq;
18
using
QuantConnect
.
Data
;
19
using
QuantConnect
.
Logging
;
20
using
QuantConnect
.
Data
.
Market
;
21
using
System.Collections.Generic;
22
23
namespace
QuantConnect.Lean.Engine.DataFeeds.Enumerators
24
{
25
/// <summary>
26
/// Event provider who will emit <see cref="SymbolChangedEvent"/> events
27
/// </summary>
28
/// <remarks>Only special behavior is that it will refresh map file on each new tradable date event</remarks>
29
public
class
LiveMappingEventProvider
:
MappingEventProvider
30
{
31
/// <summary>
32
/// Check for new mappings
33
/// </summary>
34
public
override
IEnumerable<BaseData>
GetEvents
(
NewTradableDateEventArgs
eventArgs)
35
{
36
var currentInstance =
MapFile
;
37
// refresh map file instance
38
InitializeMapFile
();
39
var newInstance =
MapFile
;
40
41
// All future and option contracts sharing the same canonical symbol, share the same configuration too. Thus, in
42
// order to reduce logs, we log the configuration using the canonical symbol. See the optional parameter
43
// "overrideMessageFloodProtection" in Log.Trace() method for more information
44
var symbol =
Config
.
Symbol
.
HasCanonical
() ?
Config
.
Symbol
.
Canonical
.
Value
:
Config
.
Symbol
.
Value
;
45
Log
.
Trace
($
"LiveMappingEventProvider({Config.ToString(symbol)}): new tradable date {eventArgs.Date:yyyyMMdd}. "
+
46
$
"New MapFile: {!ReferenceEquals(currentInstance, newInstance)}. "
+
47
$
"MapFile.Count Old: {currentInstance?.Count()} New: {newInstance?.Count()}"
);
48
49
return
base.GetEvents(eventArgs);
50
}
51
}
52
}
Engine
DataFeeds
Enumerators
LiveMappingEventProvider.cs
Generated by
1.8.17