예제 #1
0
        public StockRecordDTO LoadData(string fileName)
        {
            EntryDTO entryDTO = null;
            StockRecordDTO stockRecordDTO = new StockRecordDTO();
            string strTemp;
            StreamReader stream = null;

            stockRecordDTO.ID = fileName.Substring(fileName.LastIndexOf('\\') + 1);
            stockRecordDTO.ID = stockRecordDTO.ID.Remove(stockRecordDTO.ID.IndexOf('.'));
            try
            {

                stream = new StreamReader(fileName);
                stream.ReadLine();  // bỏ dòng title ở đầu

                while (true)
                {
                    strTemp = stream.ReadLine();
                    if (stream.EndOfStream)
                    {
                        break;
                    }
                    entryDTO = new EntryDTO();
                    entryDTO.GetData(strTemp);
                    stockRecordDTO.Entries.Add(entryDTO);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return stockRecordDTO;
        }
예제 #2
0
 public AppGUI()
 {
     _stockRecordBUS = new StockRecordBUS();
     _stockRecordDTO = null;
     strPath = "";
     InitializeComponent();
 }
예제 #3
0
        public StockRecordDTO LoadData(string fileName)
        {
            EntryDTO entryDTO = null;
            StockRecordDTO stockRecordDTO = new StockRecordDTO();
            string strTemp;
            StreamReader stream = null;

            stockRecordDTO.ID = fileName.Substring(fileName.LastIndexOf('\\') + 1);
            stockRecordDTO.ID = stockRecordDTO.ID.Remove(stockRecordDTO.ID.IndexOf('.'));
            try
            {
                stream = new StreamReader(fileName);
                stream.ReadLine();  // bỏ dòng title ở đầu
                strTemp = stream.ReadToEnd();
                stream.Close();

                string[] strLines = Regex.Split(strTemp, "\n");

                for (int i = 0; i < strLines.Length; i++)
                {
                    if (strLines[i] == "")
                    {
                        continue;
                    }

                    strTemp = strLines[i];
                    entryDTO = new EntryDTO();
                    entryDTO.GetData(strTemp);
                    stockRecordDTO.Entries.Add(entryDTO);
                }

                //Sort lại theo ngày tăng dần
                for (int i = 0; i < stockRecordDTO.Entries.Count; i++ )
                {
                    for (int j = i + 1; j < stockRecordDTO.Entries.Count; j++)
                    {
                        EntryDTO entryI = (EntryDTO)stockRecordDTO.Entries[i];
                        EntryDTO entryJ = (EntryDTO)stockRecordDTO.Entries[j];
                        if(entryI.Date.Subtract(entryJ.Date).Days > 0)
                        {
                            EntryDTO temp = entryI;
                            stockRecordDTO.Entries[i] = stockRecordDTO.Entries[j];
                            stockRecordDTO.Entries[j] = temp;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return stockRecordDTO;
        }
 public void LoadWholdeData(string fileName)
 {
     StockRecordBUS stockRecordBUS = new StockRecordBUS();
     WholeData = stockRecordBUS.LoadData(fileName);
 }
예제 #5
0
 private void cmbStockID_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (cmbStockID.SelectedItem != null)
     {
         strStockPath = "Excel" + "\\" + cmbStockID.SelectedItem.ToString() + ".csv";
         _stockRecordDTO = _stockRecordBUS.LoadData(strStockPath);
         dtpFrom.Value = ((EntryDTO)_stockRecordDTO.Entries[0]).Date;
         dtpTo.Value = ((EntryDTO)_stockRecordDTO.Entries[_stockRecordDTO.Entries.Count - 1]).Date;
         dtpInputDay.Value = ((EntryDTO)_stockRecordDTO.Entries[_stockRecordDTO.Entries.Count - 1]).Date;
         CreateGraph(zg1);
     }
 }
예제 #6
0
        private void MainGUI_Load(object sender, EventArgs e)
        {
            //Khởi gán
            cmbPreprocess.SelectedIndex = 0;
            tbxNumInputNode.Text = "5";
            tbxTrainingRatio.Text = "80";
            cmbModelSelection.SelectedIndex = 0;
            cmbTrainingMeasure.SelectedIndex = 0;

            //Khởi gán tham số ANN
            tbxNumInputNode.Text = 5.ToString();
            tbxANNHiddenNode.Text = 4.ToString();
            tbxLearningRate.Text = 0.3.ToString();
            tbxMaxLoops.Text = 2000.ToString();
            tbxBias.Text = 0.ToString();
            tbxMomentum.Text = 0.01.ToString();

            if (rdANN.Checked == true)
            {
                gbAnnSetting.Enabled = true;
            }
            else
            {
                gbAnnSetting.Enabled = false;
            }

            _stockRecordBUS = new StockRecordBUS();
            _stockRecordDTO = null;
            strStockPath = "";
        }
예제 #7
0
        private void cmbStockID_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbStockID.SelectedItem != null)
            {
                _stockAppPath = _updateFolder + cmbStockID.SelectedItem.ToString() + ".csv";
                _stockSARecordDTO = _stockSARecordBUS.LoadData(_stockAppPath);
                dtpFrom.Value = ((EntryDTO)_stockSARecordDTO.Entries[0]).Date;
                dtpTo.Value = ((EntryDTO)_stockSARecordDTO.Entries[_stockSARecordDTO.Entries.Count - 1]).Date;
                //dtpInputDay.Value = ((EntryDTO)_stockRecordDTO.Entries[_stockRecordDTO.Entries.Count - 1]).Date;
                CreateGraph(zg1);

                cmbSAStockID.SelectedIndex = cmbStockID.SelectedIndex;
            }
        }
예제 #8
0
        private void Preprocess(bool isBatchMode)
        {
            string strInputFile = null;
            double dblTrainingSetRatio = 0;

            if (isBatchMode)
            {
                strInputFile = tbxBatchInputFile.Text;
                dblTrainingSetRatio = Convert.ToDouble(tbxTrainingRatio.Text);
            }
            else
            {
                strInputFile = tbxCsvFilePath.Text;
                dblTrainingSetRatio = Convert.ToDouble(tbxTrainingRatio.Text);
            }
            //1. Đọc dữ liệu từ file .csv vào mảng và tiền xử lý
            StockRecordBUS stockRecordBUS = new StockRecordBUS();
            StockRecordDTO stockRecordDTO = stockRecordBUS.LoadData(strInputFile);

            _stockRecordDTO = stockRecordDTO;

            double[] dblClosePrices = new double[stockRecordDTO.Entries.Count];
            double[] dblVolumes = new double[stockRecordDTO.Entries.Count];
            int i = 0;
            foreach (EntryDTO entryDTO in stockRecordDTO.Entries)
            {
                dblClosePrices[i] = entryDTO.ClosePrice;
                dblVolumes[i] = entryDTO.Volume;
                i++;
            }

            //2. Chuyển sang định dạng của LibSVM (dựa vào số node đầu vào)
            ConverterBUS converter = new ConverterBUS();
            int iPos = strInputFile.LastIndexOf('\\');
            string strFolderPath = strInputFile.Remove(iPos + 1);
            string strTotalFile = strFolderPath + stockRecordDTO.ID;
            int numDaysPredicted = Int32.Parse(cmbNumDaysPredicted.Text);
            int iNumLine = 0;

            ConverterBUS.Convert(dblClosePrices, dblVolumes, numDaysPredicted, strTotalFile, out iNumLine);

            //3. Từ file chứa toàn bộ dữ liệu ta phân phối vào 2 file train và test (dựa vào tỉ lệ bộ train)
            string strTrainFile = strFolderPath + stockRecordDTO.ID + "_" + numDaysPredicted + "_train.txt";
            string strTestFile = strFolderPath + stockRecordDTO.ID + "_" + numDaysPredicted + "_test.txt";
            string strDTTrainFile = strFolderPath + stockRecordDTO.ID + "_" + numDaysPredicted + "_train.data.txt";
            string strDTTestFile = strFolderPath + stockRecordDTO.ID + "_" + numDaysPredicted + "_test.data.txt";

            StreamReader reader = new StreamReader(strTotalFile + ".txt");
            StreamReader dtReader = new StreamReader(strTotalFile + ".data");
            StreamWriter trainWriter = new StreamWriter(strTrainFile);
            StreamWriter testWriter = new StreamWriter(strTestFile);
            StreamWriter dtTrainWriter = new StreamWriter(strDTTrainFile);
            StreamWriter dtTestWriter = new StreamWriter(strDTTestFile);

            string SubTrainFile = null;
            string SubTestFile = null;
            string dtannSubTrainFile = null;
            string dtannSubTestFile = null;

            StreamWriter SubTrainWriter = null;
            StreamWriter SubTestWriter = null;
            StreamWriter dtannSubTrainWriter = null;
            StreamWriter dtannSubTestWriter = null;
            if (rdDTANN.Checked == true)
            {
                SubTrainFile = strFolderPath + stockRecordDTO.ID + "_" + numDaysPredicted + "_train_subtrain.txt";
                SubTestFile = strFolderPath + stockRecordDTO.ID + "_" + numDaysPredicted + "_train_subtest.txt";

                dtannSubTrainFile = strFolderPath + stockRecordDTO.ID + "_" + numDaysPredicted + "_train_subtrain.data.txt";
                dtannSubTestFile = strFolderPath + stockRecordDTO.ID + "_" + numDaysPredicted + "_train_subtest.data.txt";

                SubTrainWriter = new StreamWriter(SubTrainFile);
                SubTestWriter = new StreamWriter(SubTestFile);
                dtannSubTrainWriter = new StreamWriter(dtannSubTrainFile);
                dtannSubTestWriter = new StreamWriter(dtannSubTestFile);
            }

            //int iBound = numDaysPredicted > iNumInputNode ? 2 * numDaysPredicted : numDaysPredicted + iNumInputNode;
            //int iNumLine = dblSource.Length - iBound + 1;
            int iDivideLine = (int)(dblTrainingSetRatio * iNumLine / 100);
            int iSudDevideLine = (int)(90 * iDivideLine / 100);
            for (i = 0; i < iDivideLine; i++)
            {
                string strLine = reader.ReadLine();
                trainWriter.WriteLine(strLine);
                if (rdDTANN.Checked == true)
                {
                    if (i < iSudDevideLine)// Phân bổ cho tập train con
                    {
                        SubTrainWriter.WriteLine(strLine);
                    }
                    else// Phân bổ cho tập test con
                    {
                        SubTestWriter.WriteLine(strLine);
                    }
                }

                strLine = dtReader.ReadLine();
                dtTrainWriter.WriteLine(strLine);
                if (rdDTANN.Checked == true)
                {
                    if (i < iSudDevideLine)// Phân bổ cho tập train con
                    {
                        dtannSubTrainWriter.WriteLine(strLine);
                    }
                    else// Phân bổ cho tập test con
                    {
                        dtannSubTestWriter.WriteLine(strLine);
                    }
                }
            }
            for (; i < iNumLine; i++)
            {
                string strLine = reader.ReadLine();
                testWriter.WriteLine(strLine);
                strLine = dtReader.ReadLine();
                dtTestWriter.WriteLine(strLine);
            }

            testWriter.Close();
            trainWriter.Close();
            dtTestWriter.Close();
            dtTrainWriter.Close();
            reader.Close();
            dtReader.Close();

            if (rdDTANN.Checked == true)
            {
                SubTrainWriter.Close();
                SubTestWriter.Close();
                dtannSubTrainWriter.Close();
                dtannSubTestWriter.Close();
            }
        }
예제 #9
0
        private void MainGUI_Load(object sender, EventArgs e)
        {
            //Khởi gán
            cmbNumDaysPredicted.SelectedIndex = 0;
            tbxTrainingRatio.Text = "80";
            cmbModelSelection.SelectedIndex = 0;
            cmbActivationFunc.SelectedIndex = 0;
            cmbExperimentMode.SelectedIndex = 0;
            cmbPruneFunc.SelectedIndex = 0;
            cmbSplitFunc.SelectedIndex = 0;
            cmbChoseMethods.SelectedIndex = 0;
            //cmbSAStockID.SelectedIndex = 0;

            _trainFilePath = "";
            _testFilePath = "";
            _modelFilePath = "";

            //Khởi gán tham số ANN
            tbxANNHiddenNode.Text = 4.ToString();
            tbxLearningRate.Text = 0.3.ToString();
            tbxMaxLoops.Text = 2000.ToString();
            tbxBias.Text = 0.ToString();
            tbxMomentum.Text = 0.01.ToString();

            if (rdANN.Checked == true)
            {
                gbAnnSetting.Enabled = true;
                gbSVRSetting.Enabled = false;
                gbDTSetting.Enabled = false;
                gbKmeansSetting.Enabled = false;
            }

            _stockRecordBUS = new StockRecordBUS();
            _stockRecordDTO = null;

            _stockSARecordBUS = new StockRecordBUS();
            _stockSARecordDTO = null;

            _stockAppPath = "";

            tbxChoseFolder.Visible = false;
            btnChoseFolder.Visible = false;

             _defautFolder = (System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName).Replace(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].Name, "");
             _updateFolder = _defautFolder + "DataUpdate\\";
             _trainModel = _defautFolder + "AppModel\\";
             _suggestionFolder = _defautFolder + "Suggestion\\";
             _defautFolder = _defautFolder + "Data\\";

            LoadStockIdFromFolder(_defautFolder);
        }
예제 #10
0
        private void cmbStockID_SelectedIndexChanged(object sender, EventArgs e)
        {
            CreateGraph(zg1);
            SetSize();

            if (cmbStockID.SelectedItem != null)
            {
                strPath = "Excel" + "\\" + cmbStockID.SelectedItem.ToString() + ".csv";
                _stockRecordDTO = _stockRecordBUS.LoadData(strPath);
            }
        }
예제 #11
0
 private void cmbStockID_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (cmbStockID.SelectedItem != null)
     {
         _stockRecordDTO = _stockRecordBUS.LoadData(_path + "\\" + cmbStockID.SelectedItem.ToString() + ".csv");
     }
 }
예제 #12
0
 public Form1()
 {
     _stockRecordBUS = new StockRecordBUS();
     _stockRecordDTO = null;
     InitializeComponent();
 }