0% ont trouvé ce document utile (0 vote)
20 vues10 pages

Analyse du Code MQL5 V100_Sniper_SMC_MTF_V2

Le document analyse le code MQL5 de l'indicateur V100_Sniper_SMC_MTF_V2, un outil d'analyse technique multi-timeframe pour MetaTrader 5, basé sur les concepts de Smart Money Concepts. Il décrit les propriétés, les paramètres d'entrée, les structures de données, et les fonctions auxiliaires de l'indicateur, qui visent à identifier des opportunités de trading sur l'indice de Volatilité 100. L'indicateur intègre des fonctionnalités visuelles et des alertes pour aider les traders à prendre des décisions éclairées.

Transféré par

carl7750104
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues10 pages

Analyse du Code MQL5 V100_Sniper_SMC_MTF_V2

Le document analyse le code MQL5 de l'indicateur V100_Sniper_SMC_MTF_V2, un outil d'analyse technique multi-timeframe pour MetaTrader 5, basé sur les concepts de Smart Money Concepts. Il décrit les propriétés, les paramètres d'entrée, les structures de données, et les fonctions auxiliaires de l'indicateur, qui visent à identifier des opportunités de trading sur l'indice de Volatilité 100. L'indicateur intègre des fonctionnalités visuelles et des alertes pour aider les traders à prendre des décisions éclairées.

Transféré par

carl7750104
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Explication du Code MQL5:

V100_Sniper_SMC_MTF_V2
Ce document fournit une analyse détaillée du code MQL5 de l'indicateur
V100_Sniper_SMC_MTF_V2 , conçu pour la plateforme de trading MetaTrader 5. Cet
indicateur est un outil d'analyse technique multi-timeframe (MTF) qui implémente une
stratégie basée sur les concepts de Smart Money Concepts (SMC), tels que les Order
Blocks (OB), les Breaker Blocks et les Fair Value Gaps (FVG), pour identifier des
opportunités de trading sur l'indice de Volatilité 100 de Deriv.

1. Vue d'ensemble de l'Indicateur

L'indicateur V100_Sniper_SMC_MTF_V2 est un indicateur personnalisé qui s'affiche


dans une fenêtre de graphique séparée. Il est conçu pour aider les traders à visualiser
les zones clés de support/résistance (Order Blocks), les tendances sur différentes
unités de temps, et les signaux d'entrée potentiels (Buy/Sell) basés sur la confluence
de plusieurs facteurs. Il intègre également des fonctionnalités visuelles pour dessiner
ces zones sur le graphique et des alertes pour notifier les traders.

2. Propriétés et Buffers

Le code commence par définir les propriétés de l'indicateur et les buffers utilisés pour
stocker les données calculées:

#property strict : Active le mode de compilation strict, qui aide à détecter les
erreurs potentielles.

#property indicator_chart_window : Indique que l'indicateur s'affichera dans


une fenêtre de graphique séparée.

#property indicator_buffers 4 : Déclare quatre buffers pour les calculs de


l'indicateur.
#property indicator_plots 2 : Déclare deux plots pour l'affichage des signaux
d'achat et de vente.

Les plots sont configurés pour afficher des flèches (DRAW_ARROW) sur le graphique:

