예제 #1
0
        /// <summary>
        /// double click event on the source table/событие двойного клика на таблицу источников
        /// </summary>
        void _gridSources_DoubleClick(object sender, EventArgs e)
        {
            if (_gridSources.CurrentCell.RowIndex <= -1)
            {
                return;
            }

            ServerType type;

            Enum.TryParse(_gridSources.Rows[_gridSources.CurrentCell.RowIndex].Cells[0].Value.ToString(), out type);

            if (ServerMaster.GetServers() == null)
            {
                ServerMaster.CreateServer(type, false);
            }

            IServer server = ServerMaster.GetServers().Find(s => s.ServerType == type);

            if (server == null)
            {
                ServerMaster.CreateServer(type, false);
                server = ServerMaster.GetServers().Find(s => s.ServerType == type);
            }

            server.ShowDialog();
        }
예제 #2
0
        private void SendPortfolios()
        {
            JsonArray jPortfolios = new JsonArray();
            var       servers     = ServerMaster.GetServers();

            if (servers == null)
            {
                return;
            }

            foreach (var server in servers)
            {
                if (server.Portfolios == null)
                {
                    continue;
                }
                foreach (var portfolio in server.Portfolios)
                {
                    jPortfolios.Add(GetJPortfolio(portfolio));
                }
            }

            if (jPortfolios.Count != 0)
            {
                _apiServer.Send("portfoliosSnapshot_" + jPortfolios.ToString());
            }
        }
예제 #3
0
        /// <summary>
        /// перерисовать таблицу источников
        /// </summary>
        private void RePaintSourceGrid()
        {
            if (_gridSources.InvokeRequired)
            {
                _gridSources.Invoke(new Action(RePaintSourceGrid));
                return;
            }

            _gridSources.Rows.Clear();

            List <IServer> servers = ServerMaster.GetServers();

            for (int i = 0; i < servers.Count; i++)
            {
                DataGridViewRow row1 = new DataGridViewRow();
                row1.Cells.Add(new DataGridViewTextBoxCell());
                row1.Cells[0].Value = servers[i].ServerType;
                row1.Cells.Add(new DataGridViewTextBoxCell());
                row1.Cells[1].Value = servers[i].ServerStatus;

                if (servers[i].ServerStatus == ServerConnectStatus.Connect)
                {
                    DataGridViewCellStyle style = new DataGridViewCellStyle();
                    style.BackColor          = Color.DarkSeaGreen;
                    style.SelectionBackColor = Color.SeaGreen;
                    row1.Cells[1].Style      = style;
                    row1.Cells[0].Style      = style;
                }

                _gridSources.Rows.Add(row1);
            }
        }
예제 #4
0
        /// <summary>
        /// redraw the source table/перерисовать таблицу источников
        /// </summary>
        private void RePaintSourceGrid()
        {
            if (_gridSources.InvokeRequired)
            {
                _gridSources.Invoke(new Action(RePaintSourceGrid));
                return;
            }

            _gridSources.Rows.Clear();

            List <ServerType> servers = ServerMaster.ServersTypes;

            List <IServer> serversCreate = ServerMaster.GetServers();

            if (serversCreate == null)
            {
                serversCreate = new List <IServer>();
            }

            for (int i = 0; i < servers.Count; i++)
            {
                DataGridViewRow row1 = new DataGridViewRow();
                row1.Cells.Add(new DataGridViewTextBoxCell());
                row1.Cells[0].Value = servers[i];
                row1.Cells.Add(new DataGridViewTextBoxCell());

                IServer server = serversCreate.Find(s => s.ServerType == servers[i]);

                if (server == null)
                {
                    row1.Cells[1].Value = "Disabled";
                }
                else if (server != null && server.ServerStatus == ServerConnectStatus.Connect)
                {
                    row1.Cells[1].Value = "Connect";
                    DataGridViewCellStyle style = new DataGridViewCellStyle();
                    style.BackColor          = Color.MediumSeaGreen;
                    style.SelectionBackColor = Color.Green;
                    style.ForeColor          = Color.Black;
                    style.SelectionForeColor = Color.Black;
                    row1.Cells[1].Style      = style;
                    row1.Cells[0].Style      = style;
                }
                else
                {
                    row1.Cells[1].Value = "Disconnect";
                    DataGridViewCellStyle style = new DataGridViewCellStyle();
                    style.BackColor          = Color.Coral;
                    style.SelectionBackColor = Color.Chocolate;
                    style.ForeColor          = Color.Black;
                    style.SelectionForeColor = Color.Black;
                    row1.Cells[1].Style      = style;
                    row1.Cells[0].Style      = style;
                }

                _gridSources.Rows.Add(row1);
            }
            _gridSources[1, 0].Selected = true; // Select an invisible line to remove the default selection from the grid./Выбрать невидимую строку, чтобы убрать выделение по умолчанию с грида.
            _gridSources.ClearSelection();
        }
