EA-60347 · Breakout

TuyulGAP

This EA implements a weekend gap trading strategy by placing Buy Stop and Sell Stop pending orders at the highest high and lowest low of the last N bars on Friday evening. It targets the Monday opening gap breakout and closes positions when a fixed USD profit target is reached, resetting all pending orders on Monday.

Open the interactive view (equity curve, symbol switch)

Key facts

CategoryBreakout
RiskCaution
Blow-up riskLow
Rating★★☆☆☆
TypeTrading EA
TimeframesM15, H1, H4
IndicatorsHigh/Low Price Action
Authorzvickyhac

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: No blow-up pattern found

None of the usual blow-up patterns were found in the code, and the account was not stopped out in our backtests. That is not a guarantee: any EA can lose money.

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

The strategy concept is based on the Weekend Gap phenomenon, placing Buy Stop and Sell Stop pending orders before Friday close at the highest high and lowest low of the last LookbackBars bars, expecting a Monday opening breakout. Entry conditions trigger on Friday at the specified time (default 23:00-23:15), finding the highest high plus one point as the Buy Stop price and the lowest low minus one point as the Sell Stop price. Exit conditions close positions when profit reaches the SecureProfitTarget (default $5 USD), with a fixed stop loss (default 60 points) and no take profit set. Position sizing uses a fixed lot size (LotSize=0.1), allowing only one order per direction, though MaxOpenTrade parameter is declared but never actually enforced in code. Money management only includes a margin check, lacking drawdown control or proportional position sizing, and the stop loss is fixed without any dynamic adjustment mechanism.

Strengths

  • Clear strategy logic based on the weekend gap phenomenon which has statistical backing in forex markets
  • Uses pending orders (Buy Stop/Sell Stop) instead of market orders, avoiding slippage and only filling on breakout
  • Includes margin check and stop loss, providing basic risk control
  • Session flag prevents duplicate order placement, and Monday auto-cleanup removes stale pending orders
  • Lot size normalization properly handles minimum lot, lot step, and maximum lot constraints

Weaknesses

  • MaxOpenTrade parameter is declared but never enforced in code, failing to limit concurrent positions
  • Sell Stop orders have no stop loss set (SL=0 for SELL), creating a critical one-sided risk exposure
  • Fixed 60-point stop loss ignores market volatility (ATR), making it poorly adaptive across pairs and timeframes
  • No take profit set (TP=0), relying solely on the USD profit target which may let large gains reverse
  • No spread filter - Friday close and Monday open spreads can be extremely wide causing unfavorable fills
  • Hardcoded lowest_low initial value of 999999.9 is inelegant and could theoretically fail in extreme scenarios

Possible improvements

  • Implement actual MaxOpenTrade enforcement logic and check current position count before placing orders
  • Add stop loss calculation for Sell Stop orders, ensuring symmetric risk management with Buy Stop
  • Introduce ATR-based dynamic stop loss instead of fixed points, and add spread filter conditions
  • Add maximum drawdown limit and balance-proportional dynamic position sizing
  • Add a timeout mechanism for Monday gap orders to cancel unfilled pending orders after a set period

Risk assessment

Overall risk: Caution

  • Sell Stop orders have no stop loss, potentially causing unlimited losses if Monday gaps in the opposite direction
  • Friday close and Monday open spreads can be extremely wide, causing fills at unfavorable prices
  • No maximum drawdown protection or dynamic position sizing, making consecutive losses uncontrolled
  • MaxOpenTrade parameter is not enforced, potentially leading to more positions than expected
  • Fixed stop loss may be too tight (triggered by noise) or too wide (excessive loss) across different volatility environments

Evaluation scores

Code quality3.0
Strategy logic3.0
Risk management2.0
Robustness2.0
Innovation2.0
Documentation2.0
Overall2.3

Parameters

ParameterDefaultDescription
MagicNumber6062Order magic number to identify this EA's orders
LotSize0.1Lot size per trade
StopLoss60Stop loss in pips per order
MaxOpenTrade1Maximum positions
LookbackBars12Number of bars to look back for high/low search
DayOfWeek5Order placement day (5=Friday)
Hours23Order placement hour
Minutes15Order placement minute window
SecureProfitTarget5.0Profit target in USD, auto-close on reach

Similar Breakout 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.