Candlestick Chart
The Candlestick chart shows data for the movement of the price of a financial unit. It consists of a bar (the candle), representing the open and close values, and vertical lines, the candlesticks, which illustrate the highest and lowest values.
This article assumes you are familiar with the chart basics and data binding.
To create a candlestick chart:
- add a
ChartSeries
to theChartSeriesItems
collection - set its
Type
property toChartSeriesType.Candlestick
- provide a data collection to its
Data
property and set the corresponding fields:-
CategoryField
- the date that will be matched to the x-axis -
OpenField
- the field with the Open value -
CloseField
- the field with the Close value -
HighField
- the field with the High value -
LowField
- the field with the Low value
-
- make the x-axis a Date axis - while the candlestick chart can work with simple string categories, it is designed to show financial data over time
@* Candlestick chart *@
<TelerikChart Height="480px" Width="640px">
<ChartSeriesItems>
<ChartSeries Type="@ChartSeriesType.Candlestick"
Name="Product 1"
Data="@ChartProduct1Data"
CategoryField="@(nameof(StockDataPoint.Date))"
OpenField="@nameof(StockDataPoint.Open)"
CloseField="@nameof(StockDataPoint.Close)"
HighField="@nameof(StockDataPoint.High)"
LowField="@nameof(StockDataPoint.Low)">
</ChartSeries>
</ChartSeriesItems>
<ChartCategoryAxes>
<ChartCategoryAxis Type="@ChartCategoryAxisType.Date" BaseUnit="@ChartCategoryAxisBaseUnit.Months">
</ChartCategoryAxis>
</ChartCategoryAxes>
<ChartValueAxes>
<ChartValueAxis>
<ChartValueAxisLabels Format="{0:C4}"></ChartValueAxisLabels>
</ChartValueAxis>
</ChartValueAxes>
</TelerikChart>
@code {
List<StockDataPoint> ChartProduct1Data { get; set; }
protected override async Task OnInitializedAsync()
{
await GenerateChartData();
}
async Task GenerateChartData()
{
ChartProduct1Data = new List<StockDataPoint>()
{
new StockDataPoint(new DateTime(2019, 1, 1), 39.88m, 40.12m, 41.12m, 39.75m, 3584700),
// Close is lower than Open, so the Down color is used, see later in the article for more details
new StockDataPoint(new DateTime(2019, 2, 1), 41.62m, 40.12m, 41.69m, 39.81m, 2632000),
new StockDataPoint(new DateTime(2019, 3, 1), 42m, 42.62m, 43.31m, 41.38m, 7631700),
new StockDataPoint(new DateTime(2019, 4, 1), 42.25m, 43.06m, 43.31m, 41.12m, 4922200),
};
await Task.FromResult(ChartProduct1Data);
}
public class StockDataPoint
{
public StockDataPoint() { }
public StockDataPoint(DateTime date, decimal open, decimal close, decimal high, decimal low, int volume)
{
Date = date;
Open = open;
Close = close;
High = high;
Low = low;
Volume = volume;
}
public DateTime Date { get; set; }
public decimal Open { get; set; }
public decimal Close { get; set; }
public decimal High { get; set; }
public decimal Low { get; set; }
public int Volume { get; set; }
}
}
Candlestick Chart Specific Appearance Settings
DownColor
Set the color - a valid CSS, RGB, RGBA color - of the series when the OpenField
is greater than the CloseField
by setting the DownColor
property of the ChartSeries
. This can be passed through the data model and bound to the DownColorField
.
Color Field
Column, OHLC and Candlestick charts can take the color of the series item from the ColorField
of the data source. You can pass a valid CSS color (for example, #abcdef
, #f00
, or blue
).
The values bound to
DownColorField
andColorField
will take precedence over the values passed to theColor
and theDownColor
attributes.
Gap and Spacing
You can control the distance between the categories that cluster a data point from each series. To do this, use the Gap
property of the series. It is the distance between categories expressed as a percentage of the bar width.
To set the distance between the bars of different series in the same category, use the Spacing
property. It is the space between the series items in one series category as a proportion of the width of a single series item.
To create overlap, set negative values.
You can configure the values of Gap
and Spacing
for the whole chart in the first series and they are applied for all categories and series items.
Customize Chart Elements - Nested Tags Settings
When configuring nested properties and child elements in your chart, the inner tags will contain their parent tag name and add specifics to its end. In general the structure of such nested tags will be <Chart*Category**Specifics*>
where the Category can be one of the following:
- CategoryAxis
- ChartArea
- Legend
- PlotArea
- SeriesItems
- Title
- Tooltip
- ValueAxis
- XAxes
- YAxes
- and others
To customize the chart, look for nested tags and their properties - the inner tags will contain their parent tag name and add specifics to its end. For example, the
ChartSeries
tag has aChartSeriesLabels
tag that exposes configuration options and more child tags.