예제 #5
0
        /// <summary>
        /// создать менеджера роботов
        /// </summary>
        /// <param name="hostChart">область для чарта</param>
        /// <param name="hostGlass">область для стакана</param>
        /// <param name="hostOpenDeals">область для таблицы открытых сделок</param>
        /// <param name="hostCloseDeals">область для таблицы закрытых сделок</param>
        /// <param name="hostAllDeals">область всех сделок</param>
        /// <param name="hostLogBot">область для бот лога</param>
        /// <param name="hostLogPrime">область для прайм лога</param>
        /// <param name="rectangleAroundChart">квадрат за чартом</param>
        /// <param name="hostAlerts">область для алертов</param>
        /// <param name="tabPanel">панель с роботами</param>
        /// <param name="tabBotTab">панель робота с вкладками инструментов</param>
        /// <param name="textBoxLimitPrice">текстБокс с ценой лимитника при вводе заявки</param>
        /// <param name="gridChartControlPanel">грид для панели управления чартом</param>
        /// <param name="startProgram">тип программы который запросил создание класса</param>
        public OsTraderMaster(WindowsFormsHost hostChart, WindowsFormsHost hostGlass, WindowsFormsHost hostOpenDeals,
                              WindowsFormsHost hostCloseDeals, WindowsFormsHost hostAllDeals, WindowsFormsHost hostLogBot, WindowsFormsHost hostLogPrime, Rectangle rectangleAroundChart, WindowsFormsHost hostAlerts,
                              TabControl tabPanel, TabControl tabBotTab, TextBox textBoxLimitPrice, Grid gridChartControlPanel, StartProgram startProgram)
        {
            NumberGen.GetNumberOrder(startProgram);
            _startProgram = startProgram;

            if (_startProgram == StartProgram.IsTester)
            {
                _typeWorkKeeper = ConnectorWorkType.Tester;
                ((TesterServer)ServerMaster.GetServers()[0]).TestingStartEvent += StrategyKeeper_TestingStartEvent;
                ((TesterServer)ServerMaster.GetServers()[0]).TestingFastEvent  += StrategyKeeper_TestingFastEvent;
                ((TesterServer)ServerMaster.GetServers()[0]).TestingEndEvent   += StrategyKeeper_TestingEndEvent;
            }

            if (_startProgram != StartProgram.IsTester)
            {
                ServerMaster.ActivateAutoConnection();
            }

            ServerMaster.LogMessageEvent += SendNewLogMessage;

            _tabBotTab = tabBotTab;

            if (_tabBotTab.Items != null)
            {
                _tabBotTab.Items.Clear();
            }
            _textBoxLimitPrice     = textBoxLimitPrice;
            _hostChart             = hostChart;
            _hostGlass             = hostGlass;
            _hostOpenDeals         = hostOpenDeals;
            _hostCloseDeals        = hostCloseDeals;
            _hostAllDeals          = hostAllDeals;
            _hostboxLog            = hostLogBot;
            _rectangleAroundChart  = rectangleAroundChart;
            _hostAlerts            = hostAlerts;
            _gridChartControlPanel = gridChartControlPanel;

            _tabBotNames = tabPanel;
            _tabBotNames.Items.Clear();

            _riskManager = new RiskManager.RiskManager("GlobalRiskManager", _startProgram);
            _riskManager.RiskManagerAlarmEvent += _riskManager_RiskManagerAlarmEvent;
            _riskManager.LogMessageEvent       += SendNewLogMessage;
            _globalController = new GlobalPosition(_hostAllDeals, _startProgram);
            _globalController.LogMessageEvent += SendNewLogMessage;

            _log = new Log("Prime", _startProgram);
            _log.StartPaint(hostLogPrime);
            _log.Listen(this);
            _hostLogPrime = hostLogPrime;

            SendNewLogMessage("Запуск OsTraderMaster. Включение программы.", LogMessageType.User);

            Load();
            _tabBotNames.SelectionChanged += _tabBotControl_SelectionChanged;
            ReloadRiskJournals();
            _globalController.StartPaint();
        }
예제 #6
0
        public TesterHandyUi()
        {
            InitializeComponent();
            ServerMaster.SetHostTable(HostPositionOnBoard, HostOrdersOnBoard);
            ServerMaster.CreateServer(ServerType.Tester, false);
            ServerMaster.GetServers();


            _strategyKeeper = new OsTraderMaster(GridChart,
                                                 ChartHostPanel, HostGlass, HostOpenPosition, HostClosePosition, HostAllPosition,
                                                 HostBotLog, HostBotLogPrime, RectChart, HostAllert, TabControlBotsName, TabControlBotTab, TextBoxPrice,
                                                 GridChartControlPanel, StartProgram.IsTester);
            LocationChanged += TesterHandyUi_LocationChanged;
            LabelOsa.Content = "V_" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

            cbItems  = new ObservableCollection <ComboBoxItem>();
            cbItems2 = new ObservableCollection <ComboBoxItem>();
            cbItems3 = new ObservableCollection <ComboBoxItem>();
            SetComboBoxItemByTab(0);

            TabControlBotsName.SelectionChanged += TabControlBotsName_SelectionChanged;

            TabControlBotsName.SizeChanged += TabControlBotsName_SizeChanged;
            Closing += TesterHandyUi_Closing;

            Local();
            TabControlMd.SelectedIndex = 2;

            _gridClOrder           = DataGridFactory.GetDataGridOrder();
            HostOrdersClosed.Child = _gridClOrder;
            _gridClOrder.Click    += _gridClOrder_Click;
        }
예제 #7
0
        /// <summary>
        /// перерисовать таблицу источников
        /// </summary>
        private void RePaintSourceGrid()
        {
            if (_gridSources.InvokeRequired)
            {
                _gridSources.Invoke(new Action(RePaintSourceGrid));
                return;
            }

            _gridSources.Rows.Clear();

            List <ServerType> servers = new ServerType[]
            {
                ServerType.Finam, ServerType.QuikDde, ServerType.QuikLua, ServerType.SmartCom, ServerType.Plaza,
                ServerType.Oanda, ServerType.BitMex, ServerType.Kraken, ServerType.Binance, ServerType.BitStamp, ServerType.NinjaTrader
            }.ToList();

            List <IServer> serversCreate = ServerMaster.GetServers();

            if (serversCreate == null)
            {
                serversCreate = new List <IServer>();
            }

            for (int i = 0; i < servers.Count; i++)
            {
                DataGridViewRow row1 = new DataGridViewRow();
                row1.Cells.Add(new DataGridViewTextBoxCell());
                row1.Cells[0].Value = servers[i];
                row1.Cells.Add(new DataGridViewTextBoxCell());

                IServer server = serversCreate.Find(s => s.ServerType == servers[i]);

                if (server == null)
                {
                    row1.Cells[1].Value = "Disabled";
                }
                else if (server != null && server.ServerStatus == ServerConnectStatus.Connect)
                {
                    row1.Cells[1].Value = "Connect";
                    DataGridViewCellStyle style = new DataGridViewCellStyle();
                    style.BackColor          = Color.DarkSeaGreen;
                    style.SelectionBackColor = Color.SeaGreen;
                    row1.Cells[1].Style      = style;
                    row1.Cells[0].Style      = style;
                }
                else
                {
                    row1.Cells[1].Value = "Disconnect";
                    DataGridViewCellStyle style = new DataGridViewCellStyle();
                    style.BackColor          = Color.FloralWhite;
                    style.SelectionBackColor = Color.DarkSalmon;
                    row1.Cells[1].Style      = style;
                    row1.Cells[0].Style      = style;
                }

                _gridSources.Rows.Add(row1);
            }
            _gridSources[1, 0].Selected = true; // Выбрать невидимую строку, чтобы убрать выделение по умолчанию с грида.
            _gridSources.ClearSelection();
        }
