# 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.