Bonjour à tous,
J’aurais besoin de votre aide pour terminer mon code.
Type de trading: Intraday
Je souhaite dessiner deux zones situées de part et d’autre de l’ouverture du jour.
ces zones sont égales. Je calcule une volatilité moyenne que j’ajoute ou j’enlève à l’ouverture du jour.
Le zone du haut est verte et celle du bas est rouge.
Nota: Mon fuseau horaire est défini en ETH pour toutes mes actions quelques soient les marchés.
Ces 2 zones ne doivent apparaitre que durant la séance du jour en cours afin de ne pas polluer le graphique.
Le calcul de la volatilité à ajouter ou à enlever à l’ouverture du jour est calculé comme suit:
//TRUE RANGE
amax=max(dclose(1),dhigh(0))
amin=min(dclose(1),dlow(0))
volathaute=amax[1]-dopen(1) // calcul de la volatilité au dessus de l’ouverture de la veille.
volatbasse=dopen(1)-amin[1] // calcul de la volatilité en dessous de l’ouverture de la veille.
volatmin=min(volatbasse,volathaute) // on veut la plus petite des deux
VolatMoy=average[10](volatmin) // on fait la moyenne sur 10 jours de la volatilité minimum des jours de trading précédent la séance en cours.
Définition des limites des 2 zones décrites plus haut:
ZoneUP= dopen(0)+VolatMoy
ZoneDN= dopen(0)-VolatMoy
Dans l’attente de vous lire 😉
Merci par avance
Christophe
Ton calcul de moyenne de la volatilité n’est pas correct puisque tu fais une moyenne sur les 10 bougies du timeframe actuel de ta valeur volatmin, hors tu cherches à faire une moyenne des 10 jours précédents de cette valeur non ?
Bonjour Nicolas,
merci pour ton retour.
Est ce que je me trompe lorsque j’utilise les fonctions dopen(1) ou dclose(1) ou dlow(1) ou dhigh(1)?
Lorsque je les utilise, je croyais que cela renvoyait, dans le cas où l’on est dans un timeframe plus petit que le Daily, à une valeur respectivement pour l’ouverture, la fermeture, le bas ou le haut à celle du jour de la veille.
Dans l’attente de te lire
REM TRUE RANGE
amax=max(dclose(1),dhigh(0))
amin=min(dclose(1),dlow(0))
REM Calcul Volatilité journalière minimale par rapport à l'ouverture
volathaute=amax[1]-dopen(1) // calcul de la volatilité au dessus de l’ouverture de la veille.
volatbasse=dopen(1)-amin[1] // calcul de la volatilité en dessous de l’ouverture de la veille.
volatmin=min(volatbasse,volathaute) // on veut la plus petite des deux
REM moyenne volatilité minimale sur 10 jours
VolatMoy=average[10](volatmin) // on fait la moyenne sur 10 jours de la volatilité minimum des jours de trading précédent la séance en cours.
REM Définition des limites des 2 zones décrites plus haut:
ZoneUP= dopen(0)+VolatMoy
ZoneDN= dopen(0)-VolatMoy
Tu as raison sur le fonctionnement de ces instructions (Dhigh, Dlow, ..)
Mais si en timeframe 5-minutes tu fais :
average[10](volatmin)
tu calcules une moyenne de la valeur volatmin des 10 dernières bougies 5-minutes.
C’est plus clair ?
Ah mince, Je ne savais pas. va falloir que je vérifie mes autres indicateurs…
Si je comprend bien, une moyenne ou autres (summation, etc…) est réalisé seulement dans le timeframe dans lequel nous sommes, mêmes si les instructions données sont journalières notamment (Dhigh, Dlow, ..).
Est ce bien ce que tu me dis?
Et si c’est bien cela, comment je dois l’écrire?
Bien entendu,
- dans ton code à aucun moment tu indiques que ta moyenne mobile est à faire sur 10 chandeliers en daily.
- tu ne donnes jamais 10 valeurs daily dans ton calcul de moyenne mobile, mais la valeur “volatmin” des 10 derniers chandeliers du timeframe courant qui est calculé avec des valeurs OHLC de la veille uniquement (et jamais jusqu’à 10j en arrière).
En résumé le code ne peut pas comprendre ce que tu ne codes pas 🙂
Voici comment cela devrait être formulé selon moi :
timeframe(daily)
REM TRUE RANGE
amax=max(close[1],high[0])
amin=min(close[1],low[0])
REM Calcul Volatilité journalière minimale par rapport à l'ouverture
volathaute=amax[1]-open[1] // calcul de la volatilité au dessus de l’ouverture de la veille.
volatbasse=open[1]-amin[1] // calcul de la volatilité en dessous de l’ouverture de la veille.
volatmin=min(volatbasse,volathaute) // on veut la plus petite des deux
REM moyenne volatilité minimale sur 10 jours
VolatMoy=average[10](volatmin) // on fait la moyenne sur 10 jours de la volatilité minimum des jours de trading précédent la séance en cours.
REM Définition des limites des 2 zones décrites plus haut:
ZoneUP= open[0]+VolatMoy
ZoneDN= open[0]-VolatMoy
return ZoneUP,ZoneDN
Il faudra s’assurer qu’il y a suffisamment d’unités affichées sur le graphique intraday pour permettre un calcul sur les 10 derniers jours.
(non testé)
ok, merci
Dans ma demande initiale je souhaitais pouvoir dessiner deux zones situées de part et d’autre de l’ouverture du jour.
La zone du haut est verte et celle du bas est rouge.
Nota: Mon fuseau horaire est défini en ETH pour toutes mes actions quelques soient les marchés.
Ces 2 zones ne doivent apparaitre que durant la séance du jour en cours afin de ne pas polluer le graphique.
Comment peut on codifier mon besoin par rapport au code précédent?
Un rectangle ayant besoin de 4 coordonnées (voir DRAWRECTANGLE), voici comment les créer avec tes variables:
defparam drawonlastbaronly=true
timeframe(daily)
REM TRUE RANGE
amax=max(close[1],high[0])
amin=min(close[1],low[0])
REM Calcul Volatilité journalière minimale par rapport à l'ouverture
volathaute=amax[1]-open[1] // calcul de la volatilité au dessus de l’ouverture de la veille.
volatbasse=open[1]-amin[1] // calcul de la volatilité en dessous de l’ouverture de la veille.
volatmin=min(volatbasse,volathaute) // on veut la plus petite des deux
REM moyenne volatilité minimale sur 10 jours
VolatMoy=average[10](volatmin) // on fait la moyenne sur 10 jours de la volatilité minimum des jours de trading précédent la séance en cours.
REM Définition des limites des 2 zones décrites plus haut:
ZoneUP= open[0]+VolatMoy
ZoneDN= open[0]-VolatMoy
timeframe(default)
if intradaybarindex=0 then
startbar=barindex
startprice=open
endif
if islastbarupdate then
drawrectangle(startbar,startprice,datetobarindex(20301231),zoneup) coloured("green",50) bordercolor("green",0)
drawrectangle(startbar,startprice,datetobarindex(20301231),zonedn) coloured("red",50) bordercolor("red",0)
endif
return //ZoneUP as "zoneup",ZoneDN as "zonedn",volatmoy
Super Cà marche avec les UT de temps classique. merci nicolas
Par contre ca ne marche pas sur mes graphiques en TICKS.
Aurais tu une idée?
😉
Pas assez d’unités affichées pour obtenir 10j de data du timeframe daily.
Nicolas,
Je me suis mal exprimé, je travaille sur des graphiques en UT 250 ticks.
Après vérification, j’ai largement les 10 jours d’historique. J’ai plusieurs mois.
Pour quelle raison cela ne fonctionne pas?
je te sois la fenêtre d’information du logiciel
Oui c’est juste, comme expliqué dans la fenêtre on ne peut pas mélanger les timeframes non liés au temps (ticks) avec des timeframes ordinaires.
Les stratégies de breakout basées sur des valeurs journalières ne s’appliquent pas à des graphiques en ticks.
Mince! C’est dommage de ne pas pouvoir le faire …
Cà m’oblige à changer ma méthodologie de travail, galère.
A plus
Non, tu peux recalculer autrement ta moyenne des 10 jours, plus complexe mais réalisable.
Chaque jour on incrémente une colonne d’un tableau dans laquelle on stocke la valeur de ton calcul.
A la fin tu fais une simple boucle et une moyenne arithmétique sur les 10 dernières colonnes.