Een Python-notebook kan een overtuigende grafiek, stabiele coëfficiënt of ranglijst opleveren. Geen daarvan is al een uitvoerbare beslissing. Live uitvoering moet weten welke data op het beslismoment bestond, hoe ze is getransformeerd, hoe lang het resultaat geldig blijft en wat MT5 doet wanneer een schakel faalt.
Deze samengestelde case bundelt terugkerende lessen uit het geanonimiseerde archief zonder model, instrument, parameter, klantproces of eigen entryregel prijs te geven.
Een gecontroleerde keten van research naar uitvoering
Elke grens levert een testbaar artefact en weigert dubbelzinnige status.
- 01BevriezenBewaar datacutoff, schema, featurecode, modelversie en goedgekeurde scope.
- 02PublicerenStuur symbool, richting, brontijd, verval en modelidentiteit in een klein object.
- 03KwalificerenMT5 controleert actualiteit, schema, mapping, accountpermissie, spread en exposure.
- 04BevestigenVerifieer het brokerresultaat en log de volledige lijn van beslissing tot deal.
Researchoutput was niet de tradinginterface
De eerste fout was een CSV-rij of modelscore als volledig signaal te behandelen. Research gebruikte opgeschoonde bars, een gekozen tijdzone en een gekende samplegrens; MT5 zag brokersymbolen, bid/ask, onvolledige historiek en asynchrone ticks. Een numerieke match telde pas na een gedeelde definitie van symbool, barsluiting, prijszijde, ontbrekende data, normalisatie en timestamp.
De overdracht werd daarom een smal contract. Research bleef flexibel, terwijl productie alleen velden doorgaf die uitvoering onafhankelijk kon valideren.
Chronologie moest deployment overleven
Features op de volledige sample, herziene bars, forward fill en willekeurige splits kunnen toekomstinformatie invoeren. De productieketen bewaarde daarom een datacutoff, gebruikte tijdsgebonden validatie en gaf elke beslissing een brontijd en vervaltijd.
Een stilgevallen Pythonproces, vertraagd bestand, schemafout of verlopen beslissing mocht nooit stilzwijgend gisteren hergebruiken. De veilige uitkomst was geen nieuwe actie.
Pariteit vóór winst
Een vaste set observaties werd apart in Python en de MT5-adapter berekend. Tussenwaarden, modelversie, beslistijd en classificatie werden vergeleken vóór de equitycurve.
Tests omvatten symboolsuffixen, zomeruur, ontbrekende historiek, duplicaten, restart, ongeldige waarden, geweigerde orders en late bevestiging. Hetzelfde event mocht nooit een tweede positie maken.
Uitvoering bleef een aparte autoriteit
Het model stelde een richting voor en bezat de account niet. MT5 behield symbool- en volumecontrole, portfolio-exposure, operationele vensters en verificatie van verzoeken. Modelvertrouwen kon geen harde limiet omzeilen.
Door die scheiding kon een modelversie worden teruggetrokken zonder de adapter te wijzigen en kon een adapterupdate tegen vaste beslissingen worden getest.
Herbruikbare acceptatiechecklist
De workflow is klaar wanneer een onafhankelijke reviewer kan reconstrueren waarom een beslissing bestond en waarom MT5 ze aanvaardde, weigerde of negeerde.
- Versioneer dataset, transformaties, model en MT5-adapter samen.
- Voeg bron-, creatie- en vervaltijd plus schemaversie toe.
- Vergelijk tussenwaarden in beide omgevingen.
- Definieer veilig gedrag voor stale, ontbrekende, dubbele of foute input.
- Hou portfoliopermissie en brokerverificatie buiten het model.
Vragen die je misschien hebt
Moet Python openblijven terwijl MT5 handelt?
Nee. Een service, gepland artefact of geëxporteerd model kan werken; actualiteit en foutgedrag moeten wel expliciet zijn.
Bewijst een gelijkaardige backtest pariteit?
Nee. Vergelijk brondata, tussenfeatures, timestamps, permissies en bevestigde trade-events.
Wat doet MT5 met een verlopen signaal?
Geen nieuwe actie uitvoeren en de reden loggen; nooit raden of de geldigheid stilzwijgend verlengen.