Een fictief dagboek telt 171 trades en EUR 4.200 verlies. Met vastgelegde setup- en nieuwscontext kan de eigenaar een segment met EUR 2.700 verlies onderscheiden: circa 64,3% van het totaal. Dat terugkijkende verband bewijst niet dat uitsluiting later EUR 8.100 winst zal geven. De onderstaande 25 velden zijn één voorgesteld ontwerp, geen verplichte industriestandaard.

Begin bij de vraag en behoud de bronregistratie

Een klein dagboek kan resultaten vastleggen maar voor een specifieke vraag context missen. Kies kolommen vanuit wat je wilt onderzoeken: tien handelsvelden, vijf risicovelden, vijf setupvelden en vijf evaluatievelden vormen hier het voorstel. Voeg toe of laat weg als de vraag dat rechtvaardigt, zonder het controleerbare bronrecord te verliezen.

Bewaar brongebeurtenissen, vooraf vastgelegde plannen en berekende samenvattingen afzonderlijk. Ook een geïmporteerde fill is brondata. Eén samenvattingsregel betekent hier één handelsidee; koppel deeluitvoeringen op een apart operatiesblad aan een idee-ID. Twee deeluitstappen zijn niet automatisch twee onafhankelijke signalen. Bewaar rekening, valuta, demo/live, tijdzone en strategieversie in bronrecord of woordenboek. Tel PLN en USD niet op zonder conversieregel.

Tien handelsvelden: plan en daadwerkelijke uitvoering scheiden

  1. Instapdatum en -tijd: YYYY-MM-DD en HH: MM plus expliciete tijdzone. Dit maakt ordenen en weekdagsegmentatie controleerbaar.
  2. Instrument: providersymbool en contract. EUR/USD en GBP/JPY zijn valutaparen; XAU/USD is goud in USD, geen twee valuta’s.
  3. Richting: long of short volgens een vaste definitie.
  4. Instapprijs: echte fill, apart van de prijs bij het besluit als uitvoering onderzocht wordt.
  5. Stop: gepland niveau en ordertype; een gewone stop garandeert de uitstapprijs niet.
  6. Doel: gepland take-profitniveau of de andere gedocumenteerde uitstapregel.
  7. Hoeveelheid: lots én de werkelijke contracteenheden per lot.
  8. Uitstapprijs: echte sluitingsfill en verwijzing naar eventuele deeluitvoeringen.
  9. Uitstapdatum en -tijd: met dezelfde tijdsconventie voor de looptijd.
  10. Geldresultaat: netto na toepasselijke kosten, berekend uit echte fills.

Bewaar geplande prijzen apart en reconstrueer geen ontbrekende instapcontext met kennis van de afloop. Tien velden bevatten niet automatisch de intratradegegevens voor iedere maatstaf. Commissie en financiering kunnen losse boekingen zijn. Ask/Bid-fills bevatten de spread al; trek die niet nogmaals af. Het label ECN bepaalt geen universele eurokosten per lot.

Vijf risicovelden: eerst de noemer bepalen

EUR 800 uitkomst tegenover EUR 400 initieel gepland risico is 2R; EUR 1.200 tegenover EUR 1.000 is 1,2R. Dat verklaart schaal maar beslist niet welke strategie beter is. Andere maten, bijvoorbeeld rendement op equity, beantwoorden andere vragen.

  1. Initieel risico als kapitaalratio: gepland geldrisico gedeeld door expliciet gekozen saldo of equity. Bij percentageopmaak niet nogmaals maal honderd; een gewoon getal in procenten vraagt één vermenigvuldiging.
  2. Netto R: nettoresultaat gedeeld door positief geldig initieel geldrisico. EUR 150/50 = 3R; −50/50 = −1R. Een latere stopwijziging herschrijft die referentie niet. Onbekend beginrisico geeft ontbrekend R, geen verzonnen nul.
  3. Winstteruggave: bijvoorbeeld piek +4R naar uitstap +1R is 3R. Dit is niet noodzakelijk de grootste tussentijdse piek-daldaling; daarvoor ontbreekt het pad.
  4. Blootstelling: op een vooraf beschreven vergelijkbare basis, met juiste eenheden.
  5. Geschatte correlatie: bewaar venster en methode. +0,90 maakt twee posities niet identiek en bewijst niet exact dubbel risico.

