Lean
$LEAN_TAG$
Main Page
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
f
h
i
l
m
n
o
p
q
r
s
t
w
Functions
Enumerations
a
b
c
d
f
h
i
l
m
n
o
p
q
r
s
t
w
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Γ
Δ
Θ
ρ
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
y
z
Γ
Δ
Θ
ρ
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Properties
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Events
a
b
c
d
e
f
i
l
m
n
o
q
r
s
t
u
Files
File List
•
All
Classes
Namespaces
Functions
Variables
Enumerations
Enumerator
Properties
Events
Pages
OptimizationStepParameter.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
Newtonsoft.Json;
17
using
System;
18
19
namespace
QuantConnect.Optimizer.Parameters
20
{
21
/// <summary>
22
/// Defines the step based optimization parameter
23
/// </summary>
24
public
class
OptimizationStepParameter
:
OptimizationParameter
25
{
26
/// <summary>
27
/// Minimum value of optimization parameter, applicable for boundary conditions
28
/// </summary>
29
[JsonProperty(
"min"
)]
30
public
decimal
MinValue
{
get
; }
31
32
/// <summary>
33
/// Maximum value of optimization parameter, applicable for boundary conditions
34
/// </summary>
35
[JsonProperty(
"max"
)]
36
public
decimal
MaxValue
{
get
; }
37
38
/// <summary>
39
/// Movement, should be positive
40
/// </summary>
41
[JsonProperty(
"step"
)]
42
public
decimal?
Step
{
get
;
set
; }
43
44
#pragma warning disable CS1574
45
/// <summary>
46
/// Minimal possible movement for current parameter, should be positive
47
/// </summary>
48
/// <remarks>Used by <see cref="Strategies.EulerSearchOptimizationStrategy"/> to determine when this parameter can no longer be optimized</remarks>
49
[JsonProperty(
"minStep"
)]
50
#pragma warning restore CS1574
51
public
decimal?
MinStep
{
get
;
set
; }
52
53
/// <summary>
54
/// Create an instance of <see cref="OptimizationParameter"/> based on configuration
55
/// </summary>
56
/// <param name="name">parameter name</param>
57
/// <param name="min">minimal value</param>
58
/// <param name="max">maximal value</param>
59
public
OptimizationStepParameter
(
string
name, decimal min, decimal max)
60
: base(name)
61
{
62
if
(min > max)
63
{
64
throw
new
ArgumentException(
Messages
.
OptimizationStepParameter
.
InvalidStepRange
(min, max));
65
}
66
67
MinValue
= min;
68
MaxValue
= max;
69
}
70
71
/// <summary>
72
/// Create an instance of <see cref="OptimizationParameter"/> based on configuration
73
/// </summary>
74
/// <param name="name">parameter name</param>
75
/// <param name="min">minimal value</param>
76
/// <param name="max">maximal value</param>
77
/// <param name="step">movement</param>
78
public
OptimizationStepParameter
(
string
name, decimal min, decimal max, decimal step)
79
: this(name, min, max, step, step)
80
{
81
82
}
83
84
/// <summary>
85
/// Create an instance of <see cref="OptimizationParameter"/> based on configuration
86
/// </summary>
87
/// <param name="name">parameter name</param>
88
/// <param name="min">minimal value</param>
89
/// <param name="max">maximal value</param>
90
/// <param name="step">movement</param>
91
/// <param name="minStep">minimal possible movement</param>
92
public
OptimizationStepParameter
(
string
name, decimal min, decimal max, decimal step, decimal minStep) : this(name, min, max)
93
{
94
// with zero step algorithm can go to infinite loop, use default step value
95
if
(step <= 0)
96
{
97
throw
new
ArgumentException(
Messages
.
OptimizationStepParameter
.
NonPositiveStepValue
(nameof(step), step));
98
}
99
100
// EulerSearch algorithm can go to infinite range division if Min step is not provided, use Step as default
101
if
(minStep <= 0)
102
{
103
throw
new
ArgumentException(
Messages
.
OptimizationStepParameter
.
NonPositiveStepValue
(nameof(minStep), minStep));
104
}
105
106
if
(step < minStep)
107
{
108
throw
new
ArgumentException(
Messages
.
OptimizationStepParameter
.
StepLessThanMinStep
);
109
}
110
111
Step
= step;
112
MinStep
= minStep;
113
}
114
}
115
}
Common
Optimizer
Parameters
OptimizationStepParameter.cs
Generated by
1.8.17