catch22/README.md
2026-08-14 00:09:40 +00:00

1.5 KiB

catch22

The canonical catch22 time-series feature set, ported to MQL5 and validated against the reference Python implementation.

Companion code for the MQL5 article: https://www.mql5.com/en/articles/23488

What it does

catch22 is twenty-two features selected out of thousands because they carry most of the discriminative power between time series while staying cheap to compute. CCatch22 computes all of them natively in MQL5.

The port is checked against pycatch22 rather than assumed correct, which is what validate_catch22.py and Catch22Validate.mq5 are for. Feature code that is subtly wrong still returns plausible numbers, so this step is not optional.

The article then builds a leak-free dataset from the features and runs an ablation to ask whether they actually add value over the raw series, before using them as a regime filter in Catch22EA.mq5.

Layout

Include/Catch22/Catch22.mqh          the CCatch22 engine
Include/Catch22/Catch22Features.mqh  the twenty-two feature implementations
Scripts/Catch22/Catch22Validate.mq5  checks against the Python reference
Scripts/Catch22/Catch22Lab.mq5       feature extraction and dataset build
Experts/Catch22/Catch22EA.mq5        the regime filter in a trading context
Catch22/validate_catch22.py          reference values from pycatch22

Run Catch22Validate.mq5 before anything else.

Disclaimer

Educational code. Past behaviour of any model or dataset says nothing about future results. Test on your own data and broker conditions before drawing conclusions.