Category Oscilators  Published on 05/04/2023

Ehlers Relative Vigor Index (RVI) in 2TF

Description

Ehlers Relative Vigor Index in 2 time frames: current time frame and a selectable time frame.

TimeFrameHigher: other time frame.

Period: period for calculating RVI.

SmoothFactor: factor to be used for selected SmoothType. For example, if SmoothType is WMA, SmoothFactor == 3 means WMA for 3 periods.

SmoothType: WMA, EMA, SMA, TwoPoles, ThreePoles, Lague, None.

  • WMA, EMA, SMA: Conventions Weighted/Exponetial/Simple Moving Average.
  • TwoPoles, ThreePoles: Ehlers 2, 3 Poles smoother (see Ehlers book). SmoothFactor will be the CutOff period, e.g. if CutOff == 10, those with frequency equivalent to < 10 bars will be depressed.
  • Lague: Laguerre filter (see Ehlers book). SmoothFactor is the Gamma for Laguerre filter [0 - 0.99].

Ehler Relative Vigor Index (RVI, see Ehlers book), is an Osccilator type indicator. It works well in Cycle market.

The Osc run in [-1, 1] range.

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using LittleTrader.Ehlers;
using LittleTrader;
using LittleTrader.Extensions;

namespace cAlgo
{
    [Indicator(AccessRights = AccessRights.None)]
    public class LT_Ind_EhlersRVI : Indicator
    {
        [Parameter(DefaultValue = "Hour")]
        public TimeFrame TimeFrameHigher { get; set; }

        [Parameter("Period", DefaultValue = 8)]
        public int Period { get; set; }

        [Parameter("SmoothFactor", DefaultValue = 3)]
        public double SmoothFactor { get; set; }

        [Parameter("SmoothType", DefaultValue = SmoothTypes.SMA)]
        public SmoothTypes SmoothType { get; set; }

        [Output("RVI", LineColor = "Purple")]
        public IndicatorDataSeries RVI { get; set; }

        [Output("RVIHigher", LineColor = "Blue")]
        public IndicatorDataSeries RVIHigher { get; set; }

        EhlersBarsRVI _rvi, _rviHigher;
        IndicatorDataSeries _rviHigherOutput;
        Bars _barsHigher;
        protected override void Initialize()
        {
            _rvi = new EhlersBarsRVI(Bars, RVI, CreateDataSeries, Period, SmoothType, SmoothFactor);

            _rviHigherOutput = CreateDataSeries();
            _barsHigher = MarketData.GetBars(TimeFrameHigher);
            _rviHigher = new EhlersBarsRVI(_barsHigher, _rviHigherOutput, CreateDataSeries, Period, SmoothType, SmoothFactor);
        }

        public override void Calculate(int index)
        {
            _rvi.Calculate(index);
            RVIHigher.ReflectHigherTF(_rviHigherOutput, Bars, _barsHigher, index, i => _rviHigher.Calculate(i));
        }
    }
}

dhnhuy's avatar
dhnhuy

Joined on 03.04.2023

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