// — Déclaration des variables d’entrée (Inputs) —
// Ces variables seront modifiables via l’interface ProRealTime
input LookbackLeft = 5 // Nombre de bougies à gauche à comparer (X)
input LookbackRight = 5 // Nombre de bougies à droite à comparer (Y)
// — Définition des Swing Highs et Swing Lows —
// Swing High (SH): Le plus haut de la bougie actuelle est le plus haut des ‘LookbackLeft’ bougies précédentes
// ET le plus haut des ‘LookbackRight’ bougies suivantes.
// Nous utilisons des bougies décalées pour les bougies “suivantes” pour une logique de backtesting.
// high[LookbackRight] : plus haut de la bougie LookbackRight périodes DANS LE FUTUR par rapport à la bougie actuelle.
// high[0] : plus haut de la bougie actuelle.
// high[1] : plus haut de la bougie précédente.
// Pour la détection d’un Swing High *passé*, on regarde si la bougie à l’indice ‘i’
// est la plus haute dans une fenêtre définie.
SwingHighDetected = 1 // Initialisation à VRAI. Deviendra FAUX si la condition n’est pas remplie.
FOR i = 1 TO LookbackLeft
IF high[0] <= high[i] THEN
SwingHighDetected = 0 // Si une bougie précédente est plus haute ou égale, ce n'est pas un SH
BREAK
ENDIF
NEXT
IF SwingHighDetected THEN
FOR i = 1 TO LookbackRight
IF high[0] = low[i] THEN
SwingLowDetected = 0 // Si une bougie précédente est plus basse ou égale, ce n’est pas un SL
BREAK
ENDIF
NEXT
IF SwingLowDetected THEN
FOR i = 1 TO LookbackRight
IF low[0] >= low[-i] THEN // -i pour les bougies *futures*
SwingLowDetected = 0 // Si une bougie future est plus basse ou égale, ce n’est pas un SL
BREAK
ENDIF
NEXT
ENDIF
// — Affichage sur le graphique —
// Dessiner des marqueurs aux points de Swing High et Swing Low
IF SwingHighDetected THEN
// Dessine un petit carré rouge au-dessus de la bougie du Swing High
DRAWSHAPE (high + 0.0005) AS “Square” AT BARINDEX COLOUR (255,0,0) // Rouge
ENDIF
IF SwingLowDetected THEN
// Dessine un petit carré vert en dessous de la bougie du Swing Low
DRAWSHAPE (low – 0.0005) AS “Square” AT BARINDEX COLOUR (0,255,0) // Vert
ENDIF
// Vous pouvez également ajouter des labels pour voir les valeurs
// DRAWTEXT (“SH”) AT BARINDEX ON SwingHighDetected
// DRAWTEXT (“SL”) AT BARINDEX ON SwingLowDetected