diff --git a/README.md b/README.md index 546a241..b147b74 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,26 @@ The library abstracts common functionality such as trade execution, risk managem The primary goal is to reduce duplicated implementation, improve maintainability, and provide a modular foundation for building Expert Advisors and trading systems. +--- +## 🧰 What the Library Provides + +MT5 Quant Lib provides reusable infrastructure for common Expert Advisor development tasks. + +The library includes utilities for: + +- **Order management** — opening, modifying, and managing trade orders. +- **Position sizing** — calculating trade volume based on account risk, stop loss distance, and symbol properties. +- **Risk management** — applying consistent risk controls across trading systems. +- **Stop-loss management** — setting fixed, breakeven, trailing, and rule-based stop losses. +- **Take-profit handling** — supporting fixed targets and trade management rules. +- **Indicator access** — managing indicator handles and retrieving indicator buffer values. +- **Signal tracking** — maintaining signal state across symbols, bars, and strategy components. +- **Time/session filtering** — restricting logic to specific trading windows or market sessions. +- **Multi-symbol support** — helping Expert Advisors operate consistently across multiple instruments. +- **Backtesting support** — providing reusable utilities for testing and optimisation workflows. + +The aim is to centralise common MT5 infrastructure so that strategy-specific code can stay focused on trading logic rather than repeated platform plumbing. + --- ## 🎯 Engineering Focus @@ -59,54 +79,60 @@ The library provides reusable modules including: --- -## 📈 Library Architecture +## 📂 Repository Structure -```mermaid -flowchart TD +```text +MT5-Quant-Lib/ -A["Trade Execution"] - -B["Risk Management"] - -C["Indicator Management"] - -D["Signal Tracking"] - -E["Time Filters"] - -F["Backtesting Utilities"] - -G["Shared Helpers"] - -H["MT5 Quant Lib"] - -H --> A -H --> B -H --> C -H --> D -H --> E -H --> F -H --> G +├── Indicators/ +├── Orders/ +├── Utils/ +├── BacktestUtils/ +├── trend_following_ea.mq5 +└── README.md ``` -The library separates reusable infrastructure functionality into independent modules that can be combined as needed. - -This approach improves: - -- maintainability -- reusability -- modularity -- separation of concerns -- reduction of duplicated logic +Main modules: +- **Indicators/** — indicator wrappers and helper components +- **Orders/** — order execution and position management +- **Utils/** — shared utility classes and helper functions +- **BacktestUtils/** — optimisation and testing helpers --- -## 🧩 Example Application +## 🧩 Example Expert Advisor -The repository also contains a small example Expert Advisor demonstrating how library components can be integrated and used in a practical application. +The repository includes an example Expert Advisor demonstrating practical use of the library components within a complete multi-symbol trading workflow. -The example exists purely as a usage demonstration and is not the primary purpose of the repository. +The example EA illustrates how independent library modules can be composed into a larger application while keeping infrastructure concerns separated from strategy logic. + +The example demonstrates: + +- Multi-symbol processing across configurable instrument lists +- Event-driven execution using timer-based updates +- Signal construction using modular indicator components +- Composition of multiple entry conditions and trade rules +- Position sizing based on configurable risk settings +- Trade lifecycle management including entries, exits, and runners +- Trailing stop and breakeven management +- Signal memory and state tracking across bars +- Resource lifecycle management for indicator handles +- Train/test data separation for optimisation workflows +- Custom optimisation metrics through `OnTester()` + +The example application intentionally keeps strategy logic modular by separating: + +- signal generation +- trade execution +- risk calculations +- position management +- indicator handling +- state tracking + +This demonstrates how reusable infrastructure components can support larger systems without tightly coupling implementation details. + +[Example Expert Advisor](trend_following_ea.mq5) --- @@ -120,16 +146,43 @@ The example exists purely as a usage demonstration and is not the primary purpos --- -## 🧠 Software Engineering Skills Demonstrated +## ⚙️ Installation -This project demonstrates: +Clone the repository: + +```bash +git clone https://github.com/xMattC/mt5-quant-lib.git +``` + +Copy the library folder into your MetaTrader 5 `Include` directory: + +```text +C:/Users//AppData/Roaming/MetaQuotes/Terminal//MQL5/Include/ +``` + +The final structure should look similar to: + +```text +MQL5/ + +└── Include/ + └── MyLibs/ + ├── Indicators/ + ├── Orders/ + ├── Utils/ + ├── BacktestUtils/ + └── ... +``` + +The `Terminal_ID` directory is generated automatically by MetaTrader 5 and will vary between installations. + +After copying the library, modules can be imported into Expert Advisors using: + +```cpp +#include +#include + +EntryOrders entry_orders; +AdjustPosition adjust_pos; +``` -- Reusable library design -- Object-oriented programming -- Modular architecture -- Infrastructure abstraction -- Risk-management implementation -- Multi-symbol systems -- Shared runtime development -- Separation of concerns -- Platform-specific software engineering