Volume Spread Pressure indicator free

by mfejza in category Oscilator at 24/03/2023
Description

Another sentiment confirmation indicator, using price spread and volume.

Notification Publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section you may use the Copyright Infringement Notification form to submit a claim.
Formula / Source Code
Language: C#
Trading Platform: cAlgocTrader
using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo
{
    [Levels(0)]
    [Indicator(AccessRights = AccessRights.None)]
    public class mVolumeSpreadPressure : Indicator
    {
        [Parameter("Volume Smooth Period (5)", DefaultValue = 5)]
        public int inpPeriodVolumeSmooth { get; set; }

        [Output("Volume Spread Pressure", LineColor = "Gray", PlotType = PlotType.Line, LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries outVSP { get; set; }
        [Output("Strong Bullish", PlotType = PlotType.Histogram, LineColor = "ForestGreen", Thickness = 3)]
        public IndicatorDataSeries outStrongBullish { get; set; }
        [Output("Weak Bullish", PlotType = PlotType.Histogram, LineColor = "LawnGreen", Thickness = 3)]
        public IndicatorDataSeries outWeakBullish { get; set; }
        [Output("Strong Bearish", PlotType = PlotType.Histogram, LineColor = "Red", Thickness = 3)]
        public IndicatorDataSeries outStrongBearish { get; set; }
        [Output("Weak Bearish", PlotType = PlotType.Histogram, LineColor = "DarkSalmon", Thickness = 3)]
        public IndicatorDataSeries outWeakBearish { get; set; }
        
        private IndicatorDataSeries _delta;
        private MovingAverage _volavg;

        protected override void Initialize()
        {
            _delta = CreateDataSeries();
            _volavg = Indicators.MovingAverage(Bars.TickVolumes, inpPeriodVolumeSmooth, MovingAverageType.Simple);
        }

        public override void Calculate(int i)
        {
            _delta[i] = Bars.ClosePrices[i] - Bars.ClosePrices[i-1];
            outStrongBullish[i] = _delta[i] > 0 && _volavg.Result[i] > _volavg.Result[i-1] ? _delta[i] : 0;
            outWeakBullish[i] = _delta[i] > 0 && _volavg.Result[i] < _volavg.Result[i-1] ? _delta[i] : 0;
            outStrongBearish[i] = _delta[i] < 0 && _volavg.Result[i] > _volavg.Result[i-1] ? _delta[i] : 0;
            outWeakBearish[i] = _delta[i] < 0 && _volavg.Result[i] < _volavg.Result[i-1] ? _delta[i] : 0;
            
            outVSP[i] = _delta[i];
        }
    }
}
Comments
5