protected override void OnStart(string[] args)
        {
            try
            {
                RobotCollection.Initialize();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка инициализации коллекции роботов", ex);
                throw;
            }

            QuoteStorage.Instance.LoadQuotes(string.Format("{0}\\lastquote.txt", ExecutablePath.ExecPath));
            try
            {
                quoteReceiver = new TcpQuoteReceiver();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка получения котировок", ex);
                throw;
            }

            Logger.InfoFormat("Старт сервиса - загрузка настроек");
            BL.RobotFarm.Instance.LoadSettings();
            quoteReceiver.OnQuotesReceived += BL.RobotFarm.Instance.OnQuotesReceived;
            StartWebServer();
        }
Example #2
0
        protected void Application_Start()
        {
            quoteReceiver = new TcpQuoteReceiver();
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
Example #3
0
        protected override void OnStart(string[] args)
        {
            // подгрузить метаданные
            DalSpot.Instantiate(DictionaryManager.Instance);
            // инициализация торговой библиотеки
            StartTradeLib();
            // запустить сервера WCF
            StartWcfHosts();
            // подгрузить срез котировок
            QuoteStorage.Instance.LoadQuotes(string.Format("{0}\\lastquote.txt", ExecutablePath.ExecPath));
            // старт монитора ордеров
            AccountCheckStream.Instance.Start();
            // старт сохранения событий по счетам
            UserEventStorage.Instance.Start();

            try
            {
                hostModuleController = new ServiceHost(ModuleStatusController.Instance);
                hostModuleController.Open();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка в ModuleController", ex);
            }

            // старт получения живой котиры
            try
            {
                quoteReceiver = new TcpQuoteReceiver();
                quoteReceiver.OnQuotesReceived += OnQuotesReceived;
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка старта получения живой котировки", ex);
            }
            StartWebServer();
            // стартовать прослушку очереди сообщений от провайдеров
            try
            {
                ProviderQueueReader.Instance.Start();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка старта прослушки очереди сообщений от провайдера", ex);
                throw;
            }
            try
            {
                UserEventManager.Instance.Start();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка запуска UserEventManager", ex);
            }
            Logger.Info("Сервис запущен");
        }
        protected override void OnStart(string[] args)
        {
            try
            {
                hostServerStatusController = new ServiceHost(ModuleStatusController.Instance);
                hostServerStatusController.Open();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка в OnStart для ModuleStatusController", ex);
                throw;
            }

            quoteReceiver = new TcpQuoteReceiver();

            try
            {
                SignalExecutor.Instance.Start();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка старта контроллера", ex);
                throw;
            }

            try
            {
                PAMMFeeManager.Instance.Start();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка старта PAMM-менеджера", ex);
                throw;
            }

            try
            {
                hostServerStat = new ServiceHost(SignalExecutor.Instance);
                hostServerStat.Open();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка старта WCF-хоста", ex);
                throw;
            }
            StartWebServer();
            Logger.Info("Служба TradeSignalExecutor запущена");
        }
Example #5
0
        public MainForm()
        {
            Instance = this;
            if (AppConfig.GetBooleanParam("SingleInstance", true))
            {
                var prc = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);

                if (prc.Length > 1)
                {
                    MessageBox.Show(Localizer.GetString("MessageTerminalAlreadyRunning"), Localizer.GetString("TitleWarning"));
                    Process.GetCurrentProcess().Kill();
                    return;
                }
            }

            // показать окно загрузки
            SplashScreen.ShowSplash(StartupStage.Started);

            InitializeComponent();

            Localizer.LocalizeControl(this);

            bookmarkStrip.ImgList = lstGlyph32;
            SetupMenuImages();
            try
            {
                MakeFormMdi();
                Candlechart.Core.PluginManager.Instance.Initialize();
                RobotCollection.Initialize();
                ScriptManager.Initialize();
                ScriptManager.Instance.scriptListIsUpdated += ActualizeScriptMenu;
                CheckAppFolders();
                Logger.Info("Старт терминала (" + ExecutablePath.ExecPath + ")");

                InitializeTooltips();
                InitializeToolButtons(ChartToolButtonStorage.Instance.selButtons, panelChartTools);
                InitializeToolButtons(ChartToolButtonStorage.Instance.selSystemButtons, panelCommonTools);
                InitializeSeriesSettings();
                BtnFlipPanelChartToolsClick(btnFlipPanelCommonTools, null);
                BookmarkStorage.Instance.BookmarkDeleted += InstanceOnBookmarkDeleted;

                // шаг 1 завершен - обновить статус
                SplashScreen.UpdateState(StartupStage.MakeInstrumentalPanels);

                UserSettings.Instance.LoadProperties();
                EventSoundPlayer.Instance.LoadSounds();
                robotFarm = new RobotFarm(UpdateTickersCacheForRobots);
                robotFarm.OnStateChanged += RobotFarmStateChanged;
                quoteReceiver = new TcpQuoteReceiver();
                quoteReceiver.OnQuotesReceived += OnQuotesReceived;
                quoteReceiver.OnNewsReceived += OnNewsReceived;
                NewsCache.Instance.ActualizationCompleted +=
                    newsCount =>
                    AddMessageToStatusPanelSafe(DateTime.Now,
                                                string.Format("{0} ({1})", Localizer.GetString("MessageNewsRead"), newsCount));
                Contract.Util.BL.QuoteStorage.Instance.LoadQuotes(string.Format("{0}\\lastquote.txt", ExecutablePath.ExecPath));
                DalSpot.Instance.SetFavoritesList(UserSettings.Instance.FavoriteTickers.ToArray());
                navPanelControl.SetupPages(UserSettings.Instance.NavPanelPages);
                navPanelControl.closePanelClicked += () => MenuitemNavPaneClick(this, EventArgs.Empty);
                //AccountStatus.Instance.ConnectionStatusIsUpdated += InstanceOnConnectionStatusIsUpdated;
                AccountStatus.Instance.ServerConnectionStatus =
                    DalSpot.Instance.ConnectionWasEstablished ? ServerConnectionStatus.Connected : ServerConnectionStatus.NotConnected;

                // шаг 2 завершен - обновить статус
                SplashScreen.UpdateState(StartupStage.MakeQuoteStream);
                ResumeConnectionWithServer();

                // запуск чата
                ChatEngine = new ChatControlBackEnd();
                ChatEngine.Start();
                SetupChat();

                // шаг 3 завершен - обновить статус
                toolTipStatus.SetToolTip(lblConnectStatus, "");
                toolTipStatus.SetToolTip(connectionStatusImage, "");
                SplashScreen.UpdateState(StartupStage.MakeServerConnection);

                AccountStatus.Instance.OnAccountInfoUpdated += OnAccountInfoUpdated;
                AccountStatus.Instance.OnConnectionAborted += ResumeConnectionWithServer;
                AccountStatus.Instance.OnAuthenticationFailed += AuthenticationFailed;
                // вывести список открытых/закрытых за последнее время ордеров
                AccountStatus.Instance.OnAccountDataFirstReceived += ShowLast24HrOrders;
                autosaveFolder = AppConfig.GetStringParam("AutosaveFolder", "\\autosave");
                autosaveFolder = autosaveFolder.TrimEnd('\\');
                if (autosaveFolder.StartsWith("\\")) autosaveFolder = ExecutablePath.ExecPath + autosaveFolder;

                CrossChartDivergenciesSettingsWindow.GetChartsList += GetChartsList;
                printDocument.PrintPage += PrintDocumentPrintPage;
                serverProxyTrade.OnConnectionReestablished += ReviveFactory;
                SetupDragTargets();
            }
            catch (Exception ex)
            {
                Logger.Error("TradeSharp - ошибка инициализации ", ex);
                Close();
                return;
            }

            // шаг 4 завершен - обновить статус
            SplashScreen.UpdateState(StartupStage.FillDictionaries);

            // запуск процесса-планировщика
            threadSchedule = new Thread(ScheduleThreadRoutine);
            threadSchedule.Start();

            AppMessageFilter.ApplyDiffString(UserSettings.Instance.HotKeyList);
        }
Example #6
0
        /// <summary>
        /// подкачать из БД свечки m1 за указанный период по указанным тикерам
        /// </summary>
        public void Initialize()
        {
            GetTickersToLoad();

            // актуализировать историю свеч m1
            var thread = new Thread(() =>
                {
                    AtomCandleStorage.Instance.LoadFromFiles(quoteDir);
                    Logger.Info("Старт получения котировок от сервера");
                    GetDateRangeOnServer();
                    foreach (var ticker in tickersToStore)
                        ActualizeHistoryByTicker(ticker);

                    Logger.Info("Старт упаковки котировок в свечи");
                    InitCandlePackers();

                    Logger.Info("Подписка на получение котировок");
                    // подписаться на свежачок
                    quoteReceiver = new TcpQuoteReceiver();
                    quoteReceiver.OnQuotesReceived += OnQuotesReceived;

                    initializationIsCompleted = true;
                    Logger.Info("Иницииализация завершена");
                });
            thread.Start();
        }