Skip to content
Marius edited this page Sep 3, 2026 · 1 revision

Zones: wanneer sluit een zone

Overzicht

De drie zone-strategieën — DLZ, FVG en SMC — berekenen elk hun eigen zones, maar de vraag wanneer een zone weer dicht gaat wordt voor alle drie op één plek beantwoord: CryptoScanner.Core/Zones/ZoneInvalidation.cs. De signaalklassen sluiten zelf geen zones meer. Zij lezen alleen de open zones, geven een alarm en beperken dat alarm tot één keer per zone per uur.

Een zone is open zolang CloseTime leeg is. Zodra een van de regels hieronder raakt, wordt CloseTime gezet op de sluittijd van de candle die de regel raakte, en verhuist de zone van de open- naar de gesloten-lijst. De grafiek tekent beide lijsten, zodat een gesloten zone zichtbaar blijft tot aan zijn CloseTime.

De regels per candle

Elke afgesloten candle van het zone-interval wordt in deze volgorde tegen elke open zone gehouden:

# Regel Wat er gebeurt
1 Doorbroken De candle sluit met zijn body door de verre kant van de zone: bij een demand-zone (Long) een close onder Bottom, bij een supply-zone (Short) een close boven Top. De zone gaat dicht. Een wick erdoorheen telt niet, alleen de close.
2 Binnengekomen De candle haalt het touch-niveau (zie TouchLevel) terwijl de koers ervoor buiten de zone zat. Dat is één bezoek: TouchCount gaat met één omhoog. Haalt de candle het midden van de zone, dan wordt ook ReachedMidpoint gezet.
3 Verlaten De koers zat binnen en de candle raakt de dichtstbijzijnde rand niet meer. De zone staat open voor een volgend bezoek.
4 Opgebruikt Het aantal bezoeken bereikt MaxTouches. De zone gaat dicht: elk bezoek verbruikt een deel van wat het niveau liet houden. Met MaxTouches = 0 raakt een zone nooit opgebruikt en sluit alleen een doorbraak hem.
5 Halverwege binnen Optioneel, standaard uit (CloseZonesPastMidpoint). Zodra de koers ooit op of voorbij het midden is geweest gaat de zone dicht, ongeacht het aantal bezoeken.

Bezoeken, geen candles

MaxTouches telt bezoeken, niet candles. Een bezoek is een aaneengesloten periode dat de koers in de zone zit. Blijft de koers drie candles achter elkaar in de zone, dan is dat één test van het niveau en dus één touch. Pas als de koers de zone verlaat en later opnieuw binnenkomt, telt dat als een tweede bezoek.

Of de koers "binnen" is wordt altijd tegen de rand gemeten, ook als het touch-niveau het midden is. Een koers die terugtrekt tot net binnen de rand heeft de zone niet verlaten; een volgende dip naar het midden is dan geen nieuw bezoek.

Tot 24-08-2026 telde de gedeelde implementatie per candle. Met MaxTouches = 2 sloot dat een zone halverwege zijn eerste bezoek. Sindsdien telt alles per bezoek.

Instellingen per zonesoort

De regels zijn voor alle drie de soorten gelijk. Het enige verschil zit in de instellingen, elk op het eigen tabblad van de strategie:

Instelling DLZ FVG SMC Betekenis
MaxTouches 2 2 2 Aantal bezoeken dat de zone overleeft. 0 = nooit opgebruikt.
TouchLevel Edge Edge Midpoint Hoe diep de koers moet komen voor een bezoek telt. Edge: de wick raakt de dichtstbijzijnde rand. Midpoint: de wick haalt het midden van de zone (order-block-school: een wick die alleen de rand schampt is geen test).
CloseZonesPastMidpoint uit uit uit Zone sluiten zodra de koers ooit het midden heeft gehaald.

Let op bij TouchLevel = Midpoint: elk geteld bezoek haalt daar per definitie het midden, dus CloseZonesPastMidpoint aanzetten komt dan neer op MaxTouches = 1.

CloseZonesPastMidpoint heette vroeger DisqualifyOnMitigation. Die instelling deed iets smallers (zone open laten maar niet aanbieden als instapplek) en had sinds 24-08-2026 geen lezer meer in de code. Het is nu een sluitregel.

Wanneer wordt er gecontroleerd

  • Realtime: na elke afgesloten candle van het zone-interval, voor alle open zones op dat interval (ZoneDlz.InvalidateRealtime voor DLZ; FVG en SMC lopen mee in hun eigen zone-berekening).
  • Bij een herberekening van de zones: dezelfde regels worden opnieuw over de open zones gehaald.
  • Bij het opstarten: ZoneBroken.CheckAndMarkBrokenZones loopt met dezelfde regels over de candle-historie, zodat zones die tijdens een stilstand zijn doorbroken of opgebruikt alsnog dicht gaan.

Na een herstart

TouchCount en ReachedMidpoint worden opgeslagen in de database en overleven een herstart. De boekhouding van het lopende bezoek (LastInsideCandle) wordt niet opgeslagen. Na een herstart telt de eerste candle in een zone daarom als een nieuw bezoek, ook als de koers er al in zat. Dat telt per zone hooguit één bezoek te veel.

Wat een signaal wel en niet doet

Strategie Wat het signaal doet Wat het signaal niet doet
dlz Alarm als de wick de zone raakt, maximaal één keer per zone per uur (AlarmDate). Sluit de zone niet. Tot medio 2026 sloot dit signaal de zone bij de eerste touch; in emulator-run 237 was dat de oorzaak van 1.793 van de 4.075 zone-sluitingen, buiten MaxTouches om.
dlz.near Alarm als de koers binnen WarnPercentage van de zone komt. Sluit de zone niet.
fvg Alarm als de wick de zone raakt, één keer per zone per uur. Sluit de zone niet.
smc Alarm als de wick de zone raakt, één keer per zone per uur. Slaat daarnaast zones over met TouchCount boven MaxTouches. Sluit de zone niet.
smc.rejection Alarm als de candle terug buiten de zone sluit na een recente test. Sluit de zone niet.

Een gesloten zone kan dus alleen ontstaan door de vijf regels hierboven.

Broncode

Bestand Rol
CryptoScanner.Core/Zones/ZoneInvalidation.cs De regels zelf (ApplyToCandle) en de instellingen per soort (RulesFor).
CryptoScanner.Core/Zones/ZoneBroken.cs Historische controle bij opstarten en herberekening.
CryptoScanner.Core/Zones/ZoneDlz.cs Realtime controle voor DLZ (InvalidateRealtime) en de open/gesloten-lijsten.
CryptoScanner.Core/Enums/CryptoZoneTouchLevel.cs De twee touch-niveaus Edge en Midpoint.

Clone this wiki locally