Vijf setupvelden: waarom en met welke informatie?

  1. Setuptype: stabiele gedefinieerde categorieën; vermeld aantallen, ontbrekende gegevens en onzekerheid per segment.
  2. Timeframe: dat waarop het signaal gedefinieerd is, niet alleen het geopende scherm.
  3. Confluentie: benoemde voorwaarden. Gemiddelde, RSI en patroon uit dezelfde prijzen zijn niet vanzelf onafhankelijke bevestigingen.
  4. Geplande gebeurteniscontext: bewaar bron, tijdzone en informatie die toen bekend was.
  5. Eigen toestandsscore: eventueel 1–10 met vaste betekenis, vóór de afloop ingevuld.

Acht tot tien labels of honderd totale trades garanderen geen betrouwbare expectancy. Zestig of honderd trades bewijzen geen superieur timeframe of 15–20% hogere winstkans. Een toestandsscore onder vier stelt geen universeel negatieve expectancy vast. Onderzoek samenhang en onzekerheid zonder de oorzaak vooraf vast te leggen.

Vijf evaluatievelden: afwijking is iets anders dan verlies

  1. Naleving: eventueel 1–10 volgens vooraf beschreven regels. Onderscheid toegestane wijziging en ongeplande afwijking.
  2. Aantal afwijkingen: tel gedefinieerde gebeurtenissen, bijvoorbeeld ongeoorloofde vergroting of ontbrekende vereiste uitstapinstructie.
  3. Eén observatie of vraag: “Vóór de vereiste voltooide H1-bar ingestapt” of “Op +0,8R gesloten in plaats van +2R; oorzaak onderzoeken”.
  4. Grafieklink: instap en uitstap met gecontroleerde toegang; inspecteer een deelkopie vóór openbaar delen.
  5. Maandtag: bijvoorbeeld januari-NFP of februari-EURUSD-range, bruikbaar voor terugvinden.

Geen vast verband van 0,3R verlies per punt onder zeven of bij 90% van traders is hier vastgesteld. Een winstgevende afwijking blijft een afwijking; een volgens plan uitgevoerd verlies is niet automatisch een fout. Tradingstatistieken: winrate, nultrades, volgorde en risicoweging verdiept de berekeningen.

Een lokaal ID vraagt het juiste rekeningbereik

Het lokale ID is niet de volledige sleutelVier fictieve regels in opgegeven volgorde en één valuta PLN. Eigen audit behoudt eerste complete sleutel na identiteitscontrole; geen Power Query-volgordegarantie.REKENVOORBEELDA / 17PLN +10A / 18PLN −4B / 17PLN +7A / 17 opnieuwPLN +10Correct totaalPLN +13
Het lokale ID is niet de volledige sleutel. Vier fictieve regels in opgegeven volgorde en één valuta PLN. Eigen audit behoudt eerste complete sleutel na identiteitscontrole; geen Power Query-volgordegarantie.

Controleer bereik én inhoud vóór weglaten. Een conflict onder dezelfde sleutel vraagt onderzoek.

A / 17
PLN +10 – Behouden als eerste operatie.
A / 18
PLN −4 – Andere operatie op dezelfde rekening.
B / 17
PLN +7 – Ander rekeningbereik: behouden.
A / 17 opnieuw
PLN +10 – Bewezen identieke import: weglaten.
Correct totaal
PLN +13 – ID-only met eerste regel zou +6 geven en B/17 verliezen.

Het bronmodel bevat achtereenvolgens A/17 +10, A/18 −4, B/17 +7 PLN en een aantoonbaar identieke herimport A/17 +10 PLN. De eigen deterministische audit bewaart de eerste regel per volledige sleutel (rekening, lokaal ID), na identiteitscontrole. Zij behoudt drie operaties: +13 PLN. Alleen ID vergelijken en de eerste regel houden verliest B/17: +6 PLN. Dit zijn fictieve lokale sleutels, geen verklaring dat echte brokertickets overal dezelfde scope hebben.

