Chart Engine 1.1.1

Latest

11 August 2026

This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.

ALGO TRADINGBOT TERMINALTHEMINGACCESSIBILITYORDER MARKERSINDICATORSDRAWING TOOLSTIME AXISINTEGRATIONBREAKING CHANGES

Chart Engine v1.1.1

Release Date: August 11, 2026 Tags: ALGO TRADING, BOT TERMINAL, THEMING, ACCESSIBILITY, ORDER MARKERS, INDICATORS, DRAWING TOOLS, TIME AXIS, INTEGRATION, BREAKING CHANGES

Overview

Chart Engine is the charting surface the rest of the platform draws prices on: the binary trade chart, the spot and futures trade terminal, and the market views built on them. It draws candlestick, line, area, bar and Heikin-Ashi charts itself rather than embedding a third-party widget, with over 150 technical indicators, a full drawing-tool set including the Fibonacci, Gann and pitchfork families, price alerts, replay, multi-timeframe comparison, pattern detection and a volume heatmap. This is its first release note — everything below is measured against the build that shipped before it.

This release adds a fourth trading mode, algorithmic — a running bot's strategy, fills and controls drawn on the price axis, on the terminal shipped by the Algo Trading Bots extension. Installs without that extension are unaffected.

It also rebuilds where the chart gets its colours: it now paints from the palette you set in Appearance & Design → Site Design, in light and dark, instead of from about 120 hardcoded values of its own.

Fifteen colour fields that were declared, defaulted and read by nothing are removed from chart settings — see Upgrade Notes.

Update Instructions

pnpm updator

Chart Engine is delivered as a single prebuilt bundle, and pnpm updator replaces that bundle and rebuilds the frontend around it. Nothing further is required — no configuration, no data change.

If you have customised the chart engine's own source, understand that the app loads the bundle, not your files. Your edits stay invisible until the bundle is rebuilt, and the rebuild must happen before the frontend build:

pnpm build:chart-engine

Then let the normal update finish. This also regenerates the type definitions described below.


Upgrade Notes

Fifteen dead colour fields removed from chart settings

Seven dark-theme colour fields, seven light-theme colour fields and the expiry-line colour were declared in chart settings and given defaults, and read by nothing. They advertised a colour-customisation surface that never existed — writing to them had never had any effect, in any version.

  • Removed — they are gone. There is no behavioural change whatsoever, because there was no behaviour. Any stored user settings still carrying the old keys are ignored, exactly as they always were.
  • What to do instead: chart colour customisation now happens through the site palette in Appearance & Design → Site Design, which the chart genuinely reads.

Compatibility

  • No data change, no configuration change and no seeding. The update is a bundle replacement plus a frontend rebuild.
  • Stored indicator colours are cleaned once, per user, in their own browser. Indicators, parameters and line widths are never touched, and colours a user chose explicitly are kept.
  • Existing Fibonacci drawings keep their geometry and any colours you picked by hand; their default ladder is resolved at draw time from now on and follows the theme.
  • A dark-mode flag passed into the chart or its overlay panels is accepted and ignored. Nothing needs to change on the integrator's side.
  • Now that type definitions actually ship, an integration that was silently passing a misspelled or mistyped property may start reporting it at build time. That is the point of the change, but it is worth knowing before your first build.
  • The bot cockpit and the algorithmic mode only appear where a bot chart is opened. Installations without the Algo Trading Bots extension see no difference.

Added

Algorithmic trading mode

The chart gains a fourth mode alongside binary, spot and futures. Open a running bot's chart and you can see what the strategy is doing without reading a table.

  • The strategy drawn on the price axis: grid buy and sell rungs, upper and lower band edges, average entry, take profit, stop loss, trailing stop, peak and entry trigger — ten distinct kinds of level, each labelled for what it means rather than which strategy produced it, so two strategies that both place a stop draw the same thing.
  • State, not just position: every level is armed, filled, triggered or inactive, and reads differently on the chart. A rung the bot is waiting at looks different from one it already holds inventory from, and a rung backed by a live resting order carries a stem so you can tell an intention from an instruction.
  • Every fill, coloured by profit, with shading between the average entry and the live price for unrealised profit and loss.
  • An honest idle state: the operating band is captioned GRID RANGE, and becomes OUT OF RANGE — BOT IDLE when price leaves it. A bot that is running but has nothing to do now says so.
  • Hover for the detail: price, state, ladder position, size per grid and the trail and offset percentages.
  • Levels persist while their price is on screen rather than scrolling away with the moment they were created — a stop set an hour ago is still a stop.
  • A dense ladder stays readable: past fourteen levels the chart stops labelling everything and labels only the band edges, the rungs actually holding inventory and the six nearest the current price, rather than stacking forty overlapping chips. Levels and trade legs are capped so a long-running bot cannot slow the chart down.
  • Manual order entry is switched off in this mode, so a hand-placed order cannot land inside the bot's profit and loss.

