Tarea técnica
🧩 1. Overview
1.1 Purpose
The purpose of this EA is to automate the Turtle Trading System, originally developed by Richard Dennis and William Eckhardt, using Donchian Channel breakouts and ATR-based volatility stops. The EA will execute entries, exits, and risk management automatically.
1.2 Scope
The EA should:
-
Trade any MT5-compatible instrument (Forex, Crypto, Commodities, Indices, Synthetic Indices).
-
Support backtesting and live trading.
-
Implement both System 1 (short-term) and System 2 (long-term) Turtle breakout rules.
-
Manage trade sizing, pyramiding, stop-loss, and trailing stops based on ATR volatility.
⚙️ 2. Functional Requirements
2.1 Entry Logic
-
System 1 (Short-term):
-
Buy when price closes above the Donchian Channel high (N = 20).
-
Sell when price closes below the Donchian Channel low (N = 20).
-
-
System 2 (Long-term):
-
Buy when price closes above the Donchian Channel high (N = 55).
-
Sell when price closes below the Donchian Channel low (N = 55).
-
-
Filter Option:
-
Enable/disable each system independently.
-
Optionally confirm with trend filter (e.g., 200 EMA direction).
-
2.2 Exit Logic
-
Exit all long positions when price closes below the Donchian Channel low (N = 10).
-
Exit all short positions when price closes above the Donchian Channel high (N = 10).
-
Optional trailing stop exits (ATR-based).
2.3 Stop Loss
-
Each trade has a fixed stop loss equal to:
Stop Distance = ATR(20) × ATR_Multiplier -
Default ATR_Multiplier = 2.0.
2.4 Position Sizing
-
Risk-based sizing:
Position Size = (Account Balance × Risk%) / (Stop Distance) -
Default Risk% = 1% per trade.
-
Minimum lot size enforced by broker specifications.
2.5 Pyramiding
-
Allow multiple entries (up to 4) in the direction of profit.
-
New positions are opened every +0.5 ATR move in favor of trade.
-
Each added position has its own stop-loss based on most recent ATR.
2.6 Take Profit
-
Optional Take Profit at user-defined R:R ratio (default = 2.0).
-
If disabled, rely solely on Donchian or trailing exits.
2.7 Trailing Stop (optional)
-
Dynamic trailing stop based on ATR(20) × Trailing Multiplier.
-
Updates on every new candle or tick.
2.8 Filters (optional)
-
Volatility Filter: Trade only when ATR > ATR_SMA(20).
-
Session Filter: Trade only during selected hours (e.g., London/NY).
-
Trend Filter: Only take trades aligned with a higher timeframe trend (EMA direction).
🧮 3. Parameters and Inputs
Parameter | Description | Default |
---|---|---|
System1_Period | Donchian Channel Period (Short-term) | 20 |
System2_Period | Donchian Channel Period (Long-term) | 55 |
Exit_Period | Donchian Exit Period | 10 |
ATR_Period | ATR calculation length | 20 |
ATR_Multiplier | Multiplier for stop distance | 2.0 |
Risk_Percent | % of balance risked per trade | 1.0 |
TP_Multiplier | Take-profit multiplier (R:R) | 2.0 |
Allow_Pyramiding | Enable additional entries | true |
Max_Pyramids | Max pyramided entries per direction | 4 |
TrailStop_Enable | Enable trailing stop | true |
TrailStop_ATRMult | Trailing stop ATR multiplier | 1.0 |
Use_TrendFilter | Trade with EMA trend confirmation | false |
Trend_EMA_Period | EMA period for trend | 200 |
SessionStart | Start time (HH:MM) | 00:00 |
SessionEnd | End time (HH:MM) | 23:59 |
Slippage | Max price slippage | 3 pips |
MagicNumber | Unique EA trade ID | 20250507 |
🧠 4. Non-Functional Requirements
4.1 Performance
-
EA must execute in under 100 ms per tick.
-
Backtest-compatible across all timeframes (1M–1D).
4.2 Compatibility
-
Platform: MetaTrader 5.
-
Accounts: Supports both Hedging and Netting modes.
-
Broker Types: ECN, Market Maker, Deriv, Forex.com, etc.
4.3 Error Handling
-
Check all indicator handles before use.
-
Prevent duplicate entries.
-
Handle “Off Quotes” and “Invalid Volume” gracefully with retry logic.
4.4 Logging
-
Print trade entries, exits, and risk calculations to the Experts tab.
-
Store key variables (ATR, Donchian levels, stops) for debugging.
📈 5. Example Trade Flow
-
Setup Detection
-
ATR(20) = 120 pips.
-
Donchian high = 1.1200; Donchian low = 1.1000.
-
Price closes at 1.1205 → Long breakout triggered.
-
-
Order Calculation
-
Stop Distance = ATR × 2.0 = 240 pips.
-
Risk = 1% of $10,000 = $100.
-
Lot size = 100 / 240 = 0.0416 ≈ 0.04 lots.
-
-
Execution
-
Buy 0.04 lots at 1.1205.
-
Stop Loss at 1.0965.
-
Take Profit at 1.1685 (2R).
-
-
Management
-
If price rises by 0.5 ATR, add 0.04 lots (pyramid #1).
-
If price closes below Donchian(10) low → Exit all longs.
-
🔒 6. Safety & Protections
-
Equity stop: close all trades if drawdown exceeds MaxDrawdown% .
-
Spread filter: disable new entries if spread > average × 2.
-
News filter (optional): disable entries during major news events (via external calendar or user input).
-
Slippage protection on order placement.
🧰 7. Deliverables
-
Source Code ( TurtleTrader.mq5 )
-
Compiled EA ( TurtleTrader.ex5 )
-
User Guide (parameters, setup, and backtest instructions)
-
Backtest Report (e.g., EURUSD and Boom1000 examples)
-
Optimization Template ( .set files)