示例#1
0
        public HistoricalDataReader GetReader(string symbolAlias)
        {
            HistoricalDataReader reader = new HistoricalDataReader(symbolAlias);

            reader.Data = this.DownloadedData;
            return(reader);
        }
示例#2
0
        public HistoricalDataReader GetReader()
        {
            var reader = new HistoricalDataReader(this._symbol);

            reader.Data = this.DownloadedData;
            return(reader);
        }
示例#3
0
        public void DownloadStockHistoryData(object downloadParams)
        {
            HistoricalDownloadParams _downloadParams = downloadParams as HistoricalDownloadParams;
            IEnumerable <string>     stocks          = _downloadParams.stockList as IEnumerable <string>;
            string            downloadStr;
            int               numYears       = _downloadParams.NumYears;
            CSVOutputSettings outputSettings = _downloadParams.OutputSettings;

            Dictionary <string, string> indexDict = new Dictionary <string, string>();

            indexDict.Add("^PSEi", "PSE");
            indexDict.Add("^ALLSHARES", "ALL");
            indexDict.Add("^FINANCIAL", "FIN");
            indexDict.Add("^INDUSTRIAL", "IND");
            indexDict.Add("^HOLDING", "HDG");
            indexDict.Add("^PROPERTY", "PRO");
            indexDict.Add("^SERVICE", "SVC");
            indexDict.Add("^MINING-OIL", "M-O");
            try
            {
                foreach (string symbol in stocks)
                {
                    string tmpSymbol = symbol;

                    if (tmpSymbol.Contains("^"))
                    {
                        tmpSymbol   = indexDict[symbol];
                        downloadStr = "http://www2.pse.com.ph/servlet/ChartForPhisixServlet?indexID=%s&years=%f";
                    }
                    else
                    {
                        downloadStr = "http://www2.pse.com.ph/servlet/PSEChartServlet?securitySymbol=%s&years=%f";
                    }

                    downloadStr             = downloadStr.Replace("%s", tmpSymbol).Replace("%f", numYears.ToString());
                    outputSettings.Filename = symbol + ".csv";

                    // before download callback
                    if (_downloadParams.BeforeStockDataDownloadCallback != null)
                    {
                        _downloadParams.BeforeStockDataDownloadCallback(symbol);
                    }

                    HistoricalDataDownloader downloader = new HistoricalDataDownloader(new Uri(downloadStr));
                    downloader.Download();

                    HistoricalDataReader reader = downloader.GetReader(symbol);
                    lock (DownloadWorker.threadLock)
                    {
                        reader.ToCSV(outputSettings);
                        Variables.DownloadedCount++;

                        // after download
                        if (_downloadParams.AfterStockDataDownloadCallback != null)
                        {
                            _downloadParams.AfterStockDataDownloadCallback(symbol);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                //throw new Exception(e.Message);
                if (_downloadParams.OnExceptionCallback != null)
                {
                    _downloadParams.OnExceptionCallback(e);
                }

                // abort threads
                foreach (Thread t in Variables.threadList)
                {
                    if (t.IsAlive)
                    {
                        t.Abort();
                    }
                }
            }
        }