예제 #8
0
        /// <summary>
        /// user changed server type to connect
        /// пользователь изменил тип сервера для подключения
        /// </summary>
        void ComboBoxTypeServer_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            try
            {
                List <IServer> serversAll = ServerMaster.GetServers();

                IServer server = serversAll.Find(server1 => server1.ServerType == _selectedType);

                if (server != null)
                {
                    server.SecuritiesChangeEvent -= server_SecuritiesCharngeEvent;
                    server.PortfoliosChangeEvent -= server_PortfoliosChangeEvent;
                }

                Enum.TryParse(ComboBoxTypeServer.SelectedItem.ToString(), true, out _selectedType);

                IServer server2 = serversAll.Find(server1 => server1.ServerType == _selectedType);

                if (server2 != null)
                {
                    server2.SecuritiesChangeEvent += server_SecuritiesCharngeEvent;
                    server2.PortfoliosChangeEvent += server_PortfoliosChangeEvent;
                }
                LoadPortfolioOnBox();
                LoadClassOnBox();
                LoadSecurityOnBox();
            }
            catch (Exception error)
            {
                SendNewLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
예제 #9
0
        public RobotUiLight()
        {
            InitializeComponent();
            ServerMaster.SetHostTable(HostPositionOnBoard, HostOrdersOnBoard);
            ServerMaster.GetServers();

            _strategyKeeper = new OsTraderMaster(null,
                                                 null, null, null, null, HostAllPosition,
                                                 null, HostBotLogPrime, null, null, null, null, null,
                                                 null, StartProgram.IsOsTrader);
            LabelOsa.Content = "V_" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

            Closing += TesterUi_Closing;
            Local();

            BotTabsPainter painter = new BotTabsPainter(_strategyKeeper, BotsHost);

            ServerMasterPainter painterServer = new ServerMasterPainter(HostServers, HostServerLog, CheckBoxServerAutoOpen);

            Closing += delegate(object sender, CancelEventArgs args)
            {
                painterServer.Dispose();
                painter = null;
            };
        }
예제 #10
0
        /// <summary>
        /// from the tester came the signal that everything should be cleaned
        /// из тестера пришёл сигнал что надо всё зачистить
        /// </summary>
        void StrategyKeeper_TestingStartEvent()
        {
            try
            {
                if (_activPanel != null)
                {
                    _activPanel.StartPaint(_gridChart, _hostChart, _hostGlass, _hostOpenDeals, _hostCloseDeals, _hostboxLog,
                                           _rectangleAroundChart, _hostAlerts, _tabBotTab, _textBoxLimitPrice, _gridChartControlPanel);
                }

                ReloadRiskJournals();

                _fastRegimeOn = false;

                if (PanelsArray != null)
                {
                    for (int i = 0; i < PanelsArray.Count; i++)
                    {
                        PanelsArray[i].Clear();
                    }
                }
                if (PanelsArray != null)
                {
                    ((TesterServer)ServerMaster.GetServers()[0]).SynhSecurities(PanelsArray.ToList());
                }
            }
            catch (Exception error)
            {
                SendNewLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
예제 #11
0
        /// <summary>
        /// upload data from storage to form
        /// выгрузить данные из хранилища на форму
        /// </summary>
        private void LoadSecurityOnBox()
        {
            try
            {
                List <IServer> serversAll = ServerMaster.GetServers();

                IServer server = serversAll.Find(server1 => server1.ServerType == _selectedType);

                if (server == null)
                {
                    return;
                }
                // clear all
                // стираем всё

                ComboBoxSecurities.Items.Clear();
                // download available instruments
                // грузим инструменты доступные для скачивания

                var securities = server.Securities;

                if (securities != null)
                {
                    for (int i = 0; i < securities.Count; i++)
                    {
                        if (securities[i] == null)
                        {
                            continue;
                        }
                        string classSec = securities[i].NameClass;
                        if (ComboBoxClass.SelectedItem != null && ComboBoxClass.SelectedItem.Equals(classSec))
                        {
                            ComboBoxSecurities.Items.Add(securities[i].Name);
                            ComboBoxSecurities.SelectedItem = securities[i].Name;
                        }
                    }
                }

                // download already running instruments
                // грузим уже запущенные инструменты

                string paper = _connectorBot.NamePaper;

                if (paper != null)
                {
                    ComboBoxSecurities.Text         = paper;
                    ComboBoxSecurities.SelectedItem = paper;
                    if (ComboBoxSecurities.Text == null)
                    {
                        ComboBoxSecurities.Items.Add(_connectorBot.NamePaper);
                        ComboBoxSecurities.Text = _connectorBot.NamePaper;
                    }
                }
            }
            catch (Exception error)
            {
                SendNewLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
예제 #12
0
 /// <summary>
 /// событие двойного клика на таблицу источников
 /// </summary>
 void _gridSources_DoubleClick(object sender, EventArgs e)
 {
     if (_gridSources.CurrentCell.RowIndex <= -1)
     {
         return;
     }
     ServerMaster.GetServers()[_gridSources.CurrentCell.RowIndex].ShowDialog();
 }
예제 #13
0
        private void GetTimeFramesInTester()
        {
            TesterServer server = (TesterServer)ServerMaster.GetServers()[0];

            if (server.TypeTesterData != TesterDataType.Candle)
            {
                return;
            }

            string lastTf = null;

            if (ComboBoxTimeFrame.SelectedItem != null)
            {
                lastTf = ComboBoxTimeFrame.SelectedItem.ToString();
            }

            ComboBoxTimeFrame.Items.Clear();

            List <SecurityTester> securities = server.SecuritiesTester;

            if (securities == null)
            {
                return;
            }

            List <string> frames = new List <string>();

            for (int i = 0; i < securities.Count; i++)
            {
                if (frames.Find(f => f == securities[i].TimeFrame.ToString()) == null)
                {
                    frames.Add(securities[i].TimeFrame.ToString());
                }
            }

            for (int i = 0; i < frames.Count; i++)
            {
                ComboBoxTimeFrame.Items.Add(frames[i]);
            }

            if (lastTf == null)
            {
                ComboBoxTimeFrame.SelectedItem = securities[0].TimeFrame.ToString();
            }
            else
            {
                TimeFrame oldFrame;
                Enum.TryParse(lastTf, out oldFrame);

                ComboBoxTimeFrame.SelectedItem = oldFrame;
            }
        }
예제 #14
0
        private void SendServers()
        {
            var servers = ServerMaster.GetServers();

            if (servers == null)
            {
                return;
            }
            foreach (var server in servers)
            {
                string msg = "serverState_" + $"{{\"Server\":\"{server.ServerType.ToString()}\", \"State\":\"{server.ServerStatus}\"}}";
                _apiServer.Send(msg);
            }
        }
예제 #15
0
        void ServerMaster_ServerCreateEvent()
        {
            List <IServer> servers = ServerMaster.GetServers();

            for (int i = 0; i < servers.Count; i++)
            {
                servers[i].ConnectStatusChangeEvent -= ServerStatusChangeEvent;
                servers[i].LogMessageEvent          -= OsDataMaster_LogMessageEvent;

                servers[i].ConnectStatusChangeEvent += ServerStatusChangeEvent;
                servers[i].LogMessageEvent          += OsDataMaster_LogMessageEvent;
            }
            RePaintSourceGrid();
        }
예제 #16
0
        /// <summary>
        /// place classes in the window
        /// поместить классы в окно
        /// </summary>
        private void LoadClassOnBox()
        {
            try
            {
                if (!ComboBoxClass.Dispatcher.CheckAccess())
                {
                    ComboBoxClass.Dispatcher.Invoke(LoadClassOnBox);
                    return;
                }
                List <IServer> serversAll = ServerMaster.GetServers();

                IServer server = serversAll.Find(server1 => server1.ServerType == _selectedType);

                if (server == null)
                {
                    return;
                }

                var securities = server.Securities;

                ComboBoxClass.Items.Clear();

                if (securities == null)
                {
                    return;
                }

                for (int i1 = 0; i1 < securities.Count; i1++)
                {
                    if (securities[i1] == null)
                    {
                        continue;
                    }
                    string clas = securities[i1].NameClass;
                    if (ComboBoxClass.Items.IndexOf(clas) == -1)
                    {
                        ComboBoxClass.Items.Add(clas);
                    }
                }
                if (_connectorBot.Security != null)
                {
                    ComboBoxClass.SelectedItem = _connectorBot.Security.NameClass;
                }
            }
            catch (Exception error)
            {
                SendNewLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
예제 #17
0
        /// <summary>
        /// конструктор
        /// </summary>
        /// <param name="hostChart">хост для чарта</param>
        /// <param name="hostLog">хост для лога</param>
        /// <param name="hostSource">хост для источников</param>
        /// <param name="hostSets">хост для сетов</param>
        /// <param name="comboBoxSecurity">меню выбора бумаг</param>
        /// <param name="comboBoxTimeFrame">меню выбора таймфрейма</param>
        /// <param name="rectangle">квадрат для подложки</param>
        public OsDataMaster(WindowsFormsHost hostChart, WindowsFormsHost hostLog,
                            WindowsFormsHost hostSource, WindowsFormsHost hostSets, System.Windows.Controls.ComboBox comboBoxSecurity,
                            System.Windows.Controls.ComboBox comboBoxTimeFrame, System.Windows.Shapes.Rectangle rectangle)
        {
            _hostChart         = hostChart;
            _hostSource        = hostSource;
            _hostSets          = hostSets;
            _comboBoxSecurity  = comboBoxSecurity;
            _comboBoxTimeFrame = comboBoxTimeFrame;
            _rectangle         = rectangle;

            _log = new Log("OsDataMaster");
            _log.StartPaint(hostLog);
            _log.Listen(this);

            Load();

            CreateSetGrid();
            RePaintSetGrid();

            try
            {
                ServerMaster.CreateServer(ServerType.Finam, false);
                ServerMaster.CreateServer(ServerType.Quik, false);
                ServerMaster.CreateServer(ServerType.Plaza, false);
                ServerMaster.CreateServer(ServerType.SmartCom, false);
                ServerMaster.CreateServer(ServerType.InteractivBrokers, false);


                List <IServer> servers = ServerMaster.GetServers();

                for (int i = 0; i < servers.Count; i++)
                {
                    servers[i].ConnectStatusChangeEvent += ServerStatusChangeEvent;
                    servers[i].LogMessageEvent          += OsDataMaster_LogMessageEvent;
                }

                SendNewLogMessage("Сервера успешно развёрнуты", LogMessageType.System);
            }
            catch (Exception)
            {
                SendNewLogMessage("Ошибка при создании серверов", LogMessageType.Error);
            }

            CreateSourceGrid();
            RePaintSourceGrid();
            ChangeActivSet(0);
        }
예제 #18
0
        public OsTraderMaster(StartProgram startProgram, WindowsFormsHost hostLogPrime)
        {
            NumberGen.GetNumberOrder(startProgram);
            _startProgram = startProgram;

            if (_startProgram == StartProgram.IsTester)
            {
                _typeWorkKeeper = ConnectorWorkType.Tester;
                ((TesterServer)ServerMaster.GetServers()[0]).TestingStartEvent += StrategyKeeper_TestingStartEvent;
                ((TesterServer)ServerMaster.GetServers()[0]).TestingFastEvent  += StrategyKeeper_TestingFastEvent;
                ((TesterServer)ServerMaster.GetServers()[0]).TestingEndEvent   += StrategyKeeper_TestingEndEvent;
            }

            if (_startProgram != StartProgram.IsTester)
            {
                ServerMaster.ActivateAutoConnection();
            }

            ServerMaster.LogMessageEvent += SendNewLogMessage;


            _riskManager = new RiskManager.RiskManager("GlobalRiskManager", _startProgram);
            _riskManager.RiskManagerAlarmEvent += _riskManager_RiskManagerAlarmEvent;
            _riskManager.LogMessageEvent       += SendNewLogMessage;
            _globalController = new GlobalPosition(_hostAllDeals, _startProgram);
            _globalController.LogMessageEvent += SendNewLogMessage;

            _log = new Log("Prime", _startProgram);
            _log.StartPaint(hostLogPrime);
            _log.Listen(this);
            _hostLogPrime = hostLogPrime;

            SendNewLogMessage(OsLocalization.Trader.Label1, LogMessageType.User);

            Load();
            _tabBotNames.SelectionChanged += _tabBotControl_SelectionChanged;
            ReloadRiskJournals();
            _globalController.StartPaint();

            Master = this;

            if (_startProgram == StartProgram.IsOsTrader && PrimeSettingsMaster.AutoStartApi)
            {
                ApiMaster = new AdminApiMaster(Master);
            }
        }
예제 #19
0
        public TesterUi()
        {
            InitializeComponent();

            ServerMaster.IsTester = true;
            ServerMaster.SetHostTable(HostPositionOnBoard, HostOrdersOnBoard);
            ServerMaster.CreateServer(ServerType.Tester, false);
            ServerMaster.GetServers();

            _strategyKeeper = new OsTraderMaster(
                ChartHostPanel, HostGlass, HostOpenPosition, HostClosePosition, HostAllPosition,
                HostBotLog, HostBotLogPrime, RectChart, HostAllert, TabControlBotsName, TabControlBotTab, TextBoxPrice);
            LocationChanged += TesterUi_LocationChanged;
            LabelOsa.Content = "V_" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

            TabControlBotsName.SizeChanged += TabControlBotsName_SizeChanged;
        }
예제 #20
0
        private void UpdateServerCombobox()
        {
            if (ComboBoxServer.Dispatcher.CheckAccess() == false)
            {
                ComboBoxServer.Dispatcher.Invoke(UpdateServerCombobox);
                return;
            }
            ComboBoxServer.Items.Clear();

            List <IServer> allServers = ServerMaster.GetServers();

            for (int i = 0; allServers != null && i < allServers.Count; i++)
            {
                ComboBoxServer.Items.Add(allServers[i].ServerType.ToString());
            }
            UpdateBoxes();
        }
예제 #21
0
        public TesterUiLight()
        {
            InitializeComponent();
            ServerMaster.SetHostTable(HostPositionOnBoard, HostOrdersOnBoard);
            ServerMaster.CreateServer(ServerType.Tester, false);
            ServerMaster.GetServers();

            _strategyKeeper = new OsTraderMaster(null,
                                                 null, null, null, null, HostAllPosition,
                                                 null, HostBotLogPrime, null, null, null, null, null,
                                                 null, StartProgram.IsTester);
            LabelOsa.Content = "V_" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

            Closing += TesterUi_Closing;
            Local();

            BotTabsPainter painter = new BotTabsPainter(_strategyKeeper, BotsHost);
        }
예제 #22
0
        void ServerMaster_ServerCreateEvent(IServer server)
        {
            List <IServer> servers = ServerMaster.GetServers();

            for (int i = 0; i < servers.Count; i++)
            {
                if (servers[i].ServerType == ServerType.Optimizer)
                {
                    continue;
                }
                servers[i].ConnectStatusChangeEvent -= ServerStatusChangeEvent;
                servers[i].LogMessageEvent          -= OsDataMaster_LogMessageEvent;

                servers[i].ConnectStatusChangeEvent += ServerStatusChangeEvent;
                servers[i].LogMessageEvent          += OsDataMaster_LogMessageEvent;
            }
            RePaintSourceGrid();
        }
예제 #23
0
        public void ChangeServer(ServerType serverType)
        {
            IServer        newServer = null;
            List <IServer> allServer = ServerMaster.GetServers();

            for (int i = 0; i < allServer.Count; i++)
            {
                if (serverType == allServer[i].ServerType)
                {
                    newServer = allServer[i];
                    break;
                }
            }
            if (newServer == null)
            {
                return;
            }
            Portfolios = newServer.Portfolios;
            Securities = newServer.Securities;
        }
예제 #24
0
        /// <summary>
        /// show settings window
        /// показать окно настроек
        /// </summary>
        public void ShowDialog()
        {
            try
            {
                if (ServerMaster.GetServers() == null ||
                    ServerMaster.GetServers().Count == 0)
                {
                    AlertMessageSimpleUi uiMessage = new AlertMessageSimpleUi(OsLocalization.Market.Message1);
                    uiMessage.Show();
                    return;
                }

                ConnectorCandlesUi ui = new ConnectorCandlesUi(this);
                ui.LogMessageEvent += SendNewLogMessage;
                ui.ShowDialog();
            }
            catch (Exception error)
            {
                SendNewLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
예제 #25
0
        /// <summary>
        /// показать окно настроек
        /// </summary>
        public void ShowDialog()
        {
            try
            {
                if (ServerMaster.GetServers() == null ||
                    ServerMaster.GetServers().Count == 0)
                {
                    AlertMessageSimpleUi uiMessage = new AlertMessageSimpleUi("Ни одного соединения с биржей не найдено! " +
                                                                              " Нажмите на кнопку ^Сервер^ ");
                    uiMessage.Show();
                    return;
                }

                ConnectorCandlesUi ui = new ConnectorCandlesUi(this);
                ui.LogMessageEvent += SendNewLogMessage;
                ui.ShowDialog();
            }
            catch (Exception error)
            {
                SendNewLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
예제 #26
0
        /// <summary>
        /// search tools by first letter in the title
        /// поиск инструментов по первой букве в названии
        /// </summary>
        private void ComboBoxSecuritiesOnKeyDown(object sender, KeyEventArgs e)
        {
            List <IServer> serversAll = ServerMaster.GetServers();

            IServer server = serversAll.Find(server1 => server1.ServerType == _selectedType);

            if (server == null)
            {
                return;
            }

            ComboBoxSecurities.Items.Clear();

            // upload instruments matching the search terms
            // грузим инструменты подходящие под условия поиска

            List <Security> needSecurities = null;

            if (e.Key == Key.Back)
            {
                needSecurities = server.Securities;
            }
            else
            {
                needSecurities = server.Securities.FindAll(sec => sec.Name.StartsWith(e.Key.ToString(), StringComparison.CurrentCultureIgnoreCase));
            }

            for (int i = 0; i < needSecurities.Count; i++)
            {
                string classSec = needSecurities[i].NameClass;
                if (ComboBoxClass.SelectedItem != null && classSec == ComboBoxClass.SelectedItem.ToString())
                {
                    ComboBoxSecurities.Items.Add(needSecurities[i].Name);
                    ComboBoxSecurities.SelectedItem = needSecurities[i];
                }
            }
        }
예제 #27
0
        private void LoadTimeFrameBox()
        {
            ComboBoxTimeFrame.Items.Clear();

            if (_connectorBot.StartProgram == StartProgram.IsTester)
            {
                // Timeframe
                // таймФрейм
                TesterServer server = (TesterServer)ServerMaster.GetServers()[0];
                if (server.TypeTesterData != TesterDataType.Candle)
                {
                    // if we build data on ticks or depths, then any Timeframe can be used
                    // candle manager builds any Timeframe
                    // если строим данные на тиках или стаканах, то можно использовать любой ТФ
                    // менеджер свечей построит любой
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Day);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Hour4);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Hour2);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Hour1);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min45);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min30);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min20);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min15);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min10);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min5);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min3);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min2);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Min1);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Sec30);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Sec20);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Sec15);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Sec10);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Sec5);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Sec2);
                    ComboBoxTimeFrame.Items.Add(TimeFrame.Sec1);

                    ComboBoxCandleMarketDataType.SelectedItem = CandleMarketDataType.Tick;
                    ComboBoxCandleMarketDataType.IsEnabled    = false;
                }
                else
                {
                    // then if we use ready-made candles, then we need to use only those Timeframe that are
                    // and they are inserted only when we select the security in the method
                    // далее, если используем готовые свечки, то нужно ставить только те ТФ, которые есть
                    // и вставляются они только когда мы выбираем бумагу в методе

                    ComboBoxSecurities.SelectionChanged += ComboBoxSecurities_SelectionChanged;
                    GetTimeFramesInTester();
                    ComboBoxCandleCreateMethodType.SelectedItem = CandleCreateMethodType.Simple;
                    ComboBoxCandleCreateMethodType.IsEnabled    = false;

                    ComboBoxCandleMarketDataType.SelectedItem = CandleMarketDataType.Tick;
                    ComboBoxCandleMarketDataType.IsEnabled    = false;
                }
            }
            else
            {
                ComboBoxTimeFrame.Items.Add(TimeFrame.Day);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Hour4);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Hour2);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Hour1);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min45);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min30);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min20);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min15);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min10);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min5);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min3);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min2);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Min1);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Sec30);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Sec20);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Sec15);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Sec10);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Sec5);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Sec2);
                ComboBoxTimeFrame.Items.Add(TimeFrame.Sec1);

                CandleMarketDataType createType = CandleMarketDataType.Tick;
                if (ComboBoxCandleMarketDataType.SelectedItem != null)
                {
                    Enum.TryParse(ComboBoxCandleMarketDataType.SelectedItem.ToString(), true, out createType);
                }
            }

            ComboBoxTimeFrame.SelectedItem = _connectorBot.TimeFrame;

            if (ComboBoxTimeFrame.SelectedItem == null)
            {
                ComboBoxTimeFrame.SelectedItem = TimeFrame.Min1;
            }
        }
