AccountResponceMessage Receive(ModifyOrderMessage message) { IImplementation implementation = _implementation; if (implementation == null || OperationalState != OperationalStateEnum.Operational) { return(new AccountResponceMessage(message.AccountInfo, false)); } string modifiedId, operationResultMessage; ModifyOrderResponceMessage responce; if (implementation.ModifyOrder(message.AccountInfo, message.OrderId, message.StopLoss, message.TakeProfit, message.TargetOpenPrice, out modifiedId, out operationResultMessage)) { responce = new ModifyOrderResponceMessage(message.AccountInfo, message.OrderId, modifiedId, true); } else { responce = new ModifyOrderResponceMessage(message.AccountInfo, message.OrderId, modifiedId, false); } responce.ResultMessage = operationResultMessage; return(responce); }
public bool ModifyOrder(AccountInfo account, Order order, decimal?stopLoss, decimal?takeProfit, decimal?targetOpenPrice, out string modifiedId, out string operationResultMessage) { TracerHelper.Trace(this.Name); modifiedId = order.Id; if (OperationalState != OperationalStateEnum.Operational) { operationResultMessage = "Attempted operations on non operational order executioner."; SystemMonitor.Error(operationResultMessage); return(false); } ModifyOrderMessage message = new ModifyOrderMessage(account, order.Symbol, order.Id, stopLoss, takeProfit, targetOpenPrice, null); message.PerformSynchronous = true; ResponseMessage responseMessage = this.SendAndReceiveResponding <ResponseMessage>( SourceTransportInfo, message); if (responseMessage == null) {// Time out. operationResultMessage = "Timeout, failed receive result for order modification request. In this scenario inconsistency may occur!"; SystemMonitor.Error(operationResultMessage); return(false); } if (responseMessage.OperationResult == false) { operationResultMessage = responseMessage.OperationResultMessage; return(false); } ModifyOrderResponseMessage castedResponseMessage = (ModifyOrderResponseMessage)responseMessage; SystemMonitor.CheckError(string.IsNullOrEmpty(castedResponseMessage.OrderModifiedId) == false, "Modified not assigned."); modifiedId = castedResponseMessage.OrderModifiedId; operationResultMessage = "Order modified."; RaiseOrderUpdateEvent(account, castedResponseMessage.OrderId, order.Info, ActiveOrder.UpdateTypeEnum.Modified); return(true); }
public bool ModifyOrder(AccountInfo account, Order order, decimal? stopLoss, decimal? takeProfit, decimal? targetOpenPrice, out string modifiedId, out string operationResultMessage) { TracerHelper.Trace(this.Name); modifiedId = order.Id; if (OperationalState != OperationalStateEnum.Operational) { operationResultMessage = "Attempted operations on non operational order executioner."; SystemMonitor.Error(operationResultMessage); return false; } ModifyOrderMessage message = new ModifyOrderMessage(account, order.Symbol, order.Id, stopLoss, takeProfit, targetOpenPrice, null); message.PerformSynchronous = true; ResponseMessage responseMessage = this.SendAndReceiveResponding<ResponseMessage>( SourceTransportInfo, message); if (responseMessage == null) {// Time out. operationResultMessage = "Timeout, failed receive result for order modification request. In this scenario inconsistency may occur!"; SystemMonitor.Error(operationResultMessage); return false; } if (responseMessage.OperationResult == false) { operationResultMessage = responseMessage.OperationResultMessage; return false; } ModifyOrderResponseMessage castedResponseMessage = (ModifyOrderResponseMessage)responseMessage; SystemMonitor.CheckError(string.IsNullOrEmpty(castedResponseMessage.OrderModifiedId) == false, "Modified not assigned."); modifiedId = castedResponseMessage.OrderModifiedId; operationResultMessage = "Order modified."; RaiseOrderUpdateEvent(account, castedResponseMessage.OrderId, order.Info, ActiveOrder.UpdateTypeEnum.Modified); return true; }
AccountResponseMessage Receive(ModifyOrderMessage message) { IImplementation implementation = _implementation; if (implementation == null || OperationalState != OperationalStateEnum.Operational) { return new AccountResponseMessage(message.AccountInfo, false); } string modifiedId, operationResultMessage; ModifyOrderResponseMessage response; if (implementation.ModifyOrder(message.AccountInfo, message.OrderId, message.StopLoss, message.TakeProfit, message.TargetOpenPrice, out modifiedId, out operationResultMessage)) { response = new ModifyOrderResponseMessage(message.AccountInfo, message.OrderId, modifiedId, true); } else { response = new ModifyOrderResponseMessage(message.AccountInfo, message.OrderId, modifiedId, false); } response.ResultMessage = operationResultMessage; return response; }