Version 9.0.0
Release date: Jul 12, 2023
See the 8.9.0 to 9.0.0 upgrade notes for information about upgrading to this version.
New features
-
Dynamic Baseline chart — Baseline style charts can now be configured to display a dynamic, non-centered baseline. Previously, the baseline remained fixed at the center of the chart (or wherever a user manually placed it), and the height of the y-axis and chart adjusted accordingly. Now, developers can set the baseline to move according to the height of the y-axis, allowing the chart itself to fill the available space.
Figure. The y-axis of a dynamic baseline chart adjust to the height of the chart.
-
Update to the CIQ.Renderer.Lines constructor function adds a parameter
config.params.centered
. Set this boolean to true to center the chart around the baseline. If the baseline isn't set,centered
is ignored. -
Update to CIQ.Renderer.Lines.requestNew adds support for the new non-centered baseline feature.
-
-
Key File for easier upgrading — ChartIQ has implemented a key file that enables easier upgrades. ChartIQ is licensed on a time- and plugin-based entitlement system. Accordingly, it has an internal license validation methodology to ensure the license is within the specified time and feature parameters. In order to streamline the upgrade process, the locking mechanism has now been abstracted out from the core JavaScript files. Now, a build of ChartIQ can be reprovisioned with a single file as opposed to requiring the entire library to be rebundled and redeployed.
-
Histogram gap filling — The histogram chart now allows single bars to span across multiple lower time periods on the chart. Users can thus overlay data with different periodicities. For example, daily price data may be overlaid on quarterly fundamental data or monthly economic data.
Figure. A comparison series (monthly) overlaying a histogram showing quarterly data.
-
Update to CIQ.ChartEngine#valueFromInterpolation adds the parameter
forceStep
. Set this boolean to true to force-step the chart — i.e., to return the value of the previous bar found. -
Updates to the following functions add a parameter
stretchGaps
to each one, a boolean which, if set to true, causes gaps to be represented by a horizontal line: CIQ.ChartEngine#addSeries, CIQ.ChartEngine#drawLineChart, CIQ.ChartEngine#plotDataSegmentAsLine, CIQ.ChartEngine#drawHLCBox, CIQ.ChartEngine#drawCandles, CIQ.ChartEngine#drawShadows, CIQ.ChartEngine#drawBarChart, CIQ.ChartEngine#drawBarTypeChartInner, CIQ.ChartEngine#drawWaveChart, and CIQ.ChartEngine#drawMountainChart. -
Update to CIQ.ChartEngine#doCleanupGaps adds support for "stretch" value.
-
Enhancements
-
Interactive help for chart types — An interactive help dialog describing each chart type and drawing tool is now available. Users can long-press an item in the chart-type dropdown menu or on the drawing palette to open this dialog, which includes information about that feature or tool and a button to select it.
Figure. Users can long-press chart types and drawing tools to open an information popup.
-
Sharing directly to Twitter and Teams — Users can now share directly to Twitter and Microsoft Teams from the sharing dialog. They can share to other social media as well by copying and a pasting a URL. See Enabling Direct Sharing Buttons in the Chart Sharing tutorial for information on configuring this feature.
Figure. Users can share directly to Twitter and Teams.
-
Sharing live charts — ChartIQ now provides the groundwork to facilitate sharing live charts that a user has configured. Previously, users could only share static images of a chart. To enable live chart sharing, clients will have to host the shared chart on their own servers and store the chart configuration object in a database. For instructions on how to implement this feature, see Sharing Live Charts in the Chart Sharing tutorial.
Figure. Sharing a live, user-configured chart from local storage. Clients will have to host the chart on their own servers to share to social media.
-
New CIQ.Share.saveChartLayout function persists the current chart layout to the cloud and returns an ID that can be used to retrieve the layout from the cloud.
-
New CIQ.Share.loadChartFromID function loads a chart with the configuration for the given shareID.
-
New CIQ.Share.loadChartFromLayout function loads a chart with the given configuration.
-
-
Add studies to a secondary series — Users can now add select studies to a comparison series shown on the chart. Studies with this new ability include the Volume Chart study, as well as any study that takes an
inputs.Field
parameter, such as a Moving Average or a Stochastics indicator. In the study's dialog, the user can select a comparison from the Field dropdown. Previously, users could only add a study to the primary series or to another study.Figure. Comparison series are now an option for any study that takes an input field.
-
New CIQ.Studies.getQuoteFieldValue function provides a unified way of accessing numeric quote data using field keys from objects in a quote feed. By default, it returns the Close value of a quote. Previously, the CIQ.Studies.addStudy function limited what series a study could be added to because it can only take a numeric value as its
inputs.Field
parameter, not an object. -
Update to CIQ.ChartEngine#addSeries adds properties to the
parameters
object:responseHandler
, an optional function to override the processing of datanoStorage
, a boolean that, if set to true, disables the export of the series when saving a layoutretoggle
, a boolean indicating whether the series should be reloaded when loading a new chartprocessResults
, an optional function called withinresponseHandler
to perform on the returned result settakedownResults
, an optional function to perform when removing series
-
Update to CIQ.ChartEngine#attachQuoteFeed changes the function's behavior when attaching an unfiltered feed if another unfiltered feed is already attached. Now, only the existing unfiltered feed is removed. Previously, all existing feeds would be removed.
-
-
Multi-Chart: Trading Central and Estimize plugins — The new multi-chart grid template now supports the plug-ins for Trading Central and Estimize.
Figure. Trading Central and Estimize plugins supported in a multi-chart grid.
-
Fetch event data for markers directly from a quote feed — Quotefeeds now include a built-in ability to make fetch requests for event data to display on a chart as markers.
-
New CIQ.ChartEngine#addEvent function adds an event series to the chart. Events are managed just like series, but adding using
addEvent
instead ofaddSeries
will cause them to be managed properly. -
New CIQ.ChartEngine#processEventResults function is the default handler for event data results processing. Override this function to change the default behavior, which is to draw Simple markers.
-
New CIQ.ChartEngine#takedownEventResults function is the default handler for event removal. Override this function to change the default behavior, which is to remove markers.
-
New CIQ.ChartEngine#removeEvent function removes an event series from the chart.
-
New CIQ.ChartEngine#removeAllEvents function removes all event series from the chart.
-
Update to CIQ.ChartEngine#getSymbols adds the parameter
params.exclude-nostore
. Set this boolean to true to exclude any series whosenoStorage
property is set to true.
See the Markers tutorial, especially the section called "Fetching marker data from a different quoteFeed" for instructions.
-
-
Center of Gravity study — The Center of Gravity study is now accompanied by a signal line displaying a simple moving average. This way, users can more easily say when the CoG is making a significant change in direction. When the CoG line crosses above the signal line, it indicates a market upturn. Below, a downturn.
Figure. The Center of Gravity line (white) with its signal line (red).
-
Faster load time for templates — The initial load times of ChartIQ templates have been reduced by implementing a dynamic loading process for plugins.
-
New CIQ.UI.Chart#initPluginChannelListeners function sets up listeners for dynamic plugin loading.
-
New CIQ.UI.Chart#applyPlugin function dynamically loads and applies a plug-in to the chart engine.
-
-
Reconstructing and serializing drawings — The
hidden
andpermanent
properties of each drawing type are now preserved when a drawing is restored from local storage.- Updated CIQ.Drawing#serialize and CIQ.Drawing#reconstruct functions for each drawing type to include new
hdn
(hidden) andprm
(permanent) properties to theirobj
parameters.
- Updated CIQ.Drawing#serialize and CIQ.Drawing#reconstruct functions for each drawing type to include new
-
Mixing delayed and real-time data — Version 9.0.0 provides enhanced support for charts with multiple series that mix real-time and delayed data.
-
New CIQ.ChartEngine#drawWithRange function calls CIQ.ChartEngine#draw while also adjusting the chart for any existing span or range selection. This adjustment is useful when adding or removing a series or study whose data points don't align with the main plot (if, for example, the main plot is delayed, but the series is real time).
-
Updated CIQ.ChartEngine#setRange and CIQ.ChartEngine#setSpan functions to add a
useExistingData
parameter to each. Set this boolean to true to indicate that existing data is sufficient.
-
-
New CIQ.Studies.useTranslationDelimiter property, a boolean, sets whether to use a delimiting character when generating study IDs. Previously, study and panel names included a ZWNJ character to aid translation. Now, clients can set this boolean to
false
to configure their study names not to include this character. -
New CIQ.UI.UIManager.getColorPicker function return the color picker and, if necessary, creates one for the scope of the given element.
-
New CIQ.UI.UIManager.closeOpenColorPicker function closes an open color picker.
-
New CIQ.biSquareMult convenience function calculates
a**b
(ora
raised to the power ofb
), wherea
andb
areBigInts
. -
Updated CIQ.TableView#open adds the parameter
processCloseEvent
to theparams
object. This optional callback function receives the event that closes a table, allowing developers to inspect the event target and stop event propagation. If the function is not provided, event propagation is stopped by default.
UI Enhancements
-
Enhanced user control of the crosshairs — Users now control whether the crosshairs display in most contexts, regardless of whether a drawing tool is active. Previously, selecting a drawing tool displayed the crosshairs, and selecting "no tool" hid them. Now, the crosshairs will display when a user manually enables them and undisplay when a user disables them.
Figure. The user, not the drawing tool, selects when crosshairs display.
In order to indicate that a drawing tool is active, the cursor itself will change to a crosshair cursor.
If a user is on a mobile device, the crosshairs will continue to display whenever a drawing tool is active.
- New CIQ.ChartEngine.preferences.displayCrosshairsWithDrawingTool preference, a boolean, can be set in the default chart configuration object. If set to
true
, then crosshairs always display when user selects a drawing tool and undisplay when user selects "no tool" (unless the user has enabled them manually).
- New CIQ.ChartEngine.preferences.displayCrosshairsWithDrawingTool preference, a boolean, can be set in the default chart configuration object. If set to