Category Volatility  Published on 19/05/2023

Deviation Oscillator

Description

The Deviation Oscillator, as a sentiment volatility oscillator, represents the difference between the price and the price simple moving average, normalized within the selected range.

The indicator positive difference value in the indicator shows bullish market sentiment, while a negative difference value indicates bearish market sentiment.


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

namespace cAlgo
{
    [Levels(0)]
    [Indicator(IsOverlay = false, AccessRights = AccessRights.None)]
    public class mDeviationOscillator : Indicator
    {
        [Parameter("Smooth Type (sma)", DefaultValue = MovingAverageType.Simple)]
        public MovingAverageType inpSmoothType { get; set; }
        [Parameter("Smooth Period (10)", DefaultValue = 10, MinValue = 1)]
        public int inpPeriodSmooth { get; set; }
        [Parameter("HH/LL Period (20)", DefaultValue = 20, MinValue = 2)]
        public int inpPeriodHHLL { get; set; }

        [Output("Deviation Oscillator", LineColor = "Black", PlotType = PlotType.Line, LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries outDeviationOscillator { get; set; }
        
        private MovingAverage _pricesmooth;
        private IndicatorDataSeries _raw, _hh, _ll, _deviation;
        

        protected override void Initialize()
        {
            _pricesmooth = Indicators.MovingAverage(Bars.ClosePrices, inpPeriodSmooth, inpSmoothType);
            _raw = CreateDataSeries();
            _hh = CreateDataSeries();
            _ll = CreateDataSeries();
            _deviation = CreateDataSeries();
        }

        public override void Calculate(int i)
        {
            _raw[i] = Bars.ClosePrices[i] - _pricesmooth.Result[i];
            _hh[i] = i>inpPeriodHHLL ? _raw.Maximum(inpPeriodHHLL) : _raw[i];
            _ll[i] = i>inpPeriodHHLL ? _raw.Minimum(inpPeriodHHLL) : _raw[i];
            _deviation[i] = _hh[i] != _ll[i] ? (200 / (_hh[i] - _ll[i])) * (_raw[i] - _ll[i]) - 100.0 : 0;
            
            outDeviationOscillator[i] = _deviation[i];
        }
    }
}

mfejza's avatar
mfejza

Joined on 25.01.2022

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