In dit artikel
Na dit artikel kun je…
- Twee runverklaringen en ontbrekend bewijs systematisch vergelijken.
- Een verschil in kosten van bewijs voor identieke uitvoering onderscheiden.
- Onbekende omgevingselementen bewaren zonder versies of checksums te verzinnen.
Begrippen uitgelegd binnen het artikel
Backtesting Commissie Expert Advisor (EA)Dezelfde robotnaam en zichtbare parameters kunnen twee verschillende historische uitkomsten opleveren. Controleer voordat je de strategie verandert of code, data, contractspecificatie en uitvoeringsmodel ook gelijk zijn. Een testregistratie of manifest bewaart die voorwaarden. De vergelijker hieronder controleert twee verklaringen; de rapporten en logs moeten nog bewijzen wat werkelijk gebeurde.
Bewaar beide tests voordat je iets verandert
Archiveer rapporten, uitvoeringslijsten, journals en parametersets als twee afzonderlijke runs, ook de minder gunstige. Een screenshot van de curve bewijst geen eerste fillprijs, deeluitvoeringsaantal of werkelijke start. Maak het verband van voorwaarden naar handelingen en pas daarna naar het eindresultaat zichtbaar.
Onderscheid één test, parameteroptimalisatie en evaluatie op een latere periode. “Dezelfde EA” kan alleen dezelfde bestandsnaam betekenen, terwijl compilatie of bibliotheek veranderde. Bewaar terminalbuild, programma en afhankelijkheden. Een naam identificeert de bytes niet. Backtesten in MT4 en MT5: ticks, kosten en klokken controleren behandelt de bredere testerinstellingen.
Vergelijk aangevraagde en werkelijke start. MetaQuotes beschrijft dat onvoldoende voorbereidingshistorie de start kan verschuiven. Een volle maand en verkorte periode zijn verschillende evaluaties. De Gaten in backtestdata: CSV-dekking, conflicten en tijdstempels controleren controleert CSV-dekking; hier gaat het om de bredere testomgeving. Die controles vervangen elkaar niet.
Dertien vaste velden, geen vertaalde sleutels
Plak twee JSON-objecten met precies de gedocumenteerde dertien hoofdvelden. Houd de technische sleutels ongewijzigd. version is het getal 1: de formaatversie, niet de EA-versie. De andere hoofdwaarden zijn tekst; inputs, costs en initialState mogen ook gewone objecten zijn.
version,platform,build,codeRevision: formaat, platform en identificatie van code en omgeving.inputs,dataSnapshot: parameters en de bewaarde dataversie.symbolSpecification,executionModel,costs: contract, simulatieregels en alle aangenomen kosten.requestedStart,actualStart,end: de gewenste en feitelijke periodegrenzen.initialState: beginsaldo, posities en relevante initialisatie.
Een label zoals data-v 1 in dataSnapshot blijft een verklaring: de pagina leest het bestand niet. Ook een codeRevision die je een hash noemt is niet door deze tool gecontroleerd. Bereken bestandschecksums afzonderlijk en koppel die aan het juiste archief. Gebruik technische versielabels zonder wachtwoorden, toegangscodes of persoonsgegevens.
Noteer datums met expliciete tijdzone en liefst dezelfde UTC-weergave. Een Z achter een servertijd schrijven voert geen tijdzoneconversie uit. De tool vergelijkt tekst, niet de providerkalender. Verschillende beschrijvingen van hetzelfde moment kunnen handmatige standaardisatie vragen. Onbekende gegevens blijven te onderzoeken; vul geen verzonnen gezaghebbend versienummer in.
Wat de lokale vergelijker controleert
De twee bewerkbare voorbeeldregistraties zijn fictief. Ze gebruiken formaatversie 1, build demo-build-a, periodeparameter “14”, technische synthetische code-, data- en contractlabels en dezelfde periode van 2026-10-01T00:00:00Z tot 2026-10-12T00:00:00Z. InitialState noemt USD 1.000 en geen posities. De afzonderlijke commissie-invoer verschilt: één versus twee USD per fill, bij twee fills en nul financiering of overige kosten. Dit zijn demonstratiegegevens, geen echte MT5-run.
De analyse gebeurt lokaal in de browser, zonder gegevens te verzenden, bestanden te importeren of invoer blijvend te bewaren. Ze draait geen MT5 en leest geen rekening. Gelijke objecten betekenen gelijke ingevoerde verklaringen, niet bewezen identieke omgevingen. De tool kan niet vaststellen of de tekst met de werkelijke rapporten overeenkomt.
Per record geldt maximaal 64 KiB. Lege of ontbrekende velden zijn onbekend. Dubbele JSON-sleutels en ongedocumenteerde hoofdvelden worden afgewezen. Grenzen zijn acht niveaus en 2.000 waarden; geneste getallen maximaal vijftien significante cijfers zonder onveilige grote gehele getallen. Specificatiegetallen blijven tekst met decimale punt. Nederlandse decimale komma’s horen niet stilzwijgend in het machineformaat.
Vergelijk twee backtestregistraties
Dezelfde prijsuitkomst, andere commissie
Het fictieve bronmodel heeft een lineair contract, USD-rekening en één gesloten trade met twee fills. Prijsresultaat is USD 10. Prijzen, volume en periode zijn gelijk; financiering en overige kosten nul. A rekent USD 1 per fill, B USD 2. A geeft 10 −2 ×1 = USD 8; B 10 −2 ×2 = USD 6. Het verschil USD 2 volgt hier volledig uit de kostenaanname, niet uit een slechter signaal, onjuiste data of slippage.
Eén prijsresultaat, twee kostenaannames
De invoer verklaart deze rekensom. De vergelijker controleert niet of de verklaringen werkelijk bij de tests horen.
- Run A
- 2 × USD 1 = USD 2 kosten – USD 10 −2 = USD 8 netto.
- Run B
- 2 × USD 2 = USD 4 kosten – USD 10 −4 = USD 6 netto.
- Eén verklaard verschil
- Veld costs – USD 2 netto verschil komt in dit model alleen uit commissie.
De vergelijker hoort het gewijzigde costs-veld aan te wijzen. De betekenis ervan vraagt nog de echte rapporten en overige aannames. Het veld toont een declaratieverschil en certificeert geen historische uitvoering.
Nieuw afzonderlijk EUR-tegenvoorbeeld: veronderstel exact dezelfde EUR 8 prijs-P/L en een fictief tarief van EUR 0,50 per fill. Run A heeft twee fills en EUR 1 totale commissie, netto EUR 7. Run B heeft drie fills en EUR 1,50 commissie, netto EUR 6,50. Het tarief per fill bleef gelijk, maar het aantal fills niet. Het verschil EUR 0,50 is daarom geen tariefverhoging. Dit model neemt expliciet dezelfde prijs-P/L en geen overige kosten aan; werkelijke deeluitvoeringen kunnen ook prijzen en hoeveelheid veranderen.
Als de verklaringen gelijk lijken
Zoek de eerste afwijkende gebeurtenis: informatietijd, signaal, symbool, prijszijde, hoeveelheid, instap- of uitstapreden. Een gelijke eindbalans kan uiteenlopende eerste indicatorwaarden verbergen. Bewaar ook beslissingen om niet te handelen. Verander in een gecontroleerde herhaling één voorwaarde en behoud het eerdere rapport.
Controleer afhankelijkheden en initialisatie. De tester heeft een eigen agentomgeving met regels voor globale variabelen en bestanden. Gebruik je toeval, bewaar dan hoe de generator wordt gestart. Een cache is niet automatisch de oorzaak. Archief verwijderen of meteen hercompileren kan juist het enige bewijs van de oorspronkelijke toestand vernietigen.
Een manifest kan een afhankelijkheid missen of de data onjuist beschrijven. Geen aangegeven verschil vernauwt het onderzoek maar sluit die oorzaken niet uit. Kies niet automatisch de winstgevendste run en verklaar een slechtere niet zonder reconstructie tot platformfout.
Van verschil naar een controleerbare oorzaak
- Bewaar A en B apart, inclusief minder aantrekkelijke uitkomsten, en vul de dertien velden vanuit echte gegevens aan.
- Koppel code-, data- en configuratielabels aan bewaarde bestanden; noteer onbekenden eerlijk.
- Kies één verschil voor een korte gecontroleerde herhaling. Bij commissie controleer je aantal fills én vergoeding; bij startdatum het eerste beschikbare signaal.
- Bewaar ook herhalingen die de eerste verklaring niet bevestigen.
- Zijn verklaringen gelijk, zoek de eerste afwijkende loggebeurtenis en breid het archief gericht uit.
- Ga pas daarna terug naar strategie-evaluatie met kosten en aparte data. Deze vergelijker voorspelt geen rendement en valideert geen complete backtest.
Backtestvalidatie: regels, evaluatie en herstel afzonderlijk bewijzen scheidt daarna ontwikkeling van verdere evaluatie.
Test wat je hebt geleerd
Ongeveer 2 minuten oefenen.
Antwoord en uitleg bekijken
A: 10 −2 =8; B: 10 −4 =6. Het verschil is USD 2.
Andere vragen
Bewijzen gelijke manifesten reproduceerbaarheid?
Nee. Ze vergelijken beschrijvingen, niet de hele omgeving. Hetzelfde dataSnapshot-label bewijst geen gelijke bestanden. Bewaar code, data, instellingen en rapporten en bereken hashes afzonderlijk. Ontbrekende afhankelijkheden of een onjuiste beschrijving kunnen overblijven.
Moet ik eerst de cache wissen of de EA hercompileren?
Bewaar eerst bewijs van beide runs. Code of data veranderen vóór archivering maakt de oorzaak moeilijker te reproduceren. Zoek de eerste afwijkende gebeurtenis en wijzig één factor gecontroleerd. Bewaar ook het oude uitvoerbare bestand als je hercompileert.
Waarom kan actualStart van requestedStart verschillen?
De tester vraagt eerdere historie voor voorbereiding. Bij onvoldoende historie kan de werkelijke start verschuiven. Bewaar beide waarden uit rapport en log, plus beschikbare historie en modelinstellingen. Kopieer de ene niet zonder controle in beide velden.
Moet ik de run met meer winst kiezen?
Niet voordat voorwaarden zijn aangesloten. In het bronmodel komt meer winst alleen van minder commissie. Verschillende data, periode of uitvoering kunnen ook meespelen. Leg de onderzoeksvraag vast en beoordeel daarna op passende kosten en aparte evaluatiedata.
Bronnen en controle
- MetaTrader 5 — Strategy Tester
Relevante primaire testdocumentatie eerder gelezen over enkele test, optimalisatie en verdere evaluatie. Een identieke robotnaam bewijst geen identieke complete run.
- MetaTrader 5 — Historie voorbereiden en werkelijke start
Relevante primaire sectie gelezen over synchronisatie, voorbereidingshistorie en mogelijke startverschuiving. Geen universele extra bufferduur uit de pagina als onderzoekseis overgenomen.
- MetaTrader 5 — Specifieke testomgeving
Primaire relevante testerkenmerken gecontroleerd voor agentomgeving, globale variabelen en bestandsgebruik. Een gelijk manifest sluit niet iedere ontbrekende afhankelijkheid uit.
De berekeningen gebruiken expliciete aannames. Ze vervangen geen actuele marktgegevens of voorwaarden van de aanbieder.
