public override SignalAndValue Process(Candle candle) { var newValue = candle.CloseAsk; var smaValue = _sma.Process(newValue, candle.IsComplete == 1); var buff = Buffer; if (candle.IsComplete == 0) { buff = Buffer.ToList(); } buff.Add(newValue); if (buff.Count > Length) { buff.RemoveAt(0); } var std = buff.Select(t1 => t1 - smaValue.Value).Select(t => t * t).Sum(); var ret = new SignalAndValue((float)Math.Sqrt((double)(std / Length)), IsFormed); CurrentValue = ret.Value; return(ret); }
public SignalAndValue Process(float value, bool isComplete) { var buff = Buffer; if (!isComplete) { // Take copy buff = Buffer.ToList(); } buff.Add(value); if (buff.Count > Length) { buff.RemoveAt(0); } SignalAndValue ret; ret = new SignalAndValue(Buffer.Sum() / Length, IsFormed); CurrentValue = ret.Value; return(ret); }