コード例 #1
0
        protected override decimal Calculate(int index)
        {
            List <int> barsOfPreviousPeriod = _pivotPointIndicator.GetBarsOfPreviousPeriod(index);

            if (barsOfPreviousPeriod.isEmpty())
            {
                return(Decimals.NaN);
            }
            switch (_level)
            {
            case PivotLevel.RESISTANCE_3:
                return(CalculateR3(barsOfPreviousPeriod, index));

            case PivotLevel.RESISTANCE_2:
                return(CalculateR2(barsOfPreviousPeriod, index));

            case PivotLevel.RESISTANCE_1:
                return(CalculateR1(barsOfPreviousPeriod, index));

            case PivotLevel.SUPPORT_1:
                return(CalculateS1(barsOfPreviousPeriod, index));

            case PivotLevel.SUPPORT_2:
                return(CalculateS2(barsOfPreviousPeriod, index));

            case PivotLevel.SUPPORT_3:
                return(CalculateS3(barsOfPreviousPeriod, index));

            default: return(Decimals.NaN);
            }
        }
コード例 #2
0
        protected override decimal Calculate(int index)
        {
            List <int> barsOfPreviousPeriod = _pivotPointIndicator.GetBarsOfPreviousPeriod(index);

            if (barsOfPreviousPeriod.isEmpty())
            {
                return(Decimals.NaN);
            }
            IBar    bar  = TimeSeries.GetBar(barsOfPreviousPeriod[0]);
            decimal high = bar.MaxPrice;
            decimal low  = bar.MinPrice;

            foreach (int i in barsOfPreviousPeriod)
            {
                high = (TimeSeries.GetBar(i).MaxPrice).Max(high);
                low  = (TimeSeries.GetBar(i).MinPrice).Min(low);
            }

            if (_fibReversalType == FibReversalType.RESISTANCE)
            {
                return(_pivotPointIndicator.GetValue(index).Plus(_fibonacciFactor.MultipliedBy(high.Minus(low))));
            }
            return(_pivotPointIndicator.GetValue(index).Minus(_fibonacciFactor.MultipliedBy(high.Minus(low))));
        }