Je eerste algoritmische project hoeft niet te handelen. Een signaallog, volumeberekening of blootstellingscontrole kan een compleet project zijn. Kies één handeling die je kunt uitleggen en verifiëren. Definieer informatie, regel en gedrag voordat een programma orderrechten krijgt. Automatisering bewijst geen winstgevende strategie.

Vier verschillende taken onder één naam

Scheid signaalkeuze, uitvoering van een bestaande beslissing, positiebeheer en rapportage. Een programma dat een al besloten order opdeelt heeft niet hetzelfde doel als een robot die instappen kiest. Het BIS-rapport uit 2020 over FX-uitvoeringsalgoritmen bespreekt marktstructuur, uitvoering en bijbehorende risico’s; het bewijst niet dat een particuliere robot winst maakt. EA betekent daar execution algorithm, bij MetaTrader Expert Advisor.

Leg instrument, databron, bedrijfstijden, beslismoment, instap, uitstap, hoeveelheid, blootstellingslimiet en gedrag bij een bestaande positie vast. De mens kiest en bewaakt die invoer. Een programma kan één handmatige fout voorkomen en een andere introduceren, zoals een dubbele aanvraag na herstart. Test programmawerking apart van het economische resultaat.

Gereedschap kiezen voor de handeling

Voor een melding kan een alarm voldoende zijn. Het gewone MT5-menu vergelijkt prijs, laatste-dealvolume en tijd en is geen vrije editor voor een gemiddelde-plus-ATR-regel. Eigen logica kan een indicator of EA vragen. MQL5 werkt binnen MT5; Python kan data onderzoeken of via een passende gedocumenteerde verbinding werken.

Er is geen verplichte ladder van alarm naar MQL5, Python en FIX. Kies omgeving op basis van rekening, data en handeling. Geen vast aantal coderegels, bouwtijd, vertraging of API-toegang geldt voor elk brokerproduct. MQL5-EA begrijpen: events, bufferindex en bevestigde uitvoering behandelt het platformprogramma en Python-backtest: records, informatietijd en uitvoering aansluiten een afzonderlijke onderzoekswerkwijze. Dezelfde regel in twee talen bouwen is optioneel.

De derde gemiddelde-invoer kun je niet raden

Twee bekende prijzen bepalen geen driepuntsgemiddeldeFictieve voltooide historische prijzen x,100,102, oudste naar nieuwste. Gelijke gewichten, geen afronding vóór vergelijking. x is ontbrekend verleden, geen toekomstige prijs.REKENVOORBEELDOudere prijs onbekendx, 100, 102Mogelijke invulling x=98Gemiddelde 100Mogelijke invulling x=106Gemiddelde 102,667…Zonder xEvaluatie opschorten
Twee bekende prijzen bepalen geen driepuntsgemiddelde. Fictieve voltooide historische prijzen x,100,102, oudste naar nieuwste. Gelijke gewichten, geen afronding vóór vergelijking. x is ontbrekend verleden, geen toekomstige prijs.

Eenzelfde laatste prijs laat zonder complete vereiste historie geen beslissing toe. De alternatieven zijn geen marktwaarnemingen.

Oudere prijs onbekend
x, 100, 102 – Regel: laatste prijs > gemiddelde van precies drie.
Mogelijke invulling x=98
Gemiddelde 100 – 102 >100: voorwaarde waar.
Mogelijke invulling x=106
Gemiddelde 102,667… – 102 is niet groter: voorwaarde onwaar.
Zonder x
Evaluatie opschorten – Geen nul verzinnen en geen tweeperioderegel gebruiken.

De fictieve regel vergelijkt de laatst voltooide prijs, 102, met het gemiddelde van precies drie voltooide prijzen: x, 100 en 102, van oud naar nieuw. Alleen de twee nieuwste zijn bekend. Als de ontbrekende oudere prijs 98 was, is het gemiddelde 100 en geldt 102 >100. Als x 106 was, is het gemiddelde 308/3, ongeveer 102,667, en geldt de vergelijking niet. Dit zijn alternatieve invullingen van ontbrekende verleden data, geen toekomstige prijzen.

Dezelfde laatste prijs geeft dus verschillende beslissingen. Twee bekende waarden middelen tot 101 verandert de regel naar twee perioden. Nul invullen maakt een fictief derde gegeven. Het programma registreert onvolledige data en geeft geen beslissing. Komt de historie later beschikbaar, controleer dan dat dezelfde bedoelde bars zijn opgehaald. De bronvisual gebruikt voor beide vergelijkingen dezelfde lineaire as 99–104 met markering 102; dat voorkomt een misleidende schaalsprong.

CopyRates retourneert het werkelijk gekopieerde aantal of een fout; historie kan gedeeltelijk beschikbaar zijn terwijl downloaden verdergaat. Dit voorbeeld gaat over volledigheid, niet over arrayrichting of indexvolgorde. Ontbrekende invoer is geen geldige “geen instap”-uitkomst.

Programmeervaardigheid plus data en statistiek

Je moet het gedrag kunnen controleren dat jouw project gebruikt. Daar horen programmeren, datahantering, risicoberekening en statistisch redeneren bij. Een parameter wijzigen zonder syntaxfout test geen orderstatus, herstart of economische aanname. Een korte rekeningcurve beschrijft die steekproef en bewijst geen toekomstige winst.

Plan representatieve data, evaluatie buiten ontwikkeling en demo-uitvoeringscontroles. MQL5 loopt via de terminal; Python kan die of andere gedocumenteerde interfaces gebruiken. Totale vertraging omvat code, hosting, netwerk en brokerverwerking. Een garantie van enkele milliseconden volgt niet uit de taalkeuze.

