Пример #1
0
        /// <summary>
        /// SuperTrend
        /// </summary>
        /// <returns></returns>
        public anaSuperTrendU11 anaSuperTrendU11(Data.IDataSeries input, int basePeriod, string confirmedDownTrend, string confirmedUpTrend, DashStyle dash0Style, DashStyle dash1Style, Color downColor, double multiplier, int opacity, PlotStyle plot0Style, int plot0Width, PlotStyle plot1Style, int plot1Width, string potentialDownTrend, string potentialUpTrend, int rangePeriod, int rearmTime, bool reverseIntraBar, bool showArrows, bool showPaintBars, bool showStopLine, bool soundAlert, anaSuperTrendU11BaseType thisBaseType, anaSuperTrendU11OffsetType thisOffsetType, anaSuperTrendU11VolaType thisRangeType, Color upColor)
        {
            if (cacheanaSuperTrendU11 != null)
            {
                for (int idx = 0; idx < cacheanaSuperTrendU11.Length; idx++)
                {
                    if (cacheanaSuperTrendU11[idx].BasePeriod == basePeriod && cacheanaSuperTrendU11[idx].ConfirmedDownTrend == confirmedDownTrend && cacheanaSuperTrendU11[idx].ConfirmedUpTrend == confirmedUpTrend && cacheanaSuperTrendU11[idx].Dash0Style == dash0Style && cacheanaSuperTrendU11[idx].Dash1Style == dash1Style && cacheanaSuperTrendU11[idx].DownColor == downColor && Math.Abs(cacheanaSuperTrendU11[idx].Multiplier - multiplier) <= double.Epsilon && cacheanaSuperTrendU11[idx].Opacity == opacity && cacheanaSuperTrendU11[idx].Plot0Style == plot0Style && cacheanaSuperTrendU11[idx].Plot0Width == plot0Width && cacheanaSuperTrendU11[idx].Plot1Style == plot1Style && cacheanaSuperTrendU11[idx].Plot1Width == plot1Width && cacheanaSuperTrendU11[idx].PotentialDownTrend == potentialDownTrend && cacheanaSuperTrendU11[idx].PotentialUpTrend == potentialUpTrend && cacheanaSuperTrendU11[idx].RangePeriod == rangePeriod && cacheanaSuperTrendU11[idx].RearmTime == rearmTime && cacheanaSuperTrendU11[idx].ReverseIntraBar == reverseIntraBar && cacheanaSuperTrendU11[idx].ShowArrows == showArrows && cacheanaSuperTrendU11[idx].ShowPaintBars == showPaintBars && cacheanaSuperTrendU11[idx].ShowStopLine == showStopLine && cacheanaSuperTrendU11[idx].SoundAlert == soundAlert && cacheanaSuperTrendU11[idx].ThisBaseType == thisBaseType && cacheanaSuperTrendU11[idx].ThisOffsetType == thisOffsetType && cacheanaSuperTrendU11[idx].ThisRangeType == thisRangeType && cacheanaSuperTrendU11[idx].UpColor == upColor && cacheanaSuperTrendU11[idx].EqualsInput(input))
                    {
                        return(cacheanaSuperTrendU11[idx]);
                    }
                }
            }

            lock (checkanaSuperTrendU11)
            {
                checkanaSuperTrendU11.BasePeriod = basePeriod;
                basePeriod = checkanaSuperTrendU11.BasePeriod;
                checkanaSuperTrendU11.ConfirmedDownTrend = confirmedDownTrend;
                confirmedDownTrend = checkanaSuperTrendU11.ConfirmedDownTrend;
                checkanaSuperTrendU11.ConfirmedUpTrend = confirmedUpTrend;
                confirmedUpTrend = checkanaSuperTrendU11.ConfirmedUpTrend;
                checkanaSuperTrendU11.Dash0Style = dash0Style;
                dash0Style = checkanaSuperTrendU11.Dash0Style;
                checkanaSuperTrendU11.Dash1Style = dash1Style;
                dash1Style = checkanaSuperTrendU11.Dash1Style;
                checkanaSuperTrendU11.DownColor = downColor;
                downColor = checkanaSuperTrendU11.DownColor;
                checkanaSuperTrendU11.Multiplier = multiplier;
                multiplier = checkanaSuperTrendU11.Multiplier;
                checkanaSuperTrendU11.Opacity = opacity;
                opacity = checkanaSuperTrendU11.Opacity;
                checkanaSuperTrendU11.Plot0Style = plot0Style;
                plot0Style = checkanaSuperTrendU11.Plot0Style;
                checkanaSuperTrendU11.Plot0Width = plot0Width;
                plot0Width = checkanaSuperTrendU11.Plot0Width;
                checkanaSuperTrendU11.Plot1Style = plot1Style;
                plot1Style = checkanaSuperTrendU11.Plot1Style;
                checkanaSuperTrendU11.Plot1Width = plot1Width;
                plot1Width = checkanaSuperTrendU11.Plot1Width;
                checkanaSuperTrendU11.PotentialDownTrend = potentialDownTrend;
                potentialDownTrend = checkanaSuperTrendU11.PotentialDownTrend;
                checkanaSuperTrendU11.PotentialUpTrend = potentialUpTrend;
                potentialUpTrend = checkanaSuperTrendU11.PotentialUpTrend;
                checkanaSuperTrendU11.RangePeriod = rangePeriod;
                rangePeriod = checkanaSuperTrendU11.RangePeriod;
                checkanaSuperTrendU11.RearmTime = rearmTime;
                rearmTime = checkanaSuperTrendU11.RearmTime;
                checkanaSuperTrendU11.ReverseIntraBar = reverseIntraBar;
                reverseIntraBar = checkanaSuperTrendU11.ReverseIntraBar;
                checkanaSuperTrendU11.ShowArrows = showArrows;
                showArrows = checkanaSuperTrendU11.ShowArrows;
                checkanaSuperTrendU11.ShowPaintBars = showPaintBars;
                showPaintBars = checkanaSuperTrendU11.ShowPaintBars;
                checkanaSuperTrendU11.ShowStopLine = showStopLine;
                showStopLine = checkanaSuperTrendU11.ShowStopLine;
                checkanaSuperTrendU11.SoundAlert = soundAlert;
                soundAlert = checkanaSuperTrendU11.SoundAlert;
                checkanaSuperTrendU11.ThisBaseType = thisBaseType;
                thisBaseType = checkanaSuperTrendU11.ThisBaseType;
                checkanaSuperTrendU11.ThisOffsetType = thisOffsetType;
                thisOffsetType = checkanaSuperTrendU11.ThisOffsetType;
                checkanaSuperTrendU11.ThisRangeType = thisRangeType;
                thisRangeType = checkanaSuperTrendU11.ThisRangeType;
                checkanaSuperTrendU11.UpColor = upColor;
                upColor = checkanaSuperTrendU11.UpColor;

                if (cacheanaSuperTrendU11 != null)
                {
                    for (int idx = 0; idx < cacheanaSuperTrendU11.Length; idx++)
                    {
                        if (cacheanaSuperTrendU11[idx].BasePeriod == basePeriod && cacheanaSuperTrendU11[idx].ConfirmedDownTrend == confirmedDownTrend && cacheanaSuperTrendU11[idx].ConfirmedUpTrend == confirmedUpTrend && cacheanaSuperTrendU11[idx].Dash0Style == dash0Style && cacheanaSuperTrendU11[idx].Dash1Style == dash1Style && cacheanaSuperTrendU11[idx].DownColor == downColor && Math.Abs(cacheanaSuperTrendU11[idx].Multiplier - multiplier) <= double.Epsilon && cacheanaSuperTrendU11[idx].Opacity == opacity && cacheanaSuperTrendU11[idx].Plot0Style == plot0Style && cacheanaSuperTrendU11[idx].Plot0Width == plot0Width && cacheanaSuperTrendU11[idx].Plot1Style == plot1Style && cacheanaSuperTrendU11[idx].Plot1Width == plot1Width && cacheanaSuperTrendU11[idx].PotentialDownTrend == potentialDownTrend && cacheanaSuperTrendU11[idx].PotentialUpTrend == potentialUpTrend && cacheanaSuperTrendU11[idx].RangePeriod == rangePeriod && cacheanaSuperTrendU11[idx].RearmTime == rearmTime && cacheanaSuperTrendU11[idx].ReverseIntraBar == reverseIntraBar && cacheanaSuperTrendU11[idx].ShowArrows == showArrows && cacheanaSuperTrendU11[idx].ShowPaintBars == showPaintBars && cacheanaSuperTrendU11[idx].ShowStopLine == showStopLine && cacheanaSuperTrendU11[idx].SoundAlert == soundAlert && cacheanaSuperTrendU11[idx].ThisBaseType == thisBaseType && cacheanaSuperTrendU11[idx].ThisOffsetType == thisOffsetType && cacheanaSuperTrendU11[idx].ThisRangeType == thisRangeType && cacheanaSuperTrendU11[idx].UpColor == upColor && cacheanaSuperTrendU11[idx].EqualsInput(input))
                        {
                            return(cacheanaSuperTrendU11[idx]);
                        }
                    }
                }

                anaSuperTrendU11 indicator = new anaSuperTrendU11();
                indicator.BarsRequired        = BarsRequired;
                indicator.CalculateOnBarClose = CalculateOnBarClose;
#if NT7
                indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256;
                indicator.MaximumBarsLookBack         = MaximumBarsLookBack;
#endif
                indicator.Input              = input;
                indicator.BasePeriod         = basePeriod;
                indicator.ConfirmedDownTrend = confirmedDownTrend;
                indicator.ConfirmedUpTrend   = confirmedUpTrend;
                indicator.Dash0Style         = dash0Style;
                indicator.Dash1Style         = dash1Style;
                indicator.DownColor          = downColor;
                indicator.Multiplier         = multiplier;
                indicator.Opacity            = opacity;
                indicator.Plot0Style         = plot0Style;
                indicator.Plot0Width         = plot0Width;
                indicator.Plot1Style         = plot1Style;
                indicator.Plot1Width         = plot1Width;
                indicator.PotentialDownTrend = potentialDownTrend;
                indicator.PotentialUpTrend   = potentialUpTrend;
                indicator.RangePeriod        = rangePeriod;
                indicator.RearmTime          = rearmTime;
                indicator.ReverseIntraBar    = reverseIntraBar;
                indicator.ShowArrows         = showArrows;
                indicator.ShowPaintBars      = showPaintBars;
                indicator.ShowStopLine       = showStopLine;
                indicator.SoundAlert         = soundAlert;
                indicator.ThisBaseType       = thisBaseType;
                indicator.ThisOffsetType     = thisOffsetType;
                indicator.ThisRangeType      = thisRangeType;
                indicator.UpColor            = upColor;
                Indicators.Add(indicator);
                indicator.SetUp();

                anaSuperTrendU11[] tmp = new anaSuperTrendU11[cacheanaSuperTrendU11 == null ? 1 : cacheanaSuperTrendU11.Length + 1];
                if (cacheanaSuperTrendU11 != null)
                {
                    cacheanaSuperTrendU11.CopyTo(tmp, 0);
                }
                tmp[tmp.Length - 1]   = indicator;
                cacheanaSuperTrendU11 = tmp;
                return(indicator);
            }
        }