Power Query kan meerdere kolommen vergelijken maar garandeert bij verwijderen van duplicaten niet welke eerste regel behouden blijft. Onze vastgelegde eersteregelprocedure is een eigen auditregel, geen softwarebelofte. Verschillende bedragen onder dezelfde complete sleutel zijn een conflict om te onderzoeken, geen identieke herhaling.

Spreadsheet, TraderSync of Edgewonk kiezen

Vergelijk met een bekende dataset import, export, bronkoppeling, benodigde velden en formules. Controleer licentie en beschikbare functies; Excel is niet universeel gratis en betaalde tools kunnen ook aanpasbaar zijn. Bouwtijd hangt van eisen en ervaring af. Geen duizend-tradegrens verplicht tot overstappen.

TraderSync beschrijft terugkerende planniveaus; Edgewonk beschrijft jaarlijkse betaling. Dat is geen eenmalige onbeperkte licentie van USD 169. Controleer actuele valuta, belasting, verlenging, opzegging en echte brokerimport voordat je kiest. Dit artikel beveelt geen abonnement aan op basis van toekomstige winst.

De VBA-illustratie: afgebakende aggregatie

De ongewijzigde technische code hieronder leest geldresultaat J en R-waarde L uit Trades en schrijft naar Dashboard. Zij berekent beginrisico niet zelf, controleert geen rekeningvaluta, dedupliceert geen operaties en ververst geen draaitabellen of e-mail. Gebruik één valuta en een aangesloten geldige regelset. Een geldige nuluitkomst telt mee; profit factor zonder verliezen blijft niet beschikbaar.

Ontbrekende paren, foutwaarden, Null en niet-numerieke waarden worden afgewezen. Value 2 leest celwaarden zonder de specifieke Currency- en Date-typen; numerieke controle certificeert daarom geen juiste datum, valuta of groepering. Controleer vooraf bekende gevallen. Dit artikel bevat geen uitgevoerde Excel-macrotest; technische namen en meldingen in de broncode blijven behouden.

Sub CalculateMetrics()
    Dim ws As Worksheet, lastRow As Long, i As Long
    Dim totalTrades As Long, countWins As Long
    Dim sumWins As Double, sumLosses As Double, sumR As Double
    Dim result As Double, rValue As Double
    Dim resultCell As Variant, rCell As Variant
    Dim resultText As String, rText As String
    Set ws = ThisWorkbook.Sheets("Trades")
    lastRow = Application.Max(ws.Cells(ws.Rows.Count, "J").End(xlUp).Row, _
        ws.Cells(ws.Rows.Count, "L").End(xlUp).Row)
    For i = 2 To lastRow
        resultCell = ws.Cells(i, 10).Value2
        rCell = ws.Cells(i, 12).Value2
        If IsError(resultCell) Then
            Err.Raise vbObjectError + 3, , "Error value in J at row " & i
        End If
        If IsError(rCell) Then
            Err.Raise vbObjectError + 4, , "Error value in L at row " & i
        End If
        If IsNull(resultCell) Then
            Err.Raise vbObjectError + 5, , "Null result in J at row " & i
        End If
        If IsNull(rCell) Then
            Err.Raise vbObjectError + 6, , "Null R in L at row " & i
        End If
        resultText = Trim$(CStr(resultCell))
        rText = Trim$(CStr(rCell))
        If Len(resultText) > 0 Or Len(rText) > 0 Then
            If Len(resultText) = 0 Or Len(rText) = 0 Then
                Err.Raise vbObjectError + 1, , "Missing result or R at row " & i
            End If
            If Not IsNumeric(resultCell) Then
                Err.Raise vbObjectError + 2, , "Non-numeric result in J at row " & i
            End If
            If Not IsNumeric(rCell) Then
                Err.Raise vbObjectError + 2, , "Non-numeric R in L at row " & i
            End If
            result = CDbl(resultCell)
            rValue = CDbl(rCell)
            totalTrades = totalTrades + 1
            sumR = sumR + rValue
            If result > 0 Then
                sumWins = sumWins + result
                countWins = countWins + 1
            ElseIf result < 0 Then
                sumLosses = sumLosses + Abs(result)
            End If
        End If
    Next i
    With ThisWorkbook.Sheets("Dashboard")
        .Range("B2").Value = totalTrades
        If totalTrades > 0 Then
            .Range("B3").Value = countWins / totalTrades
            .Range("B4").Value = sumR / totalTrades
        Else
            .Range("B3:B4").Value = CVErr(xlErrNA)
        End If
        If sumLosses > 0 Then
            .Range("B5").Value = sumWins / sumLosses
        Else
            .Range("B5").Value = CVErr(xlErrNA)
        End If
        .Range("B6").Value = sumWins - sumLosses
    End With
    MsgBox "Metrics calculated for " & totalTrades & " trades.", vbInformation
