You create an MT5 Expert Advisor without coding by assembling it from blocks on a canvas — an indicator block, a condition block, an order block, a risk block — and letting the server generate and compile the MQL5 for you. The file that comes back is a real .ex5, the same kind of file a hand-written EA compiles to. No MQL5 syntax is involved at any point.
The part that no-code does not remove is the design work, and that is where almost everyone loses. So this guide does both halves: the mechanical path from an idea to a compiled file, and the evidence about what those files score before you change anything.
What you’ll build
By the end you will have a compiled .ex5 sitting in MetaTrader 5’s MQL5/Experts folder, built from a rule you chose, with a stop-loss and a position size you set on purpose. Two routes get you there and they are genuinely different in effort:
- Start from a template. Pick one of 84 pre-wired strategies from the gallery, then edit its blocks. Fastest way to see a complete flow, and the fastest way to inherit a losing baseline without noticing.
- Start from a blank canvas. Place a Start node, wire an indicator into a condition, wire the condition into an order block, add risk. Slower, but you know exactly what every wire does.
Either way the vocabulary is the same: 118 block types in 8 categories, with a budget of 50 nodes per design. That budget is not the constraint beginners expect it to be. The highest-scoring template in the whole gallery uses six nodes.
Before you start: what the Builder is, and what it is not
You need an idea expressible as “when X happens, buy; when Y happens, close”, 15–30 minutes, and a MetaTrader 5 terminal to run the result in. You do not need MQL5, a compiler, or Windows — the editor runs in the browser and the compile happens on the server.
Three boundaries are worth knowing before you invest an evening.
It generates code; it does not trade. The Builder never places an order, never connects to your broker, and never issues signals. It hands you a file. Everything after that happens in your terminal, on your account, under your control.
Designing is free; compiling needs an account. Dragging blocks, loading templates and reading the Code tab’s inputs preview require no sign-in. Compiling to .ex5 and running the strength test require a free account with a verified email address — an unverified account gets a 403 and the message “Your account is not eligible yet”, which is a different failure from the EAB-E601 “Sign in to compile” you get with no account at all. Knowing which of the two you hit saves a confused ten minutes.
The free .ex5 is licensed, not portable. Every free compile ships with an account lock: the EA runs only on a verified IB account with a supported broker, and MetaTrader 5 must have https://mt5depot.com allow-listed under Tools > Options > Expert Advisors > Allow WebRequest or the EA disables itself on start. Strategy Tester backtests are exempt from that check — which is exactly why you can test before you link anything. The editable .mq5 source is the one paid feature, a one-time $399 Pro licence.
Step-by-step: build the EA
- Open the editor from the Builder page — the button reads Open the builder — free. Nothing is installed and your work autosaves in the browser.
- Choose a starting point. The welcome screen offers Build Your EA — Free, Start with blank canvas and a 3-min tour, plus a template gallery filtered by Basic / Intermediate / Advanced / Portfolio. A blank canvas still needs a Start node from the Utility palette — without one, validation stops you with
EAB-E202. - Place blocks. Drag from the left palette or double-click an entry;
Ctrl+Ksearches all 118 types by name. Wire them by dragging from a node’s output port on the right to the next node’s input port on the left, or press the + button on a node to add and auto-connect the next one. - Set each block’s parameters in the Properties tab on the right. This is where an indicator’s period, applied price and timeframe live — every indicator block can read a different timeframe from the chart it runs on, which is how a multi-timeframe filter is built without any code.
- Set the account-wide rules in the Settings tab: Money Management, Filters, Exit Strategy, Position Management, Risk Management. Lot size defaults to a fixed
0.01, and the shared entry protection defaults to a 50-pip stop and a 100-pip target until you change them. - Read the validation bar and the Preflight diagnosis panel. Errors block generation; warnings do not. A flow with no stop-loss raises a
CRITICALdiagnosis and makes you confirm “Generate anyway?” before it will build. - Press Measure to run the built-in approximate backtest — pick a symbol, a timeframe and a spread in points, and read the verdict against the printed bar. Do this before compiling, not after.
- Press Compile .ex5. The server generates the MQL5, compiles it with MetaEditor and returns
EA_Builder.ex5. Move it intoMQL5/Expertsvia File > Open Data Folder, then right-click the Navigator and choose Refresh — if the EA does not appear, it is almost always the folder, not the file. - Test it in the Strategy Tester before you attach it to any chart. When you do attach it, the Algo Trading toolbar button has to be on and Allow Algo Trading has to be ticked in the EA’s Common tab. A sad face on the chart means one of those two is off, not that the strategy is broken.
- Pick a template or a blank canvas
- Wire indicator into condition into order
- Set stop-loss, target and lot size
- Measure the flow’s strength
- Compile to .ex5
- Test in the MT5 Strategy Tester
- Demo, then decide
A detail that surprises people at step 3: the editor refuses to build a flow that would silently misbehave. Wire an indicator straight into an order block and you get EAB-E205 — “An indicator is wired straight into an action. Insert a condition node (Compare/Cross) in between.” A node that is not reachable from Start raises EAB-E203 and is told plainly that it “will not be included in the generated EA”. These are not style warnings. They are the errors that stop a beginner from shipping an EA whose middle third does nothing.
If the compile itself fails, it is usually not your design. EAB-E402 means MetaEditor rejected the generated source, and three of its sub-codes — undeclared identifier, wrong parameter count, syntax — are labelled in the interface as “a bug on our side, not yours” with a request to attach the flow. Anything the mapper does not recognise is shown as the raw MetaEditor error line rather than a generic apology, which is exactly what makes reporting it worth doing. EAB-E401 and EAB-E404 are different animals: the compiler being busy, and a per-user rate limit. Both mean wait, not rebuild.
Blocks, entry and exit conditions, and the risk settings that are not optional
The palette is one vocabulary in eight groups. You do not need most of it on day one; you need to know which group answers which question.
| Block group | Types | What it controls | Sensible first setting |
|---|---|---|---|
| Utility | 2 | Where the flow begins, and multi-timeframe reads | One Start node |
| Indicators | 52 | The measurement your rule is based on | One indicator, chart timeframe |
| Price / Info | 5 | Raw price, OHLC, clock, account state | Leave alone until needed |
| Conditions | 10 | The comparison that fires the rule | Compare or Cross |
| Filters | 21 | When trading is allowed at all | Spread filter, position limit |
| Actions | 15 | The order itself, and how it closes | Open Buy / Open Sell |
| Money Mgmt | 7 | How big the position is | Fixed Lot, 0.01 |
| Exit Strategy | 6 | How a position ends | Fixed stop and target |
Four of those types — pyramiding, averaging down, reversal entry and close-all — are configured from the Settings panel only. Drop one on the canvas and preflight rejects it with EAB-E304 and tells you where it actually lives. It is a small thing, but it is the kind of small thing that costs an hour when the error message is bad, and here it is not.
Two condition blocks cover most first strategies. Compare asks whether a value is above or below another value — RSI below 30, price above a moving average. Cross asks whether one line crossed another on this bar, which is a different and much stricter question than “is above”. Confusing the two is the most common reason a flow fires constantly instead of occasionally.
Decision timing matters as much as the condition. The default evaluates once per closed bar rather than on every tick. On an M5 chart, that is the difference between a handful of decisions an hour and hundreds — and a rule that looks profitable on closed bars can behave completely differently when it is allowed to fire mid-bar.
Backtest it before anything else
The Builder has a Measure button, and it prints its own pass bar next to the result: profit factor at least 1.2, at least 60 trades, max drawdown no worse than 20%. That bar is the useful part. It is a fixed, published threshold, so a result is either above it or it is not, and no amount of squinting at an equity curve changes the answer.
Here is what that bar does to the shipped templates. This is our own data, not a vendor’s claim: every gallery template carries the measured record of a run, and the table below counts them. How we test describes the standard those records are held to, and the aggregation script sits in the repository next to its output, so the count is reproducible rather than asserted.
| Starter templates | Measured |
|---|---|
| Templates in the gallery | 84 |
| Templates carrying a measured baseline | 53 |
| Flagged weak by the manifest | 53 of 53 |
| Below profit factor 1.0 at stock settings | 46 of 53 |
| Median profit factor | 0.92 |
| Best profit factor in the set | 1.10 |
| Clearing the Measure panel’s own pass bar | 0 of 53 |
| Test conditions | |
|---|---|
| Experiment ID | EXP-BUILDER-TEMPLATE-BASELINE-001 |
| Environment | Exness MT5 |
| Symbol / timeframe | USDJPYm M5 |
| Period | 2025-06-01 – 2026-06-09 |
| Model | M1 OHLC (Model=1) |
| Deposit | 10,000 |
| Baseline measured | 2026-06-18 |
| Aggregated / last verified | 2026-08-25 |
Three readings of that table are worth spelling out, because the obvious one is not the useful one.
Complexity did not help. The best baseline in the set, at 1.10, belongs to a six-node moving-average pullback. The 27-node multi-timeframe oscillator stack scores 1.04. The worst score in the set, 0.63, belongs to a 15-node multi-timeframe design with automatic lot sizing and a trailing stop. Adding blocks adds parameters, and parameters are how a design overfits rather than how it improves.
Depth and duration are separate problems. One template posts a 1.03 profit factor across 8,765 trades with a -7.92% max drawdown; another posts 0.69 with a -22.54% drawdown. A ratio near 1 tells you almost nothing about what holding it feels like.
Eight of them were searched, and the search failed. Eight templates carry a recorded parameter sweep — stop-loss and take-profit grids run across three windows: in-sample, out-of-sample, and the period before both. All eight came back no_robust_edge. Two never produced a winning setting even in-sample. Six found one and could not repeat it — the best moving-average crossover combination reached 1.23 on H1 in-sample and 0.98 on the prior window, and a CCI setting that held 1.05 out-of-sample still fell to 0.92 on the period before it. The bar was winning all three windows, and nothing cleared it. That is a more honest result than a tuned number, and it is the single best argument for testing your own edits rather than trusting anyone’s defaults, including these.
The measure is deliberately approximate — bar-level, major nodes only, not a real terminal. It is a filter, not a verdict. Anything that survives it should then be compiled and re-run in MT5’s own Strategy Tester, where fills, spread and the tick model are real. How to run a backtest in MT5 walks that second run through end to end on a real published record; the rest of what those numbers mean belongs to the backtesting guides rather than here.
- Measured the flow and read it against the printed bar, not against a feeling
- Re-ran the compiled
.ex5in the MT5 Strategy Tester on the same symbol and timeframe - Set an explicit stop-loss instead of accepting the 50-pip default
- Checked the drawdown you would have had to sit through, not just the end result
- Ran a demo account long enough to see the strategy lose and recover
- Wrote down, in advance, the loss that would make you switch it off
Common mistakes to avoid
Compiling a template and calling it done. This is mistake number one by a wide margin, and the table above is why. A template is a wiring diagram someone already drew for you. The parameters in it were never fitted to your symbol, your timeframe or your broker’s spread.
Tuning until the backtest looks good. If you change a parameter, re-measure, change it again and keep the best, you are not improving a strategy — you are fitting it to one slice of history. The eight recorded parameter searches in the gallery all ended in no_robust_edge: six found an in-sample winner that did not survive the next window, and two never found one at all. Yours will behave the same way unless you check it the same way.
Testing one lucky year. The baseline above covers a single year on a single symbol at one broker. That is enough to say “this is not finished”; it is nowhere near enough to say “this works”. Widen the window and change the symbol before you believe anything.
Piling on filters to fix a losing rule. Twenty-one filter types are available, and adding five of them will make almost any backtest look better. It will also cut the trade count until the result rests on a handful of trades. Watch the trade count as closely as the profit factor — the Measure panel flags a thin sample below 60 trades for exactly this reason.
Running several EAs without separating them. If you run more than one EA on one account, each needs its own magic number, or one EA’s exit logic will close the other’s positions. This costs nothing to get right and is painful to diagnose after the fact.
Skipping the demo pass. A backtest bounds what a rule set could have done on recorded prices. It does not include your latency, your requotes or a spread that widens at the moment your rule fires. Nothing here is a promise of profit, and every record on this page describes the past.
Next steps and variations
Where you go next depends on which part felt thin.
If the strategy is the gap, start from a rule you can state in one sentence and build the smallest flow that expresses it. Six nodes beat twenty-seven in the measured set, so the small version is not a compromise. Browsing the indicator reference is more useful at this point than adding another filter — a Donchian channel breakout and an RSI reversion are opposite ideas, and knowing which one you are building decides every parameter after it. How to build an RSI EA and how to build a MACD EA walk one of each end to end, including what the shipped templates score before you change anything.
If the testing is the gap, that is the deeper skill and it has its own home in the backtesting guides. The short version: test out of sample, watch the trade count, and treat a result you had to search for as a warning rather than a finding.
If you want a worked reference before building your own, the published EAs each show a complete closed-trade list, drawdown and run manifest — read one end to end, because it shows you what a documented record looks like and gives you something to compare your own measurements against. Are expert advisors profitable? reads that same catalogue for what profitability actually looks like from the inside, including the long stretches where nothing works.
If you are deciding whether to automate at all, EA vs manual trading replays owned records under the stop rules a discretionary trader would actually use, which is the honest version of that comparison.
And if you build something worth showing, the compile flow offers to submit it to the free public pool — every submission is reviewed, and a design that clears the pass bar on more than one symbol is genuinely rare. How to use a free EA documents what that review actually checks, what the Verified badge does and does not mean, and how the free side of the site is funded — worth reading from the submitter’s side as well as the downloader’s.