/// <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(); }
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()); } }
/// <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); } }
/// <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(); }
/// <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(); }
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; }
/// <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(); }
/// <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); } }
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; }; }
/// <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); } }
/// <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); } }
/// <summary> /// событие двойного клика на таблицу источников /// </summary> void _gridSources_DoubleClick(object sender, EventArgs e) { if (_gridSources.CurrentCell.RowIndex <= -1) { return; } ServerMaster.GetServers()[_gridSources.CurrentCell.RowIndex].ShowDialog(); }
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; } }
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); } }
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(); }
/// <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); } }
/// <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); }
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); } }
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; }
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(); }
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); }
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(); }
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; }
/// <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); } }
/// <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); } }
/// <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]; } } }
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; } }
/// <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); } }
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()); } }
/// <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]; } } }