Why are MT4/MT5 panels "heavy and freezing": measured the causes with a self-made tool
I’m Yohaku, creating MT4/MT5 indicators and handy tools. What I make is driven by complaints that come up in GoGoJiang’s reviews and questions.
About tools that display panels, I often see worries like “heavy” or “freezes when switching currency pairs or timeframes.” Since the same problem occurred with my own prototype panel, I measured the causes and found how to fix them. I also outline the steps to try in a demo before buying.
Conclusion first
- The cause of my homemade prototype panel getting heavy was that I rewrote all the screen elements (lines, buttons, text) every second.
- Especially in MT5 on Mac version (Wine), each interaction with an element waits for a response, so when busy, a single display could take tens of seconds, during which the chart is blocked.
- If you implement “redraw only the changed parts,” the usual load nearly vanishes (measured on my prototype).
Measured conditions
- October 8, 2026, MT5 on the Mac version (Apple Silicon)
- On the EURUSD 5-minute chart, placing my panel together with MT standard Fractals
- Created a version that logs the time per processing step, comparing the old design with the new one
Results
Old design (rewriting all parts every second)
- Time per display: average 67–94 ms, max 153–188 ms. About 200 interactions with parts were performed per display.
- When the chart was busy, there were times when one display took 28–69 seconds. During that period, the chart could not respond to external requests.
New design (redraw only changed parts)
- No changes in a given second result in 0 writes, with an average of 0.03 ms and a maximum of 0.18 ms.
- Only when a new bar appears and the display changes, about 6–10 rewrites occur.
- The appearance is the same as the old design.
Why it gets heavy
In MT4/MT5, the panel’s lines, buttons, and text are “objects.” The actions to create or modify these pieces, on the Mac version (running Windows software via Wine), involve waiting for a response for each operation.
If you rewrite all the pieces every second (about 200 times), those waits accumulate. The busier the chart, the longer each wait, and the display can take tens of seconds overall.
The fix is to remember each piece’s previous position, text, and color, and redraw only the parts that changed. If nothing changed in a given second, nothing is drawn. With this, the usual load nearly disappears.