Exemplo n.º 1
0
        protected override IndicatorResult ComputeByIndexImpl(int index)
        {
            var highestHigh = _highestHighIndicator.ComputeByIndex(index).HighestHigh;
            var lowestLow   = _lowestLowIndicator.ComputeByIndex(index).LowestLow;
            var rsv         = (highestHigh == lowestLow) ? 50 : 100 * (Equity[index].Close - lowestLow) / (highestHigh - lowestLow);

            return(new IndicatorResult(Equity[index].DateTime, rsv));
        }
Exemplo n.º 2
0
        protected override IndicatorResult ComputeByIndexImpl(int index)
        {
            if (index < PeriodCount)
            {
                return(new IndicatorResult(Equity[index].DateTime, null, null));
            }

            var @long  = _highestHigh.ComputeByIndex(index).HighestHigh - _atrIndicator.ComputeByIndex(index).Atr *AtrCount;
            var @short = _lowestLow.ComputeByIndex(index).LowestLow + _atrIndicator.ComputeByIndex(index).Atr *AtrCount;

            return(new IndicatorResult(Equity[index].DateTime, @long, @short));
        }
Exemplo n.º 3
0
        public IchimokuCloud(Equity equity, int shortPeriodCount, int middlePeriodCount, int longPeriodCount)
            : base(equity, shortPeriodCount, middlePeriodCount, longPeriodCount)
        {
            // Default country set to United States Of America
            _periodInstance = equity.Period.CreateInstance(Country.UnitedStatesOfAmerica);

            var shortHighestHigh = new HighestHigh(equity, shortPeriodCount);

            _shortLowestLow = new LowestLow(equity, shortPeriodCount);
            _conversionLine = i => (shortHighestHigh.ComputeByIndex(i).HighestHigh + _shortLowestLow.ComputeByIndex(i).LowestLow) / 2;

            var middleHighestHigh = new HighestHigh(equity, middlePeriodCount);

            _middleLowestLow = new LowestLow(equity, middlePeriodCount);
            _baseLine        = i => (middleHighestHigh.ComputeByIndex(i).HighestHigh + _middleLowestLow.ComputeByIndex(i).LowestLow) / 2;

            var longHighestHigh = new HighestHigh(equity, longPeriodCount);
            var longLowestLow   = new LowestLow(equity, longPeriodCount);

            _leadingSpanB = i => (longHighestHigh.ComputeByIndex(i).HighestHigh + longLowestLow.ComputeByIndex(i).LowestLow) / 2;
        }
Exemplo n.º 4
0
        protected override IndicatorResult ComputeByIndexImpl(int index)
        {
            if (index < PeriodCount - 1)
            {
                return(new IndicatorResult(Equity[index].DateTime, null, null));
            }

            var highestCloseIndex = index - PeriodCount + 1 + Equity
                                    .Skip(index - PeriodCount + 1)
                                    .Take(PeriodCount)
                                    .ToList()
                                    .FindLastIndexOrDefault(c => c.High == _highestHigh.ComputeByIndex(index).HighestHigh).Value;

            var lowestCloseIndex = index - PeriodCount + 1 + Equity
                                   .Skip(index - PeriodCount + 1)
                                   .Take(PeriodCount)
                                   .ToList()
                                   .FindLastIndexOrDefault(c => c.Low == _lowestLow.ComputeByIndex(index).LowestLow).Value;

            var up   = 100.0m * (PeriodCount - (index - highestCloseIndex)) / PeriodCount;
            var down = 100.0m * (PeriodCount - (index - lowestCloseIndex)) / PeriodCount;

            return(new IndicatorResult(Equity[index].DateTime, up, down));
        }