using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Threading; using ThomsonReuters.Desktop.SDK.DataAccess; using ThomsonReuters.Desktop.SDK.DataAccess.TimeSeries; using ThomsonReuters.Desktop.SDK.DataAccess.TimeSeries.Metadata; namespace ConsoleApplication10 { public class TSRequest { public ITimeSeriesDataService timeSeries; public static ITimeSeriesDataRequest request; public TSRequest(ITimeSeriesDataService timeSeries) { this.timeSeries = timeSeries; } public void Launch(string RIC, DateTime startDate) { request = timeSeries.SetupDataRequest(RIC) .WithView("BID") .WithAllFields() .WithInterval(CommonInterval.Daily) .From(startDate) .OnDataReceived(DataReceivedCallback) .OnStatusUpdated(OnTSStatus) .CreateAndSend(); } private void OnTSStatus(IRequestStatus status) { Console.WriteLine("{0}", status.State); } public void DataReceivedCallback(DataChunk chunk) { Console.WriteLine("### RIC: {0} ###", chunk.Ric); foreach (IBarData bar in chunk.Records.ToBarRecords()) { foreach (IData record in chunk.Records) { foreach (var sample in record) { Console.WriteLine("{0} {1}", sample.Key, sample.Value); } } } if (!chunk.IsLast) return; request = null; ReutersRetrieval.StopMessagePump(); } } public class ReutersRetrieval { public static DispatcherFrame Frame; public static void StopMessagePump() { Frame.Continue = false; } // public static List bars; public void RetrieveData(string symbol, DateTime startDate, DateTime endDate) { //if (frequency != (int)BarFrequency.Daily) //{ // return new List(); //} if (startDate == DateTime.MinValue) { startDate = new DateTime(1900, 1, 2); } if (endDate == DateTime.MaxValue) { endDate = DateTime.Now; } string RIC = symbol; //bars = new List(); Frame = new DispatcherFrame(); (new TSRequest(InitReuters.timeSeries)).Launch(RIC, startDate); Dispatcher.PushFrame(Frame); Frame = null; // return bars; } } public class InitReuters { public static IDataServices Services { get; set; } public static void InitializeDataServices(string appName) { Services = DataServices.Instance; Services.StateChanged += ServicesOnStateChanged; Services.Initialize(appName); InitializeTimeSeries(); } private static void ServicesOnStateChanged(object sender, DataServicesStateChangedEventArgs dataServicesStateChangedEventArgs) { // } public static ITimeSeriesDataService timeSeries; private static void InitializeTimeSeries() { timeSeries = DataServices.Instance.TimeSeries; timeSeries.ServiceInformationChanged += timeSeries_ServiceInformationChanged; } private static void timeSeries_ServiceInformationChanged(object sender, ServiceInformationChangedEventArgs e) { Console.WriteLine("{0}: {1}", e.Information.State, e.Information.Message); // Debug.Print("{0}: {1}", e.Information.State, e.Information.Message); } } class Program { static void Main(string[] args) { Program prog = new Program(); prog.run(); } public void run() { ReutersRetrieval reuters = new ReutersRetrieval(); InitReuters.InitializeDataServices("Test"); string ric = ""; while (ric != "0") { Console.Write("Enter RIC or 0 to exit: "); ric = Console.ReadLine(); reuters.RetrieveData(ric, new DateTime(2017, 1, 2), new DateTime(2017, 1, 10)); } } } }