zignale indicator free

by ctid4935132 in category Trend at 23/09/2022
Description

//@version=4

//By Glaz, Modified

//

study("QQE MOD")

RSI_Period = input(6, title='RSI Length')

SF = input(5, title='RSI Smoothing')

QQE = input(3, title='Fast QQE Factor')

ThreshHold = input(3, title="Thresh-hold")

//

 

src = input(close, title="RSI Source")

//

 

//

Wilders_Period = RSI_Period * 2 - 1


 

Rsi = rsi(src, RSI_Period)

RsiMa = ema(Rsi, SF)

AtrRsi = abs(RsiMa[1] - RsiMa)

MaAtrRsi = ema(AtrRsi, Wilders_Period)

dar = ema(MaAtrRsi, Wilders_Period) * QQE

 

longband = 0.0

shortband = 0.0

trend = 0

 

DeltaFastAtrRsi = dar

RSIndex = RsiMa

newshortband = RSIndex + DeltaFastAtrRsi

newlongband = RSIndex - DeltaFastAtrRsi

longband := RSIndex[1] > longband[1] and RSIndex > longband[1] ?

   max(longband[1], newlongband) : newlongband

shortband := RSIndex[1] < shortband[1] and RSIndex < shortband[1] ?

   min(shortband[1], newshortband) : newshortband

cross_1 = cross(longband[1], RSIndex)

trend := cross(RSIndex, shortband[1]) ? 1 : cross_1 ? -1 : nz(trend[1], 1)

FastAtrRsiTL = trend == 1 ? longband : shortband

////////////////////


 

length = input(50, minval=1, title="Bollinger Length")

mult = input(0.35, minval=0.001, maxval=5, step=0.1, title="BB Multiplier")

basis = sma(FastAtrRsiTL - 50, length)

dev = mult * stdev(FastAtrRsiTL - 50, length)

upper = basis + dev

lower = basis - dev

color_bar = RsiMa - 50 > upper ? #00c3ff : RsiMa - 50 < lower ? #ff0062 : color.gray


 

//

// Zero cross

QQEzlong = 0

QQEzlong := nz(QQEzlong[1])

QQEzshort = 0

QQEzshort := nz(QQEzshort[1])

QQEzlong := RSIndex >= 50 ? QQEzlong + 1 : 0

QQEzshort := RSIndex < 50 ? QQEzshort + 1 : 0

//  

 

Zero = hline(0, color=color.white, linestyle=hline.style_dotted, linewidth=1)

 

////////////////////////////////////////////////////////////////

 

RSI_Period2 = input(6, title='RSI Length')

SF2 = input(5, title='RSI Smoothing')

QQE2 = input(1.61, title='Fast QQE2 Factor')

ThreshHold2 = input(3, title="Thresh-hold")

 

src2 = input(close, title="RSI Source")

//

 

//

Wilders_Period2 = RSI_Period2 * 2 - 1


 

Rsi2 = rsi(src2, RSI_Period2)

RsiMa2 = ema(Rsi2, SF2)

AtrRsi2 = abs(RsiMa2[1] - RsiMa2)

MaAtrRsi2 = ema(AtrRsi2, Wilders_Period2)

dar2 = ema(MaAtrRsi2, Wilders_Period2) * QQE2

longband2 = 0.0

shortband2 = 0.0

trend2 = 0

 

DeltaFastAtrRsi2 = dar2

RSIndex2 = RsiMa2

newshortband2 = RSIndex2 + DeltaFastAtrRsi2

newlongband2 = RSIndex2 - DeltaFastAtrRsi2

longband2 := RSIndex2[1] > longband2[1] and RSIndex2 > longband2[1] ?

   max(longband2[1], newlongband2) : newlongband2

shortband2 := RSIndex2[1] < shortband2[1] and RSIndex2 < shortband2[1] ?

   min(shortband2[1], newshortband2) : newshortband2

cross_2 = cross(longband2[1], RSIndex2)

trend2 := cross(RSIndex2, shortband2[1]) ? 1 : cross_2 ? -1 : nz(trend2[1], 1)

FastAtrRsi2TL = trend2 == 1 ? longband2 : shortband2


 

//

// Zero cross

QQE2zlong = 0

QQE2zlong := nz(QQE2zlong[1])

