public static bool BlotterSuccess(BlotterOfDealResponse BODResponse) { if (BODResponse == null) { return(false); } DealResponse[] output = BODResponse.Output; if (output == null || output.Length <= 0) { return(false); } foreach (DealResponse DResponse in output) { if (!DResponse.success) { return(false); } } return(true); }
/// <summary> /// This method tries to instantly execute passed request /// </summary> /// <param name="DRequest">DealRequest containing information how to communicate with server.</param> public void DealInstantExecute(DealRequest DRequest) { if (!IsReady) { return; } #region Liquidate All if (DRequest.LiquidateAll) { BlotterOfDealResponse blotter = CEDTS_TradingService.LiquidateAll(ForexAuthentication.Token); if (ServiceTrading.BlotterSuccess(blotter)) { DataDealRequest[DRequest.CreationTime].Executed = true; this.Save(DRequest); } AccountLogs.IsValid = false; return; } #endregion string product = DRequest.Product; if (!ForexRates.Data.ContainsKey(product)) { return; } #region Close Position if (DRequest.ClosePosition) { DealResponse DResponse = CEDTS_TradingService.ClosePosition(ForexAuthentication.Token, product); if (DResponse.success) { DataDealRequest[DRequest.CreationTime].Executed = true; this.Save(DRequest); } AccountLogs.IsValid = false; return; } #endregion int iDecimals = ForexConfiguration.GetDecimals(product);// ForexRates.Data[product].DECIMALS; string sRate = DRequest.Buy ? Doubles.ToString(DRequest.ASK, null, iDecimals, 0, double.MaxValue, '.') : Doubles.ToString(DRequest.BID, null, iDecimals, 0, double.MaxValue, '.'); string amount = DRequest.Amount.ToString(); #region Close if (DRequest.Close) { //double profit = this.GetLiveProfit(DRequest.ConfirmationNumber); DealResponse DResponse = CEDTS_TradingService.InstantExecution( ForexAuthentication.Token, product, DRequest.BuySell, amount, sRate, (int)DRequest.Tolerance); if (DResponse.success) { //Account.ClosedBalance += profit; DataDealRequest[DRequest.CreationTime].Executed = true; this.Save(DRequest); } AccountLogs.IsValid = false; return; } #endregion #region Buy Sell if (DRequest.Buy || DRequest.Sell) { DealResponse DResponse = CEDTS_TradingService.InstantExecution( ForexAuthentication.Token, product, DRequest.BuySell, amount, sRate, (int)DRequest.Tolerance); if (DResponse.success) { DataDealRequest[DRequest.CreationTime].Executed = true; this.Save(DRequest); } AccountLogs.IsValid = false; return; } #endregion throw new Exception("DealInstantExecute Undefined request !"); }