コード例 #1
0
 /// <summary>
 /// Executed when an event is read from the file
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void query_OnEvent(object sender, EventFeedArgs e)
 {
     if (_streamWriter == null)
     {
         _streamWriter = File.AppendText(_eventFileName);
     }
     _streamWriter.WriteLine(ApiEventReaderWriter.ToFileString(e.Event));
     _eventCount++;
 }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        public void Export()
        {
            //Determine output folder
            string folderName = DataFolder + @"\" + Symbol;

            if (Exchange != "ASX")
            {
                folderName += "_" + Exchange;
            }

            //Determine start date
            DateTime date = new DateTime(2013, 01, 22); //DateTime.Today.AddDays(0);

            //Avoid creating a file for a day that contains incomplete data unless specified
            if (!IncludeCurrentDay)
            {
                if (DateTime.Now.Hour < 19)
                {
                    date = date.AddDays(-1);
                }
            }

            //Loop backwards through days until no more data available from Spark or max day count is reached
            int tradingDayCount = 0;
            int emptyDayCount   = 0;

            do
            {
                //Check if date is potential trading day
                if ((date.DayOfWeek != DayOfWeek.Saturday) && (date.DayOfWeek != DayOfWeek.Sunday))
                {
                    //Determine output event file name
                    tradingDayCount++;
                    string eventFileName = folderName + @"\" + Symbol + "_" + Exchange + "_Event_" + date.ToString("yyyyMMdd") + ".txt";

                    //Request file if not already downloaded
                    string progressText = Symbol + "." + Exchange + "\t" + date.ToString("yyyyMMdd") + "\t";
                    if (!System.IO.File.Exists(eventFileName))
                    {
                        //Request data
                        Benchmark          executeBench = new Benchmark("");
                        List <Spark.Event> events       = null;
                        try
                        {
                            //Execute standard query
                            ApiSecurityEventQuery query = new ApiSecurityEventQuery(Symbol, Exchange, date);
                            events = query.Execute();

                            //Write to file
                            if (events != null)
                            {
                                if (events.Count > 0)
                                {
                                    ApiEventReaderWriter.WriteToFile(eventFileName, events);
                                }
                                else
                                {
                                    emptyDayCount++;
                                }
                                progressText += "Events:\t" + events.Count + "\tRequest Time:\t" + executeBench.Elapsed;
                            }
                            else
                            {
                                progressText += "Data is not currently available from Spark";
                            }
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine("ERROR: " + ex.Message);
                            progressText += ex.Message;
                        }
                    }
                    else
                    {
                        //File already downloaded
                        progressText += "\tFile already downloaded";
                    }

                    //Write progress to console
                    if (OnProgressUpdate != null)
                    {
                        OnProgressUpdate(this, new GenericEventArgs <string>(DateTime.Now, progressText));
                    }
                    Debug.WriteLine(progressText);
                }

                //Move back one day
                date = date.AddDays(-1);
            } while ((tradingDayCount < Days) && (emptyDayCount < 4));
        }