Lean
$LEAN_TAG$
ConstantOptionStrategyLegPredicateReferenceValue.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
System.Collections.Generic;
18
19
namespace
QuantConnect.Securities.Option.StrategyMatcher
20
{
21
/// <summary>
22
/// Provides an implementation of <see cref="IOptionStrategyLegPredicateReferenceValue"/> that represents a constant value.
23
/// </summary>
24
public
class
ConstantOptionStrategyLegPredicateReferenceValue
<T> :
IOptionStrategyLegPredicateReferenceValue
25
{
26
private
readonly T _value;
27
28
/// <summary>
29
/// Gets the target of this value
30
/// </summary>
31
public
PredicateTargetValue
Target
{
get
; }
32
33
/// <summary>
34
/// Initializes a new instance of the <see cref="ConstantOptionStrategyLegPredicateReferenceValue{T}"/> class
35
/// </summary>
36
/// <param name="value">The constant reference value</param>
37
/// <param name="target">The value target in relation to the <see cref="OptionPosition"/></param>
38
public
ConstantOptionStrategyLegPredicateReferenceValue
(T value,
PredicateTargetValue
target)
39
{
40
_value = value;
41
Target
= target;
42
}
43
44
/// <summary>
45
/// Returns the constant value provided at initialization
46
/// </summary>
47
public
object
Resolve
(IReadOnlyList<OptionPosition> legs)
48
{
49
return
_value;
50
}
51
}
52
53
/// <summary>
54
/// Provides methods for easily creating instances of <see cref="ConstantOptionStrategyLegPredicateReferenceValue{T}"/>
55
/// </summary>
56
public
static
class
ConstantOptionStrategyLegReferenceValue
57
{
58
/// <summary>
59
/// Creates a new instance of the <see cref="ConstantOptionStrategyLegPredicateReferenceValue{T}"/> class for
60
/// the specified <paramref name="value"/>
61
/// </summary>
62
public
static
IOptionStrategyLegPredicateReferenceValue
Create
(
object
value)
63
{
64
if
(value is DateTime)
65
{
66
return
new
ConstantOptionStrategyLegPredicateReferenceValue<DateTime>
((DateTime) value,
PredicateTargetValue
.Expiration);
67
}
68
69
if
(value is decimal)
70
{
71
return
new
ConstantOptionStrategyLegPredicateReferenceValue<decimal>
((decimal) value,
PredicateTargetValue
.Strike);
72
}
73
74
if
(value is
OptionRight
)
75
{
76
return
new
ConstantOptionStrategyLegPredicateReferenceValue<OptionRight>
((
OptionRight
) value,
PredicateTargetValue
.Right);
77
}
78
79
throw
new
NotSupportedException($
"{value?.GetType().GetBetterTypeName()} is not supported."
);
80
}
81
}
82
}
Common
Securities
Option
StrategyMatcher
ConstantOptionStrategyLegPredicateReferenceValue.cs
Generated by
1.8.17