Skip to content

Moving Average Cloud (MAC)

Marius edited this page Sep 25, 2026 · 2 revisions

Moving Average Cloud (MAC)

Overzicht

Een trend-following breakout-strategie gebouwd op een cloud van vier moving averages. De cloud geeft de richting en de sterkte van de trend; de entry is een van drie gebeurtenissen binnen die trend.

Elke trigger heeft een eigen schakelaar, zodat een run ze apart of samen kan meten:

  • Breakout — de candle sluit door het laatst bevestigde pivot-niveau, met de cloud in de richting van de trade. Standaard aan.
  • Cloud cross — EMA(20) sluit aan de andere kant van EMA(40). Standaard uit.
  • Springboard bounce — binnen een lopende trend zakt de prijs naar de snelle lijn en sluit terug erboven (of eronder voor short). Standaard uit.
  • Line cross — EMA(40) sluit aan de andere kant van SMA(50). Deze loopt VOOR de cloud cross uit, en is daarmee de enige trigger die vuurt terwijl de cloud nog de andere kant op wijst. Standaard uit.

Een optioneel RSI-filter, een optioneel volume-filter en een optioneel slow-line-filter vragen elk om meer bevestiging, en een optionele exit sluit de positie zodra de cloud tegen haar keert.

Productiestrategie — MAC staat niet achter #if DEBUG en draait mee in de live scanner.

Nog niet gemeten in de emulator. De strategie moet haar plaats nog verdienen op eigen metingen.

Hoe het werkt

De vier lijnen

Lijn Wat het is Rol
1 EMA(20) op de close De snelle lijn: een pullback stuitert hierop
2 EMA(40) op de close De crossover-partner van de snelle lijn
3 SMA(50) op de close Midden van de cloud
4 SMA(150) op de close De trage lijn: haar helling bepaalt het trendfilter

De hoogste en de laagste van die vier vormen de randen van de cloud. Prijs voorbij beide randen is een lopende trend; prijs ertussen is consolidatie.

De vier lengtes horen bij elkaar. Het zijn geen vier losse knoppen: 20, 40, 50 en 150 vormen samen wat deze strategie is. Een van de tests faalt wanneer een standaard verschuift, zodat dat altijd een bewuste keuze is. Een run die een snellere of tragere cloud wil, schaalt alle vier evenredig — de queue doet dat in NX2 (10/20/25/75) en NX3 (50/100/125/375).

Indicatoren

De waarden komen uit MacIndicatorExtension, die eenmaal per symbool en interval draait en ze in het plugin-slot van de candle schrijft (MacCandleData). Een candle met beide zijden actief betaalt er maar een keer voor:

  • De cloud — de vier moving averages, gelezen uit de gedeelde indicator-registry, zodat een lengte die een andere plugin al heeft aangevraagd niet dubbel wordt berekend.
  • De helling — hoe ver de trage lijn is verschoven over SlowLineLookbackCandles candles, als percentage van haar eigen waarde. Rechtstreeks uit de hub-resultaten gelezen.
  • De niveaus — pivot-highs en pivot-lows over een venster van PivotLeftCandles + PivotRightCandles + 1 candles, bijgehouden in een kleine ringbuffer. Een pivot is pas bevestigd zodra zijn rechterkant-candles erin zijn, dus het niveau dateert altijd van voor de candle die het breekt.

Signaallogica

