using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MtApi.Monitors { public class MtModifiedOrder { /// /// The order in its old state (before the changes) /// public MtOrder OldOrder { get; } /// /// The order in its new state (after the changes) /// public MtOrder NewOrder { get; } /// /// The changes found by this instance /// public OrderModifiedTypes ModifyType { get; private set; } /// /// Initializes an instance and compare the order in its old and new state /// /// The order in its old state (before the changes) /// The order in its new state (after the changes) public MtModifiedOrder(MtOrder oldOrder, MtOrder newOrder) { if (oldOrder != null && newOrder != null && oldOrder.Ticket != newOrder.Ticket) throw new ArgumentException(nameof(oldOrder) + " and " + nameof(newOrder) + " need to have the same ticket id"); OldOrder = oldOrder; NewOrder = newOrder; ModifyType = OrderModifiedTypes.None; Compare(); } private void Compare() { if(NewOrder != null && OldOrder != null) { if (OldOrder.StopLoss != NewOrder.StopLoss) ModifyType |= OrderModifiedTypes.StopLoss; if (OldOrder.TakeProfit != NewOrder.TakeProfit) ModifyType |= OrderModifiedTypes.TakeProfit; if (OldOrder.Operation != NewOrder.Operation) ModifyType |= OrderModifiedTypes.Operation; } } } }