Version 9.9.0
Release date: June 30, 2025
New Features
"One-Off" Trading Days
Developers can specify one-off trading days for typically closed market days.
This feature ensures chart functionality on days when the market is usually closed, such as during the Muhurat trading session in the Indian markets.
To add a one-off trading day, add an object to the rules
property array in your market definition, as shown in the example below:
Note: Certain properties have been omitted for brevity.
CIQ.Market.NYSE = CIQ.Market.XNYS = {
name: "NYSE",
// ...
rules: [
// ...
{ date: "2026-01-01", open: "09:00", close: "10:00" }, // New Year's Day bonanza trading hour
// ...
]
}
See the CIQ.Market API docs for more information about the Market Class.
Updated Market Hours
With certain exchanges considering extended trading hours, the library now supports easy adjustments to market hours based on a specified date.
To specify new trading hours, add end
and begin
properties, along with the corresponding beginning and end dates in "YYYY-MM-DD" format, to the rules
array in your market definition.
In the example below, for demonstration purposes with the built-in quote feed, we will modify the GENERIC_5DAY market definition found in marketDefinitionSample.js
.
Then, load a 24 hour security, such as VOD.L.
If applied correctly, you will see that starting on June 2, 2025, trading begins at 4 AM.
CIQ.Market.GENERIC_5DAY = {
name: "5DAY",
// ...
rules: [
{ dayofweek: 1, open: "0:00", close: "24:00", end: "2025-06-01" },
{ dayofweek: 1, open: "4:00", close: "24:00", begin: "2025-06-02" },
{ dayofweek: 2, open: "0:00", close: "24:00", end: "2025-06-01" },
{ dayofweek: 2, open: "04:00", close: "24:00", begin: "2025-06-02" },
{ dayofweek: 3, open: "0:00", close: "24:00", end: "2025-06-01" },
{ dayofweek: 3, open: "04:00", close: "24:00", begin: "2025-06-02" },
{ dayofweek: 4, open: "0:00", close: "24:00", end: "2025-06-01" },
{ dayofweek: 4, open: "04:00", close: "24:00", begin: "2025-06-02" },
{ dayofweek: 5, open: "0:00", close: "24:00", end: "2025-06-01" },
{ dayofweek: 5, open: "04:00", close: "24:00", begin: "2025-06-02" }
]
};
For more information on Market Definitions, see CIQ.Market and the Dates, Times and Time Zones Tutorial.
"Collapsed" and "Filled" Data Mode
Users can now toggle the visibility of "gaps" in data.
By default, gaps are hidden when there is no trading data. The Hide Gaps toggle in the Chart Preferences menu allows users to choose whether to display these gaps.
To enable the toggle, make sure stxx.cleanupGaps
is set to "gap" before loading a symbol.
Figure. "Hide Gaps" toggle available in Preferences Menu.
- New CIQ.UI.Layout#setHideGaps convenience function that toggles the display of gaps in the main series. The
stxx.cleanupGaps
property must be set for this to work.
Load Compact Chart from a Query String
Refer to the Loading Charts from a Query String section in the Compact Chart Tutorial for guidance on using a query string to load your Compact Chart.
Enhancements
Symbol Search allows for case sensitive symbols
Case-sensitive symbols can be necessary for accurately representing securities, helping users differentiate between similar names or structures.
To enable the use of mixed case symbols set the maintainSymbolCase
property to true
in your template:
CIQ.ChartEngine.maintainSymbolCase = true;
Figure. Symbol search dialog accepts case-sensitive input.
- New CIQ.ChartEngine.maintainSymbolCase property controls whether symbol case should be preserved or normalized to uppercase.
- New CIQ.ChartEngine.normalizeSymbol function normalizes a symbol string according to the CIQ.ChartEngine.maintainSymbolCase setting.
Trusted Types
Developers can use the CIQ.sanitize
function to enforce trusted types and manage input sanitization.
A sample CIQ.sanitize
function, found in examples/validation/sanitize.js
, converts input to trusted types.
Important: Please note, this example does not perform any sanitization. Developers must implement their own
CIQ.sanitize
method based on their specific requirements.
To use the CIQ.sanitize
function, uncomment or add the following lines of code to your template:
<meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script'">
import "./examples/validation/sanitize.js";
Note: This enhancement is unavailable in the sample-template-term-structure.html
chart or with legacy webcomponents.
- New CIQ.sanitize function. If you need to put the source through your own sanitizing functions, you can do so by overriding this function.
- New CIQ.safeAssign method to use when assigning to src, href, or innerHTML properties of an element, or textContent of a script.
- Update to CIQ.innerHTML function removes Microsoft RT support (Windows 8.1). This function is now an alias for CIQ.safeAssign.
Performance Enhancements
Pagination Event
A "Pagination" event now fires when pagination is complete.
The "pagination" event was added to resolve the issue of not being able to determine when the chart fetched pagination data. Developers can now hook into this event when the dataset updates to perform tasks behind the scenes.
Paste the following into the developer console to see the event:
stxx.addEventListener("pagination", console.log);
See CIQ.ChartEngine#addEventListener for more information on using event listeners.
UI Enhancements
Anchor Feet on Average Line and Regression Line Drawings
Anchor feet on Average and Regression line drawings are now visible only when actively being drawn or hovered over.
Figure. Average and Regression Line drawings without anchor feet
Other
Frameworks
The following framework apps have been updated:
- Angular
- Updated to Angular 19.2.12
- React
- UI web components have been refactored to more adequately work with React 19's component rendering lifecycle.
- React Native
- Updated to React Native 0.77 and is compatible with the latest Xcode version.
- Vue
- Updated to Vue 3.5