using System; using System.Collections.Generic; using System.ComponentModel; using TSLab.Script; using TSLab.Script.Handlers; using TSLab.Script.Handlers.Options; namespace GanovCubes { public enum OutType { Дата, Время }; #region CubeDescription [Obsolete] [HandlerCategory("Ganov Cubes. DateTime")] [HandlerName("DateTimeConstant", Language = "ru-ru")] [Description("Кубик выдает дату или время в формате ТСЛаб. Если выбран тип выхода \"Дата\", то кубик выдает дату в формате ГГММДД," + " например, если ввести 01.02.2020 14:50, то на выходе будет 200201, при этом время не учитывается, и наоборот, если выбран тип выхода" + " \"Время\" то на выходе будет только время в формате ЧЧММ00, то есть, если ввести 01.02.2020 14:50," + " то на выходе будет 145000")] [HelperLink("http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=87154&page=1", "Страница на форуме TSLab", "ru-ru")] [InputsCount(0)] [OutputsCount(1)] [OutputType(TemplateTypes.DOUBLE)] #endregion public class DateTimeConstant : IValuesHandler, IContextUses, IBar2DoubleHandler, IDoubleReturns { readonly List retValue = new List(); public IContext Context { set; get; } /// /// Дата /// [HandlerParameter(true, "01.01.2020", NotOptimized = false, Name = "Дата", IsVisibleInBlock = true)] [Description("Время в формате ДД.ММ.ГГГГ чч:мм:cc. Примечание: секунды всегда \"00\"")] public DateTime DateTimeVaue { get; set; } /// /// Тип выхода /// [HandlerParameter(true, "Дата", NotOptimized = true, Name = "Тип выхода", IsVisibleInBlock = true)] [Description("Тип выхода: дата/время")] public OutType DTOutType { get; set; } public IList Execute() => MakeList(); public IList Execute(ISecurity source) => Execute(); private IList MakeList() { var cstDataTime = DTOutType == OutType.Дата ? int.Parse(DateTimeVaue.ToString("yy")) * 10000 + int.Parse(DateTimeVaue.ToString("MM")) * 100 + int.Parse(DateTimeVaue.ToString("dd")) : int.Parse(DateTimeVaue.ToString("HH")) * 10000 + int.Parse(DateTimeVaue.ToString("mm")) * 100; for (int i = 0; i < Context.BarsCount; i++) retValue.Add(cstDataTime); return retValue; } } }