Rejoignez notre page de fans
- Vues:
- 87
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Détection d'une figure de pointe haussière
-
Schéma à 3 barres :
-
1ère bougie : Verte avec un grand corps (pic haussier).
-
2ème bougie : Rouge (pullback).
-
3ème bougie : Verte avec un large corps (pic haussier).
-
-
Lorsque ce schéma apparaît, une zone est créée.
Création de la zone
-
Un rectangle bleu est tracé à partir de la fourchette haut/bas des 3 bougies.
-
Une ligne d'entrée horizontale vert lime est tracée au prix d'ouverture de la bougie du milieu (2ème).
-
La ligne s'étend loin dans le futur jusqu'à ce que le prix revienne.
LES ENTRÉES EXPLIQUÉES
mq5 input color BoxColor = clrBlue; // Couleur de la boîte à 3 bougies input color EntryLineColor = clrLime; // Couleur de la ligne d'entrée input ENUM_LINE_STYLE EntryLineStyle = STYLE_SOLID; // Style de la ligne d'entrée input int BoxWidth = 2; // Largeur de la bordure de la boîte input int EntryLineWidth = 2; // Largeur de la ligne d'entrée input int EntryLineLength = 200; // Jusqu'où s'étend la ligne d'atténuation ``` These inputs let you fully control the style of the box and entry line.
IDÉE DE BASE
Nous recherchons une configuration haussière à 3 bougies
1. Première bougie - forte hausse (pic)
2. Deuxième bougie - retracement baissier
3. Troisième bougie - nouveau pic fortement haussier
Lorsque cela se produit, nous dessinons :
- Une boîte autour de la figure
- Une ligne horizontale à l'ouverture de la deuxième bougie (point d'entrée)
Une fois que le prix revient sur cette ligne ("atténuation"), nous coupons la ligne et évitons de la redessiner.
STRUCTURES DE DONNÉES
struct PatternInfo { datetime time; // Heure du motif double entry; // Prix d'entrée (ouverture de la 2ème bougie) double high; // Plus haut niveau des 3 bougies double low; // Plus bas des 3 bougies bool mitigated; // Le prix est-il revenu au niveau d'entrée ? }; CArrayObj activePatterns; ``` We use a struct `PatternInfo` to track each valid pattern and store it in an array. This helps avoid repeated processing.
FONCTION D'INITIALISATION
int OnInit() { IndicatorSetInteger(INDICATOR_DIGITS, _Digits); ArrayInitialize(activePatterns, 0); return INIT_SUCCEEDED; } ``` We set the indicator precision and prepare our array.
DÉTECTION DU MOTIF (À CHAQUE TIC-TAC)
```mq5 for (int i = limit - 3; i >= 0; i--) { ``` We loop through candles and look 3 bars back. ```mq5 if (isBullish(i+2) && isBearish(i+1) && isBullish(i)) ``` We check if the last 3 candles fit the spike pattern: Green-Red-Green. ```mq5 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]; ``` We extract high/low for box and the entry level from the 2 nd (middle) candle. ```mq5 PatternInfo *pattern = new PatternInfo; pattern.time = Time[i]; pattern.entry = entry; pattern.high = high; pattern.low = low; pattern.mitigated = false; ``` Create and add this pattern to our list.
```mq5 string boxName = "Box_" + IntegerToString(Time[i]); ObjectCreate(0, boxName, OBJ_RECTANGLE, 0, Time[i+2], high, Time[i], low); ``` Draw the rectangle (box) from the 3-candle pattern. ```mq5 string lineName = "EntryLine_" + IntegerToString(Time[i]); ObjectCreate(0, lineName, OBJ_TREND, 0, Time[i], entry, Time[i] + PeriodSeconds() * EntryLineLength, entry); ``` Draw the entry line from the 2 nd candle’s open forward in time.
VÉRIFICATION DE L'ATTÉNUATION (À CHAQUE TIC-TAC)
Loop through all patterns:
```mq5
for (int p = 0; p < activePatterns.Total(); p++) {
PatternInfo *pt = (PatternInfo*)activePatterns.At(p);
```
If not already mitigated, check:
```mq5
if (!pt.mitigated && Low[0] <= pt.entry)
```
If current price hits the entry level:
```mq5
pt.mitigated = true;
ObjectDelete("EntryLine_" + IntegerToString(pt.time));
```
Delete original long line.
```mq5
ObjectCreate(0, "MitigatedLine_" + IntegerToString(pt.time), OBJ_TREND, 0,
pt.time, pt.entry,
Time[0], pt.entry);
```
Create a short line showing where mitigation happened.
HELPER FUNCTIONS
### Check Bullish/Bearish:
```mq5
bool isBullish(int i) {
return Close[i] > Open[i];
}
bool isBearish(int i) {
return Close[i] < Open[i];
}
Cet indicateur est simple mais puissant:
- Détecte le comportement d'un pic réel dans Boom
- Visualise les entrées de l'argent intelligent
- Détecte automatiquement l'atténuation
Vous pouvez maintenant le tester en direct sur Boom 500 ou Boom 1000.
Merci de commenter si vous voulez poser des questions ou partager.
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/61749

L'indicateur DailyPivot_Shift diffère de l'indicateur DailyPivot habituel dans la mesure où les niveaux principaux peuvent être calculés avec un décalage du début de la journée.

Indice de canal des matières premières avec algorithme de calcul de moyenne sélectionnable et niveaux de survente/surachat changeant dynamiquement.

Classe permettant de lire et d'écrire des bits individuels ou des séquences de bits dans un tampon.

Expert Advisor for MetaTrader 5 that combines Exponential Moving Averages (EMA) and Relative Strength Index (RSI) to generate trading signals. Includes risk management features and trading time filter.