Open source · Compose Multiplatform

wickplot

Candlestick / trading charts for Compose Multiplatform, drawn directly on a native Compose Canvas — no WebView, no JS bridge, no platform chart library underneath.

$ implementation("io.github.earlisreal:wickplot:0.1.1") View source ↗ Maven Central ↗
ChartColors.Dark wickplot dark-theme candlestick chart with volume band, buy/sell trade markers, and a crosshair legend

Definition

A wick is the thin line above or below a candle's body, marking the bar's high and low.

Features

What it does

Presets

wickplot rendered with the ChartColors.Dark preset
ChartColors.Dark
wickplot rendered with the ChartColors.Light preset
ChartColors.Light

Philosophy

wickplot renders what you give it — the Lightweight-Charts philosophy. Indicator values (VWAP, moving averages, …) are computed by your app and passed in as plain LineOverlays; the library never computes market math.

Why not Vico?

Why not Vico?

Vico is a great general-purpose Compose chart engine and has a candlestick layer, but no built-in trading overlays. wickplot is purpose-built for trade analysis: volume, indicator line overlays, and exact-price trade markers out of the box, with indicator panes on the roadmap.

Quick start

Install

build.gradle.ktskotlin
commonMain.dependencies {
    implementation("io.github.earlisreal:wickplot:0.1.1")
}

Use it

Chart.ktkotlin
val bars: List<Candle> = listOf(
    OhlcvCandle(LocalDateTime(2026, 7, 1, 9, 30), open = 100.0, high = 103.5, low = 99.2, close = 102.8, volume = 120_000),
    // ...
)

CandlestickCanvasChart(
    bars = bars,
    markers = listOf(PriceMarker(barIndex = 12, price = 101.25, isBuy = true)),
    title = "ACME · D",
    colors = ChartColors.Dark,   // or ChartColors.Light
    overlays = emptyList(),      // indicator lines
    intraday = false,            // switches the time-axis format
)
Drag to pan, scroll to zoom (anchored at the cursor), hover for a crosshair with the bar's OHLCV.

Roadmap

Roadmap

Runs on

JVM/Desktop · iOS (arm64, simulatorArm64) · wasmJs