Bonjour,
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.
DEFPARAM DRAWONLASTBARONLY = TRUE
ATR= AverageTrueRange[14](Close)
P= 20 // période P dans le calcul des bandes de bollinger
coeff= 2.5 // coefficient multiplicateur de l'écart-type dans le calcul des bandes de bollinger
PourcentProj= 0.25// 0.25 pour 25%, entre 0 pour 0% et 1 pour 100%, pourcentage à appliquer à la période P pour projection dans le futur
Nproj= floor(P*PourcentProj)// nombre entier d'occurrences en prenant l'arrondi inférieur du pourcentage PourcentProj appliqué à la période P
deltacours= 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])/P
DRAWSEGMENT(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=0
totmoins=0
for 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])
next
for j=1 to i// les i occurrence de P-i+1 à P
totplus = 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)
next
RETURN