A comprehensive collection of MQL5 implementations for risk management and position management in algorithmic trading.
This repository contains the source code from articles published on MQL5.com by nique_372..
---
## Main features
> MQLArticles is not a single library: it's an ecosystem of ~13 independent modules (several used in production within the TSN ecosystem). Each folder in the table below is its own library, with its own detailed README inside the folder — this section only summarizes what each one solves.
| Module | What it solves |
|--------|--------------|
| **[RM](./RM/README.md)** | Risk management: lot size calculation, dynamic SL/TP, OCO orders, max loss/profit limits with automatic position closing. |
| **[PosMgmt](./PosMgmt/README.md)** | Open position management: breakeven (by fixed points, ATR or RRR), partial closes by volume, and partial closes conditioned on indicators (RSI, etc.). |
| **[Strategy](./Strategy/README.md)** | Framework for building EAs by composition: chainable entry filters (RSI, Stochastic, Bands, SuperTrend...), a text-based logic rule engine, and time filters (day/year). |
| **[Utils](./Utils/README.md)** | Core of cross-cutting utilities used by the rest of the ecosystem — see submodules below. |
| [Utils/FA](./Utils/FA/README.md) | Shared base classes: ATR, pointer auto-cleanup, bar control, simple logging, diffs, sorting. |
| [Utils/LogFile](./Utils/LogFile/README.md) | File logging system with parsing and configurable levels. |
| [Utils/SetFiles](./Utils/SetFiles/README.md) | Programmatic generation and editing of .set files (EA parameters). |
| [Utils/EnumsStr](./Utils/EnumsStr/README.md) | Automatic enum-to-string conversion (with a code generator). |
| [Utils/Bits](./Utils/Bits/README.md) | Bit manipulation, fast buffers and hashing. |
| [Utils/StrMatch](./Utils/StrMatch/README.md) | Simplified string matching (lightweight pattern matching). |
| [Utils/File](./Utils/File/README.md) | File operations and path handling. |
| [Utils/MBen](./Utils/MBen/README.md) | Benchmarking of multiple code blocks. |
| [Utils/TfI](./Utils/TfI/README.md) | Timeframe utilities. |
| **[IndicatorsCts](./IndicatorsCts/README.md)** | Generic wrapper for consuming technical indicators with a reusable instance pool. |
| **[Ob](./Ob/README.md)** | Order Blocks indicator + example EAs that consume it (published articles). |
| **[Examples](./Examples)** | Working EAs/scripts that put the libraries above into practice (breakeven panel, risk management panel, lot size / SL test scripts). |
| **[MqlCompilerBugs](./MqlCompilerBugs)** | Minimal reproductions of MQL5 compiler bugs found while building this ecosystem, each with its own README. |
| **[Sets](./Sets)** | `.set` preset files used by published articles (currently the partial-close article, #19682). |
| **[Defines](./Defines)** | Notes on optional `#define`s to enable extra logging/strictness in specific classes across the repo. |
> Code snippets for each module (with real usage examples) now live in that folder's own README — this root README is the ecosystem map, not the class catalog.
---
## Repository Structure
| Folder | Description |
|---------|-------------|
| **Defines** | Markdown files containing optional defines to activate or increase logging verbosity for specific classes in the repository. |
| **Examples** | Basic examples that implement various libraries from the MQLArticles repository, such as risk management, position management, etc. |
| **Images** | Screenshots and visual assets from repository examples (breakeven manager, lot size calculator, order blocks indicator). |
| **IndicatorsCts** | Wrapper library for implementing technical indicators. |
| **Ob** | Order Blocks indicator implementation and example Expert Advisors from published articles (author: nique_372). |
| **PosMgmt** | Position management libraries including:
- Breakeven management
- Partial position closure
- Conditional partial closure with indicator-based conditions |
| **RM** | Complete Risk Management (RM) library modules. |
| **Utils** | Core utility library for EAs, indicators, and libraries.
| **Sets** | Preset configuration files (.set) used in articles published by nique_372. |
| **Strategy** | Strategy implementation framework for the MQLArticles ecosystem. |
---
## Examples
- Examples\\GUI\\BE\\Ea.mq5

- Examples\\GUI\\Risk_Management_Panel.mq5

- Ob\\Indicator\\OrderBlockIndPart2.mq5

---
## Implemented Article Series
### Risk Management
| Part | Main Topic | Article Link |
|-------|----------------|-------------------|
| **Part 1** | Risk management fundamentals | [[EN]](https://www.mql5.com/en/articles/16820) |
| **Part 2** | Lot size calculation | [[ES]](https://www.mql5.com/es/articles/16985) |
| **Part 3** | Base class construction | [[ES]](https://www.mql5.com/es/articles/17249) |
| **Part 4** | Completing key functions of the CRiskManagement class | [[ES]](https://www.mql5.com/es/articles/17508) |
| **Part 5** | Integrating risk management into an EA (Order Block) | [[ES]](https://www.mql5.com/es/articles/17640) |
> **Important Update**: The RiskManagement library has been completely renovated since the last publication (part 5).
### Position Management - Breakeven
| Part | Focus | Article Link |
|-------|---------|-------------------|
| **Part 1** | Base class and breakeven by fixed points | [[ES]](https://www.mql5.com/es/articles/17957) |
| **Part 2** | Breakeven by ATR and RRR | [[ES]](https://www.mql5.com/es/articles/18111) |
### Position Management - Partial Closes
| Focus | Article Link |
|-------|--------------------|
| Implementation of partial closes in MQL5 | [[ES]](https://www.mql5.com/es/articles/19682) |
### Position Management - Conditional partial closure
| Focus | Article Link |
|-------|--------------------|
| Implementation of the base class in MQL5 | [[ES]](https://www.mql5.com/es/articles/20048) |
### Order Block Indicator
| Part | Focus | Article Link |
|-------|---------|-------------------|
| **Part 1** | Initial implementation of Order Blocks in an indicator | [[EN]](https://www.mql5.com/en/articles/15899) |
| **Part 2** | Signal implementation in the Order Block indicator | [[EN]](https://www.mql5.com/en/articles/16268) |
---
## License
**[Read Full License](./LICENSE)**
By downloading or using this repository, you accept the license terms.
---
## Requirements
See the [dependencies.json](./dependencies.json) file.
---
## Installation of repo code
```bash
cd "C:\Users\YOUR USER\AppData\Roaming\MetaQuotes\Terminal\YOUR ID\MQL5\Shared Projects"
tsndep install "https://forge.mql5.io/nique_372/MQLArticles.git"
```
- Using the `tsndep` command requires the `tsndep` package (available on [PyPI](https://pypi.org/project/tsndep)). This command automatically downloads all dependencies and installs every requirement from the repositories.
- If any part of the system is private, the install will fail. Contact me so I can grant you access (if it's a product, you can purchase it; if you have any questions, don't hesitate to reach out). Check the dependencies.json file for more info.
---
## Contact
- **Platform:** [MQL5 Community](https://www.mql5.com/es/users/nique_372)
- **Profile:** https://www.mql5.com/es/users/nique_372
- **My Articles** https://www.mql5.com/es/users/nique_372/publications