persistable sclass SMAIndicator extends CandleBasedIndicator { // The SMA calculator settable new SmoothedMovingAverage sma; // SMA values collected as ticker gettable TickerSequence history = new TickerSequence("SMA"); // SMA value double value = Double.NaN; Double value() { ret value; } *(int *length) {} { length = 7; onCandleAdded((IVF1) candle -> { sma.add(candle.close()); value = sma!; long time = candle.endTime().toLong(); history?.addIfPriceChanged(value, time); }); } TickerSequence asTicker(L candles) { feed(candles); ret history; } void reset :: after { resetFields(this, "value history"); sma?.reset(); } }