public OptimizerMaster() { _log = new Log("OptimizerLog", StartProgram.IsOsOptimizer); _log.Listen(this); _threadsCount = 1; _startDepozit = 100000; Storage = new OptimizerDataStorage("Prime"); Storage.SecuritiesChangeEvent += _storage_SecuritiesChangeEvent; Storage.TimeChangeEvent += _storage_TimeChangeEvent; _filterProfitValue = 10; _filterProfitIsOn = false; _filterMaxDrowDownValue = -10; _filterMaxDrowDownIsOn = false; _filterMiddleProfitValue = 0.001m; _filterMiddleProfitIsOn = false; _filterProfitFactorValue = 1; _filterProfitFactorIsOn = false; _percentOnFilration = 30; Load(); _optimizerExecutor = new OptimizerExecutor(this); _optimizerExecutor.LogMessageEvent += SendLogMessage; _optimizerExecutor.TestingProgressChangeEvent += _optimizerExecutor_TestingProgressChangeEvent; _optimizerExecutor.PrimeProgressChangeEvent += _optimizerExecutor_PrimeProgressChangeEvent; _optimizerExecutor.TestReadyEvent += _optimizerExecutor_TestReadyEvent; _optimizerExecutor.NeadToMoveUiToEvent += _optimizerExecutor_NeadToMoveUiToEvent; ProgressBarStatuses = new List <ProgressBarStatus>(); PrimeProgressBarStatus = new ProgressBarStatus(); }
/// <summary> /// create a new optimization server /// создать новый сервер оптимизации /// </summary> public static OptimizerServer CreateNextOptimizerServer(OptimizerDataStorage storage, int num, decimal portfolioStartVal) { OptimizerServer serv = new OptimizerServer(storage, num, portfolioStartVal); bool isInArray = false; if (_servers == null) { _servers = new List <IServer>(); } for (int i = 0; i < _servers.Count; i++) { if (_servers[i].ServerType == ServerType.Optimizer) { _servers[i] = serv; isInArray = true; } } if (isInArray == false) { _servers.Add(serv); } if (ServerCreateEvent != null) { ServerCreateEvent(serv); } return(serv); }
/// <summary> /// constructor /// конструктор /// </summary> /// <param name="server">server/сервер</param> /// <param name="log">log/лог</param> public OptimizerDataStorageUi(OptimizerDataStorage server, Log log) { InitializeComponent(); _server = server; log.StartPaint(Host); _server.SecuritiesChangeEvent += _server_SecuritiesChangeEvent; CreateGrid(); PaintGrid(); TextBoxFrom.TextChanged += TextBoxFrom_TextChanged; TextBoxTo.TextChanged += TextBoxTo_TextChanged; // progress-bar/прогресс бар 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; // testing data/данные для тестирования ComboBoxDataType.Items.Add(TesterDataType.Candle); ComboBoxDataType.Items.Add(TesterDataType.TickOnlyReadyCandle); 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; Title = OsLocalization.Market.TitleTester; Label22.Header = OsLocalization.Market.Label22; 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; }
/// <summary> /// создать новый сервер оптимизации /// </summary> public static OptimizerServer CreateNextOptimizerServer(OptimizerDataStorage storage, int num, decimal portfolioStartVal) { _servers = new List <IServer>(); OptimizerServer serv = new OptimizerServer(storage, num, portfolioStartVal); _servers.Add(serv); if (ServerCreateEvent != null) { ServerCreateEvent(); } return(serv); }
/// <summary> /// create a new optimization server /// создать новый сервер оптимизации /// </summary> public static OptimizerServer CreateNextOptimizerServer(OptimizerDataStorage storage, int num, decimal portfolioStartVal) { lock (_optimizerGeneratorLocker) { OptimizerServer serv = new OptimizerServer(storage, num, portfolioStartVal); if (serv == null) { return(null); } bool isInArray = false; if (_servers == null) { _servers = new List <IServer>(); } for (int i = 0; i < _servers.Count; i++) { IServer ser = _servers[i]; if (ser == null) { _servers.RemoveAt(i); i--; continue; } if (ser.ServerType == ServerType.Optimizer && ((OptimizerServer)ser).NumberServer == serv.NumberServer) { _servers[i] = serv; isInArray = true; } } if (isInArray == false) { _servers.Add(serv); } if (ServerCreateEvent != null) { ServerCreateEvent(serv); } return(serv); } }
/// <summary> /// конструктор /// </summary> /// <param name="server">сервер</param> /// <param name="log">лог</param> public OptimizerDataStorageUi(OptimizerDataStorage server, Log log) { InitializeComponent(); _server = server; log.StartPaint(Host); _server.SecuritiesChangeEvent += _server_SecuritiesChangeEvent; CreateGrid(); PaintGrid(); TextBoxFrom.TextChanged += TextBoxFrom_TextChanged; TextBoxTo.TextChanged += TextBoxTo_TextChanged; // прогресс бар 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.TickOnlyReadyCandle); 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; }
public OptimizerMaster() { _log = new Log("OptimizerLog", StartProgram.IsOsOptimizer); _log.Listen(this); _threadsCount = 1; _startDepozit = 100000; Storage = new OptimizerDataStorage(); Storage.SecuritiesChangeEvent += _storage_SecuritiesChangeEvent; Storage.TimeChangeEvent += _storage_TimeChangeEvent; _filterProfitValue = 10; _filterProfitIsOn = false; _filterMaxDrowDownValue = -10; _filterMaxDrowDownIsOn = false; _filterMiddleProfitValue = 0.001m; _filterMiddleProfitIsOn = false; _filterWinPositionValue = 40; _filterWinPositionIsOn = false; _filterProfitFactorValue = 1; _filterProfitFactorIsOn = false; _percentOnFilration = 30; Load(); _fazeCount = 1; SendLogMessage("Начинаем проверку всех стратегий в системе на наличие параметров", LogMessageType.System); for (int i = 0; i < 3; i++) { Thread worker = new Thread(GetNamesStrategyToOptimization); worker.Name = i.ToString(); worker.IsBackground = true; worker.Start(); } _optimizerExecutor = new OptimizerExecutor(this); _optimizerExecutor.LogMessageEvent += SendLogMessage; _optimizerExecutor.TestingProgressChangeEvent += _optimizerExecutor_TestingProgressChangeEvent; _optimizerExecutor.PrimeProgressChangeEvent += _optimizerExecutor_PrimeProgressChangeEvent; _optimizerExecutor.TestReadyEvent += _optimizerExecutor_TestReadyEvent; _optimizerExecutor.NeadToMoveUiToEvent += _optimizerExecutor_NeadToMoveUiToEvent; ProgressBarStatuses = new List <ProgressBarStatus>(); PrimeProgressBarStatus = new ProgressBarStatus(); }
/// <summary> /// start listening to the Optimizer storage /// начать прослушку хранилища оптимизатора /// </summary> public void Listen(OptimizerDataStorage panel) { panel.LogMessageEvent += ProcessMessage; }