using System; using System.Collections.Generic; using TSLab.Script; using TSLab.Script.Handlers; using TSLab.Script.Helpers; namespace SuperTrend { public class SuperTrend:IBar2DoubleHandler, IContextUses { [HandlerParameter(true, "50", Min = "5", Max = "100", Step = "1")] public int PeriodCCI { get; set; } [HandlerParameter(true, "1", Min = "1", Max = "30", Step = "1")] public int PeriodATR { get; set; } public IList Execute(ISecurity source) { var h = source.HighPrices; var l = source.LowPrices; var c = source.ClosePrices; var atr = Series.EMA(Series.TrueRange(source.Bars), PeriodATR); var cci = Series.CCI(source.Bars, PeriodCCI); IList list = new List(c.Count); for (int i = 0; i < c.Count; i++) { var cm = h[i] + atr[i]; var cb = l[i] - atr[i]; var st = cci[i]> 0 ? cb : cm; list.Add(st); } return list; } public IContext Context { get; set; } }}