Boom Index Spike Patroon: Indicator voor MetaTrader 5

Mike 2025.07.21 19:06 17 0 0
Bijlage

Detectie van Bullish Spike Patroon

  • 3-bar patroon:

    • 1e kaars: Groen met een grote body (bullish spike).

    • 2e kaars: Rood (pullback).

    • 3e kaars: Groen met een grote body (bullish spike).

  • Wanneer dit patroon verschijnt, wordt er een zone gecreëerd.

Zone Creatie

  • Een blauw rechthoek wordt getekend van het hoog/laag bereik van de 3 kaarsen.

  • Een lime groene horizontale instaplijn wordt getekend op de openingsprijs van de middelste (2e) kaars.

  • De lijn strekt zich ver in de toekomst uit totdat de prijs terugkomt.


UITLEG VAN DE INVOERPARAMETERS

mq5
input color BoxColor = clrBlue; // Kleur van de 3-kaars patroon box
input color EntryLineColor = clrLime; // Kleur van de instaplijn
input ENUM_LINE_STYLE EntryLineStyle = STYLE_SOLID; // Stijl van de instaplijn
input int BoxWidth = 2; // Breedte van de boxrand
input int EntryLineWidth = 2; // Breedte van de instaplijn
input int EntryLineLength = 200; // Hoe ver de mitigatielijn zich uitstrekt

KERNGEDACHTE

We zoeken naar een bullish patroon met 3 kaarsen:

1. Eerste kaars – sterke bullish (spike)

2. Tweede kaars – bearish retracement

3. Derde kaars – weer een sterke bullish spike

Wanneer dit verschijnt, tekenen we:

- Een box rondom het patroon

- Een horizontale lijn op de opening van de 2e kaars (instappunt)

Zodra de prijs terugkomt naar die lijn ("mitigatie"), maken we de lijn korter en vermijden we het opnieuw tekenen.

GEGEVENSSTRUCTUREN

struct PatternInfo {
    datetime time; // Tijd van het patroon
    double entry; // Instapprijs (open van de 2e kaars)
    double high; // Hoogste hoog van de 3 kaarsen
    double low; // Laagste laag van de 3 kaarsen
    bool mitigated; // Is de prijs teruggekeerd naar het instapniveau?
};
CArrayObj activePatterns;

We gebruiken een struct `PatternInfo` om elk geldig patroon bij te houden en op te slaan in een array. Dit helpt om herhaalde verwerking te voorkomen.

INIT FUNCTIE

int OnInit() {
    IndicatorSetInteger(INDICATOR_DIGITS, _Digits);
    ArrayInitialize(activePatterns, 0);
    return INIT_SUCCEEDED;
}

We stellen de precisie van de indicator in en bereiden onze array voor.

PATROONDETECTIE (BIJ ELKE TICK)

for (int i = limit - 3; i >= 0; i--) {
    if (isBullish(i+2) && isBearish(i+1) && isBullish(i)) {
        double high = MathMax(MathMax(High[i], High[i+1]), High[i+2]);
        double low = MathMin(MathMin(Low[i], Low[i+1]), Low[i+2]);
        double entry = Open[i+1];

        PatternInfo *pattern = new PatternInfo;
        pattern.time = Time[i];
        pattern.entry = entry;
        pattern.high = high;
        pattern.low = low;
        pattern.mitigated = false;
    }
}

We doorlopen de kaarsen en controleren of de laatste 3 kaarsen passen in het spike-patroon: Groen-Rood-Groen.

TEKEN BOX EN LIJN

string boxName = "Box_" + IntegerToString(Time[i]);
ObjectCreate(0, boxName, OBJ_RECTANGLE, 0, Time[i+2], high, Time[i], low);

string lineName = "EntryLine_" + IntegerToString(Time[i]);
ObjectCreate(0, lineName, OBJ_TREND, 0, Time[i], entry, Time[i] + PeriodSeconds() * EntryLineLength, entry);

Teken de rechthoek (box) van het 3-kaars patroon.

MITIGATIECHECK (BIJ ELKE TICK)

for (int p = 0; p < activePatterns.Total(); p++) {
    PatternInfo *pt = (PatternInfo*)activePatterns.At(p);
    if (!pt.mitigated && Low[0] <= pt.entry) {
        pt.mitigated = true;
        ObjectDelete("EntryLine_" + IntegerToString(pt.time));
        ObjectCreate(0, "MitigatedLine_" + IntegerToString(pt.time), OBJ_TREND, 0, pt.time, pt.entry, Time[0], pt.entry);
    }
}

Als de huidige prijs het instapniveau raakt, markeren we de mitigatie.

HELPER FUNCTIES

bool isBullish(int i) {
    return Close[i] > Open[i];
}

bool isBearish(int i) {
    return Close[i] < Open[i];
}

Deze indicator is eenvoudig maar krachtig:

  • Detecteert echte spike-gedragingen in Boom
  • Visualiseert slimme geldinstappen
  • Detecteert automatisch mitigatie

Je kunt het nu live testen op Boom 500 of Boom 1000.


Laat een reactie achter als je vragen hebt of iets wilt delen.


Lijst
Reactie 0