Article-22532-Self-Healing-.../README.md
2026-06-03 18:21:43 +03:00

131 lines
No EOL
4.4 KiB
Markdown

Article-22532-Self-Healing-Expert-SQLite-Persistence-Foundation
This repository is an article-derived reference project based on the original MQL5 article. It does not claim to reproduce the full original source code unless files are explicitly attached.
## Overview
This project documents the first part of a self-healing Expert Advisor architecture for MetaTrader 5. The article focuses on persistence: storing trade-management state in a local SQLite database so the EA can restore its internal state after terminal restarts, VPS interruptions, or crashes.
The implementation described in the article establishes:
- EA lifecycle scaffolding
- runtime trade-state modeling
- SQLite database initialization
- table creation
- saving active trade state
- checking whether saved state exists
- loading saved trade state back into memory
## Original Article
- Article ID: 22532
- Author: Chacha Ian Maroa
- Publication date: 2026.05.29
- Category: Experts
- URL: https://www.mql5.com/en/articles/22532
## Repository Purpose
This repository serves as a reference/reconstruction project for the article’s persistence layer. Its purpose is to preserve the article’s core design and code structure for:
- restart-safe EA architecture
- persistent storage of virtual trade-management state
- SQLite-backed recovery workflows in MQL5
- future extension into live recovery logic in later parts of the series
## Key Concepts
- Volatile runtime memory vs persistent storage
- Recovery-sensitive trade metadata
- Local SQLite database usage in MQL5
- EA operational state machine
- Virtual SL/TP persistence
- Breakeven and trailing-stop recovery tracking
- Timer-based background continuity checks
- Rebuilding runtime state from saved database records
## Algorithm / Architecture Summary
The article defines a basic Expert Advisor named `SelfHealingExpert.mq5` with:
- `ENUM_TEST_TRADE_DIRECTION`
- `ENUM_EA_STATE`
- `STradeState` for persistent operational trade data
- global runtime variables for EA state, active trade state, and database handle
- standard event handlers: `OnInit`, `OnDeinit`, `OnTick`, `OnTimer`
Persistence architecture described in the article:
1. Open or create a local SQLite database using `DatabaseOpen`.
2. Ensure the `trade_states` table exists with `CREATE TABLE IF NOT EXISTS`.
3. On EA startup, initialize the database and timer.
4. Save active trade state with `SaveTradeState()` using `INSERT OR REPLACE`.
5. Check for saved state existence with `TradeStateExists(ticket)`.
6. Restore saved state into `STradeState` with `LoadTradeState(ticket, state)`.
7. Close the database cleanly in `OnDeinit()`.
The database file is described as:
- `MQL5/Files/self_healing_trade_manager.sqlite`
The table stores fields corresponding to the runtime structure, including:
- ticket
- symbol
- magic
- direction
- volume
- entry price
- virtual SL / TP
- trailing metadata
- breakeven / trailing activation flags
- timestamps
- state marker such as `ACTIVE`
## Mentioned or Attached Files
### Explicitly attached files
- `SelfHealingExpert.mq5`
### Mentioned in text only
- SQLite database file: `self_healing_trade_manager.sqlite`
## Statistics
- Series length mentioned: 5 parts
- Database tables defined in this part: 1
- Core persistence functions added in this part: 5
- `OpenDatabase`
- `EnsureDatabaseTables`
- `CloseDatabase`
- `SaveTradeState`
- `TradeStateExists`
- `LoadTradeState`
- Event handlers present in the EA foundation: 4
- `OnInit`
- `OnDeinit`
- `OnTick`
- `OnTimer`
## Tags
`MQL5` `MetaTrader5` `Expert-Advisor` `SQLite` `Persistence` `State-Recovery` `Trade-State` `Database` `Algorithmic-Trading`
## Difficulty
Intermediate
## Limitations
- This repository is based on article content and should be treated as a reference/reconstruction unless the attached source file is actually present in the repository.
- The processed input does not provide the article ID, publication date, or category metadata.
- The article describes only the persistence foundation, not the full self-healing trading system.
- Live trade recovery, managed position detection, virtual SL/TP enforcement, and restart validation are stated as future parts of the series.
- No installation or deployment workflow beyond article-level guidance should be assumed.
- If the attached source file is missing from the repository, the full original source code is not available here.
## Reference
Original article page: https://www.mql5.com/en/articles/22532