Esempio n. 1
0
        public void shouldBePreviousValueFromIndicator()
        {
            //test 1 with openPrice-indicator
            prevValueIndicator = new PreviousValueIndicator(openPriceIndicator);
            Assert.AreEqual(prevValueIndicator.GetValue(0), openPriceIndicator.GetValue(0));
            for (int i = 1; i < this.series.GetBarCount(); i++)
            {
                Assert.AreEqual(prevValueIndicator.GetValue(i), openPriceIndicator.GetValue(i - 1));
            }

            //test 2 with minPrice-indicator
            prevValueIndicator = new PreviousValueIndicator(minPriceIndicator);
            Assert.AreEqual(prevValueIndicator.GetValue(0), minPriceIndicator.GetValue(0));
            for (int i = 1; i < this.series.GetBarCount(); i++)
            {
                Assert.AreEqual(prevValueIndicator.GetValue(i), minPriceIndicator.GetValue(i - 1));
            }

            //test 3 with maxPrice-indicator
            prevValueIndicator = new PreviousValueIndicator(maxPriceIndicator);
            Assert.AreEqual(prevValueIndicator.GetValue(0), maxPriceIndicator.GetValue(0));
            for (int i = 1; i < this.series.GetBarCount(); i++)
            {
                Assert.AreEqual(prevValueIndicator.GetValue(i), maxPriceIndicator.GetValue(i - 1));
            }
        }
Esempio n. 2
0
        protected override decimal Calculate(int index)
        {
            if (index == TimeSeries.GetBeginIndex())
            {
                return(Decimals.Zero);
            }
            decimal doubleClosePrice = 2.MultipliedBy(_closePriceIndicator.GetValue(index));
            decimal highmlow         = _maxPriceIndicator.GetValue(index).Minus(_minPriceIndicator.GetValue(index));
            decimal highplow         = _maxPriceIndicator.GetValue(index).Plus(_minPriceIndicator.GetValue(index));

            return((doubleClosePrice.Minus(highplow)).DividedBy(highmlow.MultipliedBy(_volumeIndicator.GetValue(index))));
        }
Esempio n. 3
0
 public void indicatorShouldRetrieveBarMaxPrice()
 {
     for (int i = 0; i < 10; i++)
     {
         Assert.AreEqual(maxPriceIndicator.GetValue(i), timeSeries.GetBar(i).MaxPrice);
     }
 }
 public void IndicatorShouldRetrieveTickMaxPrice()
 {
     for (var i = 0; i < 10; i++)
     {
         Assert.AreEqual(_maxPriceIndicator.GetValue(i), _timeSeries.GetTick(i).MaxPrice);
     }
 }
Esempio n. 5
0
        protected override decimal Calculate(int index)
        {
            decimal sar = Decimals.NaN;

            if (index == _series.GetBeginIndex())
            {
                return(sar); // no trend detection possible for the first value
            }
            else if (index == _series.GetBeginIndex() + 1)
            {// start trend detection
                _currentTrend = _series.GetBar(_series.GetBeginIndex()).ClosePrice.IsLessThan(_series.GetBar(index).ClosePrice);
                if (!_currentTrend)
                {                                             // down trend
                    sar = _maxPriceIndicator.GetValue(index); // put sar on Max price of candlestick
                    _currentExtremePoint = sar;
                    _minMaxExtremePoint  = _currentExtremePoint;
                }
                else
                {                                             // up trend
                    sar = _minPriceIndicator.GetValue(index); // put sar on Min price of candlestick
                    _currentExtremePoint = sar;
                    _minMaxExtremePoint  = _currentExtremePoint;
                }
                return(sar);
            }

            decimal priorSar = GetValue(index - 1);

            if (_currentTrend)
            { // if up trend
                sar           = priorSar.Plus(_accelerationFactor.MultipliedBy((_currentExtremePoint.Minus(priorSar))));
                _currentTrend = _minPriceIndicator.GetValue(index).IsGreaterThan(sar);
                if (!_currentTrend)
                {                                               // check if sar touches the Min price
                    sar                  = _minMaxExtremePoint; // sar starts at the highest extreme point of previous up trend
                    _currentTrend        = false;               // switch to down trend and reset values
                    _startTrendIndex     = index;
                    _accelerationFactor  = _accelarationStart;
                    _currentExtremePoint = _series.GetBar(index).MinPrice; // put point on Max
                    _minMaxExtremePoint  = _currentExtremePoint;
                }
                else
                { // up trend is going on
                    _currentExtremePoint = new HighestValueIndicator(_maxPriceIndicator, index - _startTrendIndex).GetValue(index);
                    if (_currentExtremePoint.IsGreaterThan(_minMaxExtremePoint))
                    {
                        IncrementAcceleration();
                        _minMaxExtremePoint = _currentExtremePoint;
                    }
                }
            }
            else
            { // downtrend
                sar           = priorSar.Minus(_accelerationFactor.MultipliedBy(((priorSar.Minus(_currentExtremePoint)))));
                _currentTrend = _maxPriceIndicator.GetValue(index).IsGreaterThanOrEqual(sar);
                if (_currentTrend)
                {                              // check if switch to up trend
                    sar = _minMaxExtremePoint; // sar starts at the lowest extreme point of previous down trend
                    _accelerationFactor  = _accelarationStart;
                    _startTrendIndex     = index;
                    _currentExtremePoint = _series.GetBar(index).MaxPrice;
                    _minMaxExtremePoint  = _currentExtremePoint;
                }
                else
                { // down trend io going on
                    _currentExtremePoint = new LowestValueIndicator(_minPriceIndicator, index - _startTrendIndex).GetValue(index);
                    if (_currentExtremePoint.IsLessThan(_minMaxExtremePoint))
                    {
                        IncrementAcceleration();
                        _minMaxExtremePoint = _currentExtremePoint;
                    }
                }
            }
            return(sar);
        }
Esempio n. 6
0
 protected override Decimal Calculate(int index)
 {
     return(_maxPrice.GetValue(Math.Max(0, index - _timeFrame)).Minus(_minPrice.GetValue(index)).DividedBy(_averageTrueRange.GetValue(index).MultipliedBy(_sqrtTimeFrame)));
 }