public SlopeEnhancedOp SlopeEnhancedOp(ISeries <double> input, int period, int detrendPeriod, int smooth, bool detrend, InputSeriesType inputType, NormType normType, Brush colorUp, Brush colorDown, PlotStyle lineStyle)
 {
     if (cacheSlopeEnhancedOp != null)
     {
         for (int idx = 0; idx < cacheSlopeEnhancedOp.Length; idx++)
         {
             if (cacheSlopeEnhancedOp[idx] != null && cacheSlopeEnhancedOp[idx].Period == period && cacheSlopeEnhancedOp[idx].DetrendPeriod == detrendPeriod && cacheSlopeEnhancedOp[idx].Smooth == smooth && cacheSlopeEnhancedOp[idx].Detrend == detrend && cacheSlopeEnhancedOp[idx].InputType == inputType && cacheSlopeEnhancedOp[idx].NormType == normType && cacheSlopeEnhancedOp[idx].ColorUp == colorUp && cacheSlopeEnhancedOp[idx].ColorDown == colorDown && cacheSlopeEnhancedOp[idx].LineStyle == lineStyle && cacheSlopeEnhancedOp[idx].EqualsInput(input))
             {
                 return(cacheSlopeEnhancedOp[idx]);
             }
         }
     }
     return(CacheIndicator <SlopeEnhancedOp>(new SlopeEnhancedOp()
     {
         Period = period, DetrendPeriod = detrendPeriod, Smooth = smooth, Detrend = detrend, InputType = inputType, NormType = normType, ColorUp = colorUp, ColorDown = colorDown, LineStyle = lineStyle
     }, input, ref cacheSlopeEnhancedOp));
 }
 public Indicators.SlopeEnhancedOp SlopeEnhancedOp(ISeries <double> input, int period, int detrendPeriod, int smooth, bool detrend, InputSeriesType inputType, NormType normType, Brush colorUp, Brush colorDown, PlotStyle lineStyle)
 {
     return(indicator.SlopeEnhancedOp(input, period, detrendPeriod, smooth, detrend, inputType, normType, colorUp, colorDown, lineStyle));
 }
        // method to assign an instance of the chosen indicator
        private IndicatorBase AssignIndicatorInstance(Series <double> inputSeries, InputSeriesType inputType, int period)
        {
            IndicatorBase indicatorBase = null;

            switch (inputType)
            {
            case InputSeriesType.EMA:
            {
                indicatorBase = EMA(inputSeries, period);
                break;
            }

            case InputSeriesType.SMA:
            {
                indicatorBase = SMA(inputSeries, period);
                break;
            }

            case InputSeriesType.HMA:
            {
                indicatorBase = HMA(inputSeries, period);
                break;
            }

            case InputSeriesType.HMACustom:
            {
                indicatorBase = HMACustom(inputSeries, period);
                break;
            }

            case InputSeriesType.WMA:
            {
                indicatorBase = WMA(inputSeries, period);
                break;
            }

            case InputSeriesType.TEMA:
            {
                indicatorBase = TEMA(inputSeries, period);
                break;
            }

            case InputSeriesType.TMA:
            {
                indicatorBase = TMA(inputSeries, period);
                break;
            }

            case InputSeriesType.DEMA:
            {
                indicatorBase = DEMA(inputSeries, period);
                break;
            }

            case InputSeriesType.ZLEMA:
            {
                indicatorBase = ZLEMA(inputSeries, period);
                break;
            }

            default:
            {
                return(null);

                break;
            }
            }

            if (indicatorBase == null)
            {
                return(null);
            }

            indicatorBase.BarsRequiredToPlot  = BarsRequiredToPlot;
            indicatorBase.Calculate           = Calculate.OnBarClose;
            indicatorBase.MaximumBarsLookBack = MaximumBarsLookBack;


            return(indicatorBase);
        }