131 lines
No EOL
4.4 KiB
Markdown
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 |