Adding horizontal lines

Modified on Mon, 24 Jul 2023 at 02:20 PM

In order to add horizontal lines, it is necessary to create a LineSeries object and add LineSeries into its collection.

Example of use in the RSI indicator

public class RSI : Indicator

    {

        private readonly SMMA _negative;

        private readonly SMMA _positive;

 

        public int Period

        {

            get => _positive.Period;

            set

            {

                if (value <= 0)

                    return;

 

                _positive.Period = _negative.Period = value;

                RecalculateValues();

            }

        }

 

        public RSI()

        {

            Panel = IndicatorDataProvider.NewPanel;

 

            LineSeries.Add(new LineSeries("Down")

            {

                Color = Colors.Orange,

                LineDashStyle = LineDashStyle.Dash,

                Value = 30,

                Width = 1

            });

            LineSeries.Add(new LineSeries("Up")

            {

                Color = Colors.Orange,

                LineDashStyle = LineDashStyle.Dash,

                Value = 70,

                Width = 1

            });

 

            _positive = new SMMA();

            _negative = new SMMA();

 

            Period = 10;

        }

 

        protected override void OnCalculate(int bar, decimal value)

        {

            if (bar == 0)

            {

                this[bar] = 0;

            }

            else

            {

                var diff = (decimal)SourceDataSeries[bar] - (decimal)SourceDataSeries[bar - 1];

                var pos = _positive.Calculate(bar, diff > 0 ? diff : 0);

                var neg = _negative.Calculate(bar, diff < 0 ? -diff : 0);

 

                if (neg != 0)

                {

                    var div = pos / neg;

 

                    this[bar] = div == 1

                        ? 0m

                        : 100m - 100m / (1m + div);

                }

                else

                {

                    this[bar] = 100m;

                }

            }

        }

    }

 

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select atleast one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article