Warning: session_start(): open(/var/lib/php/sessions/sess_onms8la56mqettrhife2vvjvrd, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51

Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
persistable sclass ATR extends CandleBasedIndicator { // For first phase new Average initialAverage; // For second phase settable SmoothedMovingAverage sma; // TR value settable double tr = Double.NaN; // ATR value settable double atr = Double.NaN; // ATR values collected as ticker gettable TickerSequence atrHistory = new TickerSequence("ATR"); Double value() { ret atr(); } *(double *length) {} { length = 14; onCandleAdded((IVF1) candle -> { var x = candle.move(); var u = max(x, 0.0); var d = neg(min(x, 0.0)); // Calculate TR if (candles().size() >= 2) tr(trueRange(ll(candles().nextToLast(), candles().last()))); if (initialAverage.count() < length()) initialAverage.add(tr); else if (sma == null) { sma(new SmoothedMovingAverage(length())); sma().add(initialAverage!); } else sma().add(tr); atr(sma()!); long time = candle.endTime().toLong(); atrHistory?.addIfPriceChanged(atr, time); }); } TickerSequence asTicker(L candles) { feed(candles); ret atrHistory; } void reset :: after { resetFields(this, "initialAverage sma tr atr atrHistory"); } }