MacBase.IsSignal toetst, goedkoopste test eerst (de meeste candles komen niet voorbij de eerste):

  1. De cloud wijst in de richting van de trade (snelle EMA boven de tweede EMA voor long).
  2. De cloud is minstens MinimumCloudWidthPercentage breed, gemeten van boven naar onder als percentage van de prijs.
  3. De trage lijn is minstens MinimumSlowLineSlopePercentage verschoven in de richting van de trade.
  4. De RSI is akkoord, wanneer UseRsiFilter aanstaat.
  5. Een stap terug naar de vorige candle, gedeeld door alles eronder.
  6. De trigger — een van de drie is genoeg:
    • Cloud cross: de cloud stond op de vorige candle nog niet aan onze kant.
    • Springboard: de candle raakte de snelle lijn en sloot terug aan onze kant, terwijl de vorige candle al aan die kant stond.
    • Line cross: de tweede lijn sloot aan onze kant van de derde en stond daar op de vorige candle nog niet. Deze trigger wordt vóór voorwaarde 1 afgehandeld, want hij vuurt juist voordat de cloud draait.
    • Breakout: de close ligt buiten de cloud (wanneer RequirePriceOutsideCloud aanstaat), er is een niveau niet ouder dan PivotMaximumAgeCandles, de close ligt minstens BreakoutBufferPercentage voorbij het niveau, en de vorige close deed dat niet.
  7. De cloud is breder dan op de vorige candle, wanneer RequireCloudWidening aanstaat.
  8. Het volume is minstens VolumeMultiplier keer het gemiddelde van de VolumeAverageCandles candles ervoor, wanneer UseVolumeFilter aanstaat. Laatst, want dit is de enige test die een reeks candles doorloopt.

Exit

ExitOnCloudFlip staat standaard uit: de positie wordt overgelaten aan de stop-loss en de take-profit. Aanzetten voegt IsExitSignal toe: de positie vertrekt zodra de cloud gedurende ExitConfirmationCandles gesloten candles tegen haar heeft gestaan. Het is geschreven als een toestand ("de cloud staat tegen ons"), geen gebeurtenis ("hij flipte op deze candle"), zodat een herstart de exit niet verliest.

Signaalvoorwaarden

Long entry

# Voorwaarde Beschrijving
1 Cloud wijst omhoog Snelle EMA boven de tweede EMA
2 Cloudbreedte Cloud minstens MinimumCloudWidthPercentage breed
3 Helling trage lijn Minstens MinimumSlowLineSlopePercentage omhoog
4 RSI-filter (optioneel) RSI >= RsiLongMinimum
5 Trigger (een van vier) Breakout door pivot-niveau, cloud cross, springboard bounce, of line cross
6 Cloud verbreedt (optioneel) Breder dan op de vorige candle (RequireCloudWidening)
7 Volume-filter (optioneel) Volume >= VolumeMultiplier x gemiddeld volume

Short entry

# Voorwaarde Beschrijving
1 Cloud wijst omlaag Snelle EMA onder de tweede EMA
2 Cloudbreedte Cloud minstens MinimumCloudWidthPercentage breed
3 Helling trage lijn Minstens MinimumSlowLineSlopePercentage omlaag
4 RSI-filter (optioneel) RSI <= RsiShortMaximum
5 Trigger (een van vier) Breakout door pivot-niveau, cloud cross, springboard bounce, of line cross
6 Cloud verbreedt (optioneel) Breder dan op de vorige candle (RequireCloudWidening)
7 Volume-filter (optioneel) Volume >= VolumeMultiplier x gemiddeld volume

Exit (cloud flip)

# Voorwaarde Beschrijving
1 ExitOnCloudFlip aan De exit-functie moet ingeschakeld zijn
2 Cloud tegen de positie De cloud staat al ExitConfirmationCandles gesloten candles tegen de positie

Instellingen

Entry-triggers

Parameter Standaard Beschrijving
EntryOnBreakout aan Signaal bij de break door het laatst bevestigde pivot-niveau
EntryOnCloudCross uit Signaal wanneer EMA(20) EMA(40) kruist
EntryOnSpringboard uit Signaal bij een pullback naar de snelle lijn binnen een lopende trend
EntryOnLineCross uit Signaal bij EMA(40) die SMA(50) kruist, nog voordat de cloud draait

Cloud

Parameter Standaard Beschrijving
FastEmaLength 20 De snelle lijn (EMA)
SecondEmaLength 40 De crossover-partner (EMA)
MediumSmaLength 50 De derde lijn (SMA)
SlowSmaLength 150 De trage lijn (SMA), waarvan de helling het trendfilter aandrijft
RequirePriceOutsideCloud aan Close voorbij alle vier de lijnen — alleen voor de breakout-trigger
MinimumCloudWidthPercentage 0 Van boven naar onder, als percentage van de prijs. Nul accepteert elke breedte
RequireCloudWidening uit Trend wint aan kracht in plaats van af te nemen

Trage lijn

