Example #1
0
        public AdvisorResponse GetAdvisorData(int advisorId)
        {
            AdvisorRanking advisor = null;
            List <DomainObjects.Asset.Asset> assets            = null;
            List <FollowAdvisor>             advisorsFollowers = null;
            AdvisorRankingHistory            advisorHistory    = null;

            Parallel.Invoke(() => advisor           = AdvisorRankingBusiness.GetAdvisorFullData(advisorId),
                            () => assets            = AssetBusiness.ListAssets(false),
                            () => advisorsFollowers = FollowAdvisorBusiness.ListFollowers(new int[] { advisorId }, false),
                            () => advisorHistory    = AdvisorRankingHistoryBusiness.GetLastAdvisorRankingAndProfit(advisorId));

            return(AdvisorRankingBusiness.GetAdvisorResponse(advisor, advisor.TotalAdvisors, advisorsFollowers, GetLoggedUser(), assets, advisorHistory, null, null));
        }
Example #2
0
        public AdvisorPerformanceResponse GetAdvisorPeformance(int advisorId)
        {
            AdvisorRanking advisor = AdvisorRankingBusiness.GetAdvisorFullData(advisorId);

            if (advisor == null)
            {
                throw new NotFoundException("Advisor not found.");
            }

            List <DailyPerformanceResponse> dailyPerformance = null;
            List <Order> closedOrders = null;

            Parallel.Invoke(() => dailyPerformance = AdvisorRankingHistoryBusiness.ListDailyPerformance(advisorId),
                            () => closedOrders     = OrderBusiness.ListOrders(new int[] { advisorId }, null, new OrderStatusType[] { OrderStatusType.Close }));

            return(new AdvisorPerformanceResponse()
            {
                DailyPerformance = dailyPerformance,
                BestTrade = closedOrders.Any() ? closedOrders.Max(c => c.Profit ?? double.MinValue) : 0,
                WorstTrade = closedOrders.Any() ? closedOrders.Min(c => c.Profit ?? double.MinValue) : 0,
                DailyDrawdown = dailyPerformance.Any() ? dailyPerformance.Min(c => c.Variation) : 0
            });
        }
Example #3
0
 private string GetInsertScript(DateTime referenceDate, AdvisorRanking advisorRanking)
 {
     return($"INSERT INTO [AdvisorRankingHistory] (UserId, ReferenceDate, Ranking, Rating) VALUES ({advisorRanking.Id}, {GetDateTimeSqlFormattedValue(referenceDate)}, {advisorRanking.Ranking}, {GetDoubleSqlFormattedValue(advisorRanking.Rating)});");
 }