Je hebt de bot op de chart gezet. Rechtsboven staat een icoontje. En er gebeurt niets. Geen trade, geen melding, niks. Voordat je aan de bot gaat twijfelen: hij is bijna nooit stuk.

Korte versie vooraf. MetaTrader 5 kan automatisch handelen op vier verschillende niveaus blokkeren: het platform zelf, de individuele EA, de EA-permissie van je account op de server van de broker, en het account zelf. Daarnaast kan het symbool beperkt zijn. Welke van die vijf jou tegenhoudt lees je af in de Journal tab. Staat daar foutcode 10027, dan blokkeert je eigen terminal het en ben je in tien seconden klaar. Staat er 10026, dan heeft je broker EA-handel op je account uitgezet en kun jij er niets aan veranderen. Staat er helemaal geen foutmelding, dan heeft je bot nooit een order geprobeerd en zoek je op de verkeerde plek.

Dat laatste punt kost mensen de meeste tijd. We nemen het hieronder in vaste volgorde door. Werk van boven naar beneden en stop zodra je je antwoord hebt.

Staat er een foutmelding, of staat er niets?

Dit is de eerste vraag, en hij splitst het hele probleem in twee. Open in MT5 het venster onderin (Ctrl+T) en kijk in de tabs Experts en Journal. Staat er een regel met een code of een reden, dan heeft je bot wel degelijk een order verstuurd en die is geweigerd. Staat er niets, alleen iets als "automated trading enabled", dan heeft je bot nooit geprobeerd te handelen.

Dat verschil bepaalt waar je gaat zoeken. Een geweigerde order is een permissie- of instellingsprobleem. Een lege log is iets anders, en dan is elk lijstje met vinkjes tijdverspilling.

De reden zit in hoe een EA werkt. De code van je bot draait op de OnTick functie, en die wordt volgens de MQL5 documentatie alleen aangeroepen bij een nieuwe tick op het symbool van de chart waar de EA aan hangt. Geen ticks betekent geen code. En zonder code komt er geen order, dus ook geen logregel. Er is niets misgegaan, er is alleen niets gebeurd.

Bij een lege log zijn er drie mogelijkheden. Er komen geen ticks binnen, want de markt is dicht of het symbool staat niet in Market Watch. De instapvoorwaarden zijn simpelweg nog niet geraakt, bijvoorbeeld doordat een spread-filter of een tijdfilter alles blokkeert. Of de EA is bij het opstarten al gestopt en handelt daarom nooit.

Lege Experts tab betekent dat je bot nooit een order heeft geprobeerd. Dan is elk vinkje in het permissiemenu een doodlopende weg.

Foutcode 10027 of 10026? Dat bepaalt wie het kan oplossen

Staat er wel een foutmelding, kijk dan eerst naar deze twee codes. Ze geven exact hetzelfde symptoom en hebben tegenovergestelde oplossingen.

10027 betekent dat je eigen MT5 het blokkeert. In de log zie je vaak letterlijk [Auto Trading Disabled by Client]. Bijna iedereen kijkt dan naar de Algo Trading knop in de werkbalk, ziet dat die groen staat, en snapt er niets meer van. Die knop regelt het maar voor de helft. Het vinkje per EA staat daar los van, en dat is meestal de poort die dicht staat. Druk op F7 op de chart, ga naar het tabblad Common en zet "Allow Algo Trading" aan. Dat vinkje kan zichzelf resetten als je de EA opnieuw op de chart zet of als MT5 een opgeslagen template terugzet, terwijl de knop in de werkbalk gewoon groen blijft.

10026 betekent dat je broker het blokkeert. De log zegt dan "Autotrading disabled by server". Geen enkele instelling op jouw computer helpt hier, en een VPS ook niet. Dit is een supportticket bij je broker of prop firm, en dat is de hele oplossing.

Dat onderscheid scheelt je een dag zoeken. Het lezen kost je vijf seconden.

De vier niveaus waarop MT5 automatisch handelen blokkeert

MetaQuotes documenteert dit zelf en het is de handigste manier om erover te denken. Automatisch handelen moet op vier niveaus zijn toegestaan, en als één ervan dichtstaat gebeurt er niets.

Niveau 1, het platform. De Algo Trading knop in de werkbalk, plus Tools, Options, Expert Advisors, "Allow Algo Trading". Staat deze uit, dan handelt geen enkele EA, ook niet als je hem per bot hebt aangezet.