예제 #28
0
        /// <summary>
        /// unload accounts to the form
        /// выгружает счета на форму
        /// </summary>
        private void LoadPortfolioOnBox()
        {
            try
            {
                List <IServer> serversAll = ServerMaster.GetServers();

                IServer server = serversAll.Find(server1 => server1.ServerType == _selectedType);

                if (server == null)
                {
                    return;
                }


                if (!ComboBoxClass.CheckAccess())
                {
                    ComboBoxClass.Dispatcher.Invoke(LoadPortfolioOnBox);
                    return;
                }

                string curPortfolio = null;

                if (ComboBoxPortfolio.SelectedItem != null)
                {
                    curPortfolio = ComboBoxPortfolio.SelectedItem.ToString();
                }

                ComboBoxPortfolio.Items.Clear();


                string portfolio = _connectorBot.PortfolioName;


                if (portfolio != null)
                {
                    ComboBoxPortfolio.Items.Add(_connectorBot.PortfolioName);
                    ComboBoxPortfolio.Text = _connectorBot.PortfolioName;
                }

                List <Portfolio> portfolios = server.Portfolios;

                if (portfolios == null)
                {
                    return;
                }

                for (int i = 0; i < portfolios.Count; i++)
                {
                    bool isInArray = false;

                    for (int i2 = 0; i2 < ComboBoxPortfolio.Items.Count; i2++)
                    {
                        if (ComboBoxPortfolio.Items[i2].ToString() == portfolios[i].Number)
                        {
                            isInArray = true;
                        }
                    }

                    if (isInArray == true)
                    {
                        continue;
                    }
                    ComboBoxPortfolio.Items.Add(portfolios[i].Number);
                }
                if (curPortfolio != null)
                {
                    for (int i = 0; i < ComboBoxPortfolio.Items.Count; i++)
                    {
                        if (ComboBoxPortfolio.Items[i].ToString() == curPortfolio)
                        {
                            ComboBoxPortfolio.SelectedItem = curPortfolio;
                            break;
                        }
                    }
                }
            }
            catch (Exception error)
            {
                SendNewLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
예제 #29
0
        public ConnectorCandlesUi(ConnectorCandles connectorBot)
        {
            try
            {
                InitializeComponent();

                List <IServer> servers = ServerMaster.GetServers();

                if (servers == null)
                {// if connection server to exhange hasn't been created yet / если сервер для подключения к бирже ещё не создан
                    Close();
                    return;
                }

                // save connectors
                // сохраняем коннекторы
                _connectorBot = connectorBot;

                // upload settings to controls
                // загружаем настройки в контролы
                for (int i = 0; i < servers.Count; i++)
                {
                    ComboBoxTypeServer.Items.Add(servers[i].ServerType);
                }

                if (connectorBot.ServerType != ServerType.None)
                {
                    ComboBoxTypeServer.SelectedItem = connectorBot.ServerType;
                    _selectedType = connectorBot.ServerType;
                }
                else
                {
                    ComboBoxTypeServer.SelectedItem = servers[0].ServerType;
                    _selectedType = servers[0].ServerType;
                }

                if (connectorBot.StartProgram == StartProgram.IsTester)
                {
                    ComboBoxTypeServer.IsEnabled    = false;
                    CheckBoxIsEmulator.IsEnabled    = false;
                    CheckBoxSetForeign.IsEnabled    = false;
                    ComboBoxTypeServer.SelectedItem = ServerType.Tester;
                    //ComboBoxClass.SelectedItem = ServerMaster.GetServers()[0].Securities[0].NameClass;
                    ComboBoxPortfolio.Items.Add(ServerMaster.GetServers()[0].Portfolios[0].Number);
                    ComboBoxPortfolio.SelectedItem = ServerMaster.GetServers()[0].Portfolios[0].Number;

                    connectorBot.ServerType = ServerType.Tester;
                    _selectedType           = ServerType.Tester;

                    ComboBoxPortfolio.IsEnabled  = false;
                    ComboBoxTypeServer.IsEnabled = false;
                }
                else
                {
                    LoadPortfolioOnBox();
                }

                LoadClassOnBox();

                LoadSecurityOnBox();



                ComboBoxClass.SelectionChanged += ComboBoxClass_SelectionChanged;

                CheckBoxIsEmulator.IsChecked = _connectorBot.EmulatorIsOn;

                ComboBoxTypeServer.SelectionChanged += ComboBoxTypeServer_SelectionChanged;

                ComboBoxCandleMarketDataType.Items.Add(CandleMarketDataType.Tick);
                ComboBoxCandleMarketDataType.Items.Add(CandleMarketDataType.MarketDepth);
                ComboBoxCandleMarketDataType.SelectedItem = _connectorBot.CandleMarketDataType;

                ComboBoxCandleCreateMethodType.Items.Add(CandleCreateMethodType.Simple);
                ComboBoxCandleCreateMethodType.Items.Add(CandleCreateMethodType.Renko);
                ComboBoxCandleCreateMethodType.Items.Add(CandleCreateMethodType.HeikenAshi);
                ComboBoxCandleCreateMethodType.Items.Add(CandleCreateMethodType.Delta);
                ComboBoxCandleCreateMethodType.Items.Add(CandleCreateMethodType.Volume);
                ComboBoxCandleCreateMethodType.Items.Add(CandleCreateMethodType.Ticks);
                ComboBoxCandleCreateMethodType.Items.Add(CandleCreateMethodType.Range);
                ComboBoxCandleCreateMethodType.Items.Add(CandleCreateMethodType.Rеvers);

                ComboBoxCandleCreateMethodType.SelectedItem = _connectorBot.CandleCreateMethodType;

                CheckBoxSetForeign.IsChecked = _connectorBot.SetForeign;

                LoadTimeFrameBox();

                TextBoxCountTradesInCandle.Text         = _connectorBot.CountTradeInCandle.ToString();
                _countTradesInCandle                    = _connectorBot.CountTradeInCandle;
                TextBoxCountTradesInCandle.TextChanged += TextBoxCountTradesInCandle_TextChanged;

                TextBoxVolumeToClose.Text         = _connectorBot.VolumeToCloseCandleInVolumeType.ToString();
                _volumeToClose                    = _connectorBot.VolumeToCloseCandleInVolumeType;
                TextBoxVolumeToClose.TextChanged += TextBoxVolumeToClose_TextChanged;

                TextBoxRencoPunkts.Text         = _connectorBot.RencoPunktsToCloseCandleInRencoType.ToString();
                _rencoPuncts                    = _connectorBot.RencoPunktsToCloseCandleInRencoType;
                TextBoxRencoPunkts.TextChanged += TextBoxRencoPunkts_TextChanged;

                if (_connectorBot.RencoIsBuildShadows)
                {
                    CheckBoxRencoIsBuildShadows.IsChecked = true;
                }

                TextBoxDeltaPeriods.Text         = _connectorBot.DeltaPeriods.ToString();
                TextBoxDeltaPeriods.TextChanged += TextBoxDeltaPeriods_TextChanged;
                _deltaPeriods = _connectorBot.DeltaPeriods;

                TextBoxRangeCandlesPunkts.Text         = _connectorBot.RangeCandlesPunkts.ToString();
                TextBoxRangeCandlesPunkts.TextChanged += TextBoxRangeCandlesPunkts_TextChanged;
                _rangeCandlesPunkts = _connectorBot.RangeCandlesPunkts;

                TextBoxReversCandlesPunktsMinMove.Text         = _connectorBot.ReversCandlesPunktsMinMove.ToString();
                TextBoxReversCandlesPunktsMinMove.TextChanged += TextBoxReversCandlesPunktsMinMove_TextChanged;
                _reversCandlesPunktsBackMove = _connectorBot.ReversCandlesPunktsBackMove;

                TextBoxReversCandlesPunktsBackMove.Text         = _connectorBot.ReversCandlesPunktsBackMove.ToString();
                TextBoxReversCandlesPunktsBackMove.TextChanged += TextBoxReversCandlesPunktsBackMove_TextChanged;
                _reversCandlesPunktsMinMove = _connectorBot.ReversCandlesPunktsMinMove;

                ShowDopCandleSettings();

                ComboBoxCandleCreateMethodType.SelectionChanged += ComboBoxCandleCreateMethodType_SelectionChanged;
                ComboBoxSecurities.KeyDown += ComboBoxSecuritiesOnKeyDown;

                ComboBoxComissionType.Items.Add(ComissionType.None.ToString());
                ComboBoxComissionType.Items.Add(ComissionType.OneLotFix.ToString());
                ComboBoxComissionType.Items.Add(ComissionType.Percent.ToString());
                ComboBoxComissionType.SelectedItem = _connectorBot.ComissionType.ToString();

                TextBoxComissionValue.Text = _connectorBot.ComissionValue.ToString();

                CheckBoxSaveTradeArrayInCandle.IsChecked = _connectorBot.SaveTradesInCandles;
                CheckBoxSaveTradeArrayInCandle.Click    += delegate(object sender, RoutedEventArgs args)
                {
                    _saveTradesInCandles = CheckBoxSaveTradeArrayInCandle.IsChecked.Value;
                };
                _saveTradesInCandles = _connectorBot.SaveTradesInCandles;

                Title                                    = OsLocalization.Market.TitleConnectorCandle;
                Label1.Content                           = OsLocalization.Market.Label1;
                Label2.Content                           = OsLocalization.Market.Label2;
                Label3.Content                           = OsLocalization.Market.Label3;
                CheckBoxIsEmulator.Content               = OsLocalization.Market.Label4;
                Label5.Content                           = OsLocalization.Market.Label5;
                Label6.Content                           = OsLocalization.Market.Label6;
                Label7.Content                           = OsLocalization.Market.Label7;
                Label8.Content                           = OsLocalization.Market.Label8;
                Label9.Content                           = OsLocalization.Market.Label9;
                LabelTimeFrame.Content                   = OsLocalization.Market.Label10;
                LabelCountTradesInCandle.Content         = OsLocalization.Market.Label11;
                CheckBoxSetForeign.Content               = OsLocalization.Market.Label12;
                LabelDeltaPeriods.Content                = OsLocalization.Market.Label13;
                LabelVolumeToClose.Content               = OsLocalization.Market.Label14;
                LabelRencoPunkts.Content                 = OsLocalization.Market.Label15;
                CheckBoxRencoIsBuildShadows.Content      = OsLocalization.Market.Label16;
                LabelRangeCandlesPunkts.Content          = OsLocalization.Market.Label17;
                LabelReversCandlesPunktsMinMove.Content  = OsLocalization.Market.Label18;
                LabelReversCandlesPunktsBackMove.Content = OsLocalization.Market.Label19;
                ButtonAccept.Content                     = OsLocalization.Market.ButtonAccept;
                LabelComissionType.Content               = OsLocalization.Market.LabelComissionType;
                LabelComissionValue.Content              = OsLocalization.Market.LabelComissionValue;
                CheckBoxSaveTradeArrayInCandle.Content   = OsLocalization.Market.Label59;
            }
            catch (Exception error)
            {
                MessageBox.Show(error.ToString());
            }
        }
예제 #30
0
        /// <summary>
        /// search tools by first letter in the title
        /// поиск инструментов по первой букве в названии
        /// </summary>
        private void ComboBoxSecuritiesOnKeyDown(object sender, KeyEventArgs e)
        {
            List <IServer> serversAll = ServerMaster.GetServers();

            IServer server = serversAll.Find(server1 => server1.ServerType == _selectedType);

            if (server == null)
            {
                return;
            }

            if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl ||
                e.Key == Key.LeftAlt || e.Key == Key.RightAlt ||
                e.Key == Key.LeftShift || e.Key == Key.RightShift ||
                e.Key == Key.Enter)
            {
                return;
            }

            string curText = ComboBoxSecurities.Text;

            ComboBoxSecurities.Items.Clear();

            // upload instruments matching the search terms
            // грузим инструменты подходящие под условия поиска

            List <Security> needSecurities = null;
            string          findStr        = "";

            if (curText != null)
            {
                findStr = curText;
            }

            if (e.Key == Key.Back)
            {
                if (findStr.Length != 0)
                {
                    findStr = findStr.Remove(findStr.Length - 1);
                }
            }
            else
            {
                findStr += e.Key;
            }

            ComboBoxSecurities.Text = findStr;
            ComboBoxSecurities.Items.Add(findStr);
            ComboBoxSecurities.SelectedItem = findStr;

            needSecurities = server.Securities.FindAll(
                sec => sec.Name.StartsWith(ComboBoxSecurities.Text, StringComparison.CurrentCultureIgnoreCase));


            for (int i = 0;
                 needSecurities != null &&
                 i < needSecurities.Count;
                 i++)
            {
                string classSec = needSecurities[i].NameClass;
                if (ComboBoxClass.SelectedItem != null && classSec == ComboBoxClass.SelectedItem.ToString())
                {
                    ComboBoxSecurities.Items.Add(needSecurities[i].Name);
                    //ComboBoxSecurities.SelectedItem = needSecurities[i];
                }
            }
        }