private void GetTimeFramesInTester() { if (ComboBoxSecurities.SelectedItem == null) { return; } TesterServer server = (TesterServer)ServerMaster.GetServers()[0]; if (server.TypeTesterData != TesterDataType.Candle) { return; } List <SecurityTester> securities = server.SecuritiesTester; string name = ComboBoxSecurities.SelectedItem.ToString(); string lastTf = null; if (BoxTimeFrame.SelectedItem != null) { lastTf = BoxTimeFrame.SelectedItem.ToString(); } BoxTimeFrame.Items.Clear(); for (int i = 0; i < securities.Count; i++) { if (name == securities[i].Security.Name) { BoxTimeFrame.Items.Add(securities[i].TimeFrame); } } if (lastTf == null) { BoxTimeFrame.SelectedItem = securities[0].TimeFrame; } else { TimeFrame oldFrame; Enum.TryParse(lastTf, out oldFrame); BoxTimeFrame.SelectedItem = oldFrame; } }
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; } }
private void LoadTimeFrameBox() { ComboBoxTimeFrame.Items.Clear(); if (ServerMaster.StartProgram == ServerStartProgramm.IsTester) { // таймФрейм TesterServer server = (TesterServer)ServerMaster.GetServers()[0]; if (server.TypeTesterData != TesterDataType.Candle) { // если строим данные на тиках или стаканах, то можно использовать любой ТФ // менеджер свечей построит любой ComboBoxTimeFrame.Items.Add(TimeFrame.Day); 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 { // далее, если используем готовые свечки, то нужно ставить только те ТФ, которые есть // и вставляются они только когда мы выбираем бумагу в методе 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.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> /// конструктор /// </summary> /// <param name="server">сервер</param> /// <param name="log">лог</param> public TesterServerUi(TesterServer server, Log log) { InitializeComponent(); _server = server; LabelStatus.Content = _server.ServerStatus; _server.ConnectStatusChangeEvent += _server_ConnectStatusChangeEvent; log.StartPaint(Host); TextBoxStartDepozit.Text = _server.StartPortfolio.ToString(new CultureInfo("ru-RU")); TextBoxStartDepozit.TextChanged += TextBoxStartDepozit_TextChanged; ResizeMode = System.Windows.ResizeMode.NoResize; HostSecurities.Visibility = Visibility.Hidden; Host.Visibility = Visibility.Hidden; SliderTo.Visibility = Visibility.Hidden; SliderFrom.Visibility = Visibility.Hidden; TextBoxFrom.Visibility = Visibility.Hidden; TextBoxTo.Visibility = Visibility.Hidden; LabelFrom.Visibility = Visibility.Hidden; LabelTo.Visibility = Visibility.Hidden; TextBoxStartDepozit.Visibility = Visibility.Hidden; ComboBoxDataType.Visibility = Visibility.Hidden; ComboBoxSets.Visibility = Visibility.Hidden; Height = 130; Width = 570; _server.TestingStartEvent += _server_TestingStartEvent; _server.SecuritiesChangeEvent += _server_SecuritiesChangeEvent; CreateGrid(); PaintGrid(); TextBoxFrom.TextChanged += TextBoxFrom_TextChanged; TextBoxTo.TextChanged += TextBoxTo_TextChanged; TextBoxCommis.Text = _server.Commiss.ToString(new CultureInfo("ru-RU")); TextBoxCommis.TextChanged += TextBoxCommis_TextChanged; // прогресс бар server.TestingNewSecurityEvent += server_TestingNewSecurityEvent; ProgressBar.Maximum = (_server.TimeMax - DateTime.MinValue).TotalMinutes; ProgressBar.Minimum = (_server.TimeMin - DateTime.MinValue).TotalMinutes; ProgressBar.Value = (_server.TimeNow - DateTime.MinValue).TotalMinutes; barUpdater = new Thread(UpdaterProgressBarThreadArea); barUpdater.CurrentCulture = new CultureInfo("ru-RU"); barUpdater.IsBackground = true; barUpdater.Start(); Closing += TesterServerUi_Closing; // чарт CreateChart(); PaintProfitOnChart(); Resize(); _chartActive = true; _server.NewCurrentValue += _server_NewCurrentValue; List <string> sets = _server.Sets; // сеты for (int i = 0; sets != null && sets.Count != 0 && i < sets.Count; i++) { ComboBoxSets.Items.Add(sets[i]); } if (!string.IsNullOrEmpty(_server.ActiveSet) && _server.ActiveSet.Split('_').Length == 2) { ComboBoxSets.SelectedItem = _server.ActiveSet.Split('_')[1]; } ComboBoxSets.SelectionChanged += ComboBoxSets_SelectionChanged; // данные для тестирования ComboBoxDataType.Items.Add(TesterDataType.Candle); ComboBoxDataType.Items.Add(TesterDataType.TickAllCandleState); ComboBoxDataType.Items.Add(TesterDataType.TickOnlyReadyCandle); ComboBoxDataType.Items.Add(TesterDataType.MarketDepthAllCandleState); ComboBoxDataType.Items.Add(TesterDataType.MarketDepthOnlyReadyCandle); ComboBoxDataType.SelectedItem = _server.TypeTesterData; ComboBoxDataType.SelectionChanged += ComboBoxDataType_SelectionChanged; TextBoxDataPath.Text = _server.PathToFolder; ComboBoxDataSourseType.Items.Add(TesterSourceDataType.Folder); ComboBoxDataSourseType.Items.Add(TesterSourceDataType.Set); ComboBoxDataSourseType.SelectedItem = _server.SourceDataType; ComboBoxDataSourseType.SelectionChanged += ComboBoxDataSourseType_SelectionChanged; }
/// <summary> /// create server /// создать сервер /// </summary> /// <param name="type"> server type / тип сервера </param> /// <param name="neadLoadTicks"> shows whether upload ticks from storage. this is need for bots with QUIK or Plaza2 servers / нужно ли подгружать тики из хранилища. Актуально в режиме робота для серверов Квик, Плаза 2 </param> public static void CreateServer(ServerType type, bool neadLoadTicks) { try { if (_servers == null) { _servers = new List <IServer>(); } if (_servers.Find(server => server.ServerType == type) != null) { return; } IServer newServer = null; if (type == ServerType.FTX) { newServer = new FTXServer(); } if (type == ServerType.HuobiFuturesSwap) { newServer = new HuobiFuturesSwapServer(); } if (type == ServerType.HuobiFutures) { newServer = new HuobiFuturesServer(); } if (type == ServerType.HuobiSpot) { newServer = new HuobiSpotServer(); } if (type == ServerType.MfdWeb) { newServer = new MfdServer(); } if (type == ServerType.MoexDataServer) { newServer = new MoexDataServer(); } if (type == ServerType.Tinkoff) { newServer = new TinkoffServer(); } if (type == ServerType.Hitbtc) { newServer = new HitbtcServer(); } if (type == ServerType.GateIo) { newServer = new GateIoServer(); } if (type == ServerType.GateIoFutures) { newServer = new GateIoFuturesServer(); } if (type == ServerType.Zb) { newServer = new ZbServer(); } if (type == ServerType.Exmo) { newServer = new ExmoServer(); } if (type == ServerType.Livecoin) { newServer = new LivecoinServer(); } if (type == ServerType.BitMax) { newServer = new BitMaxServer(); } if (type == ServerType.Transaq) { newServer = new TransaqServer(); } if (type == ServerType.Lmax) { newServer = new LmaxServer(); } if (type == ServerType.Bitfinex) { newServer = new BitfinexServer(); } if (type == ServerType.Binance) { newServer = new BinanceServer(); } if (type == ServerType.BinanceFutures) { newServer = new BinanceServerFutures(); } if (type == ServerType.NinjaTrader) { newServer = new NinjaTraderServer(); } if (type == ServerType.BitStamp) { newServer = new BitStampServer(); } if (type == ServerType.Kraken) { newServer = new KrakenServer(neadLoadTicks); } if (type == ServerType.Oanda) { newServer = new OandaServer(); } if (type == ServerType.BitMex) { newServer = new BitMexServer(); } if (type == ServerType.QuikLua) { newServer = new QuikLuaServer(); } if (type == ServerType.QuikDde) { newServer = new QuikServer(); } if (type == ServerType.InteractivBrokers) { newServer = new InteractivBrokersServer(); } else if (type == ServerType.SmartCom) { newServer = new SmartComServer(); } else if (type == ServerType.Plaza) { newServer = new PlazaServer(); } else if (type == ServerType.AstsBridge) { newServer = new AstsBridgeServer(neadLoadTicks); } else if (type == ServerType.Tester) { newServer = new TesterServer(); } else if (type == ServerType.Finam) { newServer = new FinamServer(); } if (newServer == null) { return; } _servers.Add(newServer); if (ServerCreateEvent != null) { ServerCreateEvent(newServer); } SendNewLogMessage(OsLocalization.Market.Message3 + _servers[_servers.Count - 1].ServerType, LogMessageType.System); } catch (Exception error) { SendNewLogMessage(error.ToString(), LogMessageType.Error); } }
/// <summary> /// создать сервер /// </summary> /// <param name="type"> тип сервера</param> /// <param name="neadLoadTicks">нужно ли подгружать тики из хранилища. Актуально в режиме робота для серверов Квик, Плаза 2</param> public static void CreateServer(ServerType type, bool neadLoadTicks) { try { if (_servers == null) { _servers = new List <IServer>(); } if (type == ServerType.BitStamp) { if (_servers.Find(server => server.ServerType == ServerType.BitStamp) != null) { return; } BitStampServer serv = new BitStampServer(neadLoadTicks); _servers.Add(serv); if (ServerCreateEvent != null) { ServerCreateEvent(); } } if (type == ServerType.Kraken) { if (_servers.Find(server => server.ServerType == ServerType.Kraken) != null) { return; } KrakenServer serv = new KrakenServer(neadLoadTicks); _servers.Add(serv); if (ServerCreateEvent != null) { ServerCreateEvent(); } } if (type == ServerType.Oanda) { if (_servers.Find(server => server.ServerType == ServerType.Oanda) != null) { return; } OandaServer serv = new OandaServer(neadLoadTicks); _servers.Add(serv); if (ServerCreateEvent != null) { ServerCreateEvent(); } } if (type == ServerType.BitMex) { if (_servers.Find(server => server.ServerType == ServerType.BitMex) != null) { return; } BitMexServer serv = new BitMexServer(neadLoadTicks); _servers.Add(serv); if (ServerCreateEvent != null) { ServerCreateEvent(); } } if (type == ServerType.QuikLua) { if (_servers.Find(server => server.ServerType == ServerType.QuikLua) != null) { return; } QuikLuaServer serv = new QuikLuaServer(neadLoadTicks); _servers.Add(serv); if (ServerCreateEvent != null) { ServerCreateEvent(); } } if (type == ServerType.QuikDde) { if (_servers.Find(server => server.ServerType == ServerType.QuikDde) != null) { return; } QuikServer serv = new QuikServer(neadLoadTicks); _servers.Add(serv); if (ServerCreateEvent != null) { ServerCreateEvent(); } } if (type == ServerType.InteractivBrokers) { if (_servers.Find(server => server.ServerType == ServerType.InteractivBrokers) != null) { return; } InteractivBrokersServer serv = new InteractivBrokersServer(); _servers.Add(serv); if (ServerCreateEvent != null) { ServerCreateEvent(); } } else if (type == ServerType.SmartCom) { if (_servers.Find(server => server.ServerType == ServerType.SmartCom) != null) { return; } try { SmartComServer serv = new SmartComServer(); _servers.Add(serv); } catch (Exception) { MessageBox.Show( "Произошла ошибка создания сервера СмартКом. Вероятно у Вас не установлена соответствующая программа. SmartCOM_Setup_3.0.146.msi "); return; } if (ServerCreateEvent != null) { ServerCreateEvent(); } } else if (type == ServerType.Plaza) { if (_servers.Find(server => server.ServerType == ServerType.Plaza) != null) { return; } try { PlazaServer serv = new PlazaServer(neadLoadTicks); _servers.Add(serv); } catch (Exception) { MessageBox.Show( "Произошла ошибка создания сервера Плаза. Вероятно у Вас не установлено соответствующее программное обеспечение."); return; } if (ServerCreateEvent != null) { ServerCreateEvent(); } } else if (type == ServerType.AstsBridge) { if (_servers.Find(server => server.ServerType == ServerType.AstsBridge) != null) { return; } try { AstsBridgeServer serv = new AstsBridgeServer(neadLoadTicks); _servers.Add(serv); } catch (Exception) { MessageBox.Show( "Произошла ошибка создания сервера Плаза. Вероятно у Вас не установлено соответствующее программное обеспечение."); return; } if (ServerCreateEvent != null) { ServerCreateEvent(); } } else if (type == ServerType.Tester) { try { TesterServer serv = new TesterServer(); _servers.Add(serv); } catch (Exception) { MessageBox.Show( "Произошла ошибка создания тестового сервера."); return; } if (ServerCreateEvent != null) { ServerCreateEvent(); } } else if (type == ServerType.Finam) { try { FinamServer serv = new FinamServer(); _servers.Add(serv); } catch (Exception) { MessageBox.Show( "Произошла ошибка создания тестового сервера."); return; } if (ServerCreateEvent != null) { ServerCreateEvent(); } } } catch (Exception error) { SendNewLogMessage(error.ToString(), LogMessageType.Error); } }
/// <summary> /// constructor /// конструктор /// </summary> /// <param name="server">server/сервер</param> /// <param name="log">log/лог</param> public TesterServerUi(TesterServer server, Log log) { InitializeComponent(); _server = server; LabelStatus.Content = _server.ServerStatus; _server.ConnectStatusChangeEvent += _server_ConnectStatusChangeEvent; log.StartPaint(Host); TextBoxStartDepozit.Text = _server.StartPortfolio.ToString(new CultureInfo("ru-RU")); TextBoxStartDepozit.TextChanged += TextBoxStartDepozit_TextChanged; if (_server.ProfitMarketIsOn == true) { CheckBoxOnOffMarketPortfolio.IsChecked = true; } else { CheckBoxOnOffMarketPortfolio.IsChecked = false; } ResizeMode = System.Windows.ResizeMode.NoResize; HostSecurities.Visibility = Visibility.Hidden; Host.Visibility = Visibility.Hidden; SliderTo.Visibility = Visibility.Hidden; SliderFrom.Visibility = Visibility.Hidden; TextBoxFrom.Visibility = Visibility.Hidden; TextBoxTo.Visibility = Visibility.Hidden; LabelFrom.Visibility = Visibility.Hidden; LabelTo.Visibility = Visibility.Hidden; TextBoxStartDepozit.Visibility = Visibility.Hidden; ComboBoxDataType.Visibility = Visibility.Hidden; ComboBoxSets.Visibility = Visibility.Hidden; Height = 130; Width = 570; _server.TestingStartEvent += _server_TestingStartEvent; _server.SecuritiesChangeEvent += _server_SecuritiesChangeEvent; CreateGrid(); PaintGrid(); TextBoxFrom.TextChanged += TextBoxFrom_TextChanged; TextBoxTo.TextChanged += TextBoxTo_TextChanged; TextBoxSlipageSimpleOrder.Text = _server.SlipageToSimpleOrder.ToString(new CultureInfo("ru-RU")); TextBoxSlipageSimpleOrder.TextChanged += TextBoxSlipageSimpleOrderTextChanged; TextBoxSlipageStop.Text = _server.SlipageToStopOrder.ToString(new CultureInfo("ru-RU")); TextBoxSlipageStop.TextChanged += TextBoxSlipageStop_TextChanged; if (_server.SlipageToStopOrder == 0) { CheckBoxSlipageStopOff.IsChecked = true; } else { CheckBoxSlipageStopOn.IsChecked = false; } if (_server.SlipageToSimpleOrder == 0) { CheckBoxSlipageLimitOff.IsChecked = true; } else { CheckBoxSlipageLimitOn.IsChecked = false; } if (_server.OrderExecutionType == OrderExecutionType.Touch) { CheckBoxExecutionOrderTuch.IsChecked = true; } else if (_server.OrderExecutionType == OrderExecutionType.Intersection) { CheckBoxExecutionOrderIntersection.IsChecked = true; } else if (_server.OrderExecutionType == OrderExecutionType.FiftyFifty) { CheckBoxExecutionOrderFiftyFifty.IsChecked = true; } // progress bar/прогресс бар server.TestingNewSecurityEvent += server_TestingNewSecurityEvent; ProgressBar.Maximum = (_server.TimeMax - DateTime.MinValue).TotalMinutes; ProgressBar.Minimum = (_server.TimeMin - DateTime.MinValue).TotalMinutes; ProgressBar.Value = (_server.TimeNow - DateTime.MinValue).TotalMinutes; barUpdater = new Thread(UpdaterProgressBarThreadArea); barUpdater.CurrentCulture = new CultureInfo("ru-RU"); barUpdater.IsBackground = true; barUpdater.Start(); Closing += TesterServerUi_Closing; // chart/чарт CreateChart(); PaintProfitOnChart(); Resize(); _chartActive = true; _server.NewCurrentValue += _server_NewCurrentValue; List <string> sets = _server.Sets; // sets/сеты for (int i = 0; sets != null && sets.Count != 0 && i < sets.Count; i++) { ComboBoxSets.Items.Add(sets[i]); } if (!string.IsNullOrEmpty(_server.ActiveSet) && _server.ActiveSet.Split('_').Length == 2) { ComboBoxSets.SelectedItem = _server.ActiveSet.Split('_')[1]; } ComboBoxSets.SelectionChanged += ComboBoxSets_SelectionChanged; // data for test/данные для тестирования ComboBoxDataType.Items.Add(TesterDataType.Candle); ComboBoxDataType.Items.Add(TesterDataType.TickAllCandleState); ComboBoxDataType.Items.Add(TesterDataType.TickOnlyReadyCandle); ComboBoxDataType.Items.Add(TesterDataType.MarketDepthAllCandleState); ComboBoxDataType.Items.Add(TesterDataType.MarketDepthOnlyReadyCandle); ComboBoxDataType.SelectedItem = _server.TypeTesterData; ComboBoxDataType.SelectionChanged += ComboBoxDataType_SelectionChanged; TextBoxDataPath.Text = _server.PathToFolder; ComboBoxDataSourseType.Items.Add(TesterSourceDataType.Folder); ComboBoxDataSourseType.Items.Add(TesterSourceDataType.Set); ComboBoxDataSourseType.SelectedItem = _server.SourceDataType; ComboBoxDataSourseType.SelectionChanged += ComboBoxDataSourseType_SelectionChanged; ButtonSinhronazer.Content = OsLocalization.Market.Button1; Title = OsLocalization.Market.TitleTester; Label21.Content = OsLocalization.Market.Label21; ButtonStartTest.Content = OsLocalization.Market.Button2; Label29.Header = OsLocalization.Market.Label29; Label30.Header = OsLocalization.Market.Label30; Label31.Header = OsLocalization.Market.Label31; Label23.Header = OsLocalization.Market.Label23; Label24.Content = OsLocalization.Market.Label24; Label25.Content = OsLocalization.Market.Label25; LabelFrom.Content = OsLocalization.Market.Label26; LabelTo.Content = OsLocalization.Market.Label27; Label28.Content = OsLocalization.Market.Label28; ButtonSetDataFromPath.Content = OsLocalization.Market.ButtonSetFolder; Label32.Content = OsLocalization.Market.Label32; Label33.Content = OsLocalization.Market.Label33; Label34.Content = OsLocalization.Market.Label34; CheckBoxSlipageLimitOff.Content = OsLocalization.Market.Label35; CheckBoxSlipageStopOff.Content = OsLocalization.Market.Label35; CheckBoxSlipageLimitOn.Content = OsLocalization.Market.Label36; CheckBoxSlipageStopOn.Content = OsLocalization.Market.Label36; CheckBoxExecutionOrderIntersection.Content = OsLocalization.Market.Label37; CheckBoxExecutionOrderTuch.Content = OsLocalization.Market.Label38; CheckBoxOnOffMarketPortfolio.Content = OsLocalization.Market.Label39; Label40.Content = OsLocalization.Market.Label40; }
/// <summary> /// create server /// создать сервер /// </summary> /// <param name="type"> server type / тип сервера </param> /// <param name="neadLoadTicks"> shows whether upload ticks from storage. this is need for bots with QUIK or Plaza2 servers / нужно ли подгружать тики из хранилища. Актуально в режиме робота для серверов Квик, Плаза 2 </param> public static void CreateServer(ServerType type, bool neadLoadTicks) { try { if (_servers == null) { _servers = new List <IServer>(); } if (_servers.Find(server => server.ServerType == type) != null) { return; } IServer newServer = null; if (type == ServerType.Transaq) { newServer = new TransaqServer(); } if (type == ServerType.Lmax) { newServer = new LmaxServer(); } if (type == ServerType.Bitfinex) { newServer = new BitfinexServer(); } if (type == ServerType.Binance) { newServer = new BinanceServer(); } if (type == ServerType.NinjaTrader) { newServer = new NinjaTraderServer(); } if (type == ServerType.BitStamp) { newServer = new BitStampServer(); } if (type == ServerType.Kraken) { newServer = new KrakenServer(neadLoadTicks); } if (type == ServerType.Oanda) { newServer = new OandaServer(); } if (type == ServerType.BitMex) { newServer = new BitMexServer(); } if (type == ServerType.QuikLua) { newServer = new QuikLuaServer(); } if (type == ServerType.QuikDde) { newServer = new QuikServer(); } if (type == ServerType.InteractivBrokers) { newServer = new InteractivBrokersServer(); } else if (type == ServerType.SmartCom) { newServer = new SmartComServer(); } else if (type == ServerType.Plaza) { newServer = new PlazaServer(); } else if (type == ServerType.AstsBridge) { newServer = new AstsBridgeServer(neadLoadTicks); } else if (type == ServerType.Tester) { newServer = new TesterServer(); } else if (type == ServerType.Finam) { newServer = new FinamServer(); } if (newServer == null) { return; } _servers.Add(newServer); if (ServerCreateEvent != null) { ServerCreateEvent(newServer); } SendNewLogMessage(OsLocalization.Market.Message3 + _servers[_servers.Count - 1].ServerType, LogMessageType.System); } catch (Exception error) { SendNewLogMessage(error.ToString(), LogMessageType.Error); } }