sclass JTickerView is Swingable { settable S coin; settable TickerSequence ticker; settable AbstractTickerPainter painter; settable ImageSurface isTicker; settable G22TradingStrategy strategy; void makePainter { painter = new TickerGraphPainter; painter.w(300).h(200); painter.ticker(ticker); /*painter.horizontalRange( transformBetweenDoubleRanges (varTimeZoom get) (zeroToOne) (painter horizontalRangeForTicker ticker) zoomedRange <- transformBetweenDoubleRanges (varTimeZoom get) (zeroToOne) (toDoubleRange < ticker timeRange) painter verticalRange < painter verticalRangeForTicker (ticker subSequenceByTimestamps (lround < zoomedRange start) (lround < zoomedRange end)) painter percentLineDistance percentLineDistance*/ //painter.additionalObjects.add(g -> painter drawTimeGrid(g, 60)); if (strategy != null) for (p : strategy.closedPositions()) { painter.positions.add(new TradingPosition .openingTime(p.openingTime()) .closingTime.(p.closingTime()) .openingPrice(p.openingPrice()) .closingPrice(p.closingPrice()) .isLong(p.direction > 0), .leverage(p.leverage)); } //painter addVerticalLine < backTest latestAllowedOpeningTime } cachedVisual jCenteredSection(coin + " ticker", jscroll_borderless(isTicker)); }