//Todo: Create dialog private void optimizeParametersNN_btn_Click(object sender, EventArgs e) { new Thread(delegate() { //Todo: Drop fields random string[] inputFields = new string[] { "ssi-mt4", "spread", "mid-TradingTime", "mid-Stoch_600000", "mid-Stoch_1800000", "mid-Stoch_3600000", "mid-Stoch_7200000", "mid-Stoch_14400000", "mid-Stoch_21600000", "mid-MA_600000", "mid-MA_1800000", "mid-MA_3600000", "mid-MA_7200000", "mid-MA_14400000", "mid-MA_21600000", "mid-Range_1800000", "mid-Range_3600000", "mid-Range_7200000" }; string outputField = "buy-outcomeCode-0,001_600000"; int epochs = 10; int networksCount = 500; string path = Application.StartupPath + "/AI/"; GeneralExcelGenerator excel = new GeneralExcelGenerator(path + "excel.xlsx"); string sheetName = "OptimizeNN-E10"; string[] header = new string[2 + AdvancedNeuralNetwork.getExcelHeader().Length]; AdvancedNeuralNetwork.getExcelHeader().CopyTo(header, 2); header[0] = "ValidationE"; header[1] = "TrainingE"; excel.CreateSheet(sheetName, header); double[][] inputsTraining = new double[][] { }; double[][] outputsTraining = new double[][] { }; dataminingDb.getInputOutputArrays(inputFields, outputField, "EURUSD", ref inputsTraining, ref outputsTraining, DataGroup.All, 100 * 1000, 0); double[][] inputsValidation = new double[][] { }; double[][] outputsValidation = new double[][] { }; dataminingDb.getInputOutputArrays(inputFields, outputField, "EURUSD", ref inputsValidation, ref outputsValidation, DataGroup.All, 10 * 1000, 1); dataminingDb.unloadPair("EURUSD"); for (int ns = 0; ns < networksCount; ns++) { IMachineLearning network = AdvancedNeuralNetwork.getRandom(inputFields, outputField); network.train(inputsTraining, outputsTraining, epochs); double trainingError = network.getError(); double validationError = network.getPredictionErrorFromData(inputsValidation, outputsValidation); string[] excelRow = new string[2 + network.getInfo(inputFields, outputField).Length]; network.getInfo(inputFields, outputField).CopyTo(excelRow, 2); excelRow[0] = validationError.ToString(); excelRow[1] = trainingError.ToString(); excel.addRow(sheetName, excelRow); setState("Optimizing NN " + ns + "/" + networksCount); } if (Directory.Exists(path) == false) { Directory.CreateDirectory(path); } excel.FinishSheet(sheetName); excel.FinishDoc(); excel.save(); }).Start(); }