QQE2zshort = 0

QQE2zshort := nz(QQE2zshort[1])

QQE2zlong := RSIndex2 >= 50 ? QQE2zlong + 1 : 0

QQE2zshort := RSIndex2 < 50 ? QQE2zshort + 1 : 0

//  

 

hcolor2 = RsiMa2 - 50 > ThreshHold2 ? color.silver :

   RsiMa2 - 50 < 0 - ThreshHold2 ? color.silver : na

plot(FastAtrRsi2TL - 50, title='QQE Line', color=color.white, transp=0, linewidth=2)

plot(RsiMa2 - 50, color=hcolor2, transp=50, title='Histo2', style=plot.style_columns)

 

Greenbar1 = RsiMa2 - 50 > ThreshHold2

Greenbar2 = RsiMa - 50 > superiore

 

Redbar1 = RsiMa2 - 50 < 0 - ThreshHold2

Redbar2 = RsiMa - 50 < inferiore

trama(Greenbar1 e Greenbar2 == 1 ? RsiMa2 - 50 : na, title="QQE Up", style=plot.style_columns, color=#00c3ff, transp=0)

trama(Redbar1 e Redbar2 == 1 ? RsiMa2 - 50 : na, title="QQE Down", style=plot.style_columns, color=#ff0062, transp=0)


 

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.Indicators
{
    [Levels(0)]
    [Indicator(AccessRights = AccessRights.None)]
    public class ElliotOscillator : Indicator
    {
        private SimpleMovingAverage _fastSma;
        private SimpleMovingAverage _slowSma;
        private SimpleMovingAverage _sma100;
        private SimpleMovingAverage _sma200;
        private SimpleMovingAverage _sma20;

        private double _d;
        private bool _upTrend;
        private bool _neutral;
        private IndicatorDataSeries _elliot;


        [Parameter]
        public DataSeries Source { get; set; }

        [Parameter("FastPeriod", DefaultValue = 5)]
        public int FastPeriod { get; set; }
        
        [Parameter("SlowPeriod", DefaultValue = 34)]
        public int SlowPeriod { get; set; }

        [Output("UpTrend", Color = Colors.Green, PlotType = PlotType.Histogram, Thickness = 2)]
        public IndicatorDataSeries UpTrend { get; set; }
        [Output("DownTrend", Color = Colors.Red, PlotType = PlotType.Histogram, Thickness = 2)]
        public IndicatorDataSeries DownTrend { get; set; }
        [Output("Neutral", Color = Colors.Gray, PlotType = PlotType.Histogram, Thickness = 2)]
        public IndicatorDataSeries Neutral { get; set; }
        
        [Output("Line", Color = Colors.Red)]
        public IndicatorDataSeries Line { get; set; }

        protected override void Initialize()
        {
            _fastSma = Indicators.SimpleMovingAverage(Source, FastPeriod);
            _slowSma = Indicators.SimpleMovingAverage(Source, SlowPeriod);
            _sma100 = Indicators.SimpleMovingAverage(Source, 100);
            _sma200 = Indicators.SimpleMovingAverage(Source, 200);
            _sma20 = Indicators.SimpleMovingAverage(Source, 20);
            _elliot = CreateDataSeries();

        }
        public override void Calculate(int index)
        {
            if (index < 3)
                return;

            _elliot[index] = _fastSma.Result[index] - _slowSma.Result[index];
            Line[index] = _fastSma.Result[index - 3] - _slowSma.Result[index - 3];

            if (_sma100.Result.LastValue > _sma200.Result.LastValue
                && _sma20.Result.LastValue >_sma100.Result.LastValue)
            {
                UpTrend[index] = _elliot[index];
                DownTrend[index] = double.NaN;
                Neutral[index] = double.NaN;
            }
            else if (_sma100.Result.LastValue < _sma200.Result.LastValue
                && _sma20.Result.LastValue < _sma100.Result.LastValue)
            {
                DownTrend[index] = _elliot[index];
                UpTrend[index] = double.NaN;
                Neutral[index] = double.NaN;
            }
            else
            {
                Neutral[index] = _elliot[index];
                UpTrend[index] = double.NaN;
                DownTrend[index] = double.NaN;
            }
        }
    }
}
Comments
0