Lean
$LEAN_TAG$
LiveDividendEventProvider.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 factor file on each new tradable date event</remarks>
29
public
class
LiveDividendEventProvider
:
DividendEventProvider
30
{
31
/// <summary>
32
/// Check for dividends and returns them
33
/// </summary>
34
/// <param name="eventArgs">The new tradable day event arguments</param>
35
/// <returns>New Dividend event if any</returns>
36
public
override
IEnumerable<BaseData>
GetEvents
(
NewTradableDateEventArgs
eventArgs)
37
{
38
var currentInstance =
FactorFile
;
39
// refresh factor file instance
40
InitializeFactorFile
();
41
var newInstance =
FactorFile
;
42
43
if
(currentInstance?.Count() != newInstance?.Count())
44
{
45
// All future and option contracts sharing the same canonical symbol, share the same configuration too. Thus, in
46
// order to reduce logs, we log the configuration using the canonical symbol. See the optional parameter
47
// "overrideMessageFloodProtection" in Log.Trace() method for more information
48
var symbol =
Config
.
Symbol
.
HasCanonical
() ?
Config
.
Symbol
.
Canonical
.
Value
:
Config
.
Symbol
.
Value
;
49
Log
.
Trace
($
"LiveDividendEventProvider({Config.ToString(symbol)}): new tradable date {eventArgs.Date:yyyyMMdd}. "
+
50
$
"New FactorFile: {!ReferenceEquals(currentInstance, newInstance)}. "
+
51
$
"FactorFile.Count Old: {currentInstance?.Count()} New: {newInstance?.Count()}"
);
52
}
53
54
return
base.GetEvents(eventArgs);
55
}
56
}
57
}
Engine
DataFeeds
Enumerators
LiveDividendEventProvider.cs
Generated by
1.8.17