-
Notifications
You must be signed in to change notification settings - Fork 19
Werking
Deze pagina beschrijft hoe de replay-engine intern werkt. Nuttig als je het gedrag van de emulator wilt begrijpen of als je resultaten wilt interpreteren.
De emulator verwerkt candles in chronologische volgorde, alsof ze in realtime binnenkomen:
- Alle symbolen tegelijk — per tijdstap worden alle geconfigureerde symbolen verwerkt, net zoals een echte exchange ze gelijktijdig aanlevert
- Chunked verwerking — voor langere periodes worden candles in blokken van 7 dagen geladen om het geheugen beheersbaar te houden. Tussen chunks worden oude candles opgeruimd zodat het geheugen begrensd blijft.
-
Twee fasen per tijdstap:
- Fase A (parallel, per symbool): candle-aanlevering, orderafhandeling (1m-afdaling bij open posities), indicator- en signaalberekening, positiebeheer
- Fase B (serieel): database flush, zone-verwerking (DLZ-wachtrij), barometerbrekening, saldo-snapshot
De emulator gebruikt exact dezelfde pipeline als de live scanner:
Candle binnenkomst (AdvanceTo)
→ Orderafhandeling open posities (1m-afdaling als basisinterval > 1m)
→ NewCandleArrived
→ Indicator berekening (SMA, BB, RSI, Stochastic, MACD, etc.)
→ Zone berekening (DLZ, FVG, SMC)
→ SignalPrepare (voorbereiding)
→ SignalExecute (signaal evaluatie per strategie)
→ Filter controles (barometer, markttrend, volume, etc.)
→ PaperTrading (positie aanmaken of bijwerken)
→ [serieel] Database flush
→ [serieel] Zone-wachtrij verwerken
→ [serieel] Barometer berekenen
De candles worden niet meer tijdens de replay uit 1m-candles opgebouwd. Alle intervallen worden vooraf opgehaald en opgeslagen; de replay levert ze aan naarmate ze sluiten.
De papertrading-logica vult orders op basis van de high/low van candles:
- Entry orders: Gevuld als de candle-prijs het entry-niveau bereikt
- Take profit: Gevuld als de candle het TP-niveau raakt
- Stop loss: Gevuld als de candle het SL-niveau raakt
- DCA orders: Gevuld als de candle het DCA-niveau bereikt
Wanneer het basisinterval groter is dan 1m (bijvoorbeeld 5m of 15m), controleert de engine bij iedere candle of er open posities zijn die door deze candle geraakt kunnen worden. Als dat het geval is, daalt de engine terug naar 1-minuut resolutie voor de order-afhandeling. Dit zorgt voor nauwkeurigere vullingen, ook bij een groter basisinterval.
Voor de replay begint, worden de indicatoren "opgewarmd" met de candles die voorafgaan aan de replay-periode. Per interval worden candles in de eigen resolutie van dat interval uit de database geladen (niet alleen 1m). Hierdoor zijn de indicatorwaarden (SMA, BB, RSI, etc.) vanaf de eerste replay-candle al betrouwbaar.
De emulator is deterministisch: dezelfde candle-data + dezelfde instellingen = dezelfde resultaten. Dit wordt bereikt doordat:
- De gesimuleerde klok de tijd bepaalt (niet de systeemklok)
- Candles in vaste volgorde worden verwerkt
- De parallelle verwerking per symbool geen invloed heeft op de resultaten
De emulator berekent de marktbarometer per minuut over de munten in de run. Voorheen passeerde elke barometerconditie stilzwijgend tegen een waarde van nul. Nu wordt de barometer realistisch berekend, waardoor runs met barometerfilters betrouwbare resultaten geven. De berekende waarden worden gecachet in de candle-opslag zodat latere runs over dezelfde munten ze niet opnieuw hoeven te berekenen.
Na iedere run logt de engine uitgebreide timing-informatie:
- Tijd per fase (candle-aanlevering, indicatoren, algoritmen, trading, positiecontrole, zones, barometer, database)
- SignalExecute-onderverdeling per strategie
- Per-chunk delta's (toont of de run vertraagt over tijd)
- Per-deciel wall-clock verdeling (toont waar de run het meeste tijd besteedt)
- Geheugengebruik en GC-statistieken per chunk
- Cache-statistieken (Lux, hub-incrementeel, zone candle reads)
- Home
- Inleiding
- Exchanges en markttypes
- Installatie
- Instellingen
- Hoofdscherm
- Kleurkiezer
- Opstartparameters
- Veelgestelde vragen
- Bandbreedte-index (afgeschreven)
- SignalR
- Photino
- Webversie
- Support
- Alle strategieën
- Zones (sluitregels)
- Actief
- Experimenteel
- Niet beschikbaar