Niveau 2, de EA zelf. Het vinkje achter F7, per chart. Dit is de bron van 10027 en het meest gemiste vinkje van allemaal.

Niveau 3, de server van je broker. Je accountgroep mag geen EA's gebruiken. Dit is 10026.

Niveau 4, het account. Dit is de oorzaak die niemand ziet. Volgens de MQL5 documentatie kan een account niet handelen bij geen verbinding met de trade server, bij een read-only account, als handel serverzijdig uit staat, of als je bent ingelogd in investor mode. Dat laatste gebeurt vaker dan je denkt: je hebt bij je broker twee wachtwoorden, en met het investor-wachtwoord kun je alles bekijken en niets uitvoeren. MT5 weigert dan elke order zonder dat je iets fout hebt gedaan. Bijbehorende code: 10017, "Trade is disabled".

En dan is er nog een vijfde poort die er in de praktijk net zo werkt: het symbool. Een symbool kan op long only, short only of close only staan. Een bot die probeert te shorten op een long only symbool krijgt het nooit voor elkaar, en aan de buitenkant lijkt dat op een kapotte bot.

Klopt de symboolnaam? XAUUSD tegenover XAUUSD.a

Dit is een van de meest voorkomende oorzaken, en ook een van de makkelijkste om over te slaan. Je bot is geschreven voor XAUUSD. Jouw broker noemt goud XAUUSD.a, XAUUSD.pro, XAUUSD.raw, XAUUSDm of gewoon GOLD. Voor de bot bestaat het symbool dan niet en hij doet niets.

IC Markets Australia noemt goud bijvoorbeeld XAUUSD.a, waarbij het achtervoegsel het accounttype aangeeft. Elke EA en elk signaal dat op XAUUSD is gebouwd valt daar stil. Bij indices is het net zo rommelig: US100, NAS100, USTEC en NAS100.cash zijn hetzelfde ding met vier namen.

Oplossen doe je zo. Open Market Watch met Ctrl+M, neem de exacte naam over, inclusief hoofdletters en achtervoegsel, en zet die precies zo in de instellingen van de bot. En let op het tweede deel: het symbool moet ook echt in Market Watch staan. Een bot die een symbool uitleest dat er niet in staat krijgt geen data terug.

De symboolspecificatie in 60 seconden

Als je één venster opent bij dit probleem, open dan dit. Ctrl+M, rechtermuisknop op het symbool, Specification. Daar staan vier getallen die samen de meeste weigeringen verklaren.

Minimale volume en volume step. Staat je bot op 0,01 lot en is het minimum 0,1, dan wordt elke order geweigerd met 10014. Rekent je bot een lot van 0,037 uit terwijl de step 0,01 is, ook 10014.

Stops level. Dit is de minimale afstand voor je stop loss en take profit, en die staat in points, niet in pips. Op een symbool met 5 decimalen is 30 points gelijk aan 3 pips. Vul je in het veld StopLoss een 20 in omdat je 20 pips bedoelt, dan vraag je om 2 pips en krijg je 10016 terug bij elke poging.

Diezelfde fout van een factor 10 sloopt ook spread-filters. Een MaxSpread van 20 op zo'n symbool betekent dat je bot weigert te handelen boven 2,0 pips spread. Op een live account met echte spread is dat vrijwel nooit, en je krijgt geen enkele foutmelding. De bot zit gewoon stil te wachten op iets dat niet komt.

Trade mode. Hier zie je of het symbool volledig verhandelbaar is of op long only, short only of close only staat.

Wat betekenen de foutcodes in de Journal tab?

Dit zijn de codes die je in de praktijk tegenkomt, met de officiële betekenis uit de MQL5 documentatie en wat je eraan doet.

Code Wat MT5 zegt Wat je doet
10014 Invalid volume in the request Lot te klein, te groot of geen veelvoud van de step. Lees min, max en step in de symboolspecificatie.
10016 Invalid stops in the request SL of TP staat dichter dan het minimum. Let op: de waarde is in points, niet in pips.
10017 Trade is disabled Check of je met het master-wachtwoord bent ingelogd en niet met het investor-wachtwoord.
10018 Market is closed Geen fout. De sessie van dat symbool is dicht.
10019 There is not enough money Te weinig vrije marge. Let op vrije marge, niet op je saldo.
10021 There are no quotes to process Geen koersen. Symbool staat niet in Market Watch of de feed ligt stil.
10026 Autotrading disabled by server Je broker heeft EA-handel uitgezet. Alleen zij kunnen dit aanzetten.
10027 Autotrading disabled by client terminal F7 op de chart en zet "Allow Algo Trading" aan. Plus de knop in de werkbalk.
10030 Invalid order filling type In de log: "Unsupported filling mode". Je broker staat dit filling type niet toe op dit symbool.