Parameter Standaard Beschrijving
MinimumSlowLineSlopePercentage 0 Hoe ver de trage lijn is verschoven over de lookback, als percentage van haar eigen waarde. Nul is uit
SlowLineLookbackCandles 10 Over hoeveel candles die verschuiving wordt gemeten

Support en resistance

Parameter Standaard Beschrijving
PivotLeftCandles 5 Hoeveel candles links lager (hoger) moeten zijn dan de pivot-candle
PivotRightCandles 5 Hoeveel candles rechts; ook de vertraging voordat het niveau bevestigd is
PivotMaximumAgeCandles 0 Hoe oud het niveau mag zijn in candles. Nul accepteert elke leeftijd
BreakoutBufferPercentage 0 Hoe ver voorbij het niveau de candle moet sluiten, als percentage. Nul neemt elke close voorbij het niveau

RSI-filter

Parameter Standaard Beschrijving
UseRsiFilter uit RSI moet akkoord zijn met de entry
RsiLongMinimum 50 De RSI die een long minimaal nodig heeft (schaal 0..100)
RsiShortMaximum 50 De RSI die een short maximaal mag hebben (schaal 0..100)

Volume-filter

Parameter Standaard Beschrijving
UseVolumeFilter uit De signaalcandle moet een veelvoud van het gemiddeld volume handelen
VolumeMultiplier 3 Hoeveel keer het gemiddeld volume de signaalcandle moet handelen
VolumeAverageCandles 20 Over hoeveel candles voor de signaalcandle het gemiddeld volume wordt berekend. De signaalcandle zelf zit er niet in

Exit

Parameter Standaard Beschrijving
ExitOnCloudFlip uit Positie sluiten wanneer de cloud tegen de positie keert. Stop-loss en take-profit blijven daarnaast werken
ExitConfirmationCandles 0 Hoeveel gesloten candles de cloud tegen de positie moet staan voordat de exit vuurt. Nul vertrekt op de eerste candle dat de EMA's terugkruisen

Gebruikte indicatoren

Indicator Doel
EMA(20) Snelle lijn — pullback-anker en eerste helft van de crossover
EMA(40) Tweede lijn — crossover-partner
SMA(50) Derde lijn — midden van de cloud
SMA(150) Trage lijn — trendfilter via de helling
Pivot highs / lows Support- en resistance-niveaus voor de breakout-trigger
RSI (optioneel) Momentum-bevestiging

Strategietype

  • Trend-following / breakout
  • Drie triggers die hetzelfde cloud-fundament delen maar verschillende ideeën belichamen
  • Heeft een eigen exit-signaal (IsExitSignal) wanneer ExitOnCloudFlip aanstaat
  • Alle filters staan standaard uit — de kale regel wordt eerst gemeten, daarna elk filter apart

Bestandsstructuur

CryptoScanner.Analyzers/Mac/
├── MacPlugin.cs                                # Plugin registration
├── MacSettings.cs                              # Strategy-specific settings
├── Mac.md                                      # Source documentation
├── MacCandleData.cs                            # Per-candle plugin data slot
├── MacLinesHelper.cs                           # Shared pivot/line logic
├── Chart/
│   └── MacChartOverlay.cs                      # Four lines, levels, and markers on the chart
├── Config/
│   ├── MacConfigView.cs                        # Config view composition
│   ├── StrategyMacSettingsView.axaml            # Settings panel UI
│   ├── StrategyMacSettingsView.axaml.cs         # Settings panel code-behind
│   ├── StrategyMacSettingsViewModel.cs          # Settings viewmodel
│   ├── StrategyMacTabView.axaml                 # Tab UI
│   └── StrategyMacTabViewModel.cs               # Tab viewmodel
├── Indicators/
│   └── MacIndicatorExtension.cs                # Cloud, slope, and pivot computation
└── Signal/
    └── MacBase.cs                              # Signal logic (MacLong, MacShort)

Registratie

Geregistreerd in AnalyzerRegistration.cs. Strategienaam intern: Mac, in de emulator-queue: mac (tot 19-09-2026 tbo; oude wachtrijbestanden en runs blijven werken via de terugvalnaam in de plugin).

Clone this wiki locally