Version 2.02 — Stability & Performance Update
Released: June 2026
This update addresses several rendering, stability, and performance issues reported after timeframe and symbol switching. The core engine has been hardened with bounds protection, smarter redraw gating, and a layout cache system that significantly reduces CPU overhead.
Bug Fixes
Fixed: Array out of range errors in the profile engine
All bin index operations inside BuildProfileWindow are now clamped against the actual allocated array size rather than the global bin count. This eliminates the runtime crash that could occur immediately after a timeframe switch or during rapid symbol changes when internal state had not yet fully re-synchronized.
Fixed: Heatmap and HUD not drawing on certain timeframes
The indicator previously exited silently when bar history was not yet available after a timeframe switch. The HUD panel now renders independently of profile readiness, and the engine retries automatically on subsequent ticks until data is confirmed available.
Fixed: POC box and heatmap rendering outside the visible chart area
All canvas draw coordinates are now clamped to the chart bounds before any FillRectangle or TextOut call. The POC label box is now sized dynamically relative to chart width, preventing it from overflowing into the price scale.
Fixed: Stale canvas objects persisting across symbol or timeframe reloads
Bitmap label objects are now explicitly deleted before being recreated on initialization, preventing ghost overlays from appearing when the indicator reloads.
Performance Improvements
Heatmap layout cache
A layout validity check now gates the full heatmap repaint. If the chart width, height, first visible bar, visible bar count, and current bar time have not changed since the last draw, the expensive full-canvas rebuild is skipped entirely. This dramatically reduces CPU on stable charts.
Smarter redraw throttle
A g_needFullRedraw flag bypasses the refresh interval when a forced repaint is genuinely required (timeframe switch, chart resize, history load), while routine ticks continue to use the configurable minimum interval. This prevents both stale renders and unnecessary repaints.
Canvas resize guard
The heatmap and HUD canvases are only resized when the chart dimensions actually change, eliminating the repeated CCanvas::Resize calls that were visible in profiling as a top CPU consumer.
HUD decoupled from heatmap
The branded HUD panel now updates independently of the heatmap render pass. This means the panel remains visible and current even while the heatmap is waiting for history to load on a new timeframe.
Hard data guard in OnCalculate
The indicator now checks bar availability before entering the render path, preventing wasted work and suppressing spurious errors during the brief window after a timeframe switch when data is still synchronizing.
Notes
No input parameters were changed. All existing settings are fully compatible.
Visual output is identical to v2.01 on stable charts.
Users on lower-end systems or trading many symbols simultaneously should see the most noticeable improvement in responsiveness.
https://www.mql5.com/en/market/product/179802?source=Site+Profile+Seller
Released: June 2026
This update addresses several rendering, stability, and performance issues reported after timeframe and symbol switching. The core engine has been hardened with bounds protection, smarter redraw gating, and a layout cache system that significantly reduces CPU overhead.
Bug Fixes
Fixed: Array out of range errors in the profile engine
All bin index operations inside BuildProfileWindow are now clamped against the actual allocated array size rather than the global bin count. This eliminates the runtime crash that could occur immediately after a timeframe switch or during rapid symbol changes when internal state had not yet fully re-synchronized.
Fixed: Heatmap and HUD not drawing on certain timeframes
The indicator previously exited silently when bar history was not yet available after a timeframe switch. The HUD panel now renders independently of profile readiness, and the engine retries automatically on subsequent ticks until data is confirmed available.
Fixed: POC box and heatmap rendering outside the visible chart area
All canvas draw coordinates are now clamped to the chart bounds before any FillRectangle or TextOut call. The POC label box is now sized dynamically relative to chart width, preventing it from overflowing into the price scale.
Fixed: Stale canvas objects persisting across symbol or timeframe reloads
Bitmap label objects are now explicitly deleted before being recreated on initialization, preventing ghost overlays from appearing when the indicator reloads.
Performance Improvements
Heatmap layout cache
A layout validity check now gates the full heatmap repaint. If the chart width, height, first visible bar, visible bar count, and current bar time have not changed since the last draw, the expensive full-canvas rebuild is skipped entirely. This dramatically reduces CPU on stable charts.
Smarter redraw throttle
A g_needFullRedraw flag bypasses the refresh interval when a forced repaint is genuinely required (timeframe switch, chart resize, history load), while routine ticks continue to use the configurable minimum interval. This prevents both stale renders and unnecessary repaints.
Canvas resize guard
The heatmap and HUD canvases are only resized when the chart dimensions actually change, eliminating the repeated CCanvas::Resize calls that were visible in profiling as a top CPU consumer.
HUD decoupled from heatmap
The branded HUD panel now updates independently of the heatmap render pass. This means the panel remains visible and current even while the heatmap is waiting for history to load on a new timeframe.
Hard data guard in OnCalculate
The indicator now checks bar availability before entering the render path, preventing wasted work and suppressing spurious errors during the brief window after a timeframe switch when data is still synchronizing.
Notes
No input parameters were changed. All existing settings are fully compatible.
Visual output is identical to v2.01 on stable charts.
Users on lower-end systems or trading many symbols simultaneously should see the most noticeable improvement in responsiveness.
https://www.mql5.com/en/market/product/179802?source=Site+Profile+Seller


