EA-200 · Multi-Timeframe

ch2010structure

A multi-currency, multi-timeframe EA that trades five currency pairs (USDCHF, GBPUSD, AUDUSD, USDJPY, EURGBP) using a class-based architecture. It executes day trades on new daily bars and intraday trades on new 30-minute bars, with built-in order validation and volume capping logic.

Open the interactive view (equity curve, symbol switch)

Key facts

RiskHigh risk
Blow-up riskElevated
Rating★★☆☆☆
TypeTrading EA
TimeframesD1, M30
IndicatorsUnknown - strategy implementation not shown
Author—

Backtest results (H1, about 1 year)

SymbolP&LAnnualMax DDTradesWin rateSharpeRecoveryLosing streakPer tradeStatus
EURUSD0.00%0.00%0.00%0—————Not convertible yet
GBPUSD0.00%0.00%0.00%0—————Not convertible yet
USDJPY0.00%0.00%0.00%0—————Not convertible yet
XAUUSD0.00%0.00%0.00%0—————Not convertible yet

Why this EA never traded: no entry rule survived the conversion.

Converted from MQL5 to Python and run with the same rules for every EA. Positions use MT5 lot sizes (100,000 units per FX lot, 100 oz per gold lot) with 1:100 leverage, one order at a time, and a stop-out below 10% of the starting balance. Sharpe is computed from the equity curve. Results marked as unreliable are shown for completeness only.

Blow-up risk: Elevated

  • Has no stop loss or trailing stop
  • Can hold up to 12 positions at once

High: stopped out in our backtest, or martingale/grid sizing without a stop loss. Elevated: martingale or grid sizing with a stop loss, or several positions at once without a stop loss. What the label means and what we found →

Strategy analysis

This EA employs a multi-timeframe strategy, making day trading decisions on new daily bars and intraday trading decisions on new M30 bars. The strategy core is encapsulated in the CExp class, which determines entry conditions through getTP() for take-profit, getVol() for trade volume, getOrderType() for order type, and getDB() for a baseline value. Exit conditions are realized via the take-profit price returned by getTP(). Position sizing is managed by the DebugOrderSend function with strict controls: total directional exposure capped at 15 lots, single trade maximum of 5 lots, minimum of 0.1 lot, and pending orders limited to 12 total. Money management ensures volume compliance by checking SYMBOL_VOLUME_MIN and SYMBOL_VOLUME_MAX. However, no explicit stop-loss logic is visible in the code, which represents a significant risk. The IsNewBar function ensures trading logic executes only on the first tick of each new bar, preventing duplicate entries.

Strengths

  • Multi-currency diversification reduces single-instrument risk
  • Built-in debug order functions facilitate troubleshooting trade execution issues
  • Comprehensive position sizing with total exposure and per-trade limits
  • IsNewBar check ensures one execution per bar, preventing duplicate entries
  • Object-oriented architecture with CExp class enables code reuse across instruments

Weaknesses

  • No visible stop-loss logic, exposing positions to unlimited loss risk
  • Core strategy methods (getTP/getVol/getOrderType/getDB) are not shown, making strategy validity unverifiable
  • IsNewBar uses an int index for only two periods, poor scalability for additional timeframes
  • Duplicated validation logic between DebugOrderCheck and DebugOrderSend violates DRY principle
  • Hard-coded magic numbers (12, 15, 5, 0.1) lack parameterized configuration

Possible improvements

  • Add explicit stop-loss logic so every trade has a defined maximum loss
  • Extract hard-coded numeric constants into configurable input parameters
  • Refactor IsNewBar to use a map or dynamic array supporting arbitrary timeframe counts

Risk assessment

Overall risk: High risk

  • Absence of stop-loss exposes positions to potentially catastrophic losses
  • Simultaneous multi-currency trading can concentrate correlated risk
  • 15-lot total position cap can still produce significant losses in extreme markets

Evaluation scores

Code quality3.0
Strategy logic2.0
Risk management2.0
Robustness3.0
Innovation2.0
Documentation1.0
Overall2.2

Parameters

ParameterDefaultDescription
SymbolUSDCHF/GBPUSD/AUDUSD/USDJPY/EURGBPTrading symbol
MaxPendingOrders12Maximum pending orders
MaxTotalVolume15Max total volume per direction in lots
MaxSingleVolume5Max single trade lot size
MinSingleVolume0.1Min single trade lot size

Similar Multi-Timeframe EAs

Backtests are historical simulations and do not guarantee future results. Not financial advice.

Get the weekly Arena report

One email a week: ranking changes, new signals and new research. No spam; unsubscribe any time.