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.
Reactie 0