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