Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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 !");
        }