Пример #2
0
        protected override void OnStartUp()
        {
            switch (thisVolaType)
            {
            case anaSuperTrendU11VolaType.Simple_Range:
                rangeSeries = Range();
                break;

            case anaSuperTrendU11VolaType.True_Range:
                rangeSeries = ATR(Close, 1);
                break;

            case anaSuperTrendU11VolaType.Standard_Deviation:
                thisOffsetType = anaSuperTrendU11OffsetType.Default;
                rangeSeries    = StdDev(Close, rangePeriod);
                offsetSeries   = StdDev(Close, rangePeriod);
                break;
            }
            switch (thisBaseType)
            {
            case anaSuperTrendU11BaseType.Median:
                baseline = anaMovingMedian(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.ADXVMA:
                baseline = anaADXVMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.Butterworth_2:
                baseline = anaButterworthFilter(Input, basePeriod, 2);
                break;

            case anaSuperTrendU11BaseType.Butterworth_3:
                baseline = anaButterworthFilter(Input, basePeriod, 3);
                break;

            case anaSuperTrendU11BaseType.DEMA:
                baseline = DEMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.DSMA:
                baseline = DSMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.DTMA:
                baseline = DTMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.DWMA:
                baseline = DWMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.Ehlers:
                baseline = anaEhlersFilter(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.EMA:
                baseline = EMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.Gauss_2:
                baseline = anaGaussianFilter(Input, basePeriod, 2);
                break;

            case anaSuperTrendU11BaseType.Gauss_3:
                baseline = anaGaussianFilter(Input, basePeriod, 3);
                break;

            case anaSuperTrendU11BaseType.Gauss_4:
                baseline = anaGaussianFilter(Input, basePeriod, 4);
                break;

            case anaSuperTrendU11BaseType.HMA:
                baseline = HMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.HoltEMA:
                baseline = anaHoltEMA(Input, basePeriod, 2 * basePeriod);
                break;

            case anaSuperTrendU11BaseType.LinReg:
                baseline = LinReg(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.SMA:
                baseline = SMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.SuperSmoother_2:
                baseline = anaSuperSmootherFilter(Input, basePeriod, 2);
                break;

            case anaSuperTrendU11BaseType.SuperSmoother_3:
                baseline = anaSuperSmootherFilter(Input, basePeriod, 3);
                break;

            case anaSuperTrendU11BaseType.TEMA:
                baseline = TEMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.TMA:
                baseline = TMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.TSMA:
                baseline = TSMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.TWMA:
                baseline = TWMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.VWMA:
                baseline = VWMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.WMA:
                baseline = WMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.ZeroLagHATEMA:
                baseline = anaZeroLagHATEMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.ZeroLagTEMA:
                baseline = ZeroLagTEMA(Input, basePeriod);
                break;

            case anaSuperTrendU11BaseType.ZLEMA:
                baseline = ZLEMA(Input, basePeriod);
                break;
            }
            if (thisVolaType != anaSuperTrendU11VolaType.Standard_Deviation)
            {
                switch (thisOffsetType)
                {
                case anaSuperTrendU11OffsetType.Default:
                    offsetSeries = EMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.Median:
                    offsetSeries = anaMovingMedian(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.ADXVMA:
                    offsetSeries = anaADXVMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.Butterworth_2:
                    offsetSeries = anaButterworthFilter(rangeSeries, rangePeriod, 2);
                    break;

                case anaSuperTrendU11OffsetType.Butterworth_3:
                    offsetSeries = anaButterworthFilter(rangeSeries, rangePeriod, 3);
                    break;

                case anaSuperTrendU11OffsetType.DEMA:
                    offsetSeries = DEMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.DSMA:
                    offsetSeries = DSMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.DTMA:
                    offsetSeries = DTMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.DWMA:
                    offsetSeries = DWMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.Ehlers:
                    offsetSeries = anaEhlersFilter(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.EMA:
                    offsetSeries = EMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.Gauss_2:
                    offsetSeries = anaGaussianFilter(rangeSeries, rangePeriod, 2);
                    break;

                case anaSuperTrendU11OffsetType.Gauss_3:
                    offsetSeries = anaGaussianFilter(rangeSeries, rangePeriod, 3);
                    break;

                case anaSuperTrendU11OffsetType.Gauss_4:
                    offsetSeries = anaGaussianFilter(rangeSeries, rangePeriod, 4);
                    break;

                case anaSuperTrendU11OffsetType.HMA:
                    offsetSeries = HMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.HoltEMA:
                    offsetSeries = anaHoltEMA(rangeSeries, rangePeriod, 2 * rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.LinReg:
                    offsetSeries = LinReg(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.SMA:
                    offsetSeries = SMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.SuperSmoother_2:
                    offsetSeries = anaSuperSmootherFilter(rangeSeries, rangePeriod, 2);
                    break;

                case anaSuperTrendU11OffsetType.SuperSmoother_3:
                    offsetSeries = anaSuperSmootherFilter(rangeSeries, rangePeriod, 3);
                    break;

                case anaSuperTrendU11OffsetType.TEMA:
                    offsetSeries = TEMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.TMA:
                    offsetSeries = TMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.TSMA:
                    offsetSeries = TSMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.TWMA:
                    offsetSeries = TWMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.VWMA:
                    offsetSeries = VWMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.WMA:
                    offsetSeries = WMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.ZeroLagHATEMA:
                    offsetSeries = anaZeroLagHATEMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.ZeroLagTEMA:
                    offsetSeries = ZeroLagTEMA(rangeSeries, rangePeriod);
                    break;

                case anaSuperTrendU11OffsetType.ZLEMA:
                    offsetSeries = ZLEMA(rangeSeries, rangePeriod);
                    break;
                }
            }
            volatility = ATR(Close, 256);

            Plots[0].Pen.Width     = plot0Width;
            Plots[0].PlotStyle     = plot0Style;
            Plots[0].Pen.DashStyle = dash0Style;
            Plots[1].Pen.Width     = plot1Width;
            Plots[1].PlotStyle     = plot1Style;
            Plots[1].Pen.DashStyle = dash1Style;
            if (ChartControl != null && ChartControl.ChartStyleType == ChartStyleType.CandleStick)
            {
                candles = true;
                alpha   = 25 * opacity;
            }
            else
            {
                candles = false;
            }
            gap = (plot1Style == PlotStyle.Line) || (plot1Style == PlotStyle.Square);
        }
Пример #3
0
 /// <summary>
 /// SuperTrend
 /// </summary>
 /// <returns></returns>
 public anaSuperTrendU11 anaSuperTrendU11(int basePeriod, string confirmedDownTrend, string confirmedUpTrend, DashStyle dash0Style, DashStyle dash1Style, Color downColor, double multiplier, int opacity, PlotStyle plot0Style, int plot0Width, PlotStyle plot1Style, int plot1Width, string potentialDownTrend, string potentialUpTrend, int rangePeriod, int rearmTime, bool reverseIntraBar, bool showArrows, bool showPaintBars, bool showStopLine, bool soundAlert, anaSuperTrendU11BaseType thisBaseType, anaSuperTrendU11OffsetType thisOffsetType, anaSuperTrendU11VolaType thisRangeType, Color upColor)
 {
     return(anaSuperTrendU11(Input, basePeriod, confirmedDownTrend, confirmedUpTrend, dash0Style, dash1Style, downColor, multiplier, opacity, plot0Style, plot0Width, plot1Style, plot1Width, potentialDownTrend, potentialUpTrend, rangePeriod, rearmTime, reverseIntraBar, showArrows, showPaintBars, showStopLine, soundAlert, thisBaseType, thisOffsetType, thisRangeType, upColor));
 }
Пример #4
0
        /// <summary>
        /// SuperTrend
        /// </summary>
        /// <returns></returns>
        public Indicator.anaSuperTrendU11 anaSuperTrendU11(Data.IDataSeries input, int basePeriod, string confirmedDownTrend, string confirmedUpTrend, DashStyle dash0Style, DashStyle dash1Style, Color downColor, double multiplier, int opacity, PlotStyle plot0Style, int plot0Width, PlotStyle plot1Style, int plot1Width, string potentialDownTrend, string potentialUpTrend, int rangePeriod, int rearmTime, bool reverseIntraBar, bool showArrows, bool showPaintBars, bool showStopLine, bool soundAlert, anaSuperTrendU11BaseType thisBaseType, anaSuperTrendU11OffsetType thisOffsetType, anaSuperTrendU11VolaType thisRangeType, Color upColor)
        {
            if (InInitialize && input == null)
            {
                throw new ArgumentException("You only can access an indicator with the default input/bar series from within the 'Initialize()' method");
            }

            return(_indicator.anaSuperTrendU11(input, basePeriod, confirmedDownTrend, confirmedUpTrend, dash0Style, dash1Style, downColor, multiplier, opacity, plot0Style, plot0Width, plot1Style, plot1Width, potentialDownTrend, potentialUpTrend, rangePeriod, rearmTime, reverseIntraBar, showArrows, showPaintBars, showStopLine, soundAlert, thisBaseType, thisOffsetType, thisRangeType, upColor));
        }