Bot cockpit and on-chart controls

A floating panel inside the chart, opened automatically the first time you enter the mode and reopenable from the new Bot button in the toolbar.

  • Is it actually alive? The heartbeat reads "3s ago" while ticks arrive, "No ticks yet" before the first one, and "Stalled · 4m ago" once a bot that claims to be running has gone 30 seconds without one. A silently dead bot is the failure this exists to surface.
  • What it is doing: status, paper or live, total profit and loss, open position, win rate, trade count and traded volume.
  • What it is using: allocated, in-use and available capital, current drawdown, and the last engine error with how many times it has happened.
  • A pinned control dock: Start, Pause, Resume, Stop and Close position, without leaving the chart.
  • Stop and Close ask twice. Both relabel to Confirm? on the first click and disarm themselves after 4 seconds, so a stray click cannot kill a bot or market-sell a position — and a control cannot be fired twice while the first call is still in flight.
  • Close position is offered whenever a position exists, not only while the bot is running. A stopped bot can still be holding inventory, and flattening it by hand is the most common thing to want next.

A bot's own indicators, mirrored onto its chart

A rules-based bot's decision surface is its indicators. A chart that shows the trades but not the series that caused them explains what happened and never why.

  • The strategy's own series are plotted: RSI, MACD, Bollinger Bands or the moving average the bot actually evaluates.
  • RSI reference bands come from the bot's thresholds, not the chart defaults — a bot trading 25/75 draws 25/75.
  • They belong to the page, not to you. Mirrored indicators never follow the user onto their trade chart, their binary chart or another bot's terminal, and are never written into their saved indicator list.
  • Mirrors are skipped rather than guessed when the bot's timeframe differs from the chart's, when the user already has that indicator at that period, or when the chart does not recognise the indicator.

Type definitions for integrators

The package advertised type definitions but nothing ever produced them, so an integrator embedding the chart got no checking at all — a misspelled property name was silently ignored instead of failing the build.

  • Added — definitions are now generated and shipped, covering every property including the new bot ones.

Changed

The chart paints from the site's theme instead of its own private palette

The chart carried about 120 hardcoded colours and ignored the platform theme entirely, so a customer who set their palette in Appearance & Design → Site Design got a chart that disagreed with the rest of their site.

  • Grounds, candles, grid, axes, crosshair, order markers and expiry lines now read the live theme, light and dark, including an admin-configured palette.
  • Label text on coloured fills is derived from what it sits on. Text drawn on badges, barriers, expiry strips and crosshair chips was hardcoded white and could be unreadable on a light fill.
  • A dead theming layer was removed — a second, unused theme system that had no callers at all.
  • One honest limit: a saved theme is honoured on every page load, which is the case that matters. Flipping the theme live clears the colour cache but does not force a redraw, so the chart keeps its current pixels until the next tick, pan, zoom or resize. On a streaming chart that is under a second; on a completely idle chart it persists until you touch it. This was left as it stands deliberately rather than patched blind — an unconditional redraw on any change to the page's styling is a bigger behavioural change, on a trading chart, than the wart it fixes.

Multi-series indicators rebuilt to survive colour-vision deficiency

Several indicators carried their meaning in colour pairs that a colour-blind trader cannot tell apart. Ordering is now carried by lightness rather than hue, which survives the loss of hue separation intact.

  • GMMA: twelve lines split green against red — effectively twelve identical lines to a dichromat. They are now blue for the trader group and amber for the investor group, each a six-step lightness ramp so the fan still reads as ordered.
  • The Fibonacci level ladder: a fourteen-hue rainbow in which two levels shared the same colour and nothing indicated which way the ladder ran. It is now two sequential lightness ramps, with the 0 and 1 anchors on neutral ink — and it no longer borrows the candles' own green and red, which meant something else.
  • Squeeze Momentum: the squeeze dots, which report a state, no longer share the green/red pair with the momentum histogram, which reports a direction.
  • Binary barriers: the UP and DOWN barriers moved off yellow and purple onto the platform's direction colours, and the strike line onto a neutral categorical slot with readable text on top.
  • Signal-strength markers: one hue at four opacity steps instead of four hues.
  • Risk/Reward and panel-header icon tiles moved onto semantic roles rather than hand-picked hues.

Overlay panels stopped branching on the theme themselves

