detection swing
Forums › ProRealTime forum Français › Support ProBuilder › detection swing
- This topic has 1 reply, 2 voices, and was last updated 2 months ago by
Iván.
-
-
05/29/2025 at 12:29 PM #247718
// — 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] <= high[-i] THEN // -i pour les bougies *futures* (quand on regarde en temps réel) SwingHighDetected = 0 // Si une bougie future est plus haute ou égale, ce n'est pas un SH BREAK ENDIF NEXT ENDIF // Swing Low (SL): Le plus bas de la bougie actuelle est le plus bas des 'LookbackLeft' bougies précédentes // ET le plus bas des 'LookbackRight' bougies suivantes. SwingLowDetected = 1 // Initialisation à VRAI FOR i = 1 TO LookbackLeft IF low[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
NEXTIF 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
ENDIFIF 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 SwingLowDetected06/02/2025 at 7:28 AM #247789123456789101112131415161718192021LookbackLeft = 5LookbackRight = 5// pivot lowpl1=low>low[lookbackright]pl2=low[lookbackright]<=lowest[lookbackright](low)pl3=low[lookbackright]<lowest[LookbackLeft](low)[LookbackRight+1]if pl1 and pl2 and pl3 thendrawpoint(barindex[lookbackright],low[lookbackright],3)coloured("red")endif// pivot highph1=high<high[lookbackright]ph2=high[lookbackright]>=highest[lookbackright](high)ph3=high[lookbackright]>highest[LookbackLeft](high)[LookbackRight+1]if ph1 and ph2 and ph3 thendrawpoint(barindex[lookbackright],high[lookbackright],3)coloured("blue")endifreturn -
AuthorPosts