public override void ApplyTo(StockSerie stockSerie) { FloatSerie rocSerie = ( stockSerie.CalculateRateOfRise((int)this.parameters[0]) + stockSerie.CalculateRateOfDecline((int)this.parameters[0]) + stockSerie.CalculateRateOfRise((int)this.parameters[1]) + stockSerie.CalculateRateOfDecline((int)this.parameters[1]) + stockSerie.CalculateRateOfRise((int)this.parameters[2]) + stockSerie.CalculateRateOfDecline((int)this.parameters[2])).CalculateEMA((int)this.parameters[3]); FloatSerie signalSerie = rocSerie.CalculateEMA((int)this.parameters[4]); this.series[0] = rocSerie; this.Series[0].Name = this.Name; this.series[1] = signalSerie; this.Series[1].Name = this.Name; // Detecting events this.CreateEventSeries(stockSerie.Count); for (int i = 2; i < stockSerie.Count; i++) { this.eventSeries[0][i] = (rocSerie[i - 2] < rocSerie[i - 1] && rocSerie[i - 1] > rocSerie[i]); this.eventSeries[1][i] = (rocSerie[i - 2] > rocSerie[i - 1] && rocSerie[i - 1] < rocSerie[i]); this.eventSeries[2][i] = (rocSerie[i] > signalSerie[i]); this.eventSeries[3][i] = (rocSerie[i] < signalSerie[i]); this.eventSeries[4][i] = (rocSerie[i] >= 0); this.eventSeries[5][i] = (rocSerie[i] < 0); this.eventSeries[6][i] = (rocSerie[i] > signalSerie[i]) && (rocSerie[i - 1] < signalSerie[i - 1]); this.eventSeries[7][i] = (rocSerie[i] < signalSerie[i]) && (rocSerie[i - 1] > signalSerie[i - 1]); } }