End Sub

Koppel pas na eigen controle van invoer en output een knop aan een beoordeelde routine. Looptijd is afhankelijk van bestand en machine. Andere automatisering vraagt eigen implementatie en tests.

Een fictief dagboek, geen oorzakelijk succesverhaal

Mark begint in het bronmodel met EUR 12.000 en verliest EUR 4.200, of 35%, over 171 trades. Alleen als oorspronkelijke context is bewaard kan hij achteraf segmenteren. Het verzonnen segment van 48 trades verliest EUR 2.700: circa 64,3% van het totaal. Bij precies EUR 100 beginrisico per trade is gemiddeld resultaat −2700/(48×100) = −0,5625R. Bij ongelijke risico’s is het geldtotaal gedeeld door risicototaal een gewogen maat, niet het eenvoudige gemiddelde van trade-R.

Een tweede fictief jaar krijgt 142 trades, EUR 8.100 winst, gemiddeld 0,42R en profit factor 1,94 toegewezen. 91 winnaars ronden af naar 64%; 80 van de eerste 171 naar 47%. De overige toegewezen eerstejaarswaarden zijn −0,18R en profit factor 0,71. Deze samenvattingen reconstrueren geen tradebedragen en zijn niet geaudit. Een ander jaar is geen geïsoleerde proef van de segmentuitsluiting.

Het aparte PLN-model geeft +100 bij 100 risico = +1R en −1.000 bij 1.000 risico = −1R. Eenvoudig gemiddelde nul; geldresultaat PLN −900. −900/1.100 ≈ −0,818 is een risicogewogen gemiddelde, geen rekeningrendement.

Nieuw afzonderlijk EUR-tegenvoorbeeld: één idee met EUR 100 beginrisico sluit gedeeltelijk met EUR +60 en later EUR −20, beide na de modelkosten. Het idee geeft EUR +40 = +0,4R. De twee deeluitstappen elk ten onrechte als een nieuw idee met EUR 100 risico tellen geeft gemiddeld (+0,6−0,2)/2 = +0,2R. Het geldtotaal blijft EUR 40, maar de gekozen observatie-eenheid verandert de statistiek. Bewaar de bronfills en aggregeer volgens een vooraf gekozen idee-ID.

Een controleerbaar dagboek opzetten

  1. Definieer velden, ontbrekende waarden, valuta en tijdnotatie. Bedenk geen historische emoties of regels achteraf.
  2. Voor een lineair instrument: richtingsfactor × (uitstap−instap) × eenheden geeft bruto quotevalutaresultaat. Converteer volgens het contract en voeg kosten zonder dubbele spread toe.
  3. Sluit twintig bekende brontrades aan op identificatie, fills, kosten en valuta; twintig is een kleine controle, geen patrooncertificaat.
  4. Bereken gemiddelde R over geldige trade-R; profit factor als som positieve netto-uitkomsten/absolute som negatieve; winrate als winnaars/alle geldige gesloten ideeën, inclusief nul volgens de definitie.
  5. Bewaar oorspronkelijke analyses en toets nieuwe segmentregels op latere onbekende gegevens. Meer kolommen of een vast aantal trades garandeert geen competentie of winst.