SciChart WPF 2D Charts > 2D Chart Types > The Candlestick charts type
The Candlestick charts type

Candlestick charts are provided by the FastCandlestickRenderableSeries type. This accepts data from an OhlcDataSeries (Open, High, Low, Close, Date) and renders candlesticks with optional up/down wick and up/down fill brushes.

Examples for the Candlestick Series can be found in the SciChart WPF Examples Suite which can be downloaded from the SciChart Website or our SciChart.WPF.Examples Github Repository.

NOTE: For info about OhlcDataSeries, as well as other DataSeries types in SciChart, see DataSeries API

To declare a FastCandlestickRenderableSeries, use the following code:

Declare a FastCandlestickRenderableSeries in Xaml / Code Behind

Declare a FastCandlestickRenderableSeries
Copy Code
<!-- where xmlns:s="http://schemas.abtsoftware.co.uk/scichart" -->
<s:SciChartSurface>

    <s:SciChartSurface.RenderableSeries>
       <s:FastCandlestickRenderableSeries x:Name="rSeries" StrokeUp="GreenYellow"
                 StrokeDown="Red"
                 FillUp="#33ADFF2F"
                 FillDown="#33FF0000"
                 StrokeThickness="1"
                 AntiAliasing="False"
                 DataPointWidth="0.8"/>
    </s:SciChartSurface.RenderableSeries>


    <s:SciChartSurface.XAxis>
       <s:CategoryDateTimeAxis/>
    </s:SciChartSurface.XAxis>

    <s:SciChartSurface.YAxis>
       <s:NumericAxis/>
    </s:SciChartSurface.YAxis>

</s:SciChartSurface>

// Code Behind, e.g. in OnLoaded event handler, set the DataSeries
var ohlcDataSeries = new OhlcDataSeries<DateTime, double>();
                                                         
// FastCandlestickRenderableSeries expects data in the formal Date, Open, High, Low, Close              
ohlcDataSeries.Append(new DateTime(2015, 10, 1), 6061.60, 6172.80, 6053.30, 6072.50);
ohlcDataSeries.Append(new DateTime(2015, 10, 2),  6072.50, 6176.20, 6051.60, 6130.00);
ohlcDataSeries.Append(new DateTime(2015, 10, 5), 6130.00, 6301.10, 6130.00, 6298.90);
ohlcDataSeries.Append(new DateTime(2015, 10, 6), 6298.90, 6343.70, 6255.10, 6326.20);
ohlcDataSeries.Append(new DateTime(2015, 10, 7), 6326.20, 6396.30, 6319.80, 6336.40);
ohlcDataSeries.Append(new DateTime(2015, 10, 8), 6336.40, 6380.30, 6303.50, 6374.80);
ohlcDataSeries.Append(new DateTime(2015, 10, 9), 6374.80, 6453.20, 6374.80, 6416.20);
ohlcDataSeries.Append(new DateTime(2015, 10, 12), 6416.20, 6416.20, 6351.30, 6371.20);
ohlcDataSeries.Append(new DateTime(2015, 10, 13), 6371.20, 6371.20, 6303.00, 6342.30);
ohlcDataSeries.Append(new DateTime(2015, 10, 14), 6342.30, 6342.30, 6268.30, 6269.60);
ohlcDataSeries.Append(new DateTime(2015, 10, 15), 6269.60, 6351.40, 6269.60, 6338.70);
ohlcDataSeries.Append(new DateTime(2015, 10, 16), 6338.70, 6398.20, 6338.70, 6378.00);
ohlcDataSeries.Append(new DateTime(2015, 10, 17), 6378.00, 6408.10, 6336.30, 6352.30);

rSeries.DataSeries = ohlcDataSeries;

Declare a FastCandlestickRenderableSeries in Pure Code

Declare a FastCandlestickRenderableSeries
Copy Code
// Declare the scichartsurface
var sciChartSurface = new SciChartSurface();
sciChartSurface.XAxis = new CategoryDateTimeAxis();
sciChartSurface.YAxis = new NumericAxis();
// ...
// Declare and add a Candlestick Series
var candlestickSeries = new FastCandlestickRenderableSeries()
{
    StrokeUp = Colors.GreenYellow,
    FillUp = new SolidColorBrush(Color.FromArgb(0x33, 0xAD, 0xFF, 0x2F)),
    StrokeDown = Colors.Red,
    FillDown = new SolidColorBrush(Color.FromArgb(0x33, 0xFF, 0x00, 0x00)),
    AntiAliasing = false,
    DataPointWidth = 0.8,
    StrokeThickness = 1,
}; sciChartSurface.RenderableSeries.Add(candlestickSeries);

// Set some data
// FastCandlestickRenderableSeries expects data in the formal Date, Open, High, Low, Close  
var ohlcDataSeries = new OhlcDataSeries<DateTime, double>();           
ohlcDataSeries.Append(new DateTime(2015, 10, 1), 6061.60, 6172.80, 6053.30, 6072.50);
ohlcDataSeries.Append(new DateTime(2015, 10, 2),  6072.50, 6176.20, 6051.60, 6130.00);
ohlcDataSeries.Append(new DateTime(2015, 10, 5), 6130.00, 6301.10, 6130.00, 6298.90);
ohlcDataSeries.Append(new DateTime(2015, 10, 6), 6298.90, 6343.70, 6255.10, 6326.20);
ohlcDataSeries.Append(new DateTime(2015, 10, 7), 6326.20, 6396.30, 6319.80, 6336.40);
ohlcDataSeries.Append(new DateTime(2015, 10, 8), 6336.40, 6380.30, 6303.50, 6374.80);
ohlcDataSeries.Append(new DateTime(2015, 10, 9), 6374.80, 6453.20, 6374.80, 6416.20);
ohlcDataSeries.Append(new DateTime(2015, 10, 12), 6416.20, 6416.20, 6351.30, 6371.20);
ohlcDataSeries.Append(new DateTime(2015, 10, 13), 6371.20, 6371.20, 6303.00, 6342.30);
ohlcDataSeries.Append(new DateTime(2015, 10, 14), 6342.30, 6342.30, 6268.30, 6269.60);
ohlcDataSeries.Append(new DateTime(2015, 10, 15), 6269.60, 6351.40, 6269.60, 6338.70);
ohlcDataSeries.Append(new DateTime(2015, 10, 16), 6338.70, 6398.20, 6338.70, 6378.00);
ohlcDataSeries.Append(new DateTime(2015, 10, 17), 6378.00, 6408.10, 6336.30, 6352.30);


candlestickSeries.DataSeries = ohlcDataSeries;

 

NOTE: You can also declare RenderableSeries using full MVVM (series ViewModels). Please see MVVM DataSeries / RenderableSeries API for more details.

 

 

See Also