dessiner indicateur “suivant”
Forums › ProRealTime forum Français › Support ProBuilder › dessiner indicateur “suivant”
- This topic has 21 replies, 3 voices, and was last updated 10 months ago by Pierreco1991.
-
-
05/23/2023 at 2:20 PM #215079
Bonjour,
Je suis à la recherche d’une façon de faire pour dessiner sur les graph, la valeur “bar +1” d’un indicateur.
Si je prend l’exemple d’une moyenne mobile : moyenne mobile 7 en daily par exemple, afficher sur le graph en temps réel (en prolongeant la vraie mm7) la valeur qu’elle prendra en “bar+1” suivant le cours actuel.
J’ai un peu recherché, je n’ai pas trouvé de façon de faire ?
Dans l’idée, je souhaite appliquer cela à des bandes de bollinger, des MM, etc..
Je mets un exemple en PJ pour que cela soit plus clair
Merci d’avance !
05/23/2023 at 3:04 PM #215083Bonjour, si la question est pour “à close égale en barre+1 à la close en cours”, le principe de base est de prendre la formule générale de l’indicateur voulu, et de l’appliquer au nombre de barres -1 (incluant close actuelle pour barre actuelle) et d’appliquer la close actuelle pour la barre suivante.
Ainsi pour une mm7 (indicateur à ajouter en fenêtre du prix, pas en fenêtre séparée car la ligne return étant vide, le drawsegment serait hors-cadre et on pourrait croire qu’il ne dessine rien, mais il fonctionnera en fenêtre du prix):
12345678defparam DRAWONLASTBARONLY=truemm7barplus1=(close+summation[6](close))/7mm7=Average[7](close)DRAWSEGMENT(barindex, mm7, barindex+1, mm7barplus1) coloured("orange") style(line,3)return05/23/2023 at 3:09 PM #21508405/23/2023 at 3:24 PM #215086Dernière question : est-ce possible de gérer le style du segment (épaisseur / couleur) directement depuis le menu (quand j’ajoute l’indicateur), ou cela soit se gérer obligatoirement dans le code ?
Quand j’essaie de modifier la couleur depuis le menu, cela ne marche pas.
Merci
05/23/2023 at 3:48 PM #215087L’épaisseur par le menu non, elle se définit dans le code seulement, remplacer le 3 dans style(line,3) par un chiffre entre 1 (moins épais) et 5 (plus épais)
La couleur par le menu oui, en remplaçant ainsi la partie coloured de la ligne drawsegment:
DRAWSEGMENT(barindex, mm7, barindex+1, mm7barplus1) coloured(rouge,vert,bleu) style(line,3)
et en passant en 3 paramètres externes: rouge, vert, bleu, qu’on pourra modifier en fenêtre de propriétés de l’indicateur, liste de combinaisons possibles:
http://cloford.com/resources/colours/500col.htm
https://www.prorealcode.com/documentation/coloured/
1 user thanked author for this post.
05/24/2023 at 1:46 PM #215126En fait j’ai encore une question 🙂
Pour les MM, grace à ton code, j’y arrive.
Par contre pour calculer une bande de bollinger (“future”), j’ai plus de mal..je bloque sur la partie ecart-type/STD
J’ai trouvé quelques infos, mais j’ai du mal à l’intégrer à mon code : https://www.prorealcode.com/prorealtime-indicators/fractal-standard-deviation-bands/
Merci d’avance !
DEFPARAM DRAWONLASTBARONLY = TRUE
MM7 = AVERAGE[7](CLOSE)
MM20 = AVERAGE[20](CLOSE)
MM50 = AVERAGE[50](CLOSE)
BBB = AVERAGE[20](CLOSE) – 2.5 * STD[20](CLOSE)
BBH = AVERAGE[20](CLOSE) + 2.5 * STD[20](CLOSE)MM7next = (CLOSE+SUMMATION[6](CLOSE))/7
MM20next = (CLOSE+SUMMATION[19](CLOSE))/20
MM50next = (CLOSE+SUMMATION[49](CLOSE))/50BBBnext = ?
BBHnext = ?DRAWSEGMENT(barindex, MM7, barindex+2, MM7next) coloured(“orange”) style(line,1)
DRAWSEGMENT(barindex, MM20, barindex+2, MM20next) coloured(“orange”) style(line,1)
DRAWSEGMENT(barindex, MM50, barindex+2, MM50next) coloured(“orange”) style(line,1)
DRAWSEGMENT(barindex, BBB, barindex+2, BBBnext) coloured(“orange”) style(line,1)RETURN
05/24/2023 at 2:25 PM #21512805/24/2023 at 2:29 PM #21513005/24/2023 at 4:13 PM #215135Bon je l’ai retrouvé… mais en fait en passant de “se souvenir de quelque chose qui ressemble” à “retrouver ce que c’était exactement”, je me rends compte que: ok y’avait des boll, mais rien de la résolution de l’autre problème ne pouvait servir ici, bref…
Oui tu n’es pas loin, voici ce que je proposerais pour garder ton approche, à 2-3 petites différences près dans la gestion des 20 occurrences, et avec juste 2 fois la std dev:
12345678910111213MM20next=(close+SUMMATION[19](close))/20t=0for N = 0 to 18 // les 19 occurrences de la 18e bougie précédente à l'actuelle [0]t = t + square(close[N]-MM20next)nextt = t + square(close-MM20next) // la 20ème occurrence en barre+1 supposant sa close = close actuellestdev = sqrt(t/20)BBBnext= MM20next-2*stdevBBHnext= MM20next+2*stdevreturn BBBnext, BBHnext1 user thanked author for this post.
12/13/2023 at 2:15 PM #225228Bonjour,
Dans la même idée que mon post précédent, je voudrais rajouter la projection de la bande de bollinger “t+2” (dans 2 périodes donc)
Pour se faire je pensais m’aider de l’ATR (pour définir la volatilité moyenne de la période en cours), et faire 2 scénarios : ajout de l’ATR et soustraction de l’ATR.
J’avoue bloquer et ne pas savoir pas où commencer 🙂Merci d’avance !
code pour projection BB123456789101112131415161718192021222324DEFPARAM DRAWONLASTBARONLY = TRUEATR = AverageTrueRange[14](Close)P = 20STDEV = 2.5BBB = AVERAGE[P](CLOSE) - STDEV * STD[P](CLOSE)BBH = AVERAGE[P](CLOSE) + STDEV * STD[P](CLOSE)avg = (SUMMATION[P-1](CLOSE) + CLOSE)/Pt=0FOR x = 0 TO P-2t = t + SQUARE(CLOSE[x] - avg)NEXTt = t + SQUARE(CLOSE - avg)dev = SQRT(t/P)BBBnext = avg - STDEV * devBBHnext = avg + STDEV * devDRAWSEGMENT(barindex, BBH, barindex+1, BBHnext)COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)DRAWSEGMENT(barindex, BBB, barindex+1, BBBnext) COLOURED(128,128,128)STYLE(DOTTEDLINE4,1)RETURN12/14/2023 at 8:59 PM #225260Donc il y a 2 valeurs à trouver en t+2, une si la close en t+2 est un ATR plus haut que la close en t, et une autre si la close en t+2 est un ATR plus bas que close en t, l’ATR retenu pour les 2 scenars étant sa valeur connue en t, c’est bien ça?
D’autre part qu’est-ce qu’on utilise pour la close en t+1? La même que close en t (comme dans le cas précédent de mai dernier), ou une autre valeur intermédiaire entre close en t et close en t+2?
12/14/2023 at 9:17 PM #225261Bonjour
Merci pour ton retour.
Je me suis peut être mal exprimé.
t = la Bollinger classique calculée par l’indicateur basique de la période clôturée
t+1 = la Bollinger qu’on a réussi à calculer avec le code au dessus en projection
t+2 = la Bollinger après t+1 qui prend pour base de calcul t+1 en ajoutant/soustrayant 1 ATR de la période T (la seule qu’on connait)
Tous les calculs de t+2 se font donc à partir de la Bollinger t+1.
Pour t+1 (code qui fonctionne déjà) on se base sur la close en cours de la bougie pour estimer la prochaine Bollinger.
Pour t+2, on part de t+1 et on fait deux scénarios : un avec +1 ATR et un autre avec -1 ATR.
L’idée est de ‘prevoir’ le futur en se basant sur la volatilité moyenne de la période.
J’espère avoir été plus clair ?
Merci
12/14/2023 at 9:31 PM #225263Pour calculer la valeur de la BB t+1 on par du principe que la valeur courante de la bougie sera sa valeur de clôture et donc on projette la prochaine BB.
Pour la BB t+2 on prend comme base de calcul la valeur actuelle de la bougie à laquelle on rajoute/soustrait 1 ATR. Pour extrapoler la futur BB+2
12/16/2023 at 3:16 PM #225336Bonjour,
Après réflexion je vais repréciser ce que je souhaite faire, j’ai parcouru le web et j’ai eu du mal à trouver quelque chose qui collerait à mon besoin.
Exprimé clairement : je souhaite avoir une projection des bandes de Bollinger dans le “futur” en créant un cours imaginaire qui se rapproche le plus du cours présent.
Pour ce faire, sachant qu’on ne connait évidement pas le futur, il faut “créer” un cours “imaginaire”.
Pour la création de ce cours imaginaire, je pensais m’aider de l’ATR ou de l’écart type ? Mais je n’ai pas d’avis bien tranché et je ne sais pas nécessairement quel serait le plus judicieux (?)
Concernant la période de “futur” extrapolée, je pense partir sur un ratio de la période des Bandes de Bollinger.
Ex : pour des BB de période 20, “prédire” le futur de 25 % de la période, donc 5 périodes futures.
L’idée étant que plus ce % est élevé, plus on intègre dans le calcul “le cours imaginaire” est plus cela peut partir dans “n’importe quoi”.
Pour ce qui est de la représentation, l’idée serait d’avoir une projection des bandes de Bollinger basées sur 2 cours imaginaires : un positif et un négatif.
Exemple du cours imaginaire “positif” :
- Jour imaginaire 1 : close J + ATR (ou écart type ou équivalent qui permet de prendre compte de la volatilité de la période de temps actuel)
- Jour imaginaire 2 : Close Jour imaginaire 1 + ATR
- etc…
L’inverse pour le cours imaginaire négatif.
J’espère être clair.
Merci d’avance pour votre aide !
12/18/2023 at 8:42 AM #225371Bonjour,
au lieu de ne coder que pour t+2, suite au dernier message je t’y ai mis un ratio paramétrable PourcentProj à régler entre 0 et 1, qui s’appliquera sur la période des bandes (j’ai gardé ta notation P pour la garder elle aussi paramétrable), ce ratio permet de régler le nombre voulu d’occurrences projetées Nproj et de faire tous les calculs pour toutes les projections hautes et basses sur les t+… et d’afficher la quantité de tracé en fonction de ce nombre.
J’ai gardé ton choix de couleur et style dottedline4, et ton choix de 2.5 standard dev au lieu du classique 2 (mais paramétrable dans coeff). J’ai rajouté le tracé des projections de la moyenne mobile selon les 2 scénar, si tu ne veux pas les afficher il suffit de rajouter // aux 2 lignes 26-27 en drawsegment, ou les supprimer.
Aussi, au lieu de mettre l’ATR directement, j’y ai mis la variable deltacours pour l’incrément à ajouter/soustraire du prix pour chaque t+…, de sorte que si tu veux tester plus tard avec autre chose que l’ATR, tu n’as plus qu’à changer la ligne 8 deltacours=ATR par deltacours=autre chose.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152DEFPARAM DRAWONLASTBARONLY = TRUEATR= AverageTrueRange[14](Close)P= 20 // période P dans le calcul des bandes de bollingercoeff= 2.5 // coefficient multiplicateur de l'écart-type dans le calcul des bandes de bollingerPourcentProj= 0.25// 0.25 pour 25%, entre 0 pour 0% et 1 pour 100%, pourcentage à appliquer à la période P pour projection dans le futurNproj= floor(P*PourcentProj)// nombre entier d'occurrences en prenant l'arrondi inférieur du pourcentage PourcentProj appliqué à la période Pdeltacours= ATR// écart entre chaque occurrence de close future simulée$coursplus[0]= close$coursmoins[0]= close$avgplus[0]= average[20](close)$avgmoins[0]= average[20](close)$BBHplus[0]= average[P](close)+coeff*STD[P](close)$BBHmoins[0]= average[P](close)+coeff*STD[P](close)$BBBplus[0]= average[P](close)-coeff*STD[P](close)$BBBmoins[0]= average[P](close)-coeff*STD[P](close)for i=1 to Nproj$coursplus[i]=$coursplus[0]+deltacours*i$coursmoins[i]=$coursmoins[0]-deltacours*i//DRAWSEGMENT(barindex+i-1, $coursplus[i-1], barindex+i, $coursplus[i]) COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)//DRAWSEGMENT(barindex+i-1, $coursmoins[i-1], barindex+i, $coursmoins[i]) COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)$avgplus[i]=$avgplus[i-1]+($coursplus[i]-close[P-i])/P$avgmoins[i]=$avgmoins[i-1]+($coursmoins[i]-close[P-i])/PDRAWSEGMENT(barindex+i-1, $avgplus[i-1], barindex+i, $avgplus[i]) COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)DRAWSEGMENT(barindex+i-1, $avgmoins[i-1], barindex+i, $avgmoins[i]) COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)totplus=0totmoins=0for N = 0 to P-i-1// les P-i occurrences de la (P-i-1)èmee bougie précédente à l'actuelle [0]totplus = totplus + square(close[N]-$avgplus[i])totmoins = totmoins + square(close[N]-$avgmoins[i])nextfor j=1 to i// les i occurrence de P-i+1 à Ptotplus = totplus + square($coursplus[j]-$avgplus[i])totmoins = totmoins + square($coursplus[j]-$avgmoins[i])next$stdevplus[i] = sqrt(totplus/P)$stdevmoins[i] = sqrt(totmoins/P)$BBHplus[i]=$avgplus[i]+coeff*$stdevplus[i]$BBBplus[i]=$avgplus[i]-coeff*$stdevplus[i]$BBHmoins[i]=$avgmoins[i]+coeff*$stdevmoins[i]$BBBmoins[i]=$avgmoins[i]-coeff*$stdevmoins[i]DRAWSEGMENT(barindex+i-1, $BBHplus[i-1], barindex+i, $BBHplus[i]) COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)DRAWSEGMENT(barindex+i-1, $BBBplus[i-1], barindex+i, $BBBplus[i]) COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)DRAWSEGMENT(barindex+i-1, $BBHmoins[i-1], barindex+i, $BBHmoins[i]) COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)DRAWSEGMENT(barindex+i-1, $BBBmoins[i-1], barindex+i, $BBBmoins[i]) COLOURED(128,128,128) STYLE(DOTTEDLINE4,1)nextRETURN -
AuthorPosts
Find exclusive trading pro-tools on