Lean  $LEAN_TAG$
OptionSymbolProperties.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 
17 {
18  /// <summary>
19  /// Represents common properties for a specific option contract
20  /// </summary>
22  {
23  /// <summary>
24  /// When the holder of an equity option exercises one contract, or when the writer of an equity option is assigned
25  /// an exercise notice on one contract, this unit of trade, usually 100 shares of the underlying security, changes hands.
26  /// </summary>
27  public int ContractUnitOfTrade
28  {
29  get; protected set;
30  }
31 
32  /// <summary>
33  /// Overridable minimum price variation, required for index options contracts with
34  /// variable sized quoted prices depending on the premium of the option.
35  /// </summary>
36  public override decimal MinimumPriceVariation
37  {
38  get;
39  protected set;
40  }
41 
42  /// <summary>
43  /// Creates an instance of the <see cref="OptionSymbolProperties"/> class
44  /// </summary>
45  public OptionSymbolProperties(string description, string quoteCurrency, decimal contractMultiplier, decimal pipSize, decimal lotSize)
46  : base(description, quoteCurrency, contractMultiplier, pipSize, lotSize, string.Empty)
47  {
48  ContractUnitOfTrade = (int)contractMultiplier;
49  }
50 
51  /// <summary>
52  /// Creates an instance of the <see cref="OptionSymbolProperties"/> class from <see cref="SymbolProperties"/> class
53  /// </summary>
55  : base(properties.Description,
56  properties.QuoteCurrency,
57  properties.ContractMultiplier,
58  properties.MinimumPriceVariation,
59  properties.LotSize,
60  properties.MarketTicker,
61  properties.MinimumOrderSize,
62  properties.PriceMagnifier,
63  properties.StrikeMultiplier)
64  {
65  ContractUnitOfTrade = (int)properties.ContractMultiplier;
66  }
67 
68  internal void SetContractUnitOfTrade(int unitOfTrade)
69  {
70  ContractUnitOfTrade = unitOfTrade;
71  }
72 
73  internal void SetContractMultiplier(decimal multiplier)
74  {
75  ContractMultiplier = multiplier;
76  }
77  }
78 }