Libraryless. Click here for Pure Java version (18685L/108K).
// A is the value type we get for each candle asclass CandleBasedIndicator<A> extends MetaWithChangeListeners { replace Candle with TradingCandle. // Number of candles we need to look back to settable int length = 20; event candleAdded(Candle candle); event candleRemoved(Candle candle); // get current indicator value abstract A value aka get(); simplyCached SimpleCircularBuffer<Candle> candles() { ret new SimpleCircularBuffer(candlesNeeded()); } int candlesNeeded() { ret length; } Candle lastCandle() { ret candles().last(); } selfType feed(TradingCandleMaker candleMaker) { if (candleMaker != null) // TODO: cut list down first for (candle : candleMaker.candles()) add(candle); this; } selfType add aka feed(Iterable<TradingCandle> candles) { fOr (candle : candles) add(candle); this; } // Can add candles twice, will automatically ignore the second time selfType add aka feed(TradingCandle candle) { if (candle.ongoing()) this; if (lastCandle() != null && lessOrEq(candle.startTime, lastCandle().startTime)) this; while (candles().size() > max(length-1, 0)) candleRemoved(candles().remove()); candles().add(candle); candleAdded(candle); this; } void reset { resetFields(this, "candles_cache"); } selfType emptyClone() { var clone = shallowNonTransientClone(this); clone.reset(); ret clone; } }
Began life as a copy of #1036443
download show line numbers debug dex old transpilations
Travelled to 2 computer(s): mowyntqkapby, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1036446 |
| Snippet name: | CandleBasedIndicator |
| Eternal ID of this version: | #1036446/17 |
| Text MD5: | 81176d4657b89ebc90f10e1ae0b33e27 |
| Transpilation MD5: | 7c072bf0a0037aeb9f4fcfaf87d30574 |
| Author: | stefan |
| Category: | javax / trading |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2023-03-28 19:33:05 |
| Source code size: | 1545 bytes / 59 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 763 / 997 |
| Version history: | 16 change(s) |
| Referenced in: | #1003674 - Standard Classes + Interfaces (LIVE continued in #1034167) |