InSync Index indicator free

by mfejza in category Oscilator at 08/09/2022
Description

Insync Index, by Norm North, is a consensus indicator. It uses RSI, MACD, MFI, DPO, ROC, Stoch, CCI and %B to calculate a composite signal. Basically, this index shows that when a majority of underlying indicators is in sync, a turning point is near.

There are couple of ways to use this indicator.
- Buy when crossing up 5, sell when crossing down 95.
- Market is typically bullish when index is above 50, bearish when below 50. This can be a great confirmation signal for price action + trend lines .

Also, since this is typical oscillator, look for divergences between price and index.

Levels 75/25 are early warning levels. Note that, index > 75 (and less than 95) should be considered very bullish and index below 25 (but above 5) as very bearish . Levels 95/5 are equivalent to traditional OB/OS levels.

The various values of the underlying components can be tuned via options page. I have also provided an option to color bars based on the index value.

More info: The Insync Index by Norm North, TASC Jan 1995

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

namespace cAlgo
{
    [Levels(25, 75, 5, 95)]
    [Cloud("LimitUp1", "LimitDn1", FirstColor = "Red", Opacity = 0.1, SecondColor = "Red")]
    [Cloud("LimitUp2", "LimitDn2", FirstColor = "Green", Opacity = 0.1, SecondColor = "Aqua")]
    [Indicator(IsOverlay = false, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class mInsync : Indicator
    {
        [Parameter("Period CCI (14):", DefaultValue = 14)]
        public int prmPeriodCCI { get; set; }
        [Parameter("Period Bollinger (20):", DefaultValue = 20)]
        public int prmPeriodBollinger { get; set; }
        [Parameter("Deviation Bollinger (2):", DefaultValue = 2.0)]
        public double prmDeviationBollinger { get; set; }
        [Parameter("Period RSI (14):", DefaultValue = 14)]
        public int prmPeriodRSI { get; set; }
        [Parameter("Period Stoch (14):", DefaultValue = 14)]
        public int prmPeriodStoch { get; set; }
        [Parameter("Period Stoch D (3):", DefaultValue = 3)]
        public int prmPeriodStochD { get; set; }
        [Parameter("Period Stoch K (1):", DefaultValue = 1)]
        public int prmPeriodStochK { get; set; }
        [Parameter("Period MFI (14):", DefaultValue = 20)]
        public int prmPeriodMFI { get; set; }
        [Parameter("Period EOM (10):", DefaultValue = 10)]
        public int prmPeriodEOM { get; set; }
        [Parameter("Period ROC (10):", DefaultValue = 10)]
        public int prmPeriodROC { get; set; }
        [Parameter("Period DPO (18):", DefaultValue = 18)]
        public int prmPeriodDPO { get; set; }
        [Parameter("Period MACD Fast (12):", DefaultValue = 12)]
        public int prmPeriodMACDFast { get; set; }
        [Parameter("Period MACD Slow (26):", DefaultValue = 26)]
        public int prmPeriodMACDSlow { get; set; }
        [Parameter("Period MACD Signal (9):", DefaultValue = 9)]
        public int prmPeriodMACDSignal { get; set; }

        [Output("Main", LineColor = "Black", PlotType = PlotType.Line, LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries outInSync { get; set; }
        [Output("LimitUp1", LineColor = "Transparent", PlotType = PlotType.Line, LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries LimitUp1 { get; set; }
        [Output("LimitDn1", LineColor = "Transparent", PlotType = PlotType.Line, LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries LimitDn1 { get; set; }
        [Output("LimitUp2", LineColor = "Transparent", PlotType = PlotType.Line, LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries LimitUp2 { get; set; }
        [Output("LimitDn2", LineColor = "Transparent", PlotType = PlotType.Line, LineStyle = LineStyle.Solid, Thickness = 1)]
        public IndicatorDataSeries LimitDn2 { get; set; }

        private CommodityChannelIndex _cci;
        private BollingerBands _bb;
        private RelativeStrengthIndex _rsi;
        private StochasticOscillator _stoc;
        private MoneyFlowIndex _mfi;
        private EaseOfMovement _eom;
        private PriceROC _roc;
        private DetrendedPriceOscillator _dpo;
        private MacdCrossOver _macd;
        private IndicatorDataSeries _cci_res;
        private IndicatorDataSeries _bbres;
        private IndicatorDataSeries _bb_res;
        private IndicatorDataSeries _rsi_res;
        private IndicatorDataSeries _stoc_res;
        private IndicatorDataSeries _mfi_res;
        private IndicatorDataSeries _eom_res;
        public IndicatorDataSeries _roc_res;
        public IndicatorDataSeries _dpo_res;
        public IndicatorDataSeries _macd_res;


        protected override void Initialize()
        {
            _cci = Indicators.CommodityChannelIndex(prmPeriodCCI);
            _bb = Indicators.BollingerBands(Bars.ClosePrices, prmPeriodBollinger, prmDeviationBollinger, MovingAverageType.Simple);
            _rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, prmPeriodRSI);
            _stoc = Indicators.StochasticOscillator(prmPeriodStoch, prmPeriodStochD, prmPeriodStochK, MovingAverageType.Simple);
            _mfi = Indicators.MoneyFlowIndex(prmPeriodMFI);
            _eom = Indicators.EaseOfMovement(prmPeriodEOM, MovingAverageType.Simple);
            _roc = Indicators.PriceROC(Bars.ClosePrices, prmPeriodROC);
            _dpo = Indicators.DetrendedPriceOscillator(Bars.ClosePrices, 18, MovingAverageType.Simple);
            _macd = Indicators.MacdCrossOver(prmPeriodMACDSlow, prmPeriodMACDFast, prmPeriodMACDSignal);

            _cci_res = CreateDataSeries();
            _bbres = CreateDataSeries();
            _bb_res = CreateDataSeries();
            _rsi_res = CreateDataSeries();
            _stoc_res = CreateDataSeries();
            _mfi_res = CreateDataSeries();
            _eom_res = CreateDataSeries();
            _roc_res = CreateDataSeries();
            _dpo_res = CreateDataSeries();
            _macd_res = CreateDataSeries();
        }

        public override void Calculate(int index)
        {
            if (index < 3)
            {
                LimitUp1[index] = 95;
                LimitDn1[index] = 50;
                LimitUp2[index] = 50;
                LimitDn2[index] = 5;
                outInSync[index] = 50;
                return;
            }
            _cci_res[index] = (_cci.Result[index] > 100.0 ? +5.0 : (_cci.Result[index] < -100.0 ? -5.0 : 0.0));
            _bbres[index] = (Bars.ClosePrices[index] - _bb.Bottom[index]) / (_bb.Top[index] - _bb.Bottom[index]);
            _bb_res[index] = (_bbres[index] < 0.05 ? -5 : (_bbres[index] > 0.95 ? +5 : 0));
            _rsi_res[index] = (_rsi.Result[index] > 70 ? 5 : (_rsi.Result[index] < 30 ? -5 : 0));
            _stoc_res[index] = (_stoc.PercentD[index] > 80 ? 5 : (_stoc.PercentD[index] < 20 ? -5 : 0)) + (_stoc.PercentK[index] > 80 ? 5 : (_stoc.PercentK[index] < 20 ? -5 : 0));
            _mfi_res[index] = (_mfi.Result[index] > 80 ? 5 : (_mfi.Result[index] < 20 ? -5 : 0));
            _eom_res[index] = (_eom.Result[index] > 0 && _eom.Result[index] > _eom.Result[index - 1] ? 5 : (_eom.Result[index] < 0 && _eom.Result[index] < _eom.Result[index - 1] ? -5 : 0));
            _roc_res[index] = (_roc.Result[index] > 0 && _roc.Result[index] > _roc.Result[index - 1] ? 5 : (_roc.Result[index] < 0 && _roc.Result[index] < _roc.Result[index - 1] ? -5 : 0));
            _dpo_res[index] = (_dpo.Result[index] > 0 && _dpo.Result[index] > _dpo.Result[index - 1] ? 5 : (_dpo.Result[index] < 0 && _dpo.Result[index] < _dpo.Result[index - 1] ? -5 : 0));
            _macd_res[index] = (_macd.MACD[index] > 0 && _macd.MACD[index] > _macd.MACD[index - 1] ? 5 : (_macd.MACD[index] < 0 && _macd.MACD[index] < _macd.MACD[index - 1] ? -5 : 0));

            outInSync[index] = 50 + _cci_res[index] + _bb_res[index] + _rsi_res[index] + _stoc_res[index] + _mfi_res[index] + _eom_res[index] + _roc_res[index] + _dpo_res[index];

            LimitUp1[index] = 95;
            LimitDn1[index] = 50;
            LimitUp2[index] = 50;
            LimitDn2[index] = 5;
        }
    }
}
Comments

galvindai22 - September 09, 2022 @ 10:09

good sharing!

 This article will bring you many cool things to make the most of it   how to screenshot on mac

rothypnotic - September 09, 2022 @ 10:31

The various values of the underlying components can be adjusted via the options page. I've also included the option to color bars based on the index value. basket random
 

junealexis001 - September 12, 2022 @ 11:50

Interesting post i love it keep posting more!  https://paintersfresno.com

mikle.jk2009 - September 20, 2022 @ 16:11

Hi. I always buy essays from essay help. This service is very good at writing different essays. They are attentive to their clients and do exactly what they need to do.

yangruflo - September 21, 2022 @ 03:29

I hope we can run same command on different mark up language as well.

https://www.commercialcleaningwellington.co.nz/

yangruflo - October 03, 2022 @ 12:20

Can we differentiate indicators by categories? It would mean a lot to access it all simply.

how to clean your place

warrencarney6175424 - October 14, 2022 @ 10:06

Great sharing! I want to read more things about it Idle mining empire

yangruflo - October 31, 2022 @ 06:49

Is this the same one I found in precisiontradingsystem's url? Even the graph looks the same.

west auckland electrician

0