Bonjour,
Je voudrais créer un indicateur qui dessine une droite horizontale sur le graphique 1 heure pour indiquer le potentiel de hausse ou de baisse restant sur un titre.
Pour cela, j’utilise le range moyen (RM) que je calcule en prenant la SMA du range daily sur les 30 derniers jours (je l’appelle RM30).
Si le titre a cassé le plus haut de la veille, je veux afficher la droite sur le graphique 1 heure avec comme ordonnée : valeur du plus bas du jour + RM30 (exemple : si à 15h le plus bas du jour est 111 et le RM30 vaut 2,5 alors l’ordonnée de la droite sera 113,5.)
En revanche, si le marché a cassé le plus bas de la veille, je veux cette fois afficher la droite avec comme ordonnée : valeur du plus haut du jour + RM30.
Et si le marché n’a pas cassé les extrêmes de la veille, je n’affiche rien.
Mon code ne fonctionne pas et je n’arrive pas à trouver la solution. Help, please !
Voici où j’en suis :
// indication du range moyen sous forme de ligne sur le graphique
// Calcul du range moyen "RM"
RM = Average[30](Range)
// Définition du +H (HH) et du +B (LL) du jour
// Initialisation des variables HH et LL
// L'index de la première barre de la séance est 0
IF IntradayBarIndex = 0 THEN
HH = 0
LL = 0
ENDIF
// Calcul du haut et du bas
startOpen = 090100
IF TIME >= startOpen AND TIME <= CurrentTime THEN
IF high > HH THEN
HH = high
ENDIF
IF low < LL or LL = 0 THEN
LL = low
ENDIF
ENDIF
// Ordonnées pour la ligne
//y1 = LL + RM
//y2 = HH + RM
// Conditions et dessins
IF Close > DHigh(1) THEN
DRAWHLINE(LL + RM) COLOURED(0,0,0)
ELSIF Close < DLow(1) THEN
DRAWHLINE(HH + RM) COLOURED(0,0,0)
ENDIF
RETURN
J’ai trouvé la solution en cherchant sur les nombreux messages du forum. Ce site est vraiment génial, une mine d’or pour apprendre à développer ses propres indicateurs et screeners. Merci à tous ceux qui le font vivre !
Voici ma solution :
// indication du range moyen sous forme de ligne sur le graphique
DEFPARAM CALCULATEONLASTBARS = 200
DEFPARAM DRAWONLASTBARONLY = true
// Calcul du range daily moyen "RM30D"
// c'est la SMA à 30 jours du range daily
RangeDaily = 0
FOR i=0 TO 29 DO
RangeDaily = (DHigh(i) - DLow(i)) + RangeDaily
NEXT
RM30D = RangeDaily / 30
// Ordonnées pour la ligne horizontale à dessiner
y1 = DLow(0) + RM30D
y2 = DHigh(0) - RM30D
// Conditions et dessins
IF Close > DHigh(1) THEN
DRAWHLINE(y1) COLOURED(0,0,0) STYLE(dottedline)
ELSIF Close < DLow(1) THEN
DRAWHLINE(y2) COLOURED(0,0,0) STYLE(dottedline)
ENDIF
RETURN
Bjr,
merci à toi d’avoir proposé ta propre solution pour le bien de tous avant que quelqu’un intervienne