plot 0 : `short_name=

"BUY", draw_type=DRAW_ARROW , color=clrLime , style=STYLE_SOLID , width=2 . *


plot 1: short_name="SELL" , draw_type=DRAW_ARROW , color=clrRed ,
style=STYLE_SOLID , width=2 .

Les buffers BuySig , SellSig , BuyAux , et SellAux sont déclarés pour stocker les
signaux d'achat et de vente, ainsi que des données auxiliaires pour les calculs.

3. Paramètres d'Entrée (Inputs)

L'indicateur est hautement configurable via une série de paramètres d'entrée,


permettant à l'utilisateur d'ajuster son comportement en fonction de ses préférences
de trading et des conditions du marché. Ces paramètres sont regroupés en plusieurs
catégories:

3.1. Paramètres de Timeframe (Unités de Temps)

TF_Dir_1 = PERIOD_D1 : ENUM_TIMEFRAMES . Définit la première unité de temps


pour l'analyse de la direction et de la structure principale du marché (par défaut:
Daily - D1).

TF_Dir_2 = PERIOD_H4 : ENUM_TIMEFRAMES . Définit la deuxième unité de temps


pour la confirmation et la confluence (par défaut: 4 Heures - H4).

TF_Entry = PERIOD_M15 : ENUM_TIMEFRAMES . Définit l'unité de temps pour les


entrées de trading (par défaut: 15 Minutes - M15).

3.2. Paramètres de Logique SMC

SwingLen = 3 : int . Longueur du fractal utilisé pour identifier les points de


swing (hauts et bas) sur le graphique.

LookbackBars = 1500 : int . Nombre de barres à analyser pour les calculs de


l'indicateur.
MaxOBLookback = 40 : int . Fenêtre de recherche maximale pour les Order
Blocks (OB).

DisplacementATR = 1.5 : double . Facteur multiplicateur de l'Average True


Range (ATR). Le corps d'une bougie doit être supérieur ou égal à k*ATR pour être
considéré comme un

"displacement" (mouvement impulsif). * ATR_Period = 14 : int . Période utilisée


pour le calcul de l'Average True Range (ATR). * VolMAPeriod = 20 : int . Période de la
moyenne mobile sur le volume de tick (utilisé comme proxy pour le volume réel). *
RequireFVG = true : bool . Indique si un Fair Value Gap (FVG) est requis autour du
Break of Structure (BOS) pour valider un Order Block. * UseTickVolFilter = true :
bool . Active ou désactive le filtre basé sur le volume de tick. * UseBreakerBlock =
true : bool . Active ou désactive la logique de détection des Breaker Blocks. *
MinOBHeightPts = 5.0 : double . Hauteur minimale d'un Order Block en points.
Utilisé pour filtrer les rectangles d'OB trop fins. * MaxOBHeightPts = 400.0 : double .
Hauteur maximale d'un Order Block en points.

3.3. Paramètres de Score de Qualité OB

UseOBQualityScore = true : bool . Active ou désactive le calcul du score de


qualité pour les Order Blocks.

MinOBScoreToTrade = 70 : int . Seuil minimal de score de qualité (sur 100)


qu'un Order Block doit atteindre pour être considéré comme valide pour le
trading.

3.4. Paramètres de Gestion des Risques (Guides RR)

RR_to_Secure = 1.0 : double . Ratio Risque/Récompense pour sécuriser une


partie des profits.

RR_to_Add = 1.5 : double . Ratio Risque/Récompense pour ajouter à une


position existante.

RR_to_Exit = 2.5 : double . Ratio Risque/Récompense pour la sortie complète


de la position.
3.5. Paramètres Anti-Spam et Visuels

MinBarsBetweenSignals = 10 : int . Nombre minimal de barres entre deux


signaux consécutifs pour éviter le

"spam" de signaux. * ArrowCodeBuy = 233 : int . Code Wingdings pour la flèche


d'achat (flèche vers le haut). * ArrowCodeSell = 234 : int . Code Wingdings pour la
flèche de vente (flèche vers le bas).

3.6. Paramètres d'Alertes

PushAlerts = true : bool . Active ou désactive les notifications push.

OnlyWhenAllConditions = true : bool . Si activé, les alertes ne sont envoyées


que si toutes les conditions sont remplies.

3.7. Paramètres Visuels

DrawOBZones = true : bool . Dessine les zones d'Order Blocks sur le graphique.

DrawBreaker = true : bool . Dessine les Breaker Blocks.

DrawFVG = true : bool . Dessine les Fair Value Gaps.

DrawMTFLabels = true : bool . Affiche les labels multi-timeframe.

DrawZoneVolume = true : bool . Affiche le volume de tick dans la zone.

OB_Bull_Color = clrSeaGreen : color . Couleur des Order Blocks haussiers.

OB_Bear_Color = clrTomato : color . Couleur des Order Blocks baissiers.

BRK_Color = clrDarkSlateBlue : color . Couleur des Breaker Blocks.

FVG_Bull_Color = clrAqua : color . Couleur des FVG haussiers.

FVG_Bear_Color = clrOrange : color . Couleur des FVG baissiers.

RectBorderWidth = 1 : int . Largeur des bordures des rectangles.

3.8. Paramètres des Boutons de Contrôle

ShowControlButtons = true : bool . Affiche des boutons sur le graphique pour


activer/désactiver certaines fonctionnalités à l'exécution.
4. Structures de Données (STRUCTS)

Le code définit deux structures personnalisées pour organiser les données:

SwingPoint : Représente un point de swing (haut ou bas) sur le graphique.

int index : L'index de la barre où le swing est détecté.

double price : Le prix du swing (haut ou bas de la barre).

OBZone : Représente une zone d'Order Block.

int index : L'index de la barre où l'OB est détecté.

double high : Le prix haut de l'OB.

double low : Le prix bas de l'OB.

bool bullish : Indique si l'OB est haussier (true) ou baissier (false).

bool breaker : Indique si l'OB est un Breaker Block.

int score : Le score de qualité de l'OB (0-100).

ENUM_TIMEFRAMES sourceTF : L'unité de temps sur laquelle l'OB a été


détecté.

5. Variables Globales (GLOBALS)

Plusieurs variables globales sont utilisées pour maintenir l'état de l'indicateur et


stocker des données accessibles à travers différentes fonctions:

CArrayObj *g_d1Highs, *g_d1Lows : Pointeur vers des objets CArrayObj pour


stocker les points hauts et bas des swings sur l'unité de temps D1.

CArrayObj *g_h4Highs, *g_h4Lows : Pointeur vers des objets CArrayObj pour


stocker les points hauts et bas des swings sur l'unité de temps H4.

OBZone g_obD1, g_obH4 : Objets OBZone pour stocker les Order Blocks détectés
sur D1 et H4.

bool g_hasObD1=false, g_hasObH4=false : Drapeaux indiquant si un Order


Block a été détecté sur D1 et H4 respectivement.
int hATR_D1, hATR_H4, hATR_LTF : Handles (identifiants) pour les indicateurs
ATR sur différentes unités de temps.

int hVolMA_LTF : Handle pour l'indicateur de moyenne mobile du volume de


tick sur l'unité de temps d'entrée.

int lastBuyBar, lastSellBar : Index des dernières barres où des signaux


d'achat/vente ont été générés (pour la fonction anti-spam).

datetime lastAlertTime : Horodatage de la dernière alerte envoyée.

bool t_DrawOB, t_DrawBreaker, t_DrawFVG, t_DrawVolume, t_Alerts,


t_StrictGate : Variables de type bool qui peuvent être activées/désactivées via
les boutons de l'interface utilisateur pour contrôler le dessin des objets, les
alertes et la stricte application des conditions.

6. Fonctions Auxiliaires (HELPERS)

Le code utilise plusieurs fonctions auxiliaires pour effectuer des calculs et des
opérations répétitives:

double BodySize(int i, ENUM_TIMEFRAMES tf) : Calcule la taille du corps


d'une bougie (différence absolue entre le prix d'ouverture et de clôture) pour une
barre et une unité de temps données.

double CandleHigh(int i, ENUM_TIMEFRAMES tf) : Retourne le prix haut d'une


bougie pour une barre et une unité de temps données.

double CandleLow(int i, ENUM_TIMEFRAMES tf) : Retourne le prix bas d'une


bougie pour une barre et une unité de temps données.

double GetATR(int i, int handle) : Récupère la valeur de l'ATR pour une


barre donnée à partir d'un handle d'indicateur ATR.

double GetVolMA(int i) : Récupère la valeur de la moyenne mobile du volume


de tick pour une barre donnée.

void FindSwings(ENUM_TIMEFRAMES tf, int swingLen, CArrayObj &highs,


CArrayObj &lows, int barsToScan) : Identifie les points de swing (hauts et bas
fractals) sur une unité de temps donnée. Elle remplit les tableaux highs et lows
avec les objets SwingPoint .
int TrendFromSwings(CArrayObj &highs, CArrayObj &lows) : Détermine la
tendance du marché (haussière, baissière ou neutre) en comparant les deux
derniers points de swing hauts et bas.

bool HasFVG(ENUM_TIMEFRAMES tf, int bosIndex, bool bullish) : Vérifie la


présence d'un Fair Value Gap (FVG) autour d'un Break of Structure (BOS). Un FVG
est une zone où il y a un déséquilibre entre l'offre et la demande, souvent
identifié par un espace entre les mèches de trois bougies consécutives.

int OBQualityScore(ENUM_TIMEFRAMES tf, int obIndex, int bosIndex,


bool bullish) : Calcule un score de qualité pour un Order Block basé sur
plusieurs critères, tels que la taille du corps de la bougie de déplacement, la
présence de FVG, la taille des mèches de l'OB, et le volume de tick.

bool FindOB(ENUM_TIMEFRAMES tf, int maxLookback, bool bullish, OBZone


&zone) : Recherche et identifie un Order Block (OB) valide en fonction des
critères définis (déplacement, FVG, hauteur minimale/maximale). Si un OB est
trouvé, il remplit la structure OBZone correspondante.

void DrawZoneRect(const string name, OBZone &z, color border, color


fill) : Dessine un rectangle sur le graphique pour représenter une zone d'Order
Block. Il ajoute également des labels pour indiquer l'unité de temps, le type de
zone (support/résistance, breaker) et le score de qualité.

void DrawFVGs(int barsToScan) : Dessine les Fair Value Gaps sur le graphique
de l'unité de temps d'entrée.

void MarkBreakerIfNeeded(OBZone &z) : Vérifie si un Order Block doit être


marqué comme un Breaker Block. Un Breaker Block se forme lorsque le prix
casse un Order Block et clôture au-delà de son côté opposé.

void CreateButton(const string name, const string label, int x, int


y) : Crée un bouton interactif sur le graphique pour permettre à l'utilisateur de
contrôler certaines fonctionnalités de l'indicateur à l'exécution.

void UpdateButtons() : Met à jour le texte des boutons pour refléter leur état
actuel (ON/OFF).
7. Fonctions d'Initialisation et de Désinitialisation
(INIT/DEINIT)

Ces fonctions gèrent le cycle de vie de l'indicateur:

int OnInit() : Cette fonction est appelée une fois lorsque l'indicateur est
initialisé.

Elle configure les buffers de l'indicateur ( SetIndexBuffer ).

Elle définit les symboles des flèches pour les signaux d'achat/vente
( PlotIndexSetInteger ).

Elle initialise les objets CArrayObj pour stocker les swings.

Elle obtient les handles des indicateurs ATR et de la moyenne mobile du


volume de tick.

Si ShowControlButtons est activé, elle crée les boutons de contrôle sur le


graphique.

Elle retourne INIT_SUCCEEDED si l'initialisation est réussie.

void OnDeinit(const int reason) : Cette fonction est appelée lorsque


l'indicateur est désinitialisé (par exemple, lorsque le graphique est fermé ou
l'indicateur est supprimé).

Elle libère la mémoire allouée aux objets CArrayObj .

8. Gestion des Événements du Graphique


(OnChartEvent)

void OnChartEvent(const int id, const long &lparam, const double


&dparam, const string &sparam) : Cette fonction est un gestionnaire
d'événements qui est appelé lorsque des événements se produisent sur le
graphique (par exemple, un clic de souris).
Elle détecte les clics sur les boutons de contrôle et bascule l'état des
variables t_DrawOB , t_DrawBreaker , etc.

Elle appelle UpdateButtons() pour mettre à jour l'affichage des boutons.


9. Logique Principale de Calcul (OnCalculate)

La fonction OnCalculate est le cœur de l'indicateur. Elle est appelée à chaque


nouveau tick ou à chaque nouvelle barre, en fonction des paramètres de l'indicateur.
Elle effectue les calculs principaux et génère les signaux.

int OnCalculate(const int rates_total, const int prev_calculated,


const int begin, const double &price[]) :
barsToScan : Détermine le nombre de barres à analyser, limité par
LookbackBars .

1) Détection des Swings et Tendances (D1/H4):


Appelle FindSwings pour détecter les points de swing sur les unités
de temps D1 et H4.

Appelle TrendFromSwings pour déterminer la tendance sur D1 et H4.

2) Détection des Order Blocks (OBs):


Appelle FindOB pour rechercher les Order Blocks haussiers ou
baissiers sur D1 et H4, en fonction de la tendance détectée.

3) Marquage des Breaker Blocks:


Appelle MarkBreakerIfNeeded pour marquer les OBs comme Breaker
Blocks si les conditions sont remplies.

4) Dessin des Zones:


Si DrawOBZones est activé, appelle DrawZoneRect pour dessiner les
rectangles des Order Blocks sur le graphique avec les couleurs et
labels appropriés.

5) Dessin des FVG sur l'unité de temps d'entrée:


Appelle DrawFVGs pour dessiner les Fair Value Gaps sur l'unité de
temps d'entrée ( TF_Entry ).

6) Logique d'Entrées LTF (Low Timeframe):


Initialise les buffers de signaux BuySig et SellSig à zéro.

Parcourt les barres de l'unité de temps d'entrée ( TF_Entry ).

Pour chaque barre, il vérifie plusieurs conditions pour générer un


signal d'achat ou de vente:
Displacement: Vérifie si la bougie actuelle montre un
mouvement impulsif significatif (corps de bougie >=
DisplacementATR * ATR ).

Filtre de Volume: Si UseTickVolFilter est activé, vérifie si le


volume de tick de la bougie actuelle est supérieur à la moyenne
mobile du volume de tick.

Confluence des Zones OB: Vérifie si la bougie actuelle se trouve


à l'intérieur des zones d'Order Blocks détectées sur D1 et/ou H4.

Alignement de la Tendance: Vérifie si la tendance sur D1 et H4


est alignée avec le signal potentiel.

Score de Qualité OB: Si UseOBQualityScore est activé, vérifie si


le score de qualité des OBs pertinents est supérieur ou égal à
MinOBScoreToTrade .

Anti-Spam: S'assure qu'il y a un nombre minimal de barres


( MinBarsBetweenSignals ) depuis le dernier signal du même
type.

Si toutes les conditions sont remplies, il place une flèche d'achat ou


de vente sur le graphique ( BuySig[i] ou SellSig[i] ) et met à jour
lastBuyBar ou lastSellBar .

Alertes: Si PushAlerts est activé et les conditions d'alerte sont


remplies, il envoie une notification push avec les détails du signal
(symbole, tendance D1/H4, confluence, score OB, heure).

Conclusion

L'indicateur V100_Sniper_SMC_MTF_V2 est un outil d'analyse technique sophistiqué


pour MetaTrader 5, conçu pour les traders qui utilisent les Smart Money Concepts. Il
combine l'analyse multi-timeframe des Order Blocks, des Breaker Blocks et des Fair
Value Gaps avec des filtres de volume et des règles de gestion des signaux pour
identifier des opportunités de trading. Sa modularité, grâce à ses nombreux
paramètres d'entrée et ses boutons de contrôle, en fait un outil flexible et puissant
pour l'analyse du marché et la génération de signaux.

Auteur: Manus AI

Vous aimerez peut-être aussi