Van een precieze regel naar een vergelijkbare test

Een fictief EUR/USD-H1-kruisingsidee kan EMA 21, SMA 55 en een expliciet berekende ATR-afstand gebruiken. Specificeer berekening, signaaltijd, stop en doel. Neem bijvoorbeeld alleen voltooide uurcandles en een vast evaluatiemoment. Log eerst zonder order. Test één signaal, geen signaal, een nieuwe bar, ontbrekende historie en een bestaande positie.

Vergelijk handmatige en automatische beslissingen eerst op dezelfde data en datums. Vijf jaar automatisch vergelijken met zes maanden handmatig verwart perioden, feeds en regimes. Verklaar verschillen per beslissing, verwerk passende kosten en bevries de regel vóór beoordeling op aparte data. Dezelfde eindwinst uit andere transacties is geen inhoudelijke match.

Het afzonderlijke bronvolumemodel neemt USD 10.000 equity, een gekozen 0,5%-prijsverliesbudget en 25 pips stop. Bij EUR/USD-pip 0,0001 en 100.000 EUR per lot is de lot-pip USD 10. Budget USD 50 geeft 50/(25 × 10) = 0,20 lot, of EUR 20.000 nominaal vóór kosten. Dit is geen universeel risicoadvies. Marge, nominale blootstelling en gepland verlies zijn verschillende grootheden. Kosten, volumestap en slechtere stopuitvoering vragen verdere verwerking; USD 50 is geen gegarandeerd maximum.

Een programma kan ook een valse spread maken uit afzonderlijk correcte quotes. Op t 1 is Bid/Ask 1,1000/1,1002, op t 2 1,1010/1,1012. Beide spreads zijn twee pips. Meng oude Ask met nieuwe Bid: (1,1002 − 1,1010)/0,0001 = −8 pips. Een filter spread <2,5 accepteert deze geconstrueerde waarde ten onrechte; het is geen waargenomen negatieve marktspread.

SymbolInfoTick levert huidige prijzen en updatetijd in één MqlTick-structuur. Controleer succes en gebruik de bewaarde samenhangende velden. Test opzettelijk gemengde veranderende metingen. Een coherente quote is een datacontrole, geen bewijs van voldoende liquiditeit of toekomstige fill.

Code, economische regel en uitvoering apart beoordelen

Een project kan falen door regel, code, data, uitvoering of operationele problemen. Een positieve historische gemiddelde uitkomst bewijst geen veilige implementatie. Controleer na een onduidelijk orderantwoord eerst orders, deals en posities voordat je opnieuw probeert. OrderSend die true teruggeeft bewijst geen voltooide fill; beoordeel de resultaatcodes en transactiestaat.

Bewaar regelversie, informatietijdstip en reden voor handelen, wachten of evaluatie weigeren. Noteer alle geteste varianten. Na een aanpassing op basis van een out-of-sample-uitkomst is die periode ontwikkeldata geworden. Een handelsvoordeel toetsen: kosten, onzekerheid en groepsweging behandelt evaluatie; bewaar ook afgewezen varianten en slechte rapporten.

Het bronrekenvoorbeeld kiest honderd transacties: veertig winnaars van +2R en zestig verliezers van −1R. Gemiddeld (80 − 60)/100 = +0,2R vóór kosten; profit factor 80/60 circa 1,33. Dit zijn toegewezen getallen, geen geteste strategie of verwachte volgende steekproef.

Nieuw afzonderlijk EUR-tegenvoorbeeld: veronderstel R = EUR 25 en dezelfde fictieve veertig prijswinsten van EUR 50 en zestig prijsverliezen van EUR 25. Bruto totaal is EUR 500. Met EUR 5 apart geboekte kosten voor iedere complete transactie gaan honderd transacties samen EUR 500 aan kosten af: netto nul. Netto winnaars zijn EUR 45, verliezers EUR 30; profit factor wordt 1. De prijsresultaten bevatten al spread, dus die wordt niet nogmaals afgetrokken. Dit is een gekozen kostenmodel, geen actueel tarief of marktprestatie.

Begroot data, hosting, licenties en eigen tijd ook als de programmeertaal geen licentievergoeding heeft. Toegang, herstelmogelijkheden en prijzen verschillen per omgeving. Een VPS neemt toezicht of alle storingen niet weg. Lokale AutoTrading uitschakelen sluit bestaande posities niet en controleert geen andere actieve instantie.

Een eerste project met toetsbare grenzen

  1. Schrijf één reproduceerbare handeling uit: data, tijdstempel, regel, resultaat en gevallen waarin evaluatie stopt. Een betrouwbare signaallog kan voldoende zijn.
  2. Test compleetheid en quote-samenhang met kleine uitlegbare gegevens. Houd de huidige bar apart van voltooide bars.
  3. Voeg orders alleen toe in een expliciet gekozen demo-omgeving als het project dat nodig heeft. Test bevestiging, weigering, herstart en onduidelijk antwoord met toestandcontrole vóór herhaling.
  4. Bevries de regel voor aparte evaluatie met dezelfde datums, beslissingen en passende kosten. Onderzoek wezenlijke verschillen zonder een universeel tolerantiepercentage te verzinnen.
  5. Leg pauze, herstart en versie-update vast. Scheid serverbescherming van lokaal programmawerk en controleer externe instanties apart. Een kalenderdeadline verplicht niet tot live geld.