Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Facebook !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
87
Note:
(3)
Publié:
candel 2.mq5 (10.74 KB) afficher
MQL5 Freelance 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.
DESSINER LA BOÎTE ET LA LIGNE
```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

DailyPivot Shift DailyPivot Shift

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.

XCCX XCCX

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

CBitBuffer Class - Data Serialization in MQL5 CBitBuffer Class - Data Serialization in MQL5

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

EMA_RSI_RISK-EA EMA_RSI_RISK-EA

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.