Nog een handige vuistregel. MT5-codes zijn vijf cijfers en beginnen met 100. Zoek je op een code van drie cijfers, zoals 130 of 134, dan lees je advies over MT4. Dat is een ander platform met andere codes, en je komt er niet verder mee.

Hij handelde maanden prima en stopte opeens

Dit is een eigen categorie, want de oorzaak is bijna nooit een instelling die jij hebt veranderd. Er zijn drie verdachten.

Filling mode. Foutcode 10030, in de log zichtbaar als "Unsupported filling mode". Brokers bepalen zelf welk filling type is toegestaan per symbool, en ze kunnen dat aanpassen zonder aankondiging. Een bot die maanden goed liep, ligt dan van de ene dag op de andere stil. Dit is ook de nummer één reden dat een EA die van MT4 naar MT5 is omgezet niet werkt, want MT4 kende dit begrip helemaal niet.

Servertijd. MT5-brokers zitten meestal op GMT+2, in de zomer GMT+3. Een bot met een filter dat alleen tussen 08:00 en 17:00 handelt, kijkt naar die servertijd en niet naar de klok in Amsterdam. Twee keer per jaar schuift die verhouding op door de zomertijd, en dan verschuift je handelsvenster zonder dat er een regel code is veranderd.

Een einddatum in de bot. Demoversies en gekochte EA's hebben soms een licentie die verloopt of een datum die de ontwikkelaar in de opstartcode heeft gezet. Typisch symptoom: hij deed het tot de eerste van de maand en daarna nul trades.

Is mijn bot stuk of is de markt gewoon dicht?

Zondagavond staan er heel veel mensen naar een bot te kijken die niets doet, terwijl de forexmarkt simpelweg nog niet open is. De week begint pas rond 23:00 Nederlandse tijd op zondag, en goud opent nog een uur later. Voor die tijd komen er geen ticks binnen, dus draait je code niet en gebeurt er niets.

Zelfde soort misverstand met timeframes. Een bot die alleen beslist op een afgesloten candle op H4 heeft zes beslismomenten per dag. Drie uur niets zien is dan gewoon correct gedrag.

Wat hier ook meespeelt is of je bot wel doorloopt als je laptop dichtgaat. Dat doet hij niet, en daarom draaien de meeste mensen hun bot op een VPS. Waarom dat uitmaakt en wat het kost hebben we apart uitgelegd bij waarom een VPS belangrijk is voor je trading bot.

Draaien er twee bots door elkaar?

Als je meer dan één EA op dezelfde rekening hebt staan, kan er nog iets anders spelen. Twee bots met hetzelfde magic number zien elkaars posities als hun eigen positie. Beide concluderen dan dat er al een trade open is en dus dat ze niets hoeven te doen. Resultaat: allebei stil, geen enkele foutmelding.

En op een netting-account houdt MT5 maar één positie per symbool aan, dus opent de tweede bot geen tweede positie maar past hij die van de eerste aan. Daar gaat meer mis dan alleen niet handelen. We hebben dat uitgewerkt in meerdere trading bots op één account.

Wat stuur je naar support?

Kom je er zelf niet uit, houd het dan concreet. Met deze drie dingen kan iemand je in één bericht helpen in plaats van vijf keer heen en weer.

Een screenshot van de Journal tab met de regel waar de code in staat. Een screenshot van het Specification venster van het symbool waarop de bot moet handelen. En de rechterbovenhoek van je chart, waar je ziet of de EA wel of niet mag handelen.

Zonder die drie is het gokken. Met die drie is het meestal binnen een minuut duidelijk.

Meer achtergrond over de platformkant staat in ons stuk over MT5, cTrader en TradingView voor bots. En als je de risicoregels van je bot wil nalezen voordat je hem aanzet: risk management bij een trading bot.

Wil je de officiële bron checken? MetaQuotes publiceert de complete lijst met trade server return codes en de vier niveaus van handelspermissie. Dat zijn de documenten waar alles in dit artikel op teruggaat.

Liever een bot die al goed staat ingesteld?

Je opent een rekening op je eigen naam, wij koppelen de strategie en zetten de instellingen goed. Daarna verander je je wachtwoord. Wij verdienen 30% op je winst en niets bij verlies.

Start met de bot