Short answer: Before you hire an MQL5 developer, write down your rules, symbols, account mode, execution and filling behavior, lot rule, session handling and magic numbers, because on MetaQuotes' own Freelance service the specification is the basis for arbitration. Demand the .mq5 source, not only a compiled .ex5, plus a demo-account test report and acceptance tests that describe behavior, never profit. A developer answers for coding your rules correctly, not for trading results.
A custom Expert Advisor is judged at the edges: a restart with an open position, a filling type the broker refuses, a second EA on the same symbol. MetaQuotes' pages were read on 5 November 2026. MetaTrader 5 could not be run for this guide: the code mappings come from MetaQuotes' documents, and nothing was compiled.
Disclosure: Fincode sells this kind of work, so this guide is not neutral on that point. Other vendors are not named or compared; MetaQuotes' Freelance service appears as the official channel.
What to write down before you hire an MQL5 developer
Write the specification before you contact anyone, because MT5 forces decisions that a trading idea leaves open.
| Item | What to write | Why it matters in MT5 |
|---|---|---|
| Rules | Each condition, its timeframe, and whether it is checked at bar open or on every tick | MetaQuotes' article 4368 notes that this choice also changes testing |
| Symbols | Exact names at your broker, with any suffix | Names differ between brokers |
| Account mode | Netting or hedging, and how positions close | The broker sets it; under hedging an opposite order opens another position |
| Execution and filling | Your broker's execution mode, and what to do on a partial fill | The symbol's SYMBOL_FILLING_MODE flags list the allowed types; 10030 means an invalid filling type |
| Lot rule | Fixed, or your formula, in your own numbers | Volumes must respect the symbol's minimum, maximum and step (10014) |
| Sessions and news | When not to open, and what happens to open positions | Market closed returns 10018; say which calendar, if any |
| Magic numbers | One per EA or setup | How an EA tells its positions from manual ones and other EAs |
| Errors | Requotes, rejections, disconnects, restarts | Article 4368 asks you to say how many retries are allowed and what is logged |
Hypothetical excerpt, with placeholders for your own values. R3: check the entry condition once per bar on [timeframe], using bar 1 only. R4: magic number [number]; ignore positions without it. R5: account is [netting or hedging]; exits close only this EA's positions. R6: read the symbol's filling flags at start; if an order returns any code other than 10009 or 10008 (request completed, order placed), log it and do not resend without checking positions and orders. R7: after a restart, rebuild state from open positions and history before any new order.
R3 and the values are your decisions. R4 to R7 are behavior a developer can be held to. MetaQuotes' sample specifications, articles 4368 for robots and 4304 for indicators, are the official starting point.
What to demand from an expert advisor developer
Demand the .mq5 source, a test report and a demo log in writing, because a compiled .ex5 alone cannot be read, audited or taken to someone else.
MetaQuotes' article 117 says a developer usually provides source but that the customer must require it explicitly in the specification. It also says solutions are normally handed over as source because a future compiler version may require recompiling, and that if only the executable is delivered, the specification should cover future updates.
| Deliverable | What it contains | How to check it |
|---|---|---|
.mq5 and every include | All source, with no compiled imports you did not agree to | Compile it yourself in MetaEditor |
| Input list | Each input, its meaning and its default | Compare with your specification |
| Strategy Tester report | Symbol, period, inputs and the modeling mode | Re-run with the same settings |
| Demo account log | Journal and Experts logs through the failure tests below | Read the errors, not just the trades |
| Dependency list | Any DLL, iCustom indicator, allowed URL or license check | Each one should be in the specification |
Ask for the modeling mode by name, because results depend on it: MetaTrader 5's help describes Every tick, Every tick based on real ticks, 1 minute OHLC and Open prices only, and says real ticks give conditions close to real ones. A test report shows how the software behaves, not future results.
Expert Advisor acceptance tests: behavior, never profit
Accept the work against tests of what the EA does under failure, including the checks MetaQuotes itself applies to robots before publishing them in its Market. The Freelance Rules require the specification to state what the demonstration shows and how compliance is checked.
| Test | Pass condition |
|---|---|
| Restart with an open position | Finds its position by magic number; no duplicate order |
| One evaluation per bar, if specified | No repeated order on later ticks; article 4368 says Open prices only results must then match Every tick |
| Deposit of 1 USD (article 2555's example) | Checks free margin and logs an error instead of calling OrderSend |
| Invalid volume | Respects minimum, maximum and step; no 10014 |
| Stops too close, or inside the freeze level | Respects SYMBOL_TRADE_STOPS_LEVEL and SYMBOL_TRADE_FREEZE_LEVEL |
| Symbol with short history | Waits for data; no array out of range, no zero divide |
| Market closed | Handles 10018 without a retry storm |
| Filling modes | No 10030 on the symbols you trade |
| Manual trade or a second EA on the symbol | Left untouched |
| Disconnect while an order is in flight | Reads state before any resend |
Refuse any criterion such as a backtest return or win rate above a set figure. Results can be tuned to clear it, as backtesting pitfalls shows. Limits outside the entry logic are covered in trading bot risk management.
Hire an MQL5 programmer on MQL5 Freelance: read the rules first
MetaQuotes' Freelance service is the official channel, and its rules decide who owns the code and how disputes end.
| Item | What it says | What it means for you |
|---|---|---|
| Activity | About 200 new, 182 in progress, about 91K closed, about 39K outdated; about 250 new in all languages (late-evening reads) | A large market; your specification has to stand out |
| Categories | Includes Experts, Indicators, Converting and Integration | Pick the right one |
| Payment | Money is locked once the specification is approved, then released when you accept the work or the acceptance period expires; the developer receives it less a 10% commission | Test within that period; paying outside the service is forbidden |
| Contact | No exchange of contact data before the Work Agreement | A request to move off the platform breaks the rules |
| Disputes | Arbitration rests only on the specification and system comments; other agreements have no force | What is not written does not exist |
| Arbitration cost | 10% is withheld whoever wins; a job canceled in your favor still costs you 10% | A vague specification is expensive |
| Code rights | If the specification is silent, exclusive rights are yours and the developer keeps a free non-exclusive license for their own needs | Say so if you want them to have none, and say whether parts may be reused |
| Forbidden orders | Orders that break the law, such as decompilation | Do not ask for it, and walk away from anyone who offers it |
| Liability | The administration is not liable for losses from a completed order | Article 117 adds that it does not handle legal disputes |
On the first listing page late that evening, 13 of 20 budgets started at 30 USD, and the 17 jobs open to all developers had 8 to 91 applications each. Those are buyers' figures, not prices of finished work, and article 117 warns that a very low budget can mean no developer or poor quality. No independent survey of MQL5 rates was found. What moves effort is covered in trading bot cost.
Comparing an MQL5 development company with a freelancer
Compare any candidate, company or individual, on the same specification and deliverables, because headline prices rest on different assumptions.
- Send everyone the same document, and ask for a list of exclusions.
- Ask how they detect a new bar and read a symbol's filling mode. MetaQuotes' article 4368 says an experienced developer asks about your specification rather than trying to impress you.
- Ask what happens on restart with an open position on your account mode.
- Ask which modeling mode they test in, and why.
- Ask who covers an absence, and whether someone else could take over from the source and notes alone.
For a parallel checklist, see Pine Script developer. Reviewing existing code is a separate job: see trading bot code review for one seller's scope.
MT4 to MT5 conversion: how to convert an MT4 EA
Treat it as a rewrite with a test plan, whatever tool makes the first draft, because MT5 changes the event names, the data access, the indicator calls and the order model.
| MQL4 | MQL5 | What can change |
|---|---|---|
start() | OnTick() in EAs, OnCalculate() in indicators, OnStart() in scripts | In an EA, a leftover start() is simply never called |
Ask, Bid, Bars | SymbolInfoTick, Bars() | Removed; timing of reads is now explicit |
Open[], Close[], Time[] | CopyRates, iClose and similar | Indexing direction; failed copies must be handled |
iMA(...) returns a value | iMA returns a handle, read by CopyBuffer | Results may not be ready yet |
OrderSend with arguments, returns a ticket | MqlTradeRequest and OrderSend, or CTrade | Filling, return codes, and orders, deals and positions as separate things |
| Local variables, array bounds | Locals other than strings are not initialized automatically; going out of bounds stops the program | Old hidden bugs now surface |
Write these steps into the contract: freeze the MT4 behavior as a set of expected actions, port, then run both on demo accounts on the same symbols, ideally at the same broker, and explain each difference. Say whether the target account is netting or hedging, because an MT4 EA that counts open trades per symbol may need redesign under netting. Conversion starts from the .mq4 source; with only an .ex4, it becomes a rewrite from your description of the behavior. Keep the source and the test logs. Old code is hard to scope, so a paid review can come before a fixed quote.
Red flags when you hire an MQL5 developer
Walk away when an offer depends on returns, on control of your account or on code you cannot read.
| Red flag | Why it matters |
|---|---|
| A ready-made profitable EA, win rates or account screenshots | Article 4368 warns that a robot chasing a few pips can be optimized to 90 to 99% winning trades on history, then lose everything earned in one sharp move |
| Martingale, grid or averaging sold as safe | The same article says these add error risk and that money management cannot make a losing system profitable |
| Requests for your live password | Testing needs a demo; the master password gives full rights, while investor access lets someone view the account but not trade |
| Profit share or a performance fee | Pay tied to results rewards risk taken with your money; a developer is paid for code |
.ex5 only, or a build locked to an account or date | You cannot audit or maintain it |
| Offers to decompile someone's EA | Forbidden on Freelance, and a sign of the seller's standards |
Leveraged forex carries high risk, and automated orders can lose money quickly. Rules depend on your country, account types and API access vary by broker, and no broker is recommended, ranked or linked with a referral here. Copying or managing for others can be a licensed activity, depending on your country. For readers in Turkey: the Capital Markets Board (SPK) said on 23 February 2023 that residents may trade leveraged forex only through firms it has authorized, and that offering it to them without authorization is a crime carrying two to five years in prison and a judicial fine; the Board can also block such websites (Law No. 6362 (opens in a new tab) Articles 99(4) and 109(2)).
For trading software work in general, see the algorithmic trading page and hold it to this checklist; naming MetaTrader here does not mean Fincode has built on it, and that page does not name MQL5, so ask whether your case fits. Fincode builds from rules the customer wrote and never supplies strategies.
Frequently asked questions
How much does an MQL5 developer cost?
It depends on scope, testing and maintenance. Budgets on MQL5 Freelance are what buyers post, some starting at 30 USD on 5 November 2026, and say nothing about what was delivered. Compare quotes on one written specification.
Should I get the .mq5 source code?
Yes, and say so in the specification, because MetaQuotes' article 117 says the customer must require it explicitly. An .ex5 alone cannot be audited, and a future compiler version may require recompiling.
Who owns the code on MQL5 Freelance?
If the specification sets no other terms, the Rules give the exclusive rights to the customer and a free non-exclusive license to the developer for their own needs. Write what you want into the specification.
Can an MT4 EA be converted to MT5 automatically?
Do not count on it. Event functions, data access, indicator calls and the order model all change, so treat any automatic output as a first draft and compare both versions on demo accounts.
Should a developer have my live account password?
No. Development and testing can use a demo account. The master password gives full rights to the account, so you install and start the EA yourself.
Sources
- MQL5 Freelance: Rules of Using the Freelance Service (opens in a new tab)
- MQL5 Freelance: orders listing and counters, read 5 November 2026 (opens in a new tab)
- MetaQuotes article 117: How to Order a Trading Robot in MQL5 and MQL4 (opens in a new tab)
- MetaQuotes article 4368: How to create Requirements Specification for ordering a trading robot (20 August 2018) (opens in a new tab)
- MetaQuotes article 4304: How to create Requirements Specification for ordering an indicator (6 April 2018) (opens in a new tab)
- MetaQuotes article 2555: The checks a trading robot must pass before publication in the Market (1 August 2016) (opens in a new tab)
- MQL5 Reference: Moving from MQL4 to MQL5 (opens in a new tab)
- MQL5 article 81: Migrating from MQL4 to MQL5 (17 May 2010) (opens in a new tab)
- MQL4 Reference: OrderSend (opens in a new tab)
- MQL5 Reference: Trade Server Return Codes (opens in a new tab)
- MetaTrader 5 Help: General principles (netting and hedging) (opens in a new tab)
- MetaTrader 5 Help: Strategy testing (tick generation modes) (opens in a new tab)
- MetaTrader 5 Help: Connect to an account (master and investor access) (opens in a new tab)
- SPK: Press notice on unauthorized leveraged trading, 23 February 2023 (Turkish) (opens in a new tab)
- Capital Markets Law No. 6362, Articles 99 and 109 (Turkish, consolidated text) (opens in a new tab)
This guide is general information about software and markets, not investment, legal or tax advice. Automated trading can lose money, past or backtested performance does not guarantee future results, and the rules that apply depend on your jurisdiction and your exchange's terms. Sources, checks and corrections: see the editorial policy.