forked from Princeec13/mql5
357 lines
8.7 KiB
Text
357 lines
8.7 KiB
Text
/**
|
|
\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
|