Lean
$LEAN_TAG$
MidPoint.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
namespace
QuantConnect.Indicators
17
{
18
/// <summary>
19
/// This indicator computes the MidPoint (MIDPOINT)
20
/// The MidPoint is calculated using the following formula:
21
/// MIDPOINT = (Highest Value + Lowest Value) / 2
22
/// </summary>
23
public
class
MidPoint
:
IndicatorBase
<IndicatorDataPoint>,
IIndicatorWarmUpPeriodProvider
24
{
25
private
readonly
int
_period;
26
private
readonly
Maximum
_maximum;
27
private
readonly
Minimum
_minimum;
28
29
/// <summary>
30
/// Initializes a new instance of the <see cref="MidPoint"/> class using the specified name and period.
31
/// </summary>
32
/// <param name="name">The name of this indicator</param>
33
/// <param name="period">The period of the MIDPOINT</param>
34
public
MidPoint
(
string
name,
int
period)
35
: base(name)
36
{
37
_period = period;
38
_maximum =
new
Maximum
(period);
39
_minimum =
new
Minimum
(period);
40
}
41
42
/// <summary>
43
/// Initializes a new instance of the <see cref="MidPoint"/> class using the specified period.
44
/// </summary>
45
/// <param name="period">The period of the MIDPOINT</param>
46
public
MidPoint
(
int
period)
47
: this($
"MIDPOINT({period})"
, period)
48
{
49
}
50
51
/// <summary>
52
/// Gets a flag indicating when this indicator is ready and fully initialized
53
/// </summary>
54
public
override
bool
IsReady
=> Samples >= _period;
55
56
/// <summary>
57
/// Required period, in data points, for the indicator to be ready and fully initialized.
58
/// </summary>
59
public
int
WarmUpPeriod
=> _period;
60
61
/// <summary>
62
/// Computes the next value of this indicator from the given state
63
/// </summary>
64
/// <param name="input">The input given to the indicator</param>
65
/// <returns>A new value for this indicator</returns>
66
protected
override
decimal
ComputeNextValue
(
IndicatorDataPoint
input)
67
{
68
_maximum.Update(input);
69
_minimum.Update(input);
70
71
return
(_maximum.Current.Value + _minimum.Current.Value) / 2;
72
}
73
74
/// <summary>
75
/// Resets this indicator to its initial state
76
/// </summary>
77
public
override
void
Reset
()
78
{
79
_maximum.Reset();
80
_minimum.Reset();
81
base.Reset();
82
}
83
}
84
}
Indicators
MidPoint.cs
Generated by
1.8.17