/** \file EscapeEA.mq5 \brief EscapeEA - Advanced Trading Expert Advisor \version 2.0 \date 2025-07-29 \copyright Copyright 2025 EscapeEA. All rights reserved. */ /** \image html ea_architecture.png "EscapeEA Architecture" width=900px \image latex ea_architecture.png "EscapeEA Architecture" width=12cm */ /** \startuml @startuml EscapeEA_Workflow start :Initialize EA; :Load Indicators; :Initialize TradeExecutor; :Initialize RiskManager; repeat :OnTick Event; if (Paper Trading Mode?) then (yes) :Process Paper Trade; if (3/5 Wins Achieved?) then (yes) :Switch to Live Mode; else (no) :Continue Paper Trading; endif else (no) :Check Trading Hours; :Check Market Conditions; :Generate Trading Signals; :Validate with RiskManager; if (Signal Valid?) then (yes) :Execute Trade via TradeExecutor; :Update Performance Metrics; else (no) :Skip Trade; endif endif :Update Chart Display; repeat while (EA Running?) is (yes) stop @enduml */ /** \startuml @startuml Paper_Trading_Flow state "Paper Trading Mode" as paper state "Live Trading Mode" as live state "Evaluation" as eval state "Success" as success state "Failure" as fail [*] --> paper paper --> eval : Trade Completed eval --> paper : More Trades Needed eval --> success : 3/5 Wins success --> live paper --> fail : Max Trades Reached fail --> [*] @enduml */ /** \startuml @startuml Trading_Signals skinparam monochrome true state "Signal Generation" as signals { [*] --> CheckMA CheckMA --> CheckPrice : MA Crossover CheckPrice --> GenerateSignal : Price Confirmation GenerateSignal --> [*] } state "Trade Execution" as execution { [*] --> ValidateRisk ValidateRisk --> ExecuteTrade ExecuteTrade --> MonitorPosition MonitorPosition --> ClosePosition ClosePosition --> [*] } signals --> execution : Valid Signal @enduml */ /** \startuml @startuml EA_State_Machine state "Initialization" as init state "Paper Trading" as paper state "Live Trading" as live state "Error" as error state "Shutdown" as shutdown [*] --> init init --> paper : Success init --> error : Failure paper --> live : 3/5 Wins paper --> error : Max Failures live --> error : Critical Error error --> shutdown : Auto-Recover error --> [*] : Manual Reset @enduml */ /** \page escape_ea EscapeEA Main Module \section overview Overview EscapeEA is a sophisticated trading system designed for OTC markets with built-in risk management and paper trading capabilities. \section features Features - Dual-mode operation (Paper/Live trading) - Moving Average crossover strategy - Comprehensive risk management - Paper trading validation system - Visual feedback and monitoring \section strategy Trading Strategy \subsection entry_signals Entry Signals 1. **Buy Signal**: - Fast MA crosses above Slow MA - Price is above main MA - All risk parameters are satisfied 2. **Sell Signal**: - Fast MA crosses below Slow MA - Price is below main MA - All risk parameters are satisfied \subsection exit_signals Exit Signals 1. **Take Profit**: Fixed pips from entry 2. **Stop Loss**: Fixed pips from entry 3. **Trailing Stop**: Optional trailing stop 4. **Time-based**: Friday close (optional) \section paper_trading Paper Trading System \subsection requirements Requirements - Must complete 5 paper trades - Must win at least 3 trades - Each paper trade is validated before live execution \subsection simulation Simulation Features - Realistic spread simulation - Slippage modeling - Commission calculation - Real-time performance tracking \section usage Usage \subsection installation Installation 1. Copy `EscapeEA.mq5` to `MQL5/Experts/` 2. Copy `TradeExecutor.mqh` and `RiskManager.mqh` to `MQL5/Include/Escape/` 3. Compile the EA in MetaEditor 4. Attach to a chart with sufficient historical data \subsection configuration Configuration ```mql5 //--- Strategy Parameters input int InpMAPeriod = 14; // MA Period input int InpMAFastPeriod = 10; // Fast MA Period input int InpMASlowPeriod = 21; // Slow MA Period //--- Risk Parameters input double InpLotSize = 0.1; // Lot Size input int InpStopLoss = 100; // Stop Loss (points) input int InpTakeProfit = 200; // Take Profit (points) //--- Trailing Stop input bool InpUseTrailingStop = true; // Use Trailing Stop input int InpTrailingStop = 50; // Trailing Stop (points) input int InpTrailingStep = 10; // Trailing Step (points) //--- Time Filters input bool InpUseTimeFilter = false; // Use Time Filter input int InpStartHour = 8; // Trading Start Hour input int InpEndHour = 20; // Trading End Hour input bool InpFridayClose = true; // Close on Friday input int InpFridayCloseHour = 16; // Friday Close Hour ``` \section components Components \subsection trade_executor Trade Executor - Handles all order execution - Implements retry logic - Manages order lifecycle \subsection risk_manager Risk Manager - Validates all trades - Calculates position sizes - Enforces risk parameters \section example Example ```mql5 // Example of manual trade execution double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double sl = ask - InpStopLoss * _Point; double tp = ask + InpTakeProfit * _Point; trade.Buy(InpLotSize, _Symbol, ask, sl, tp, "EscapeEA Buy"); ``` */ /** \class CEscapeEA \brief Main Expert Advisor class This class implements the core trading logic and coordinates between components. Example: \code // In OnInit() if(!ExtTradeExecutor.Initialize()) { Print("Failed to initialize trade executor"); return INIT_FAILED; } \endcode */ /** \struct SPaperTrade \brief Structure for paper trading simulation \var double entryPrice - Entry price \var double stopLoss - Stop loss level \var double takeProfit - Take profit level \var ENUM_ORDER_TYPE type - Trade type (BUY/SELL) \var datetime openTime - Entry time \var bool isClosed - Whether trade is closed \var double closePrice - Close price \var datetime closeTime - Close time \var double profit - Profit/Loss */ /** \enum ESignalType \brief Trading signal types \value SIGNAL_BUY - Buy signal \value SIGNAL_SELL - Sell signal \value SIGNAL_NONE - No signal */ /** \def PAPER_TRADES_REQUIRED \brief Number of paper trades required before live trading \details Default: 5 trades */ /** \def PAPER_WINS_REQUIRED \brief Number of winning paper trades required \details Default: 3 wins */ /** \fn int OnInit() \brief EA initialization function \return INIT_SUCCEEDED or INIT_FAILED \note Initializes indicators, trade executor, and risk manager */ /** \fn void OnDeinit(const int reason) \brief EA deinitialization function \param reason Deinitialization reason code \note Cleans up resources and saves state */ /** \fn void OnTick() \brief Main tick processing function \note Called on every tick/bar */ /** \fn void ProcessTrades() \brief Process trading signals and execute trades \note Handles both paper and live trading */ /** \fn void ProcessPaperTrading() \brief Process paper trading simulation \note Simulates trades without real money */ /** \fn void UpdateChart() \brief Update chart with trading information \note Displays status, positions, and performance */ /** \page ea_troubleshooting Troubleshooting \section common_issues Common Issues \subsection ea_not_trading EA Not Trading - **Symptom**: EA is attached but not placing trades - **Solution**: 1. Check Experts tab for errors 2. Verify account is connected 3. Check symbol is enabled for trading 4. Verify risk parameters \subsection incorrect_signals Incorrect Signals - **Symptom**: Trades in wrong direction - **Solution**: 1. Check indicator settings 2. Verify timeframes match 3. Check for repainting indicators \section optimization Optimization \subsection parameters Parameters to Optimize 1. Moving Average periods 2. Stop Loss/Take Profit levels 3. Position sizing 4. Time filters \subsection backtesting Backtesting Tips 1. Use 90% quality model 2. Test multiple market conditions 3. Include spread and commission 4. Verify with forward testing \section risk_warning Risk Warning Trading involves substantial risk of loss. This software is for educational purposes only. Past performance is not indicative of future results. */ /** \mainpage EscapeEA Documentation \tableofcontents \section intro_sec Introduction EscapeEA is a professional trading system with built-in risk management. \section features_sec Features - Advanced trading strategy - Comprehensive risk management - Paper trading system - Real-time monitoring \section usage_sec Usage See \ref escape_ea for detailed usage instructions. \section support_sec Support For support contact: support@escapeea.com */ // End of EscapeEA.dox