Every chart overlay — alerts, indicators, multi-timeframe, patterns, replay, signals, strategy builder, templates, heatmap, the drawing toolbar, the text-edit overlay, the replay controls and the mini charts — plus the engine's own buttons, badges, inputs and its empty, loading and error states, dropped their light/dark branching in favour of theme classes.

  • Panels follow an admin-configured palette instead of painting from a private grey scale of their own.
  • No wrong-theme flash on mount. Panels no longer briefly render in the wrong theme before correcting themselves.
  • Gain and loss colouring keeps working. The stylesheet that defined the old gain/loss classes was removed in this same release; the numbers now use the platform's up and down colours directly.
  • Integrators can stop passing a dark-mode flag. It is accepted and ignored rather than removed, so existing integrations keep working untouched.

Alert status chips use the platform's status colours

Alert status chips picked their own colours, which disagreed with the rest of the product. A triggered alert wore the same amber that a "crosses" condition already uses on the same row, and a user-paused alert was indistinguishable from an unrecognised status.

  • Changed — they route through the shared status colour table, so a triggered alert now reads as information and a paused one as a warning, matching status colours everywhere else on the platform.

Fixed

Spot and futures order markers did not repaint when an order filled or cancelled

On the trade page, a spot or futures order that filled or was cancelled kept its old marker on the chart until something unrelated — usually the next price tick — happened to trigger a repaint. On a thin or quiet market that could be a long time, and the chart showed an order that no longer existed.

  • Fixed — the chart repaints as soon as the order list changes.

Spot and futures order hover did nothing

Hovering a spot or futures order marker produced no tooltip and no highlight. The check that would have detected the marker under the pointer was never run, so the tooltip could not appear no matter how precisely you aimed.

  • Fixed — hovering shows the order's tooltip and enlarges the marker, as it always did in binary mode.

The first chart window was mostly empty on markets with closed sessions

Opening a stock, a forex pair or any session-limited market at an intraday timeframe produced a thin sliver of price against a wall of weekend and overnight void, plus a dead zone on the right between the last close and the current wall-clock time. The window was sized from the clock rather than from the candles.

  • Fixed — both edges of the opening window are derived from the candles themselves, so the chart opens with the configured number of candles in it. Round-the-clock crypto markets are unchanged, since their last candle is always now.

The time axis lost the date when an intraday chart was zoomed out

Zooming out on a 1-minute to 4-hour chart produced a row of identical clock strings — "03:00", "03:00", "03:00" — with no date anywhere. Tick spacing is derived from how much time is on screen, not from the timeframe, so a zoomed-out intraday chart placed ticks days apart and still labelled them as times of day.

  • Fixed — ticks half a day or more apart render a date, and a tick landing exactly on midnight names the day.

The live price label was frozen to two hardcoded colours

The floating current-price label on the right axis — the single most-read number on the chart — set its background from two fixed green and red values in both themes, with hardcoded white text on top. It could disagree with the candles beside it, and in light mode the white text was hard to read.

  • Fixed — it uses the up and down theme colours with their paired text colour, so it matches whatever the site is actually configured with and stays legible in both themes.

The area chart's gradient never faded

The area chart's fill was meant to fade out toward the bottom and rendered as a flat opaque block instead. Both ends of the gradient came out fully opaque.

  • Fixed — the fade works. The same correction now applies to candle glows, profit and loss zones, expiry rings, price pulses, indicator reference lines and order markers, each keeping its original weighting exactly — which is also what keeps them rendering correctly now that the palette is theme-driven rather than fixed.

Saved indicator colours would have been pinned to the old palette forever

An indicator's colour was copied into its saved settings at the moment it was added, and those settings are stored in the browser. With the palette now following the site theme, every existing user's indicators would have kept the old hardcoded colours permanently and never followed light and dark.

  • Fixed — a one-time cleanup removes stored colours, and only colours. The indicator itself, its parameters and its line width are untouched. Un-customised indicators pick up the themed palette from then on; a colour a user explicitly chose is kept. A duplicate indicator still gets its own fixed slot, so a second EMA remains distinguishable from the first.

Fibonacci drawings baked their colour ladder into what they saved

Every Fibonacci drawing wrote its complete level-colour ladder into its own saved state, so any drawing made before this release would have kept the old palette permanently while everything around it moved on.

  • Fixed — defaults are resolved when the drawing is painted, and only colours the user explicitly picked are stored. Existing drawings follow the theme like new ones.

Heatmap colour schemes ignored the theme

The volume heatmap's four colour schemes were fixed values that took no notice of light or dark. The grayscale scheme ran up to pure white, which on a light chart meant its strongest cells were invisible.

  • Fixed — all four schemes resolve theme colours, and the grayscale scheme's high end now uses the foreground colour, so it reads on a light chart as well as a dark one.