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

4.4 KiB

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

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