Category Other  Published on 21/09/2021

reversal bar

Description

New Update (21/09/2021) Better  Performance

Indicator has been /* UPGRADED/*, with the option to determine your own period for reversal signals, and a build in zigzag with customable periods 

just a simple indicator to help those who have a hard time entering positions, not necessarily a trend base indicator, it' s recommended to use other indicators as well(add it to your stra)

in this caption other indicators are being used as well(indicators with their rightful owner), also not necessarily recommended 

 

 

 

purple for sell & blue for buy 

 

// if you have any feedbacks leave them in the comment section   

also before use, it is better to set your candle color and outline on transparent 

 


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

namespace cAlgo
{
    [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class Re_reversalBars : Indicator
    {
        [Parameter("Thickness", Group = "thickness sett", DefaultValue = 3)]
        public int thi { get; set; }
        [Parameter("Bullish", Group = "Colors sett", DefaultValue = "Blue")]
        public string colo1 { get; set; }
        [Parameter("Bearish", Group = "Colors sett", DefaultValue = "Purple")]
        public string colo2 { get; set; }
        [Parameter("others", Group = "Colors sett", DefaultValue = "Black")]
        public string colo3 { get; set; }
        [Parameter("others", Group = "Colors sett", DefaultValue = "Gray")]
        public string colo4 { get; set; }
        [Parameter("Sycle Periode", DefaultValue = 3, MinValue = 0)]
        public int P_periode { get; set; }
        [Parameter("Zigzag Periode", DefaultValue = 7, MinValue = 0)]
        public int Z_zigPeriode { get; set; }


        private int comfirmer_2;
        private DateTime starts;


        protected override void Initialize()
        {
            comfirmer_2 = 1;
        }

        private int Z_zigInitialize()
        {
            int Z_Result = 0;
            double zigHigh = Functions.Maximum(Bars.HighPrices, Z_zigPeriode);
            if (Bars.HighPrices.LastValue >= zigHigh)
                Z_Result = 1;
            else
            {
                double zigLow = Functions.Minimum(Bars.LowPrices, Z_zigPeriode);
                if (Bars.LowPrices.LastValue <= zigLow)
                    Z_Result = -1;
            }
            return Z_Result;
        }



        private DateTime cycle;
        public override void Calculate(int index)
        {
            starts = Bars.OpenTimes[index - 1];
            int i = 1;
            while (i < P_periode)
            {
                if (Bars.OpenTimes[index - i] == cycle)
                    return;
                else
                {
                    Chart.SetBarColor(index - 1, color: colo4);
                }
                i++;
            }

            int zig_ = Z_zigInitialize();
            switch (comfirmer_2)
            {
                case -1:
                    bool T_down = Bars.ClosePrices[index - 1] < Bars.LowPrices[index - 2] && Bars.ClosePrices[index - 1] < Bars.LowPrices[index - 3];
                    if (T_down && zig_ == -1)
                    {
                        cycle = Bars.OpenTimes[index - 1];
                        comfirmer_2 = 1;
                        Chart.SetBarColor(index - 1, color: colo2);
                    }
                    else
                    {
                        if (Bars.HighPrices[index - 1] >= Bars.ClosePrices[index - 2] || Bars.LowPrices[index - 1] <= Bars.ClosePrices[index - 2])
                            Chart.SetBarColor(index - 1, color: colo3);
                    }
                    break;
                case 1:
                    bool T_up = Bars.ClosePrices[index - 1] > Bars.HighPrices[index - 2] && Bars.ClosePrices[index - 1] > Bars.HighPrices[index - 3];
                    if (T_up && zig_ == 1)
                    {
                        cycle = Bars.OpenTimes[index - 1];
                        comfirmer_2 = -1;
                        Chart.SetBarColor(index - 1, color: colo1);
                    }
                    else
                    {
                        if (Bars.HighPrices[index - 1] >= Bars.ClosePrices[index - 2] || Bars.LowPrices[index - 1] <= Bars.ClosePrices[index - 2])
                            Chart.SetBarColor(index - 1, color: colo3);
                    }
                    break;
            }
        }
    }
}


D.
d.deel

Joined on 06.01.2021

  • Distribution: Free
  • Language: C#
  • Trading platform: cTrader Automate
  • File name: Re_reversal Bars.algo
  • Rating: 0
  • Installs: 3422
  • Modified: 13/10/2021 09:54
Comments
Log in to add a comment.
D.
d.deel · 3 years ago

Hi, sorry but there isn't any strategy based on this indicator, but it can help with better viewing of the market, or/and can serve as an indication to enter or close a position depending on the comfigurations you've set

 

PS: this indicator is inspired from a simple video seen on Youtube 

CT
ctid2407925 · 3 years ago

Hi, Thank you for sharing, there is any post or something that explains the strategy that your indicator follows to mark a buy or sell candle?. Thanks

AM
amirreza.mrz · 3 years ago

Thanks a lot. ;)

D.
d.deel · 3 years ago

Hi, thank you amirreza.mrz  

Because of peformance reasons, there will not be an alarm type of systeme

As for personalyze editing in the link bellow, there's a discussion about the subject, or a way

similar on how it can be done

 

https://ctrader.com/forum/cbot-support/5493

 

Place the solution in the "If" statements on the 75th and 89th lines and it should 

normaly be it. :)

AM
amirreza.mrz · 3 years ago

Hello
First of all, thanks for this great indicator.
Is it possible to add a alarm to it or guide me to do by myself?