Overzicht
De wereld van MetaTrader verschuift. MetaQuotes geeft al jaren geen nieuwe MT4-licenties meer uit, dus nieuwe brokers starten op MT5 en veel bestaande brokers zetten klanten over. Veel prop firms en brokers bieden alleen MT5 aan, of MT5 naast andere platforms. Nieuwe instrumenten, accounttypen en functies verschijnen op MT5.
Migreren van MT4 naar MT5 is geen kwestie van code vertalen. MQL4 en MQL5 lijken qua syntaxis op elkaar, maar verschillen juist op de punten die voor handelssoftware het belangrijkst zijn: het order- en positiemodel, de functies voor uitvoering, de accountgegevens en de opbouw van indicatoren.
Wij migreren bestaande MT4-software, zoals Expert Advisors, indicatoren, scripts en bibliotheken, naar MetaTrader 5, voor handelaren en handelsbedrijven.
Wat de migratie omvat
Orders en posities. OrderSend() in MT4, dat direct een ticket teruggeeft, wordt in MT5 een verzoek met MqlTradeRequest en een uitkomst in MqlTradeResult, met OrderSendAsync() als asynchroon versturen nodig is. We herschrijven de orderlogica volgens het model van MT5, rechtstreeks met MqlTradeRequest of via de klasse CTrade uit de standaardbibliotheek.
Het hedgingmodel van MT4 werkt in MT5 anders, afhankelijk van de accountmodus. In nettingmodus, die wordt gebruikt voor beursinstrumenten en door sommige brokers, verkleint een kooporder bij een bestaande shortpositie die short, in plaats van een nieuwe long te openen.
OrderModify() voor stop loss en take profit wordt in MT5 een apart verzoek met de actie TRADE_ACTION_SLTP. OrderClose() wordt een tegengesteld TRADE_ACTION_DEAL-verzoek met het positieticket, of CTrade::PositionClose().
Posities en orders opvragen. De lus met OrderSelect() en OrdersTotal() over posities en orders in MT4 wordt in MT5 gesplitst: PositionsTotal() en PositionSelect() voor open posities, OrdersTotal() en OrderSelect() voor openstaande orders. De dealhistorie haalt u in MT5 op met HistorySelect() en HistoryDealSelect().
Indicatoren. De opbouw van MT4-indicatoren, met de oudere start()-functie en IndicatorCounted() of de nieuwere OnCalculate(), wordt in MT5 het model met rates_total en prev_calculated. In MT5 maakt u een indicator één keer aan met een handle en leest u hem daarna uit met CopyBuffer(), in plaats van de directe terugkeerwaarde van iCustom() in MT4.
De opbouw verbeteren. Een migratie is een goede kans om de code te verbeteren, bijvoorbeeld door procedurele MQL4-code om te bouwen naar een objectgeoriënteerde opbouw in MQL5. Met basisklassen voor strategieën kunt u meerdere varianten testen met dezelfde uitvoeringslaag.
Meerdere valutaparen. MT4-EA's die meerdere paren verhandelen, worden in MT5 EA's voor meerdere symbolen, die ook over al hun symbolen samen kunnen worden gebacktest.
Testen. We draaien de oorspronkelijke MT4-EA en de gemigreerde MT5-EA elk in hun eigen Strategy Tester over dezelfde periode en vergelijken de trades. Daarna volgen een backtest op echte ticks in MT5 en een test op een demo-account.
Waar het vaak misgaat
Netting en hedging. De meest voorkomende oorzaak van verkeerd gedrag na een migratie. MT4-logica die tegengestelde posities opent om te hedgen, moet zorgvuldig worden aangepast als het account in nettingmodus werkt.
Indicatorhandles. Handles in MT5 moeten op de juiste plek worden aangemaakt, meestal in OnInit(), en weer worden vrijgegeven in OnDeinit(). Handles die in OnTick() worden aangemaakt en nooit vrijgegeven, stapelen zich op.
Functies die niet bestaan. Sommige MQL4-functies hebben geen directe tegenhanger in MQL5 en vragen om een andere aanpak.
Magic numbers. In MT4 laat het magic number van een order direct zien welke EA een positie opende. MT5-posities hebben ook een magic number (POSITION_MAGIC), maar in nettingmodus kan één positie trades van meerdere EA's bevatten; de dealhistorie laat zien welke EA wat heeft bijgedragen.
Gebruikte technologieën
- MQL4: de bestaande MT4-software
- MQL5 en de standaardbibliotheek: de gemigreerde software, met CTrade, CPositionInfo, COrderInfo en CAccountInfo
- De Strategy Testers van MT4 en MT5: de uitgangssituatie vastleggen en de gemigreerde code controleren, ook op echte ticks
- Demo-accounts: het live gedrag van de gemigreerde EA controleren voordat hij live gaat
Aanpak
Eerst beoordelen. Elke migratie begint met een beoordeling van de bestaande MT4-code: hoe complex het orderbeheer is, welke indicatoren worden gebruikt en hoe de code accountgegevens ophaalt.
Stap voor stap. Bij complexe systemen met meerdere onderdelen die samenwerken, migreren en testen we één onderdeel tegelijk.
Verschillen vastleggen. Waar de MT5-code zich anders gedraagt dan de MT4-code, leggen we dat vast.
Wanneer migreren loont
Migreren loont als uw MT4-software veel waarde heeft, zoals strategieën die zich hebben bewezen en indicatoren met uw eigen analysemethode, en als er een echte reden is om naar MT5 te gaan, bijvoorbeeld omdat uw broker of prop firm overstapt.
Veelgestelde vragen
Kan MT4-code niet gewoon automatisch worden omgezet?
Eenvoudige indicatoren soms grotendeels. Expert advisors niet: orderafhandeling, posities, historie en indicatortoegang werken in MT5 anders, dus dat deel wordt herschreven en getest.
Hoe controleert u dat de MT5-versie zich hetzelfde gedraagt?
Door beide versies over dezelfde periode in hun Strategy Tester te draaien en de trades te vergelijken, en ze daarna naast elkaar op demo-accounts te laten draaien. Verschillen worden verklaard en vastgelegd.
Heb ik de MQL4-broncode nodig?
Ja. Een gecompileerd .ex4-bestand kan niet worden gemigreerd. Zonder broncode moet de EA opnieuw worden gebouwd op basis van een beschrijving van de regels.
Migreren of opnieuw bouwen?
Bij eenvoudige code is opnieuw bouwen in MQL5 vaak sneller. Bij complexe, goed geteste systemen behoudt een zorgvuldige migratie wat al werkt.
Wie is eigenaar van de code?
Het eigendom van de broncode wordt in het contract vastgelegd, en de code kan volledig van u zijn, inclusief documentatie en tests.
Zie ook MT5-ontwikkeling, MQL-bibliotheken en MetaTrader 5 koppelen aan uw eigen backend.
Uw MT4-software, draaiend op MT5
De strategieën, indicatoren en tools die in MT4 werken, opnieuw opgebouwd voor het order- en positiemodel van MT5, naast het origineel getest en vastgelegd waar MT5 zich anders gedraagt. Vertel ons welke MT4-software u wilt overzetten.