The guide is being migrated; some links to the API reference may be missing. Use the search bar in the API reference.

CandlestickCartesianLayer

Overview

Use CandlestickCartesianLayer to create candlestick charts. Instantiate CandlestickCartesianLayer via rememberCandlestickCartesianLayer.

Each candle’s style is defined by its corresponding Candle. The Candles are provided by a CandleProvider:

  • To style candles based on their absolute price changes (closing vs. opening), use absolute. This is commonly used for filled candles and has such defaults.

  • To style candles based on both their absolute price changes (closing vs. opening) and their relative price changes (closing vs. previous closing), use absoluteRelative. This is commonly used for hollow candles and has such defaults.

  • For custom behavior, implement CandleProvider.

At the rememberCandlestickCartesianLayer level, you can set the minimum body height, change the candle spacing, and toggle wick scaling.

Transaction.candlestickSeries

CandlestickCartesianLayers use CandlestickCartesianLayerModels. When using a CartesianChartModelProducer, add CandlestickCartesianLayerModels via candlestickSeries:

cartesianChartModelProducer.runTransaction {
    candlestickSeries(
        x = listOf(1, 2, 3, 4),
        opening = listOf(2, 4, 6, 3),
        closing = listOf(4, 5, 3, 3),
        low = listOf(1, 4, 2, 2),
        high = listOf(5, 6, 7, 4),
    )
    // ...
}

candlestickSeries also has an overload with no x parameter, which uses the indices of the prices as the x-values:

candlestickSeries(
    opening = listOf(2, 4, 6, 3),
    closing = listOf(4, 5, 3, 3),
    low = listOf(1, 4, 2, 2),
    high = listOf(5, 6, 7, 4),
)

Manual CandlestickCartesianLayerModel creation

When creating a CartesianChartModel directly, you can add a CandlestickCartesianLayerModel by using build:

CartesianChartModel(
    ColumnCartesianLayerModel.build(
        x = listOf(1, 2, 3, 4),
        opening = listOf(2, 4, 6, 3),
        closing = listOf(4, 5, 3, 3),
        low = listOf(1, 4, 2, 2),
        high = listOf(5, 6, 7, 4),
    ),
    // ...
)

This function also has an overload with no x parameter:

ColumnCartesianLayerModel.build(
    opening = listOf(2, 4, 6, 3),
    closing = listOf(4, 5, 3, 3),
    low = listOf(1, 4, 2, 2),
    high = listOf(5, 6, 7, 4),
)

Sample charts