/chartjs-chart-financial

Chart.js module for charting financial securities

Primary LanguageJavaScriptMIT LicenseMIT

Chart.js Financial Charting

Chart.js module for Candlestick and OHLC charts

Roadmap

This module has not yet had its initial release and is not yet available on npm. This library depends on Chart.js and we are currently adding support for some of the necessary features there

Chart.js 2.7.0 added our timeseries scale as new option called distribution: series. This has greatly improved support for financial timeseries.

Chart.js 2.7.1 added fixes for timeseries.

Chart.js 2.7.2 added formatting of timestamps in tooltips.

Chart.js 2.7.3 included a fix for hovering.

Chart.js 2.8.0 added datetime adapters and time scale performance improvements. This allows users to use a datetime library of their choosing such as Luxon in order to get i18n and timezone support

Chart.js 2.9.0 added improved autoskipping, support for floating bars, better support for mixed chart types, and numerous performance improvements.

Chart.js 3.0.0-alpha removed the need for custom scales, which means logarithmic scale is now supported. It also has numerous performance improvements.

We are waiting for Chart.js 3.0.0 before an initial release. We would also like to make drawing sharper and add support for scriptable elements. The current work is centered around providing this infrastructure in the core Chart.js library. While there is not much activity in this repo, there is ongoing active development towards improved financial charting!

Comparison

We are aiming to make Chart.js the only popular JavaScript library that is both performant and has good timescale handling.

Most chart libraries don't have great handling of timescale axes and will not always choose the first of the month, year, etc. as labels. This library leverages the concept of major ticks that we introduced in Chart.js. E.g. it will make sure that the first day of each month is plotted before plotting days in between.

One of the best libraries we've found for financial charts is react-stockcharts. However, it ties the user to utilizing React.

Because Chart.js utilizes canvas it is more performant than the majority of JavaScript charting libraries. In a benchmark of the fastest JavaScript chart libraries, Chart.js performs respectably. Chart.js is slower than some of the fastest libraries like uPlot because it accepts varied input (parsing, linear and timeseries support in time scale, etc.) and has animation support (which is still costly even when off due to the way the code is structured).

Documentation

As we near an initial release we will add additional documentation. For now, please see the docs directory.

Examples

Examples are available here: https://chartjs.github.io/chartjs-chart-financial/

Date Libraries & IE Support

IE may not be supported because we use some newer ES features. We will need to apply Babel to fix this

Chart.js requires that you supply a date library. The examples utilize chartjs-adapter-luxon, which has the best support for i18n and time zones. However, in order to use Luxon with IE you need to supply polyfills. If you require IE support you may find it easier to use another date library like Moment or date-fns. Please see the Chart.js documentation for more details on date adapters.

Related Plugins

The plugins below may be particularly interesting to use with financial charts. See the Chart.js plugin API and longer list of plugins for more info about Chart.js plugins generally.

Building

Builds

npm install
gulp build