Class MovingAverageRenderer

java.lang.Object
com.arbergashi.charts.render.BaseRenderer
com.arbergashi.charts.render.analysis.MovingAverageRenderer
All Implemented Interfaces:
ChartRenderer

public final class MovingAverageRenderer extends BaseRenderer

MovingAverageRenderer - Simple Moving Average (SMA) Overlay

Enterprise-grade moving average renderer with configurable window size, pixel decimation for large datasets, and dashed line styling.

Features:

  • SMA Algorithm: Rolling window average calculation
  • Configurable Window: Adjustable averaging period (default: 10)
  • Pixel Decimation: Automatic downsampling for large datasets
  • Dashed Style: Distinctive visual appearance with dash pattern
  • Zero-Allocation: Path pooling and shape reuse
  • Overlay Mode: Renders on top of existing data

Algorithm:

SMA[i] = (y[i] + y[i-1] + ... + y[i-window+1]) / window

Rolling window implementation:
  sum = sum + y[i] - y[i-window]
  avg = sum / window

Performance Characteristics:

  • Complexity: O(n) with rolling sum (not O(n*w)!)
  • Small (< 2k points): < 5ms
  • Large (2k-50k): < 15ms with decimation
  • Memory: Zero allocations (path pooling)

Configuration:

chart.render.ma.window=10          // Averaging window size
chart.render.ma.maxPoints=8000     // Decimation threshold
chart.render.ma.width=1.6          // Line width (scaled)
chart.render.decimate.pixel=true   // Enable pixel decimation

Visual Style:

  • Dashed line (6px dash, 4px space)
  • Semi-transparent (85% opacity)
  • Rounded caps and joins
  • Inherits series color

Use Cases:

  • Trend identification in time-series data
  • Noise reduction in scientific measurements
  • Signal smoothing in financial charts
Since:
2026-01-01
Version:
2.0.0
Author:
Arber Gashi
  • Constructor Details

    • MovingAverageRenderer

      public MovingAverageRenderer()
  • Method Details