/// <summary> /// Выбираем пользователей, которые подписаны на портфель, и отписываем их от портфеля /// </summary> /// <param name="id">уникальный идентификатор портфеля</param> /// <returns></returns> private static bool UnsubscribeSubscribersFromPortfolio(int id) { var errorsUnsubscribe = new List <string>(); try { using (var ctx = DatabaseContext.Instance.Make()) { var logins = ctx.USER_TOP_PORTFOLIO.Where(x => x.Portfolio == id).Select(x => x.PLATFORM_USER.Login); var proxy = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy; Logger.Info("Начинаем отписывать пользователей от портфеля id = " + id); foreach (var login in logins) { var result = proxy.UnsubscribePortfolio(ProtectedOperationContext.MakeServerSideContext(), login, false, true); if (result != RequestStatus.OK) { errorsUnsubscribe.Add(login); } } } if (errorsUnsubscribe.Count > 0) { Logger.Error(string.Format("От портфеля {0} не удалось отписать следующих пользователей: {1}", id, string.Join(Environment.NewLine, errorsUnsubscribe))); return(false); } return(true); } catch (Exception ex) { Logger.Error("UnsubscribeOnPortfolio()", ex); return(false); } }
/// <summary> /// Отписать пользователя от сигналов /// </summary> /// <param name="userLogin">Логин потзователя, который больше не хочет быть подписчиком</param> /// <param name="serviceId">Сигналы, которые пользователь больше не хочет получать</param> /// <returns></returns> public string UnSubscribe(string userLogin, int serviceId) { string errorMessage; try { var proxy = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy; WalletError walletError; var status = proxy.SubscribeOnService(ProtectedOperationContext.MakeServerSideContext(), userLogin, serviceId, false, true, null, out walletError); if (!status || walletError != WalletError.OK) { errorMessage = Resource.ErrorMessageCampaignAccount; Logger.Error(errorMessage); return(errorMessage); } return(string.Empty); } catch (Exception ex) { errorMessage = Resource.ErrorMessageUnableSignAccount + ": " + ex.Message; Logger.Error("AddTopPortfolio", ex); } return(errorMessage); }
public RobotContextLive(TradeSharpServerTrade proxyTrade, Account accountInfo, Func <string> getUserLogin) { this.proxyTrade = proxyTrade; this.AccountInfo = accountInfo; this.getUserLogin = getUserLogin; quotesStorage = Contract.Util.BL.QuoteStorage.Instance; }
public RobotContextLive(TradeSharpServerTrade proxyTrade, Account accountInfo, Func<string> getUserLogin) { this.proxyTrade = proxyTrade; this.AccountInfo = accountInfo; this.getUserLogin = getUserLogin; quotesStorage = Contract.Util.BL.QuoteStorage.Instance; }
public RobotContextLive(TradeSharpServerTrade proxyTrade, Account accountInfo, Func <string> getUserLogin, Func <List <Cortege2 <string, BarSettings> > > getAllUsedTickers) { this.proxyTrade = proxyTrade; AccountInfo = accountInfo; this.getUserLogin = getUserLogin; this.getAllUsedTickers = getAllUsedTickers; quotesStorage = Contract.Util.BL.QuoteStorage.Instance; }
private NewsStorage() { try { proxyAccount = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance); } catch (Exception ex) { Logger.Error("NewsStorage ctor: ошибка создания proxyAccount", ex); } }
public string SubscribeOnPortfolioOnExistAccount(TopPortfolioItem newTopPortfolio) { string errorMessage; if (!newTopPortfolio.ManagedAccount.HasValue) { errorMessage = Resource.ErrorMessageCampaignAccount; Logger.Error(errorMessage); return(errorMessage); } var ownerUser = userRepository.GetAccountOwner(newTopPortfolio.ManagedAccount.Value); if (ownerUser == null) { errorMessage = Resource.ErrorMessageNotFindUserAccountOwner; Logger.Error(errorMessage); return(errorMessage); } var topPortfolio = AddTopPortfolio(newTopPortfolio); if (topPortfolio == null) { errorMessage = Resource.ErrorMessageTopPortfolioUnableAdd; Logger.Error(errorMessage); return(errorMessage); } Logger.Info("Новый портфель роботов создан"); try { var proxy = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy; var status = proxy.SubscribeOnPortfolio(ProtectedOperationContext.MakeServerSideContext(), ownerUser.Login, topPortfolio, null, Utils.GetDefaultPortfolioTradeSettings()); if (status != RequestStatus.OK) { errorMessage = Resource.ErrorMessageCampaignAccount; Logger.Error(errorMessage); return(errorMessage); } return(string.Empty); } catch (Exception ex) { errorMessage = Resource.ErrorMessageUnableSignAccount + ": " + ex.Message; Logger.Error("AddTopPortfolio", ex); } return(errorMessage); }
public string SubscribeOnPortfolioOnNewAccount(TopPortfolioItem newTopPortfolio) { var accountRepository = DependencyResolver.Current.GetService <IAccountRepository>(); string errorMessage; if (!accountRepository.AddAccount(newTopPortfolio.AddAccountModel)) { errorMessage = Resource.ErrorMessageNotCreateAccountForTopPortfolio + " " + newTopPortfolio.AddAccountModel.UserName; Logger.Error("SubscribeOnPortfolioOnNewAccount() - " + errorMessage); return(errorMessage); } newTopPortfolio.ManagedAccount = accountRepository.GetAccountId(newTopPortfolio.AddAccountModel.UserLogin); var topPortfolio = AddTopPortfolio(newTopPortfolio); if (topPortfolio == null) { errorMessage = Resource.ErrorMessageTopPortfolioUnableAdd; Logger.Error(errorMessage); return(errorMessage); } Logger.Info("Новый портфель роботов создан"); try { var proxy = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy; var status = proxy.SubscribeOnPortfolio(ProtectedOperationContext.MakeServerSideContext(), newTopPortfolio.AddAccountModel.UserLogin, topPortfolio, null, Utils.GetDefaultPortfolioTradeSettings()); if (status != RequestStatus.OK) { errorMessage = Resource.ErrorMessageUnableSignAccount; Logger.Error(errorMessage); return(errorMessage); } return(string.Empty); } catch (Exception ex) { errorMessage = Resource.ErrorMessageUnableSignAccount + ": " + ex.Message; Logger.Error("AddTopPortfolio", ex); } return(errorMessage); }
public static string CheckCredentials(FarmAccountArg e) { try { var proxyTrade = new TradeSharpServerTrade(new TradeServerCallbackProcessor()); var localTime = DateTime.Now.Ticks; var hash = CredentialsHash.MakeCredentialsHash(e.Login, e.Password, localTime); int sessionTag; var response = proxyTrade.proxy.Authenticate(e.Login, hash, "robot_farm", TestTerminalId, localTime, out sessionTag); if (response != AuthenticationResponse.OK) { return(EnumFriendlyName <AuthenticationResponse> .GetString(response)); } Account account; var status = TradeSharpAccount.Instance.proxy.GetAccountInfo(e.AccountId, false, out account); // !! logout here return(EnumFriendlyName <RequestStatus> .GetString(status)); } catch (Exception ex) { return(ex.Message); } }
public bool SetupLiveContext() { context = null; protectedContext = new CurrentProtectedContext(); try { protectedContext.Initialize(TerminalId); } catch (Exception ex) { Logger.Error("Ошибка инициализации защищенного контекста", ex); throw; } // создать объект proxy try { if (proxyTrade == null) { proxyTrade = new TradeSharpServerTrade(callbackProcessor); } } catch (Exception ex) { RobotFarm.Instance.AppendLogMessage("Ошибка создания TradeSharpServerTrade: " + ex); return(false); } // залогиниться и // получить актуальную информацию по счету Account account; try { var localTime = DateTime.Now.Ticks; var hash = CredentialsHash.MakeCredentialsHash(UserLogin, UserPassword, localTime); int sessionTag; var response = proxyTrade.proxy.Authenticate(UserLogin, hash, TerminalVersionString, TerminalId, localTime, out sessionTag); if (response != AuthenticationResponse.OK) { protectedContext.OnAuthenticateFaulted(); RobotFarm.Instance.AppendLogMessage(string.Format("Ошибка аутентификации ({0}-{1}): {2}", UserLogin, UserPassword, response)); return(false); } protectedContext.OnAuthenticated(sessionTag); var opRst = TradeSharpAccount.Instance.proxy.GetAccountInfo(AccountId, false, out account); if (account == null) { RobotFarm.Instance.AppendLogMessage(string.Format("Невозможно получить информацию по счету {0}: {1}", AccountId, opRst)); return(false); } Logger.InfoFormat("User {0} authenticated on #{1}", UserLogin, AccountId); } catch (Exception ex) { RobotFarm.Instance.AppendLogMessage( string.Format("Ошибка аутентификации ({0}-{1}): {2}", UserLogin, UserPassword, ex)); return(false); } // инициализировать киборгов var countSuccess = robots == null ? 0 : robots.Count; if (robots != null && robots.Count > 0) { // контекст для роботов context = new RobotContextLiveFarm(proxyTrade, account, () => UserLogin, accountData, () => { return(robots.SelectMany(r => r.Graphics).Distinct().ToList()); }) { robotContextMode = RobotContext.ContextMode.Realtime }; context.OnRobotMessage += (robot, time, messages) => { foreach (var msg in messages) { RobotFarm.Instance.AppendLogMessage( "#" + AccountId + ": [" + robot.GetUniqueName() + "] said \"" + msg + "\""); } }; // включить каждого робота в контекст foreach (var robot in robots) { try { robot.Initialize(context, protectedContext); context.SubscribeRobot(robot); } catch (Exception ex) { countSuccess--; RobotFarm.Instance.AppendLogMessage("Ошибка инициализации робота " + robot.GetUniqueName() + ": " + ex); } } } // создать объект - обработчик торговых сигалов callbackProcessor.SignalProcessor = new TradeSignalProcessor( () => accountData.GetActualAccount(true), s => RobotFarm.Instance.AppendLogMessage(s), () => accountData.GetActualOrderList(), () => VolumeRoundType.Ближайшее, proxyTrade.proxy, protectedContext, this); return((robots == null || robots.Count <= 0) || countSuccess > 0); }
public TerminalLiveRobotContext(TradeSharpServerTrade proxyTrade, Account accountInfo, Func <string> getUserLogin) : base(proxyTrade, accountInfo, getUserLogin) { }
public void Initialize(Action closeHandler, TradeSharpServerTrade serverProxyAccount, Action<TradeSignalUpdate> signalUpdateSelected, Func<Account> getActualAccountData, Func<string> getUserLogin, Action<PerformerStat> investInPAMM, SavePerformersGridSelectedColumnsDel savePerformersGridSelectedColumns, LoadPerformersGridSelectedColumnsDel loadPerformersGridSelectedColumns, Func<ActionOnSignal> getActionOnSignal, Action<ActionOnSignal> setActionOnSignal, ChatControlBackEnd chat) { var gr = CreateGraphics(); this.closeHandler = closeHandler; this.chat = chat; AccountModel.Instance.Initialize(getActualAccountData, getUserLogin, investInPAMM, serverProxyAccount.proxy, chat); SubscriptionModel.Instance.getActionOnSignal = getActionOnSignal; SubscriptionModel.Instance.setActionOnSignal = setActionOnSignal; subscriptionGrid.ShowTopPortfolio += portfolio => { LoadPortfolioSubscribers(portfolio); Page = ActivePage.Performers; }; // strategies var criterias = PerformerCriteriaFunctionCollection.Instance.criterias; var criteriaTitles = criterias.Select(c => c.Description).ToList(); criteriaComboBox.Items.AddRange(criteriaTitles.Select(c => c as object).ToArray()); criteriaComboBox.DropDownWidth = criteriaTitles.Max(c => gr.MeasureString(c, Font).ToSize().Width); criteriaComboBox.Width = criteriaComboBox.DropDownWidth + SystemInformation.VerticalScrollBarWidth; var indexInCombo = countComboBox.Items.Cast<string>().IndexOf("50"); countComboBox.SelectedIndex = indexInCombo < 0 ? 0 : indexInCombo; sortOrderComboBox.Items.AddRange(EnumItem<PerformerSortOrder>.items.Cast<object>().ToArray()); SetupSortCombos(gr); criteriaComboBox.SelectedIndex = criterias.IndexOf(PerformerCriteriaFunctionCollection.Instance.SelectedFunction); //topFilterControl.SortOrder = sortOrderComboBox.SelectedIndex == 0 ? SortOrder.Ascending : SortOrder.Descending; topFilterControl.PerformerCriteriaFunctionCollectionChanged += OnPerformerCriteriaFunctionCollectionChanged; topFilterControl.PerformerCriteriaFunctionChanged += OnPerformerCriteriaFunctionChanged; topFilterControl.CollapseButtonClicked += CollapseTopFilterControlButtonClick; topFilterControl.RefreshButtonClicked += RefreshButtonClick; topFilterControl.CreatePortfolioButtonClicked += CreatePortfolioButtonClick; IsExtendedPanelVisible = false; performersWorker.DoWork += GetPerformers; performersWorker.RunWorkerCompleted += GetPerformersCompleted; performerFilterWorker.DoWork += GetPerformersByFilters; performerFilterWorker.RunWorkerCompleted += GetPerformersByFiltersCompleted; // 4 refresh button refreshButtonColors = new[] { refreshButton.BackColor, HslColor.AdjuctBrightness(refreshButton.BackColor, 0.9f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.85f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.8f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.85f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.9f), refreshButton.BackColor, HslColor.AdjuctBrightness(refreshButton.BackColor, 1.1f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.15f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.2f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.15f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.1f) }; topFilterControl.RefreshButtonEnabled = false; refreshButton.Enabled = false; performerGridCtrl.LoadPerformersGridSelectedColumns = loadPerformersGridSelectedColumns; performerGridCtrl.SavePerformersGridSelectedColumns = savePerformersGridSelectedColumns; performerGridCtrl.EnterRoomRequested += OnEnterRoomRequested; performerGridCtrl.PageTargeted += page => Page = page; performerGridCtrl.SetupGrid(); signalFastGrid.SignalUpdateSelected += signalUpdateSelected; // company top portfolios portfoliosWorker.DoWork += GetPortfoloios; portfoliosWorker.RunWorkerCompleted += GetPortfoloiosCompleted; // my top myPortfoliosWorker.DoWork += GetMyPortfolio; myPortfoliosWorker.RunWorkerCompleted += GetMyPortfolioCompleted; signalsToolStripMenuItem.CheckedChanged += ParametersContextMenuStripItemClicked; pammsToolStripMenuItem.CheckedChanged += ParametersContextMenuStripItemClicked; }
public static string CheckCredentials(FarmAccountArg e) { try { var proxyTrade = new TradeSharpServerTrade(new TradeServerCallbackProcessor()); var localTime = DateTime.Now.Ticks; var hash = CredentialsHash.MakeCredentialsHash(e.Login, e.Password, localTime); int sessionTag; var response = proxyTrade.proxy.Authenticate(e.Login, hash, "robot_farm", TestTerminalId, localTime, out sessionTag); if (response != AuthenticationResponse.OK) return EnumFriendlyName<AuthenticationResponse>.GetString(response); Account account; var status = TradeSharpAccount.Instance.proxy.GetAccountInfo(e.AccountId, false, out account); // !! logout here return EnumFriendlyName<RequestStatus>.GetString(status); } catch (Exception ex) { return ex.Message; } }
public bool SetupLiveContext() { context = null; protectedContext = new CurrentProtectedContext(); try { protectedContext.Initialize(TerminalId); } catch (Exception ex) { Logger.Error("Ошибка инициализации защищенного контекста", ex); throw; } // создать объект proxy try { if (proxyTrade == null) proxyTrade = new TradeSharpServerTrade(callbackProcessor); } catch (Exception ex) { RobotFarm.Instance.AppendLogMessage("Ошибка создания TradeSharpServerTrade: " + ex); return false; } // залогиниться и // получить актуальную информацию по счету Account account; try { var localTime = DateTime.Now.Ticks; var hash = CredentialsHash.MakeCredentialsHash(UserLogin, UserPassword, localTime); int sessionTag; var response = proxyTrade.proxy.Authenticate(UserLogin, hash, TerminalVersionString, TerminalId, localTime, out sessionTag); if (response != AuthenticationResponse.OK) { protectedContext.OnAuthenticateFaulted(); RobotFarm.Instance.AppendLogMessage(string.Format("Ошибка аутентификации ({0}-{1}): {2}", UserLogin, UserPassword, response)); return false; } protectedContext.OnAuthenticated(sessionTag); var opRst = TradeSharpAccount.Instance.proxy.GetAccountInfo(AccountId, false, out account); if (account == null) { RobotFarm.Instance.AppendLogMessage(string.Format("Невозможно получить информацию по счету {0}: {1}", AccountId, opRst)); return false; } Logger.InfoFormat("User {0} authenticated on #{1}", UserLogin, AccountId); } catch (Exception ex) { RobotFarm.Instance.AppendLogMessage( string.Format("Ошибка аутентификации ({0}-{1}): {2}", UserLogin, UserPassword, ex)); return false; } // инициализировать киборгов var countSuccess = robots == null ? 0 : robots.Count; if (robots != null && robots.Count > 0) { // контекст для роботов context = new RobotContextLiveFarm(proxyTrade, account, () => UserLogin, accountData) { robotContextMode = RobotContext.ContextMode.Realtime }; context.OnRobotMessage += (robot, time, messages) => { foreach (var msg in messages) RobotFarm.Instance.AppendLogMessage( "#" + AccountId + ": [" + robot.GetUniqueName() + "] said \"" + msg + "\""); }; // включить каждого робота в контекст foreach (var robot in robots) { try { robot.Initialize(context, protectedContext); context.SubscribeRobot(robot); } catch (Exception ex) { countSuccess--; RobotFarm.Instance.AppendLogMessage("Ошибка инициализации робота " + robot.GetUniqueName() + ": " + ex); } } } // создать объект - обработчик торговых сигалов callbackProcessor.SignalProcessor = new TradeSignalProcessor( () => accountData.GetActualAccount(true), s => RobotFarm.Instance.AppendLogMessage(s), () => accountData.GetActualOrderList(), () => VolumeRoundType.Ближайшее, proxyTrade.proxy, protectedContext, this); return (robots == null || robots.Count <= 0) || countSuccess > 0; }
public RobotContextLiveFarm(TradeSharpServerTrade proxyTrade, Account accountInfo, Func<string> getUserLogin, ActualAccountData accountData) : base(proxyTrade, accountInfo, getUserLogin) { this.accountData = accountData; }
public string SubscribeOnPortfolioOnExistAccount(TopPortfolioItem newTopPortfolio) { string errorMessage; if (!newTopPortfolio.ManagedAccount.HasValue) { errorMessage = Resource.ErrorMessageCampaignAccount; Logger.Error(errorMessage); return errorMessage; } var ownerUser = userRepository.GetAccountOwner(newTopPortfolio.ManagedAccount.Value); if (ownerUser == null) { errorMessage = Resource.ErrorMessageNotFindUserAccountOwner; Logger.Error(errorMessage); return errorMessage; } var topPortfolio = AddTopPortfolio(newTopPortfolio); if (topPortfolio == null) { errorMessage = Resource.ErrorMessageTopPortfolioUnableAdd; Logger.Error(errorMessage); return errorMessage; } Logger.Info("Новый портфель роботов создан"); try { var proxy = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy; var status = proxy.SubscribeOnPortfolio(ProtectedOperationContext.MakeServerSideContext(), ownerUser.Login, topPortfolio, null, Utils.GetDefaultPortfolioTradeSettings()); if (status != RequestStatus.OK) { errorMessage = Resource.ErrorMessageCampaignAccount; Logger.Error(errorMessage); return errorMessage; } return string.Empty; } catch (Exception ex) { errorMessage = Resource.ErrorMessageUnableSignAccount + ": " + ex.Message; Logger.Error("AddTopPortfolio", ex); } return errorMessage; }
public string SubscribeOnPortfolioOnNewAccount(TopPortfolioItem newTopPortfolio) { var accountRepository = DependencyResolver.Current.GetService<IAccountRepository>(); string errorMessage; if (!accountRepository.AddAccount(newTopPortfolio.AddAccountModel)) { errorMessage = Resource.ErrorMessageNotCreateAccountForTopPortfolio + " " + newTopPortfolio.AddAccountModel.UserName; Logger.Error("SubscribeOnPortfolioOnNewAccount() - " + errorMessage); return errorMessage; } newTopPortfolio.ManagedAccount = accountRepository.GetAccountId(newTopPortfolio.AddAccountModel.UserLogin); var topPortfolio = AddTopPortfolio(newTopPortfolio); if (topPortfolio == null) { errorMessage = Resource.ErrorMessageTopPortfolioUnableAdd; Logger.Error(errorMessage); return errorMessage; } Logger.Info("Новый портфель роботов создан"); try { var proxy = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy; var status = proxy.SubscribeOnPortfolio(ProtectedOperationContext.MakeServerSideContext(), newTopPortfolio.AddAccountModel.UserLogin, topPortfolio, null, Utils.GetDefaultPortfolioTradeSettings()); if (status != RequestStatus.OK) { errorMessage = Resource.ErrorMessageUnableSignAccount; Logger.Error(errorMessage); return errorMessage; } return string.Empty; } catch (Exception ex) { errorMessage = Resource.ErrorMessageUnableSignAccount + ": " + ex.Message; Logger.Error("AddTopPortfolio", ex); } return errorMessage; }
private void ResumeConnectionWithServer() { try { serverProxyTrade = new TradeSharpServerTrade(this); } catch (Exception ex) { Logger.Error("Ошибка подключения к серверу МТС.Live (Trade)", ex); } SubscriptionModel.Instance.ServerProxy = serverProxyTrade.proxy; try { newsProxy = new NewsStorageProxy("INewsStorageBinding"); } catch (Exception) { Logger.Error("Связь с сервером (INewsStorageBinding) не установлена"); } }
public TerminalLiveRobotContext(TradeSharpServerTrade proxyTrade, Account accountInfo, Func<string> getUserLogin) : base(proxyTrade, accountInfo, getUserLogin) { }
/// <summary> /// Выбираем пользователей, которые подписаны на портфель, и отписываем их от портфеля /// </summary> /// <param name="id">уникальный идентификатор портфеля</param> /// <returns></returns> private static bool UnsubscribeSubscribersFromPortfolio(int id) { var errorsUnsubscribe = new List<string>(); try { using (var ctx = DatabaseContext.Instance.Make()) { var logins = ctx.USER_TOP_PORTFOLIO.Where(x => x.Portfolio == id).Select(x => x.PLATFORM_USER.Login); var proxy = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy; Logger.Info("Начинаем отписывать пользователей от портфеля id = " + id); foreach (var login in logins) { var result = proxy.UnsubscribePortfolio(ProtectedOperationContext.MakeServerSideContext(), login, false, true); if (result != RequestStatus.OK) errorsUnsubscribe.Add(login); } } if (errorsUnsubscribe.Count > 0) { Logger.Error(string.Format("От портфеля {0} не удалось отписать следующих пользователей: {1}", id, string.Join(Environment.NewLine, errorsUnsubscribe))); return false; } return true; } catch (Exception ex) { Logger.Error("UnsubscribeOnPortfolio()", ex); return false; } }
public RobotContextLiveFarm(TradeSharpServerTrade proxyTrade, Account accountInfo, Func <string> getUserLogin, ActualAccountData accountData) : base(proxyTrade, accountInfo, getUserLogin) { this.accountData = accountData; }
public TerminalLiveRobotContext(TradeSharpServerTrade proxyTrade, Account accountInfo, Func <string> getUserLogin, Func <List <Cortege2 <string, BarSettings> > > getAllUsedTickers) : base(proxyTrade, accountInfo, getUserLogin, getAllUsedTickers) { }
/// <summary> /// Отписать пользователя от сигналов /// </summary> /// <param name="userLogin">Логин потзователя, который больше не хочет быть подписчиком</param> /// <param name="serviceId">Сигналы, которые пользователь больше не хочет получать</param> /// <returns></returns> public string UnSubscribe(string userLogin, int serviceId) { string errorMessage; try { var proxy = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy; WalletError walletError; var status = proxy.SubscribeOnService(ProtectedOperationContext.MakeServerSideContext(), userLogin, serviceId, false, true, null, out walletError); if (!status || walletError != WalletError.OK) { errorMessage = Resource.ErrorMessageCampaignAccount; Logger.Error(errorMessage); return errorMessage; } return string.Empty; } catch (Exception ex) { errorMessage = Resource.ErrorMessageUnableSignAccount + ": " + ex.Message; Logger.Error("AddTopPortfolio", ex); } return errorMessage; }
public RobotContextLiveFarm(TradeSharpServerTrade proxyTrade, Account accountInfo, Func <string> getUserLogin, ActualAccountData accountData, Func <List <Cortege2 <string, BarSettings> > > getAllUsedTickers) : base(proxyTrade, accountInfo, getUserLogin, getAllUsedTickers) { this.accountData = accountData; }
public void Initialize(Action closeHandler, TradeSharpServerTrade serverProxyAccount, Action <TradeSignalUpdate> signalUpdateSelected, Func <Account> getActualAccountData, Func <string> getUserLogin, Action <PerformerStat> investInPAMM, SavePerformersGridSelectedColumnsDel savePerformersGridSelectedColumns, LoadPerformersGridSelectedColumnsDel loadPerformersGridSelectedColumns, Func <ActionOnSignal> getActionOnSignal, Action <ActionOnSignal> setActionOnSignal, ChatControlBackEnd chat) { var gr = CreateGraphics(); this.closeHandler = closeHandler; this.chat = chat; AccountModel.Instance.Initialize(getActualAccountData, getUserLogin, investInPAMM, serverProxyAccount.proxy, chat); SubscriptionModel.Instance.getActionOnSignal = getActionOnSignal; SubscriptionModel.Instance.setActionOnSignal = setActionOnSignal; subscriptionGrid.ShowTopPortfolio += portfolio => { LoadPortfolioSubscribers(portfolio); Page = ActivePage.Performers; }; // strategies var criterias = PerformerCriteriaFunctionCollection.Instance.criterias; var criteriaTitles = criterias.Select(c => c.Description).ToList(); criteriaComboBox.Items.AddRange(criteriaTitles.Select(c => c as object).ToArray()); criteriaComboBox.DropDownWidth = criteriaTitles.Max(c => gr.MeasureString(c, Font).ToSize().Width); criteriaComboBox.Width = criteriaComboBox.DropDownWidth + SystemInformation.VerticalScrollBarWidth; var indexInCombo = countComboBox.Items.Cast <string>().IndexOf("50"); countComboBox.SelectedIndex = indexInCombo < 0 ? 0 : indexInCombo; sortOrderComboBox.Items.AddRange(EnumItem <PerformerSortOrder> .items.Cast <object>().ToArray()); SetupSortCombos(gr); criteriaComboBox.SelectedIndex = criterias.IndexOf(PerformerCriteriaFunctionCollection.Instance.SelectedFunction); //topFilterControl.SortOrder = sortOrderComboBox.SelectedIndex == 0 ? SortOrder.Ascending : SortOrder.Descending; topFilterControl.PerformerCriteriaFunctionCollectionChanged += OnPerformerCriteriaFunctionCollectionChanged; topFilterControl.PerformerCriteriaFunctionChanged += OnPerformerCriteriaFunctionChanged; topFilterControl.CollapseButtonClicked += CollapseTopFilterControlButtonClick; topFilterControl.RefreshButtonClicked += RefreshButtonClick; topFilterControl.CreatePortfolioButtonClicked += CreatePortfolioButtonClick; IsExtendedPanelVisible = false; performersWorker.DoWork += GetPerformers; performersWorker.RunWorkerCompleted += GetPerformersCompleted; performerFilterWorker.DoWork += GetPerformersByFilters; performerFilterWorker.RunWorkerCompleted += GetPerformersByFiltersCompleted; // 4 refresh button refreshButtonColors = new[] { refreshButton.BackColor, HslColor.AdjuctBrightness(refreshButton.BackColor, 0.9f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.85f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.8f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.85f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.9f), refreshButton.BackColor, HslColor.AdjuctBrightness(refreshButton.BackColor, 1.1f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.15f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.2f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.15f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.1f) }; topFilterControl.RefreshButtonEnabled = false; refreshButton.Enabled = false; performerGridCtrl.LoadPerformersGridSelectedColumns = loadPerformersGridSelectedColumns; performerGridCtrl.SavePerformersGridSelectedColumns = savePerformersGridSelectedColumns; performerGridCtrl.EnterRoomRequested += OnEnterRoomRequested; performerGridCtrl.PageTargeted += page => Page = page; performerGridCtrl.SetupGrid(); signalFastGrid.SignalUpdateSelected += signalUpdateSelected; // company top portfolios portfoliosWorker.DoWork += GetPortfoloios; portfoliosWorker.RunWorkerCompleted += GetPortfoloiosCompleted; // my top myPortfoliosWorker.DoWork += GetMyPortfolio; myPortfoliosWorker.RunWorkerCompleted += GetMyPortfolioCompleted; signalsToolStripMenuItem.CheckedChanged += ParametersContextMenuStripItemClicked; pammsToolStripMenuItem.CheckedChanged += ParametersContextMenuStripItemClicked; }