protected void Page_Load(object sender, EventArgs e) { userRepository = DependencyResolver.Current.GetService<IUserRepository>(); Response.ContentType = "text/plain"; int accountId; if (Request["accountId"] == null || !int.TryParse(Request["accountId"], out accountId)) { Logger.Error("Не корректно задан парамер accountId"); Response.BinaryWrite(GetErrorAvatar()); return; } if (!avatarSize.Contains(Request["size"].ToLower())) { Logger.Error("Не корректно задан парамер size"); Response.BinaryWrite(GetErrorAvatar()); return; } var user = userRepository.GetAccountOwner(accountId); if (user == null) { Logger.Error("Не найден пользователь-владелец счёта " + accountId); Response.BinaryWrite(GetErrorAvatar()); return; } dataSource = TradeSharpAccountStatistics.Instance.proxy; var userInfo = dataSource.GetUsersBriefInfo(new List<int> { user.ID }).FirstOrDefault(); if (userInfo == null) { Logger.Error("Не удалось получить подробную информацию о пользователе " + user.Login); Response.BinaryWrite(GetErrorAvatar()); return; } byte[] avatar; switch (Request["size"].ToLower()) { case "big": avatar = dataSource.ReadFiles(new List<string> { userInfo.AvatarBigFileName }).FirstOrDefault(); break; case "small": avatar = dataSource.ReadFiles(new List<string> { userInfo.AvatarSmallFileName }).FirstOrDefault(); break; default: avatar = dataSource.ReadFiles(new List<string> { userInfo.AvatarBigFileName }).FirstOrDefault(); break; } if (avatar == null) { Logger.Error("Не удалось получить файл"); Response.BinaryWrite(GetErrorAvatar()); return; } Response.BinaryWrite(avatar); }
public UserInfoExCache(IAccountStatistics source, string cachePath = "\\files") { dataSource = source; path = ExecutablePath.ExecPath + cachePath; try { if (!Directory.Exists(path)) Directory.CreateDirectory(path); } catch (Exception ex) { Logger.Info(string.Format("UserInfoExCache: error creating directory {0}", path), ex); throw; } }
private TradeSharpAccountStatistics(IAccountStatistics proxyOrStub = null) { if (proxyOrStub != null) { proxy = proxyOrStub; return; } try { proxy = ProxyBuilder.Instance.GetImplementer <IAccountStatistics>(); } catch (Exception ex) { Logger.Error("TradeSharpAccountStatistics ctor", ex); } }
private TradeSharpAccountStatistics(IAccountStatistics proxyOrStub = null) { if (proxyOrStub != null) { proxy = proxyOrStub; return; } try { proxy = ProxyBuilder.Instance.GetImplementer<IAccountStatistics>(); } catch (Exception ex) { Logger.Error("TradeSharpAccountStatistics ctor", ex); } }
public UserInfoExCache(IAccountStatistics source, string cachePath = "\\files") { dataSource = source; path = ExecutablePath.ExecPath + cachePath; try { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } } catch (Exception ex) { Logger.Info(string.Format("UserInfoExCache: error creating directory {0}", path), ex); throw; } }
private static AccountEfficiency GeneratePortfolioAccountEfficiency(TopPortfolio portfolio, IAccountStatistics proxy) { var portfolioEfficiency = new AccountEfficiency(); var efficiencies = new List<AccountEfficiency>(); // detect beginning DateTime? beginDate = null; foreach (var performerStat in portfolio.Managers) { var efficiency = proxy.GetAccountEfficiencyShort(performerStat.Account, false, false); efficiencies.Add(efficiency); var firstDate = efficiency.listProfit1000.Min(e => e.time); if (!beginDate.HasValue) beginDate = firstDate; else if (firstDate < beginDate.Value) beginDate = firstDate; } if (!beginDate.HasValue) return null; // pofit1000 calc portfolioEfficiency.listProfit1000 = new List<EquityOnTime>(); portfolioEfficiency.listEquity = new List<EquityOnTime>(); for (var date = beginDate.Value; date < DateTime.Now; date = date.AddDays(1)) { float equity = 0; foreach (var efficiency in efficiencies) { var equityOnTime = efficiency.listProfit1000.Find(e => e.time == date); if (equityOnTime.time == default(DateTime)) continue; equity += equityOnTime.equity; } equity /= efficiencies.Count; portfolioEfficiency.listProfit1000.Add(new EquityOnTime(equity, date)); } if (!AccountModel.Instance.AccountId.HasValue || portfolioEfficiency.listProfit1000.Count == 0) return null; // pofit calc var stat = proxy.GetPerformerByAccountId(AccountModel.Instance.AccountId.Value); // пусть performerStat.Equity соответствует последней точке на кривой доходности на 1000 var profitFactor = stat.Equity / portfolioEfficiency.listProfit1000.Last().equity; foreach (var equityOnTime in portfolioEfficiency.listProfit1000) { portfolioEfficiency.listEquity.Add(new EquityOnTime(equityOnTime.equity * profitFactor, equityOnTime.time)); } // stats calc portfolioEfficiency.listTransaction = new List<BalanceChange>(); portfolioEfficiency.InitialBalance = portfolioEfficiency.listEquity[0].equity; portfolioEfficiency.StartDate = portfolioEfficiency.listEquity[0].time; new EfficiencyCalculator().CalculateProfitCoeffs(portfolioEfficiency); return portfolioEfficiency; }
private static AccountEfficiency GeneratePortfolioAccountEfficiency(TopPortfolio portfolio, IAccountStatistics proxy) { var portfolioEfficiency = new AccountEfficiency(); var efficiencies = new List <AccountEfficiency>(); // detect beginning DateTime?beginDate = null; foreach (var performerStat in portfolio.Managers) { var efficiency = proxy.GetAccountEfficiencyShort(performerStat.Account, false, false); efficiencies.Add(efficiency); var firstDate = efficiency.listProfit1000.Min(e => e.time); if (!beginDate.HasValue) { beginDate = firstDate; } else if (firstDate < beginDate.Value) { beginDate = firstDate; } } if (!beginDate.HasValue) { return(null); } // pofit1000 calc portfolioEfficiency.listProfit1000 = new List <EquityOnTime>(); portfolioEfficiency.listEquity = new List <EquityOnTime>(); for (var date = beginDate.Value; date < DateTime.Now; date = date.AddDays(1)) { float equity = 0; foreach (var efficiency in efficiencies) { var equityOnTime = efficiency.listProfit1000.Find(e => e.time == date); if (equityOnTime.time == default(DateTime)) { continue; } equity += equityOnTime.equity; } equity /= efficiencies.Count; portfolioEfficiency.listProfit1000.Add(new EquityOnTime(equity, date)); } if (!AccountModel.Instance.AccountId.HasValue || portfolioEfficiency.listProfit1000.Count == 0) { return(null); } // pofit calc var stat = proxy.GetPerformerByAccountId(AccountModel.Instance.AccountId.Value); // пусть performerStat.Equity соответствует последней точке на кривой доходности на 1000 var profitFactor = stat.Equity / portfolioEfficiency.listProfit1000.Last().equity; foreach (var equityOnTime in portfolioEfficiency.listProfit1000) { portfolioEfficiency.listEquity.Add(new EquityOnTime(equityOnTime.equity * profitFactor, equityOnTime.time)); } // stats calc portfolioEfficiency.listTransaction = new List <BalanceChange>(); portfolioEfficiency.InitialBalance = portfolioEfficiency.listEquity[0].equity; portfolioEfficiency.StartDate = portfolioEfficiency.listEquity[0].time; new EfficiencyCalculator().CalculateProfitCoeffs(portfolioEfficiency); return(portfolioEfficiency); }
public static void Initialize(IAccountStatistics proxyOrStub) { instance = new TradeSharpAccountStatistics(proxyOrStub); }
public static void Initialize(IAccountStatistics proxyOrStub) { instance = new TradeSharpAccountStatistics(proxyOrStub); }
protected void Page_Load(object sender, EventArgs e) { userRepository = DependencyResolver.Current.GetService <IUserRepository>(); Response.ContentType = "text/plain"; int accountId; if (Request["accountId"] == null || !int.TryParse(Request["accountId"], out accountId)) { Logger.Error("Не корректно задан парамер accountId"); Response.BinaryWrite(GetErrorAvatar()); return; } if (!avatarSize.Contains(Request["size"].ToLower())) { Logger.Error("Не корректно задан парамер size"); Response.BinaryWrite(GetErrorAvatar()); return; } var user = userRepository.GetAccountOwner(accountId); if (user == null) { Logger.Error("Не найден пользователь-владелец счёта " + accountId); Response.BinaryWrite(GetErrorAvatar()); return; } dataSource = TradeSharpAccountStatistics.Instance.proxy; var userInfo = dataSource.GetUsersBriefInfo(new List <int> { user.ID }).FirstOrDefault(); if (userInfo == null) { Logger.Error("Не удалось получить подробную информацию о пользователе " + user.Login); Response.BinaryWrite(GetErrorAvatar()); return; } byte[] avatar; switch (Request["size"].ToLower()) { case "big": avatar = dataSource.ReadFiles(new List <string> { userInfo.AvatarBigFileName }).FirstOrDefault(); break; case "small": avatar = dataSource.ReadFiles(new List <string> { userInfo.AvatarSmallFileName }).FirstOrDefault(); break; default: avatar = dataSource.ReadFiles(new List <string> { userInfo.AvatarBigFileName }).FirstOrDefault(); break; } if (avatar == null) { Logger.Error("Не удалось получить файл"); Response.BinaryWrite(GetErrorAvatar()); return; } Response.BinaryWrite(avatar); }