Stretch, squash and rate tables become dynamic arrays so codec objects
stay small on the MQL5 stack; initialise variables the MQL5 compiler
cannot prove assigned and keep ternary branches the same type. Output
is byte-identical.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hot path now reads Squash() from a precomputed table (byte-identical
output). The self-test encodes a deterministic data set and compares
size and FNV-1a hash with the reference C++ build, which catches any
MQL5 compiler difference that would make archives non-portable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
TkzExport writes the tick history of a symbol into a .tkz archive
(day/week/month chunks, optional per-chunk verification), TkzVerify
decodes an archive and compares it with the terminal history,
TkzToCustom loads an archive into a custom symbol, and TkzSelfTest runs
CTkzSelfTest (synthetic edge cases, real ticks, archive I/O). The
self-test class is also compiled and run by the C++ harness.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>