/* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; namespace QuantConnect.Orders { /// /// Defines a request to update an order's values /// public class UpdateOrderRequest : OrderRequest { /// /// Gets /// public override OrderRequestType OrderRequestType { get { return OrderRequestType.Update; } } /// /// Gets the new quantity of the order, null to not change the quantity /// public decimal? Quantity { get; private set; } /// /// Gets the new limit price of the order, null to not change the limit price /// public decimal? LimitPrice { get; private set; } /// /// Gets the new stop price of the order, null to not change the stop price /// public decimal? StopPrice { get; private set; } /// /// Gets the new trigger price of the order, null to not change the trigger price /// public decimal? TriggerPrice { get; private set; } /// /// The trailing stop order trailing amount /// public decimal? TrailingAmount { get; private set; } /// /// Initializes a new instance of the class /// /// The time the request was submitted /// The order id to be updated /// The fields defining what should be updated public UpdateOrderRequest(DateTime time, int orderId, UpdateOrderFields fields) : base(time, orderId, fields.Tag) { Quantity = fields.Quantity; LimitPrice = fields.LimitPrice; StopPrice = fields.StopPrice; TriggerPrice = fields.TriggerPrice; TrailingAmount = fields.TrailingAmount; } /// /// Returns a string that represents the current object. /// /// /// A string that represents the current object. /// /// 2 public override string ToString() { return Messages.UpdateOrderRequest.ToString(this); } /// /// Checks whether the update request is allowed for a closed order. /// Only tag updates are allowed on closed orders. /// /// True if the update request is allowed for a closed order public bool IsAllowedForClosedOrder() { return !Quantity.HasValue && !LimitPrice.HasValue && !StopPrice.HasValue && !TriggerPrice.HasValue & !TrailingAmount.HasValue; } } }