Ejemplo n.º 1
0
        /// <summary>
        /// Вспомогательный метод - закрывает позицию текушими значниями времени и катеровок
        /// </summary>
        /// <param name="closeDealIdValue"></param>
        /// <param name="warningList"></param>
        /// <param name="validationErrorList"></param>
        /// <param name="timeExit"></param>
        /// <param name="ddlExitReasonValue"></param>
        /// <returns></returns>
        private ActionResult CloseDaelCurrentTimeValues(string closeDealIdValue, List <string> warningList, List <string> validationErrorList,
                                                        DateTime timeExit, PositionExitReason ddlExitReasonValue)
        {
            var strings   = GetSidePriceListById(closeDealIdValue);
            var adoHalper = new DatabaseQuoteEnquirer();
            var tickers   = strings.Select(x => x.Split('_')[0]).Distinct();

            var quotes = tickers.ToDictionary(x => x, x => adoHalper.GetQuoteStoredProc(x));


            var lstStoragePrice = new List <Tuple <string, int, float> >();

            foreach (var inp in strings)
            {
                var input = inp.Split('_');
                var side  = Utils.dealSide[input[1]];
                var quote = quotes.Where(x => x.Key == input[0]).ToList();


                if (quote.Any())
                {
                    var price = quote.First().Value.bid;
                    if (side == -1)
                    {
                        price = quote.First().Value.ask;
                    }
                    lstStoragePrice.Add(new Tuple <string, int, float>(input[0], side, price));
                }
                else
                {
                    warningList.Add(String.Format("{0} : {1} {2}. {3}.",
                                                  Resource.ErrorMessage, Resource.ErrorMessageQuoteNotFound, input[0], Resource.ErrorMessageTransactionsOnPairWillNotClosed));
                    Logger.Error(String.Format("CloseOrCancelDeal - попытка принудительно закрыть сделки администратором. " +
                                               "Ошибка: для валютной пары {0} не найдены катировка. Сделки по этой валютной паре не будут закрыты.", input[0]));
                }
            }

            if (validationErrorList.Count > 0)
            {
                ViewBag.ErrorList   = validationErrorList;
                ViewBag.WarningList = warningList;
                var model = GetPositionsEditModel(closeDealIdValue);
                return(View("SafePositionEdit", model));
            }


            var successCloseDeals = positionRepository.ClosingPositions(closeDealIdValue, timeExit, ddlExitReasonValue, lstStoragePrice);
            var msg = successCloseDeals.Count < 10 ?
                      string.Format("{0}: {1}. {2}",
                                    Resource.MessageMarketOrderClosed, string.Join(", ", successCloseDeals), Resource.ErrorMessageClosedNotAllTransactions) :
                      string.Format("{0} {1} {2}. {3}",
                                    Resource.MessageMarketOrderClosed, string.Join(", ", successCloseDeals.Take(10)), Resource.TextEtc, Resource.ErrorMessageClosedNotAllTransactions);

            return(RedirectToAction("PositionList", new { message = msg, positionId = -1 }));
        }
Ejemplo n.º 2
0
 public void SetupMethods()
 {
     adoHalper = new DatabaseQuoteEnquirer();
     DalSpot.Instantiate(MoqTradeSharpDictionary.Mock);
 }