Exemplo n.º 1
0
        public MassIndex(Bars bars, int period, int sumPeriod, string description)
            : base(bars, description)
        {
            base.FirstValidValue = Math.Max(period, sumPeriod);

            base.FirstValidValue = period;

            if (FirstValidValue > bars.Count || FirstValidValue < 0)
            {
                FirstValidValue = bars.Count;
            }
            if (bars.Count < period)
            {
                return;
            }

            EMACalculation em       = EMACalculation.Modern;
            DataSeries     hl       = bars.High - bars.Low;
            EMA            ema1     = EMA.Series(hl, period, em);
            EMA            ema2     = EMA.Series(ema1, period, em);
            DataSeries     emaRatio = ema1 / ema2;
            Sum            sumRatio = Sum.Series(emaRatio, sumPeriod);

            for (int bar = FirstValidValue; bar < bars.Count; bar++)
            {
                this[bar] = sumRatio[bar];
            }
        }
Exemplo n.º 2
0
        public SmoothedParabolic(Bars bars, int period, string description)
            : base(bars, description)
        {
            base.FirstValidValue = period * 3;
            EMACalculation em = EMACalculation.Modern;

            DataSeries o = EMA.Series(bars.Open, period, em);
            DataSeries h = EMA.Series(bars.High, period, em);
            DataSeries l = EMA.Series(bars.Low, period, em);
            DataSeries c = EMA.Series(bars.Close, period, em);

            Bars newBars = new Bars(bars);

            for (int bar = 0; bar < bars.Count; bar++)
            {
                newBars.Add(Date[bar], o[bar], h[bar], l[bar], c[bar], bars.Volume[bar]);
            }

            DataSeries SmoothedPar = Parabolic2.Series(newBars, 0.02, 0.02, 0.2);

            for (int bar = base.FirstValidValue; bar < bars.Count; bar++)
            {
                base[bar] = SmoothedPar[bar];
            }
        }
Exemplo n.º 3
0
        public DerivativeOscillator(DataSeries ds, int periodRSI, int periodEMA1, int periodEMA2, int periodSMA, string description)
            : base(ds, description)
        {
            base.FirstValidValue = Math.Max(Math.Max(Math.Max(periodEMA1, periodEMA2), periodSMA), periodRSI);
            if (FirstValidValue <= 1)
            {
                return;
            }

            EMACalculation em       = EMACalculation.Modern;
            RSI            rsi      = RSI.Series(ds, periodRSI);
            EMA            rsiEma1  = EMA.Series(rsi, periodEMA1, em);
            EMA            rsiEma2  = EMA.Series(rsiEma1, periodEMA2, em);
            DataSeries     rsiSma   = Community.Indicators.FastSMA.Series(rsiEma2, periodSMA);
            DataSeries     derivOsc = rsiEma2 - rsiSma;

            for (int bar = base.FirstValidValue; bar < ds.Count; bar++)
            {
                base[bar] = derivOsc[bar];
            }
        }
Exemplo n.º 4
0
        private ROCLists CalculateEMA9Day(ROCLists indicators, int index)
        {
            if (index < 11)
            {
                return(indicators);
            }

            if (index == 11)
            {
                var average = indicators.Take(11).Average(x => x.Quote.Close);
                indicators[index].SetEMA9Day(average);
                return(indicators);
            }

            var ema11Day = EMACalculation.CalculcateEMA(indicators.Select(x => x.EMA9Day == 0?x.Quote.Close:x.EMA9Day)
                                                        .ToList(), 9, index);

            indicators[index].SetEMA9Day(ema11Day);

            return(indicators);
        }
Exemplo n.º 5
0
        public MCO(Bars advBars, Bars decBars, int period1, int period2, string description)
            : base(advBars, description)
        {
            DataSeries     Advancers = advBars.Close;
            DataSeries     Decliners = decBars.Close;
            EMACalculation md        = EMACalculation.Modern;

            base.FirstValidValue = Math.Max(period1, period2) * 3;
            if (FirstValidValue <= 1)
            {
                return;
            }

            DataSeries AD_Diff = Advancers - Decliners;
            DataSeries MCO     = EMA.Series(AD_Diff, period1, md) - EMA.Series(AD_Diff, period2, md);

            for (int bar = base.FirstValidValue; bar < advBars.Count; bar++)
            {
                base[bar] = MCO[bar];
            }
        }
Exemplo n.º 6
0
        public MACDEx(DataSeries ds, int period1, int period2, string description) : base(ds, description)
        {
            base.FirstValidValue = Math.Max(period1, period2) * 3;

            if (FirstValidValue > ds.Count || FirstValidValue < 0)
            {
                FirstValidValue = ds.Count;
            }
            if (ds.Count < Math.Max(period1, period2))
            {
                return;
            }

            EMACalculation m    = EMACalculation.Modern;
            EMA            ema1 = EMA.Series(ds, period1, m);
            EMA            ema2 = EMA.Series(ds, period2, m);

            for (int bar = FirstValidValue; bar < ds.Count; bar++)
            {
                base[bar] = ema1[bar] - ema2[bar];
            }
        }
Exemplo n.º 7
0
        public MACDEx_Signal3(DataSeries ds, int period1, int period2, int period3, string description)
            : base(ds, description)
        {
            base.FirstValidValue = Math.Max(period3, Math.Max(period1, period2)) * 3;

            if (FirstValidValue > ds.Count || FirstValidValue < 0)
            {
                FirstValidValue = ds.Count;
            }
            if (ds.Count < Math.Max(period1, period2))
            {
                return;
            }

            EMACalculation m      = EMACalculation.Modern;
            MACDEx         macdex = new MACDEx(ds, period1, period2, description);
            EMA            ema    = EMA.Series(macdex, period3, m);

            for (int bar = FirstValidValue; bar < ds.Count; bar++)
            {
                base[bar] = ema[bar];
            }
        }