39 lines
1.5 KiB
Markdown
39 lines
1.5 KiB
Markdown
# 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.
|