MQL4- en MQL5-Bibliotheken: Herbruikbare MetaTrader-Code

Home Software per Sector Trading Software op Maat MetaTrader Ontwikkeling (MT4 & MT5) MQL4- en MQL5-Bibliotheken: Herbruikbare MetaTrader-Code

Overzicht

MetaTrader-ontwikkeling op grotere schaal, met meerdere Expert Advisors, een verzameling eigen indicatoren of een team van ontwikkelaars aan dezelfde code, vraagt om meer dan losse MQL4- en MQL5-bestanden. Het vraagt om gedeelde bibliotheken met herbruikbare onderdelen voor de handelsfuncties, hulpfuncties en platformkoppelingen die elk stuk MetaTrader-software nodig heeft.

Herbruikbare MQL-code wordt meestal gedeeld als include-bestanden (.mqh) die in elk programma worden meegecompileerd. Gecompileerde bibliotheken, de .ex4- en .ex5-bestanden die MetaTrader tijdens het draaien laadt, zijn handig als de broncode verborgen moet blijven, maar kunnen alleen functies exporteren, geen klassen.

Wij bouwen MetaTrader-bibliotheken op maat voor handelsbedrijven en ontwikkelaars die herbruikbare MQL4- en MQL5-onderdelen willen die klaar zijn voor productie.

Wat wij bouwen

Orderbeheer. Een goede bibliotheek voor orderbeheer schermt de orderfuncties van MT4 of MT5 af achter een heldere interface. Ze regelt de foutafhandeling, nieuwe pogingen, requotes en aanpassingen per broker.

Voor MT4: orders plaatsen met automatisch opnieuw proberen bij tijdelijke fouten, fouten indelen, de koers opnieuw ophalen voor een nieuwe poging, en stop loss en take profit controleren.

Voor MT5: het juiste MqlTradeRequest opbouwen voor elk ordertype, de resultaatcode van OrderSend() goed uitlezen, en de historie van deals en orders ophalen.

Posities: de positie van een bepaald magic number en symbool ophalen, alle posities die aan een voorwaarde voldoen, en de netto positie in lots.

Risicobeheer. De positiegrootte berekenen uit vermogen, risicopercentage, instapprijs, stop loss en de specificaties van het symbool. De drawdown berekenen, per dag vanaf het startvermogen van de sessie en in totaal vanaf het hoogste vermogen. De open lots per symbool optellen, en risicolimieten handhaven.

Indicatoren. Veelgebruikte berekeningen als bibliotheekfuncties, met hulpfuncties, ook voor meerdere tijdframes.

Data en opslag. CSV-bestanden lezen en schrijven. Een handelsjournaal dat elke tradegebeurtenis in een bestand of database vastlegt. Handelsdata omzetten naar JSON of CSV.

Communicatie en koppelingen. Een vast bestandsformaat en vaste werkwijze om data uit te wisselen tussen MetaTrader en andere programma's. Een interface voor een DLL. En hulpfuncties voor named pipes en sockets.

Specifiek voor MT5. Een basisklasse die de interface voor signalen vastlegt, het afhandelen van events, en collecties op basis van de getypeerde CArrayList en CHashMap uit de Generic-bibliotheek van MQL5.

Uitgangspunten

Eén taak per module. Elke module heeft een duidelijk afgebakende taak. Bibliotheken die van alles door elkaar doen, worden moeilijk te onderhouden.

Defensief gebouwd. Een bibliotheekfunctie kan er niet van uitgaan dat haar input klopt. Ze controleert alle input, gaat netjes om met lege pointers en geeft bij een fout een duidelijk gedefinieerde waarde terug.

MT4 en MT5. Is dezelfde functie op beide platforms nodig, dan biedt de bibliotheek één interface met een eigen uitwerking per platform, gekozen met compileropties.

Oog voor snelheid. Functies die bij elke tick worden aangeroepen, moeten snel zijn: geen onnodig geheugengebruik en geen overbodige aanroepen bij de broker die vertraging geven.

Versiebeheer. Gedeelde code vraagt om versiebeheer. Include-bestanden worden in elke EA meegecompileerd, dus na een update moeten die EA's opnieuw worden gecompileerd en uitgerold; .ex4/.ex5-bibliotheken worden tijdens het draaien geladen, waardoor een update elke EA bereikt, wat een stabiele interface vereist.

Testen

Unittests in MQL. Elke functie wordt aangeroepen met bekende input en de uitkomst wordt vergeleken met wat er hoort uit te komen. Dat draait als test-EA in de Strategy Tester, die per functie vastlegt of de test slaagt.

Integratietests. Onderdelen die los goed werken, kunnen samen toch fout gaan. Integratietests controleren dat ze goed samenwerken.

Bij verschillende brokers. De functies voor orderbeheer worden getest bij meerdere brokerinstellingen.

Gebruikte technologieën

  • MQL4 en MQL5: bibliotheken voor MT4 en MT5, als include-bestanden of als .ex4/.ex5, in MQL5 volledig objectgeoriënteerd
  • De standaardbibliotheek van MQL5: CTrade, CObject, CArrayList, CHashMap en andere onderdelen
  • C++ en C#: DLL's voor koppelingen vanuit MQL
  • Python: externe testomgeving en integratietests
  • MetaTrader Strategy Tester: functies testen in een gecontroleerde simulatie op historische data
  • Versiebeheer: versies en afhankelijkheden over alle EA's en indicatoren die de bibliotheek gebruiken

Gedeelde bibliotheken in plaats van gekopieerde code

Elk handelsbedrijf en elke serieuze MetaTrader-ontwikkelaar met meerdere EA's komt op het punt waarop dezelfde code in meerdere bestanden staat: dezelfde orderlogica gekopieerd in vijf EA's, waarbij de ene kopie een fix krijgt en de andere op een oude versie blijft hangen.

Gedeelde bibliotheken lossen dat op. Daar staat tegenover dat u vooraf investeert in het goed bouwen ervan.

Veelgestelde vragen

Bibliotheek of include-bestand?

De meeste herbruikbare MQL-code wordt gedeeld als include-bestanden (.mqh) die in elk programma worden meegecompileerd. Een gecompileerde .ex4/.ex5-bibliotheek is handig als de broncode verborgen moet blijven, maar kan alleen functies exporteren, geen klassen.

Hoe wordt bibliotheekcode getest?

Met test-EA's in de Strategy Tester die elke functie met bekende invoer aanroepen, inclusief randgevallen zoals een account in een andere valuta, en met integratietests op demo-accounts bij verschillende brokers.

Kan één bibliotheek zowel MT4 als MT5 bedienen?

Ja. Met conditionele compilatie blijft de interface gelijk en verschillen alleen de platformspecifieke delen, zodat de EA-code niet hoeft te veranderen.

Van wie is de bibliotheekcode?

Van u, met het eigendom van de code contractueel geregeld.

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 MT4 naar MT5 migratie, MQL5-ontwikkeling en MetaTrader-koppeling.

Eén keer bouwen, overal gebruiken

Orderafhandeling, risicoberekening, logging en koppelingen één keer op productieniveau geschreven en gedeeld door elke Expert Advisor, indicator en elk script, zodat een fix of brokerwijziging op één plek gebeurt. Vertel ons hoeveel EA's en indicatoren u nu onderhoudt.

Bespreek uw MQL-bibliotheek