using System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Text; using TSLab.DataSource; using TSLab.Script; using TSLab.Script.Handlers; using TSLab.Script.Realtime; namespace MyStrategies { public class LogFinInfoLastUpdate : IExternalScript { public void Execute(IContext context, ISecurity security) { string fileName = @"D:\LogFinInfoLastUpdate_" + security.Symbol + ".txt"; var bars = security.Bars; var barsCount = bars.Count; var bar = barsCount > 0 ? bars[barsCount - 1] : null; var barStarts = bar != null ? bar.Date : DateTime.MinValue; var barEnds = bar != null ? bar.Date + security.IntervalInstance.Shift : DateTime.MinValue; const string headerStr = "localTime;FinInfo.LastUpdate;timeDelta;lastBarStart;lastBarEnd"; const string dfmt = "yyyy-MM-dd_HH:mm:ss.fff"; var tm = DateTime.Now; var lu = security.FinInfo != null ? security.FinInfo.LastUpdate : new DateTime(0); var str = string.Format("{0}; {1}; {2}; {3}; {4}", tm.ToString(dfmt), lu.ToString(dfmt), tm.TimeOfDay - lu.TimeOfDay, barStarts.ToString(dfmt), barEnds.ToString(dfmt)); using (var sw = new StreamWriter(fileName, true, Encoding.ASCII)) { if (sw.BaseStream.Length == 0) sw.WriteLine(headerStr); sw.WriteLine(str); } //context.Log(str, 0); } } }