Beispiel #1
0
        public static SwingIndex Series(Bars bars, int limit)
        {
            string description = string.Concat(new object[] { "SwingIndex(", limit, ")" });

            if (bars.Cache.ContainsKey(description))
            {
                return((SwingIndex)bars.Cache[description]);
            }

            SwingIndex _SwingIndex = new SwingIndex(bars, limit, description);

            bars.Cache[description] = _SwingIndex;
            return(_SwingIndex);
        }
Beispiel #2
0
        public AccumSwingIndex(Bars bars, int limit, string description)
            : base(bars, description)
        {
            base.FirstValidValue = 2;

            SwingIndex si = SwingIndex.Series(bars, limit);

            var rangePartitioner = Partitioner.Create(FirstValidValue, bars.Count);

            Parallel.ForEach(rangePartitioner, (range, loopState) =>
            {
                for (int bar = range.Item1; bar < range.Item2; bar++)
                {
                    //ASI(i) = SI(i-1) + SI(i)
                    //base[bar] = si[bar - 1] + si[bar];

                    base[bar] = base[bar - 1] + si[bar];
                }
            });
        }