In dit artikel
Na dit artikel kun je…
- Testerfunctie-onbeschikbaarheid van een foutief historisch archief onderscheiden.
- Versies op beslismoment selecteren zonder null als nul of oude waarde te behandelen.
- Een replayrecord en zijn limieten van bewijs voor een volledige backtest scheiden.
Begrippen uitgelegd binnen het artikel
Backtesting Expert Advisor (EA) Economische kalenderEen EA kan op demo een API lezen maar in de tester geen vergelijkbaar antwoord krijgen. Dat bewijst geen storing van de provider. Controleer eerst of de functie in die testomgeving beschikbaar is. Vandaag een historische tabel downloaden en haar huidige waarden aan vroegere besluiten toekennen is geen reconstructie van toenmalige kennis. Het model hieronder selecteert expliciete versies en maakt geen externe API-verbinding.
Een werkende WebRequest is geen historische gegevenslaag
MetaQuotes documenteert dat WebRequest niet in Strategy Tester kan worden uitgevoerd. Een endpoint aan toegestane terminal-URL’s toevoegen verwijdert die beperking niet. Scheid een niet-beschikbare testerfunctie van een netwerkprobleem, autorisatiefout of werkelijk ontvangen HTTP-antwoord in een gewone EA-run.
Een mislukte aanvraag vervangen door nul kan de betekenis veranderen: nul kan een geldige waarneming zijn, een fout betekent onbekende invoer. Een bestand in plaats van HTTP helpt alleen als dat bestand de juiste versies en beschikbaarheid bevat. Herzieningen die toen onbekend waren geven anders alsnog toekomstinformatie.
Leg waarneming, versie, waarde en beschikbaarheid vast voordat de signaallogica rechtstreeks van netwerkcode afhangt. MQL5-EA begrijpen: events, bufferindex en bevestigde uitvoering behandelt de scheiding tussen gegevens, besluit en uitvoering. Een andere adapter mag ontbrekende gegevens niet stilzwijgend anders interpreteren.
Online en offline dezelfde betekenis geven
De online adapter verwerkt een providerantwoord; de testadapter kiest een bewaard record dat op het beslismoment beschikbaar was. Beide leveren een geldige waarde, expliciete onbeschikbaarheid of fout aan de beslislaag. Dat is een voorgestelde codeorganisatie, geen complete handelsrobot of compatibiliteitsbelofte voor iedere API.
Bewaar ruwe antwoorden apart van testrecords. Noteer bron, schemaversie, ophaalmoment en bewijs van beschikbaarheid. De periode waarop een waarneming betrekking heeft is niet het moment waarop zij bekend werd. Een jaargangdatum alleen levert geen exacte UTC-publicatie-uurwaarde op. Een dagelijkse kopie bewijst op zichzelf geen beschikbaarheid binnen die dag.
FRED onderscheidt informatie zoals die nu bekend is van informatie uit een eerdere real-time-periode. Dat illustreert versiebeheer, geen universele FX-API. De betreffende API gebruikt ook datums; die zijn niet automatisch intraday-tijdstempels. Onderzoek de chronologie van de echte provider voordat je een vroegere beslisminuut invult.
FileOpen gebruikt in MQL5 een afgebakend bestandsgebied, bij testen ook een agentmap. Een relatief pad hoeft niet naar de gewone terminalmap te verwijzen. Controleer openen én lezen. Een ontbrekend bestand geeft een herkende ontbrekende invoer, geen lege tabel die als volledige historie geldt.
Welke versie mag het vroegere besluit gebruiken?
Drie fictieve antwoorden, één expliciete conventie
De verzonnen waarneming GDP-model heeft op 1 oktober 2026 om 12.00 UTC waarde "1.0" met revisielabel initial, om 13.00 "1.4" met revised en om 14.00 null met unavailable. Dit zijn geen echte bbp-publicaties of endpointrecords. availableAt beschrijft wanneer dit model toegang heeft, niet wanneer een order uitgevoerd wordt.
Toen beschikbare versie, niet de laatste van vandaag
Een latere revisie herschrijft een vroeger besluit niet. Expliciet ontbreken is in deze variant geen nul of oude waarde.
- 12.00 beschikbaar
- initial: "1.0" – 12.30 kiest 1,0.
- 13.00 beschikbaar
- revised: "1.4" – 13.30 kiest 1,4; revisie is geen vroegere kennis.
- 14.00 beschikbaar
- unavailable: null – 14.30 blijft onbeschikbaar, geen automatische terugval.
Om 12.30 kiest het model 1,0; om 13.30 1,4; om 14.30 onbeschikbaar. Het nieuwste record binnen de tijdgrens bevat dan null: geen automatische terugval op 1,4 en geen omzetting naar nul. Een fictieve regel “waarde groter dan 1,2” is om 12.30 onwaar. De latere 1,4 gebruiken keert dat besluit om, ook met dezelfde prijsdata.
Dit is een toets van informatiebeschikbaarheid, geen winsttest. De tool selecteert records, geen signalen of rendement. Wil een strategie de laatst bekende waarde vasthouden, definieer dan vooraf een andere regel met toegestane ouderdom en reden voor ontbreken. Voeg terugval niet na een aantrekkelijker resultaat toe alsof de test ongewijzigd bleef.
Nieuw afzonderlijk EUR-tegenvoorbeeld: een fictieve beslisregel accepteert alleen een bekende kostenraming van maximaal EUR 4. De opgegeven raming is aanvankelijk EUR 3, later herzien naar EUR 5 en vervolgens expliciet onbeschikbaar. Op het vroege beslismoment blijft EUR 3 binnen budget met EUR 1 ruimte. Het latere bedrag zou EUR 1 boven budget liggen, maar was toen geen bekende invoer. Na null is de vraag niet “EUR 0 en dus gratis”: de raming ontbreekt en de regel kan geen nieuw besluit toestaan. De bedragen zijn alleen een didactisch invoermodel; er wordt geen order, kostenbesparing of winst afgeleid.
De lokale replay en haar grenzen
Plak een JSON-object met numerieke version 1 en events. Ieder event heeft precies availableAt, observation, value en revision. availableAt vraagt YYYY-MM-DDTHH: mm: ssZ zonder fractieseconden of andere offsets. observation en revision zijn tekst; value is getaltekst met decimale punt of null en wordt niet naar Number geconverteerd. Bewaar deze technische sleutels en tijdnotatie ongewijzigd.
Er mogen één tot tweehonderd events zijn, binnen 64 KiB JSON, acht niveaus en 2.000 waarden. observation en value zijn maximaal 128 tekens; revision maximaal 64. Geef decisionAt apart in hetzelfde UTC-formaat. De invoer is een verklaring, geen geverifieerde publicatieklok.
Speel de informatie op het beslismoment na
Dit leervoorbeeld werkt lokaal in je browser: geen verbinding met een rekening of API, geen verzending en geen blijvende opslag van je invoer. Vul geen wachtwoorden of persoonsgegevens in.
Per waarneming kiest het model de laatste versie met availableAt uiterlijk op decisionAt. Vóór het eerste record is niets beschikbaar. Twee records met dezelfde observation en availableAt zijn dubbelzinnig en blokkeren analyse; plakvolgorde lost dat niet op. Het revisielabel is geen numerieke chronologische teller. Gebruik machinegetallen met punt, ook al leest de Nederlandse uitleg 1,0 en 1,4.
De oefening werkt op geplakte gegevens lokaal in de browser, zonder API-sleutels, ophalen van publicaties, verzending of blijvende opslag. Vul geen wachtwoorden of persoonsgegevens in. Geldig JSON bewijst geen echt archief. Verkeerd teruggedateerde revisies worden door een correct selectiealgoritme nog steeds onder verkeerde aannames nagespeeld.
Bewaar voor echte studies bronbewijs en één vaste datasetkopie. De tester kent aparte agentomgevingen en bestandsregels; overschrijf onderzoeksinvoer niet onderweg met actuele antwoorden. Koppel de dataversie aan Dezelfde backtest, ander resultaat: vergelijk twee vastgelegde runs, niet alleen aan een endpointnaam.
Python-backtest: records, informatietijd en uitvoering aansluiten behandelt tijdgebonden koppelingen. De kalenderuitleg bij Economische kalenders: periode, tijdzone en revisie controleren helpt periode, publicatie en revisie scheiden. Een datareplay simuleert niet automatisch Bid/Ask-prijzen, kosten, hoeveelheid en orderstatus. Begin met een paar besluiten zonder echte orders voordat je een verschil aan strategiekwaliteit toeschrijft.
Vóór je deze EA-uitkomst beoordeelt
- Definieer het gegevenscontract en de online/offline-adapter. Bewaar ruwe antwoorden en bewijs van beschikbaarheid. Ontbrekende historische versies blijven een beperking.
- Controleer een fictieve waarneming vóór de eerste publicatie, exact op de grens, vóór en na revisie en na expliciete onbeschikbaarheid. Test ook een conflicterend tijdstip.
- Bevestig in de tester welk bestand echt gelezen is en hoe ontbreken wordt verwerkt. Archiveer de dataset met rapport en log.
- Onderzoek daarna signalen, uitvoeringen en kosten apart. Correcte versieselectie valideert geen volledig handelsvoordeel.
Test wat je hebt geleerd
Ongeveer 2 minuten oefenen.
Antwoord en uitleg bekijken
Het record van 12.00 is geldig; de revisie om 13.00 verandert de oude evaluatie niet.
Andere vragen
Maakt een toegestane URL WebRequest in de tester mogelijk?
Nee. MetaQuotes documenteert de beperking in Strategy Tester. Controleer omgeving en fout apart van gewone EA-netwerktoegang. Historische evaluatie vraagt een adapter met bewaarde versies en echte beschikbaarheidsaannames.
Is de huidige tabel met historische waarden voldoende?
Niet noodzakelijk. Zij kan latere revisies bevatten. Onderzoek versieherkomst en tijdprecisie; een periode- of vintagedatum is geen exacte publicatieminuut. De tool detecteert geen onterecht teruggedateerde invoer.
Betekent null nul of vorige waarde?
Geen van beide in dit model. Het expliciet ontbrekende record om 14.00 maakt 14.30 onbeschikbaar. Een last-known-value-regel met leeftijdslimiet is een andere vooraf te ontwerpen beleidskeuze.
Valideert correcte replay de hele backtest?
Zij controleert de versiekeuze onder de opgegeven tijden. Herkomst, parsing, signalen, ontbreken, prijzen, kosten en hoeveelheden blijven andere vragen. Bewaar gegevensversie en rapport samen; de controle garandeert geen toekomstige winst.
Bronnen en controle
- MetaQuotes — WebRequest
Primaire relevante functiebeperking gelezen: WebRequest kan niet in Strategy Tester draaien. Toegestane terminal-URL verandert die beperking niet.
- MetaQuotes — FileOpen
Primaire bestandsgrens, testagentmap, FILE_COMMON en foutresultaat gelezen. Een bestandspad en leesfout vragen afzonderlijke controle; documentatie bewijst geen juist historisch archief.
- St. Louis Fed — FRED Real-Time Periods
Primaire uitleg gelezen van nu en vroeger bekende informatie, revisies en datumparameters. Een vintage-datum geeft niet vanzelf een exact UTC-publicatie-uur.
- MetaTrader 5 — Testeromgeving en bestanden
Eerder relevante primaire testerkenmerken gelezen voor agentbestanden en omgeving. Gedeelde bestanden vragen een expliciet ontwerp; geen actuele invoer onderweg als vaste historie aangemerkt.
De berekeningen gebruiken expliciete aannames. Ze vervangen geen actuele marktgegevens of voorwaarden van de aanbieder.
