Lean  $LEAN_TAG$
LiquidateCommand.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 using System;
18 
19 namespace QuantConnect.Commands
20 {
21  /// <summary>
22  /// Represents a command that will liquidate the entire algorithm
23  /// </summary>
25  {
26  /// <summary>
27  /// Gets or sets the string ticker symbol
28  /// </summary>
29  public string Ticker { get; set; }
30 
31  /// <summary>
32  /// Gets or sets the security type of the ticker.
33  /// </summary>
34  public SecurityType SecurityType { get; set; }
35 
36  /// <summary>
37  /// Gets or sets the market the ticker resides in
38  /// </summary>
39  public string Market { get; set; }
40 
41  /// <summary>
42  /// Submits orders to liquidate all current holdings in the algorithm
43  /// </summary>
44  /// <param name="algorithm">The algorithm to be liquidated</param>
45  public override CommandResultPacket Run(IAlgorithm algorithm)
46  {
47  if (Ticker != null || SecurityType != SecurityType.Base || Market != null)
48  {
49  var symbol = GetSymbol(Ticker, SecurityType, Market);
50  algorithm.Liquidate(symbol);
51  }
52  else
53  {
54  algorithm.Liquidate();
55  }
56  return new CommandResultPacket(this, true);
57  }
58  }
59 }