Traadence's EUR USD Scalper EA is a fully automated M1–M5 execution system for MetaTrader 5, written in MQL5 and delivered with editable source code. It watches EUR/USD tick conditions, sizes each position from a percentage-risk setting, places protective exits, and refuses entries when spread, scheduled news, or the daily loss state breaches configured limits.
Fast entries are useful only when exposure, transaction cost, and trading windows are controlled before the order is sent.
The build addresses a common scalping failure: a signal can look valid on a candle chart yet become unacceptable after spread expansion, event volatility, or oversized position sizing. The EA therefore treats entry logic and risk permission as separate decisions. A setup may qualify technically, but the order is released only after every guard returns an explicit pass.
What the EA Does on Every Tick
The EA processes the platform's tick event handler, updates session and account state, checks the signal, calculates risk-based volume, validates spread and news restrictions, then routes an order through the CTrade execution class. If any rule fails, it records the rejection reason instead of opening a position. This separation makes behavior auditable during backtests and live monitoring.
Core Features
| Feature | Description |
|---|---|
| Tick-driven automated execution | Manual hesitation and inconsistent timing are removed by evaluating eligible M1–M5 setups as new ticks arrive, then submitting orders only after all permission checks pass. |
| Percentage-risk position sizing | Fixed lots can expose very different account percentages as stop distance changes. Volume is calculated from account equity, selected risk percentage, stop distance, tick value, and broker lot steps. |
| Configurable protective exits | Undefined exits make short-duration trades difficult to test. Stop Loss and Take Profit values are explicit inputs, normalized to symbol digits and checked against the broker's minimum stop distance. |
| Daily loss circuit breaker | Repeated entries after a poor session can compound damage. The EA tracks closed trading results for the server day and disables new orders after the configured loss percentage is reached. |
| Economic-news blackout | Scheduled releases can invalidate normal spread and slippage assumptions. The MQL5 Economic Calendar blocks entries for selected currencies, impact levels, and minutes before or after an event. |
| Spread permission gate | A small target can be consumed by transaction cost. The EA reads the current bid-ask difference and rejects entries above the maximum spread input while logging the observed value. |
| Linear exposure model | Recovery sizing can hide tail risk. Martingale and grid logic are absent; each position is sized independently from the same risk rule, with configurable limits on simultaneous exposure. |
| Documented extension points | Pair expansion should not require rewriting risk controls. Signal, filter, sizing, execution, and reporting modules are separated so additional symbols or entry variants can be tested independently. |
Execution Rules and Exposure Boundaries
A starter profile can use 0.50% risk per trade, a 3% daily loss cap, and a 30-minute high-impact news window, but every value remains an input rather than a hard-coded promise. The production sequence is deterministic:
- Confirm the chart symbol and timeframe are permitted, the trading session is active, and no existing exposure rule is violated.
- Evaluate the entry setup once per configured bar or tick mode, preventing duplicate signals from the same market state.
- Reject the order when spread, news, stop distance, volume step, margin, or daily-loss checks fail.
- Submit the order with server-valid volume and exits, then store the request, broker response, and rejection code in the Experts log.
Tech Stack for Tick-Level Execution
| Layer | Implementation | Why it is used |
|---|---|---|
| Trading runtime | MetaTrader 5 terminal | Provides broker price feeds, chart attachment, account state, order routing, strategy testing, and operational logs in one deployable desktop runtime. |
| Strategy language | MQL5 modules and classes | Compiles to a native EA, exposes typed inputs, supports event-driven execution, and keeps signal, risk, and filter logic readable in the delivered source. |
| Order adapter | CTrade wrapper with retcode logging | Centralizes market-order submission, volume normalization, protective exits, and broker response handling instead of scattering trade calls through the signal code. |
| Event controls | Calendar queries plus server-time conversion | Keeps news blocking aligned with trade-server time, which matters because calendar timestamps are not based on the user's local clock. |
| Test harness | MetaTrader 5 Strategy Tester | Runs real-tick simulations, variable-spread scenarios, parameter sweeps, visual inspection, and forward segments without changing the production execution path. |
input double RiskPercent = 0.50;
input double DailyLossLimitPct = 3.00;
input int StopLossPoints = 80;
input int TakeProfitPoints = 120;
input int MaxSpreadPoints = 12;
input int NewsBlockMinutes = 30;
const bool USE_MARTINGALE = false;
const bool USE_GRID = false;
Validation and Performance Benchmarks
Scalping tests are judged on execution realism and parameter stability, not a single attractive equity curve. The methodology uses real ticks where available, broker-like commission and variable spread, a chronological 70/30 development-to-holdout split, and walk-forward checks across at least three volatility regimes. The BIS foreign-exchange turnover survey and the Bank of England's UK turnover benchmark provide market-structure context, while ESMA's CFD intervention measures reinforce why leverage, loss controls, and risk warnings matter for retail rolling-spot products.
| Benchmark | Evidence reviewed |
|---|---|
| Signal-path timing | Microsecond timestamps around data refresh, filter checks, sizing, and order request creation; slow operations are moved outside the tick-critical path. |
| Cost sensitivity | Results are rerun with wider spread, commission, and adverse slippage assumptions to show whether a small edge disappears under plausible execution friction. |
| Parameter stability | Neighboring Stop Loss, Take Profit, session, and filter values are compared. A narrow isolated peak is treated as an overfitting warning, not a preferred setting. |
| Risk behavior | Maximum drawdown, daily lock activations, consecutive losses, exposure overlap, rejected orders, and stop execution are reviewed alongside net trade results. |
| Forward agreement | Holdout and demo-forward behavior are compared with the same inputs, symbol specification, and time zone before any live deployment decision. |
Project Directory
session-risk-scalper/
├── Experts/
│ ├── SessionRiskEA.mq5
│ └── SessionRiskEA.ex5
├── Include/
│ ├── Core/
│ │ ├── Config.mqh
│ │ ├── SessionClock.mqh
│ │ └── TradeState.mqh
│ ├── Signals/
│ │ ├── ScalpSignal.mqh
│ │ └── BarGate.mqh
│ ├── Risk/
│ │ ├── PositionSizer.mqh
│ │ ├── DailyLossGuard.mqh
│ │ └── ExposureGuard.mqh
│ ├── Filters/
│ │ ├── SpreadFilter.mqh
│ │ ├── NewsFilter.mqh
│ │ └── TradingSessionFilter.mqh
│ └── Execution/
│ ├── OrderRouter.mqh
│ └── RetcodeLogger.mqh
├── Profiles/
│ ├── EURUSD_M1_conservative.set
│ └── EURUSD_M5_balanced.set
├── Tests/
│ ├── walk_forward_plan.md
│ ├── spread_stress_cases.csv
│ └── validation_checklist.md
├── Docs/
│ ├── installation.md
│ ├── inputs-reference.md
│ ├── broker-compatibility.md
│ └── changelog.md
├── README.md
└── LICENSE.txt
Use Cases
- Run a rule-based EUR/USD session without manually watching every M1 candle, while preserving a fixed percentage risk model for each independent setup.
- Pause new entries around high-impact EUR or USD events and resume only after the configured post-event window and spread ceiling both clear.
- Compare M1 and M5 profiles under identical cost assumptions, then retain only settings that remain stable in holdout and walk-forward tests.
- Deploy the same audited risk engine to another permitted currency pair by adding symbol-specific sessions and signal parameters rather than duplicating execution code.
For broker-specific symbol mapping, additional pair modules, or revised entry rules, Traadence provides MQL5 bot customization. Ongoing EA maintenance covers deployment checks, log review, compatibility fixes, and versioned improvements without replacing the tested risk layer.
How to Automate EUR/USD Scalps Using Traadence's EUR USD Scalper EA
Download & Set Up the Project
Download, set up, and install Traadence's EUR USD Scalper EA to get the project running. If you hit any difficulty, contact us here.
Attach the EA
Open MetaTrader 5, load a EURUSD M1 or M5 chart, drag SessionRiskEA from Navigator, and permit Algo Trading for the chart.
Set Trading Limits
Enter risk percentage, Stop Loss, Take Profit, daily loss cap, maximum spread, session hours, event impact, and news-block minutes in Inputs.
Start and Review Output
Press OK, enable Algo Trading, and review accepted signals, blocked entries, broker retcodes, fills, and daily lock status in the Experts log.
Questions
Does the EA use martingale or grid recovery?
No. Position size is calculated independently from the configured percentage risk and current stop distance; it does not increase after a loss or build layered recovery baskets. Exposure limits can also prevent overlapping positions when the selected profile requires one trade at a time.
How does the MT5 news filter block risky entries?
The filter reads scheduled EUR and USD events from the platform calendar, converts checks to trade-server time, and blocks new entries by impact level and configurable minutes before and after release. Existing-position handling remains governed by the selected Stop Loss, Take Profit, and session rules rather than silently removing protection.
How should the EA be validated before live deployment?
Use real-tick backtests with realistic spread, commission, and slippage assumptions, then reserve a chronological holdout segment and run a demo forward test with unchanged inputs. Review drawdown, cost sensitivity, rejected-order logs, daily loss locks, and parameter neighborhoods; an isolated best result is not sufficient evidence of stability.
