Search Results for

    Show / Hide Table of Contents

    The OHLC Series Type

    The OHLC series are provided by the FastOhlcRenderableSeries type. This accepts data (X, Open, High, Low, Close) from a OhlcDataSeries<TX,TY> and renders OHLC bar at each X-Value coordinate.

    Note

    For more info about OhlcDataSeries<TX,TY>, as well as other DataSeries types in SciChart, see the DataSeries API article.

    OHLC Series Type

    Note

    Examples of the OHLC Series can be found in the SciChart Android Examples Suite as well as on GitHub:

    • Native Example
    • Xamarin Example

    The FastOhlcRenderableSeries is very much alike the FastCandlestickRenderableSeries class. It allows to specify StrokeUp and StrokeDown pens as well as relative DataPointWidth, which will be applied to every bar. Mentioned settings can be accessed via the following properties:

    • strokeUpStyle - applied to bars when Close <= Open.
    • strokeDownStyle - applied to bars when Close > Open.
    • dataPointWidth - specifies how much space a single bar occupies, varying from 0 to 1 (when columns are conjoined).
    Note

    To learn more about Pens and Brushes and how to utilize them, please refer to the PenStyle, BrushStyle and FontStyle article.

    Note

    In multi axis scenarios, a series has to be assigned to particular X and Y axes. This can be done passing the axes IDs to the xAxisId, yAxisId properties.

    Create an OHLC Series

    OHLC Chart Example

    To create an OHLC Series, use the following code:

    • Java
    • Java with Builders API
    • Kotlin
    @Override
    protected void initExample(@NonNull SciChartSurface surface) {
        final IOhlcDataSeries<Double, Double> dataSeries = new OhlcDataSeries<>(Double.class, Double.class);
        dataSeries.append(0.0, 0.0, 1.0, 0.0, 1.0);
        dataSeries.append(1.0, 1.0, 5.0, 0.0, 4.0);
        dataSeries.append(2.0, 3.0, 5.0, 0.0, 0.0);
    
        final FastOhlcRenderableSeries ohlcSeries = new FastOhlcRenderableSeries();
    
        ohlcSeries.setDataSeries(dataSeries);
    
        ohlcSeries.setStrokeDownStyle(new SolidPenStyle(Color.RED, true, 1f, null));
        ohlcSeries.setStrokeUpStyle(new SolidPenStyle(Color.GREEN, true, 1f, null));
    
        UpdateSuspender.using(surface, () -> {
            Collections.addAll(surface.getXAxes(), new NumericAxis(requireContext()));
            Collections.addAll(surface.getYAxes(), new NumericAxis(requireContext()));
    
            Collections.addAll(surface.getRenderableSeries(), ohlcSeries);
        });
    }
    
    @Override
    protected void initExample(@NonNull SciChartSurface surface) {
        final IOhlcDataSeries<Double, Double> dataSeries = sciChartBuilder.newOhlcDataSeries(Double.class, Double.class).build();
        dataSeries.append(0.0, 0.0, 1.0, 0.0, 1.0);
        dataSeries.append(1.0, 1.0, 5.0, 0.0, 4.0);
        dataSeries.append(2.0, 3.0, 5.0, 0.0, 0.0);
    
        final FastOhlcRenderableSeries ohlcSeries = sciChartBuilder.newOhlcSeries()
                .withDataSeries(dataSeries)
                .withStrokeDown(Color.RED)
                .withStrokeUp(Color.GREEN)
                .build();
    
        UpdateSuspender.using(surface, () -> {
            Collections.addAll(surface.getXAxes(), sciChartBuilder.newNumericAxis().build());
            Collections.addAll(surface.getYAxes(), sciChartBuilder.newNumericAxis().build());
    
            Collections.addAll(surface.getRenderableSeries(), ohlcSeries);
        });
    }
    
    override fun initExample(surface: SciChartSurface) {
        val ohlcSeries = FastOhlcRenderableSeries().apply {
            dataSeries = OhlcDataSeries(Double::class.javaObjectType, Double::class.javaObjectType).apply {
                append(0.0, 0.0, 1.0, 0.0, 1.0)
                append(1.0, 1.0, 5.0, 0.0, 4.0)
                append(2.0, 3.0, 5.0, 0.0, 0.0)
            }
    
            strokeDownStyle = SolidPenStyle(Color.RED, true, 1f, null)
            strokeUpStyle = SolidPenStyle(Color.GREEN, true, 1f, null)
        }
    
        UpdateSuspender.using(surface) {
            Collections.addAll(surface.xAxes, NumericAxis(context))
            Collections.addAll(surface.yAxes, NumericAxis(context))
    
            Collections.addAll(surface.renderableSeries, ohlcSeries)
        }
    }
    

    OHLC Series Features

    OHLC Series also has some features similar to other series, such as:

    • Render a Gap.
    • Draw Series With Different Colors

    Render a Gap in an OHLC Series

    It's possible to render a Gap in OHLC series, by passing a data point with a NaN as the Open, High, Low, Close values. Please refer to the RenderableSeries APIs article for more details.

    Specify Color for Individual Bars

    In SciChart, you can draw each bar of the OHLC Series with different colors using the PaletteProvider API. To Use palette provider for OHLC Series - a custom IStrokePaletteProvider has to be provided to the paletteProvider property. Please refer to the PaletteProvider API article for more info.

    Back to top © 2011-2025 SciChart. All rights reserved. | sitemap.xml