Avramis River free

by traderfxmaster007 in category Trend at 06/10/2021
  •  River is a visual identifications tool that can offer more information regarding market sentiment and clarity of price trend
  • Used to scan through markets to spot trending opportunities or warn of ranging conditions
  • Provides context to the price action and reflects support and resistance zones that can be used for trend following
  • Used in combination with other technical tools and techniques for execution purposes


  • Price action relative to the rivers
  • Crossover of rivers
  • Slope of rivers
  • Distance between rivers
  • Possible support and resistance levels


  • Price above the blue river
  • Blue river above the gold river
  • And the rivers strongly upward sloping


  • Price below the blue river
  • Blue river below the gold river
  • And the rivers strongly downward sloping

Weak Trend

  • Lower tops and lower bottoms
  • The weakness of the strength of the trend can be identified using the river
  • In a weak trend, we expect to see the rivers mixing the price not remaining completely below the blue river


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 cAlgo.API;
using cAlgo.API.Indicators;

namespace cAlgo
    [Cloud("Yellowhigh", "Yellowlow"), Cloud("UpperFilterLine", "LowerFilterLine"), Cloud("Bluelow", "Bluehigh")]
    [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class NeilRiver : Indicator

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

        [Parameter("Shift", DefaultValue = 20, MinValue = -100, MaxValue = 500)]
        public int Shift { get; set; }

        [Parameter("MA Type", DefaultValue = MovingAverageType.Exponential)]
        public MovingAverageType MAType { get; set; }

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

        [Output("UpperFilterLine", LineColor = "#FF5B0204")]
        public IndicatorDataSeries UpperBand { get; set; }

        [Output("LowerFilterLine", LineColor = "#FF5B0204")]
        public IndicatorDataSeries LowerBand { get; set; }

        [Output("Bluelow", LineColor = "#0071C1")]
        public IndicatorDataSeries BlueLower { get; set; }

        [Output("Bluehigh", LineColor = "#0071C1")]
        public IndicatorDataSeries BlueUpper { get; set; }

        [Output("Yellowhigh", LineColor = "#FFBEBF00")]
        public IndicatorDataSeries YellowUpper { get; set; }

        [Output("Yellowlow", LineColor = "#FFBEBF00")]
        public IndicatorDataSeries YellowLower { get; set; }

        private MovingAverage hi;
        private MovingAverage lo;
        private MovingAverage high;
        private MovingAverage low;
        private MovingAverage Yellowhigh;
        private MovingAverage Yellowlow;

        protected override void Initialize()
            hi = Indicators.MovingAverage(Bars.HighPrices, Period, MAType);
            lo = Indicators.MovingAverage(Bars.LowPrices, Period, MAType);
            high = Indicators.MovingAverage(Bars.HighPrices, Period, MAType);
            low = Indicators.MovingAverage(Bars.LowPrices, Period, MAType);
            Yellowhigh = Indicators.MovingAverage(Bars.HighPrices, Period, MAType);
            Yellowlow = Indicators.MovingAverage(Bars.LowPrices, Period, MAType);

        public override void Calculate(int index)

            UpperBand[index] = hi.Result[index] * (1 + Deviation / 100);
            LowerBand[index] = lo.Result[index] * (1 - Deviation / 100);

            BlueUpper[index] = high.Result[index];
            BlueLower[index] = low.Result[index];

            YellowUpper[index + Shift] = high.Result[index];
            YellowLower[index + Shift] = low.Result[index];