Category Oscilators  Published on 11/03/2023

Relative Strength Index Wave ind.

Description

The Relative Strength Index Wave Indicator, was created by Constance Brown.

This custom indicator is realized as a rainbow with RSI indicators calculated from different input data types; high, low, hlcc4, and four different smooth periods.


using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo
{
    [Levels(30,50,70)]
    [Indicator(AccessRights = AccessRights.None)]
    public class mRelativeStrengthIndexWave : Indicator
    {
        [Parameter("RSI Period (14)", DefaultValue = 14, MinValue = 2)]
        public int inpPeriodRSI { get; set; }
        [Parameter("Smooth Period 1 (2)", DefaultValue = 2, MinValue = 2)]
        public int inpSmoothPeriod1 { get; set; }
        [Parameter("Smooth Period 2 (5)", DefaultValue = 5, MinValue = 2)]
        public int inpSmoothPeriod2 { get; set; }
        [Parameter("Smooth Period 3 (9)", DefaultValue = 9, MinValue = 2)]
        public int inpSmoothPeriod3 { get; set; }
        [Parameter("Smooth Period 4 (13)", DefaultValue = 13, MinValue = 2)]
        public int inpSmoothPeriod4 { get; set; }
        
        [Output("RSI IndexWave 1", LineColor = "00bcd4", LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries outRSIiw1 { get; set; }
        [Output("RSI IndexWave 2", LineColor = "ff9800", LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries outRSIiw2 { get; set; }
        [Output("RSI IndexWave 3", LineColor = "2962ff", LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries outRSIiw3 { get; set; }
        [Output("RSI IndexWave 4", LineColor = "787b86", LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries outRSIiw4 { get; set; }
        
        private IndicatorDataSeries _pricec, _priceh, _pricel, _raw;
        private RelativeStrengthIndex _rsip, _rsih, _rsil;
        private MovingAverage _smooth1, _smooth2, _smooth3, _smooth4;
        

        protected override void Initialize()
        {
            _pricec = CreateDataSeries();
            _priceh = CreateDataSeries();
            _pricel = CreateDataSeries();
            _rsip = Indicators.RelativeStrengthIndex(_pricec, inpPeriodRSI);
            _rsih = Indicators.RelativeStrengthIndex(_priceh, inpPeriodRSI);
            _rsil = Indicators.RelativeStrengthIndex(_pricel, inpPeriodRSI);
            _raw = CreateDataSeries();
            _smooth1 = Indicators.MovingAverage(_raw, inpSmoothPeriod1, MovingAverageType.Weighted);
            _smooth2 = Indicators.MovingAverage(_raw, inpSmoothPeriod2, MovingAverageType.Weighted);
            _smooth3 = Indicators.MovingAverage(_raw, inpSmoothPeriod3, MovingAverageType.Weighted);
            _smooth4 = Indicators.MovingAverage(_raw, inpSmoothPeriod4, MovingAverageType.Weighted);            
        }

        public override void Calculate(int i)
        {
            _pricec[i] = (Bars.HighPrices[i] + Bars.LowPrices[i] + Bars.ClosePrices[i] + Bars.ClosePrices[i]) / 4;
            _priceh[i] = Bars.HighPrices[i];
            _pricel[i] = Bars.LowPrices[i];
            _raw[i] = (_rsih.Result[i] + _rsil.Result[i] + (2 * _rsip.Result[i])) / 4;
            
            outRSIiw1[i] = _smooth1.Result[i];
            outRSIiw2[i] = _smooth2.Result[i];
            outRSIiw3[i] = _smooth3.Result[i];
            outRSIiw4[i] = _smooth4.Result[i];
        }
    }
}

mfejza's avatar
mfejza

Joined on 25.01.2022

  • Distribution: Free
  • Language: C#
  • Trading platform: cTrader Automate
  • File name: mRelativeStrengthIndexWaveIndicator.algo
  • Rating: 5
  • Installs: 601
Comments
Log in to add a comment.
No comments found.