RANGE INTRADAY avec fonction drawrectangle

Viewing 15 posts - 16 through 30 (of 36 total)
  • Author
    Posts
  • #200456 quote
    christophe11560
    Participant
    Senior

    Ah bon 😉

    Cela dépasse malheureusement mes humbles compétences en matière de codage.

    Si tu arrives à trouver du temps, je t’en serais reconnaissant.

    Bon weekend à  toi

    #200618 quote
    JC_Bywan
    Moderator
    Master

    Tu repars de ton code sans les timeframes pour travailler dans ton ut (x)ticks, et du moment que l’historique est assez long pour avoir tes 10 jours, tu peux avoir ton volatmoy ainsi:

    if opendate<>opendate[1] then
     $memo[lastset($memo)+1]=volatmin
    endif
    if lastset($memo)>=10 then
     Volatcumu=0
     For i= lastset($memo)-9 to lastset($memo)
      Volatcumu= Volatcumu+$memo[i]
     next
     VolatMoy=Volatcumu/10
    endif
    christophe11560 thanked this post
    #200626 quote
    christophe11560
    Participant
    Senior

    Tu es au TOP !!!!

    Merci beaucoup JC, çà marche impeccable 😉

    Bonne continuation Christophe

    #200634 quote
    christophe11560
    Participant
    Senior

    Rebonjour,

    En affichant les valeurs haute et basse sur le graphique, je me rend compte que les valeurs avec le code en Timeframe Daily (code Nicolas) et Ticks (JC) sont différentes.

    Donc j’ai créé un indicateur simple pour connaître les valeurs Up et Dn journalières.

    Je me rend compte également, que le code en timeDaily et TICKS donnent des valeurs différentes de celle que nous devrions trouver.

    Je travaille avec des actions de plage horaire ETH.

    Je vous joint les photographies correspondantes.

    Dans l’attente de vous lire

    christophe

    Daily-valeur-Up-et-DN.png Daily-valeur-Up-et-DN.png valeur-UT-minutes-.png valeur-UT-minutes-.png valeur-Ticks.jpg valeur-Ticks.jpg
    #200672 quote
    Nicolas
    Keymaster
    Master

    Pourrais-tu reposter le code complet que tu utilises stp ? Si on enlève l’instruction TIMEFRAME, alors il faut utiliser les instructions DClose, DOpen, .. pour aller récupérer les données OHLC du timeframe daily.

    #200686 quote
    christophe11560
    Participant
    Senior
    defparam calculateonlastbars = 50
    defparam drawonlastbaronly=true
    iatr=average[100](tr)
    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+VolatMoy
    ZoneDN= open-VolatMoy
      
    valup=round(zoneup,2)
    valdn=round(zonedn,2)
    ouverture=round(dopen(0),2)
    
    timeframe(default)
    
    if intradaybarindex=0 or day<>day[1] then
    startbar=barindex
    startprice=open
    endif
    
    if islastbarupdate then
    drawrectangle(startbar,startprice,barindex,zoneup) coloured(0,204,0,ALPHAfond) bordercolor(0,0,0,20)
    DRAWTEXT("#valup#",BARINDEX-3,valup+1*iatr,SansSerif,Bold,14) coloured(51,102,255)
    drawrectangle(startbar,startprice,barindex,zonedn) coloured(255,51,51,ALPHAfond) bordercolor(0,0,0,20)
    DRAWTEXT("#valdn#",BARINDEX-3,valdn-1*iatr,SansSerif,Bold,14) coloured(204,0,0)
    DRAWTEXT("#ouverture#",BARINDEX-3,ouverture-1*iatr,SansSerif,Bold,14) coloured(0,0,0)
    endif
    
    return
    #200687 quote
    christophe11560
    Participant
    Senior
    defparam drawonlastbaronly=true
    iatr=exponentialaverage[100](tr)
    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
    if opendate<>opendate[1] then
    $memo[lastset($memo)+1]=volatmin
    endif
    if lastset($memo)>=10 then
    Volatcumu=0
    For i= lastset($memo)-9 to lastset($memo)
    Volatcumu= Volatcumu+$memo[i]
    next
    VolatMoy=Volatcumu/10
    endif
     
    REM Définition des limites des 2 zones décrites plus haut:
    ZoneUP= dopen(0)+VolatMoy
    ZoneDN= dopen(0)-VolatMoy
    valup=round(zoneup,2)
    valdn=round(zonedn,2)
    ouverture=round(dopen(0),2)
    
    if intradaybarindex=0 or day<>day[1] then
    startbar=barindex
    startprice=open
    endif
    
    
    if islastbarupdate then
    ALPHAfond=25
    drawrectangle(startbar,startprice,barindex,zoneup) coloured(0,204,0,ALPHAfond) bordercolor(0,0,0,20)
    DRAWTEXT("#valup#",BARINDEX-3,valup+1*iatr,SansSerif,Bold,14) coloured(51,102,255)
    drawrectangle(startbar,startprice,barindex,zonedn) coloured(255,51,51,ALPHAfond) bordercolor(0,0,0,20)
    DRAWTEXT("#valdn#",BARINDEX-3,valdn-1*iatr,SansSerif,Bold,14) coloured(204,0,0)
    DRAWTEXT("#ouverture#",BARINDEX-3,ouverture-1*iatr,SansSerif,Bold,14) coloured(0,0,0)
    endif
    
    return
    #200701 quote
    JC_Bywan
    Moderator
    Master

    Dans ton code en ticks, volathaute et volatbasse se servent de amax[1] (une bougie tick juste avant)

    Dans ton code en UT classique avec timeframe, volathaute et volatbasse se servent de amax[1] (une bougie daily avant)

    #200745 quote
    christophe11560
    Participant
    Senior

    Bonjour JB

    En effet, je ne veux pas inclure dans volathaute et volatbasse le jour en cours.

    Pour TimeFrame DAILY, c’est normal que ce soit le jour d’avant. Par contre, il ne devrait pas y avoir d’écart avec les valeurs notées en UT daily.

    Pour le code en UT Ticks, je pensais avoir respecté tes indications de placement de code, avant le tien.

    Que dois je faire?

    #200749 quote
    christophe11560
    Participant
    Senior

    JB Nicolas

    J’ai déplacé ma partie de code après: “if opendate<>opendate[1] then”

    Toujours un écart par rapport à mon code de référence en UT daily pour comparaison des valeurs.

    Je le joints pour information ci-après

     

    defparam calculateonlastbars = 500
    defparam drawonlastbaronly=true
    
    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+VolatMoy
    ZoneDN= open-VolatMoy
    valup=round(zoneup,2)
    valdn=round(zonedn,2)
    ouverture=round(dopen(0),2)
    iatr=exponentialaverage[100](tr)
    DRAWTEXT("#valup#",BARINDEX+1,valup+1*iatr,SansSerif,Bold,14) coloured(51,102,255)
    DRAWTEXT("#valdn#",BARINDEX+1,valdn-1*iatr,SansSerif,Bold,14) coloured(204,0,0)
    DRAWTEXT("#ouverture#",BARINDEX+1,ouverture-1*iatr,SansSerif,Bold,14) coloured(0,0,0)
    
    return zoneup as "line up", zonedn as "line dn"
    #201519 quote
    christophe11560
    Participant
    Senior

    Nicolas JB
    Auriez vous une idée?

    #201530 quote
    JC_Bywan
    Moderator
    Master

    Oui, celle du post #200701… une fois signalé dans ce post que tes 2 codes version “ticks” et “version ut classique MTF” calculaient différemment volathausse et volatbasse, en amont de la partie avec tableaux que j’ai proposé pour calcul de volatmoy, tu dois choisir lequel est ton bon calcul de volathausse et volatbasse afin de faire le même dans les 2 codes, sinon forcément, ça va donner des résultats trop différents. Il n’y a que toi qui peux savoir lequel des 2 calculs tu veux et appliquer le bon aux 2 codes, pour moi c’est juste une “entrée” qui aboutit à volatmin servant ensuite dans la partie proposée avec tableaux pour calcul de volatmoy.

    Après, une fois que tu auras adopté un calcul identique de volathaute et basse, peut-être que tu constateras d’autres différences, mais si c’est le cas ça sera à voir à ce moment-là avec les données non faussées par 2 calculs différents de volathaute et volatbasse.

    #201548 quote
    christophe11560
    Participant
    Senior

    Bonjour JB et merci pour ton retour,
    Excuse moi, mais je ne comprends pas ta demande. Je ne maitrise pas le principe de tableau en codage.
    Il y a 2 méthodes différentes. Celle en Timeframe, je la comprend. Celle en tick dépasse mes compétences.

    Le code de référence en UT DAILY (09/14/2022 at 1:07 AM) que j’ai transmis donne le résultat attendu, le bon résultat.

    Je constate que le code en UT ticks ou en Timeframe donne des résultats différents de celui du code référence ci-avant.

    Je suis vraiment dans une impasse parce que je suis arrivé au bout de mes connaissances en codage. Et Je ne comprends pas non plus pourquoi le code en TIMEFRAME ne donne pas les bons résultats, ce code me semble bon dans son écriture.
    Je ne sais pas si cela est lié avec la fonction TIMEFRAME. En effet, J’ai ouvert un autre post en attente de réponse (https://www.prorealcode.com/topic/screener-timeframe-cassure-pivot/) sur un screener qui utilise également la fonction timeframe et pour lequel les résultats sont erronés.

    Dans l’attente de vous lire et je l’espère d’une solution ;-=).

    #201558 quote
    Nicolas
    Keymaster
    Master

    tu dois choisir lequel est ton bon calcul de volathausse et volatbasse

    Avant d’obtenir une solution, JC pose cette question auquel on attend une réponse 🙂

    #201588 quote
    christophe11560
    Participant
    Senior

    Bonjour Nicolas,
    Je pensais vous avoir répondu. Je pense que je ne comprends pas votre besoin.
    Comme je l’ai indiqué, le bon calcul pour moi est celui qui donne un résultat correct en UT DAILY => c’est le code de référence en UT DAILY du “09/14/2022 at 1:07 AM”.
    0) code de référence: 09/14/2022 at 1:07 AM
    1) Le code avec la fonction TimeFrame vs Nicolas (utilise le même calcul que celui de référence bon pour moi) mais ne fonctionne pas pour les UT ticks et ne donne pas les mêmes résultats que celui de référence quelques soient l’UT intraday.
    2) Le code pour les ticks vs JB ne donne pas non plus les mêmes résultats que le code de référence. je ne le comprends pas parce qu’il dépasse mes compétences de codage et je ne sais pas si il fonctionne quelques soient les unités de temps.

    Si vous me demandez de choisir entre 1 ou 2, çà m’est égal à partir du moment que cela fonctionne en intraday et en tick. Le mieux pour vous.

    Dans l’attente de vous lire.

Viewing 15 posts - 16 through 30 (of 36 total)
  • You must be logged in to reply to this topic.

RANGE INTRADAY avec fonction drawrectangle


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 35 replies,
has 3 voices, and was last updated by christophe11560
2 years, 11 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 09/06/2022
Status: Active
Attachments: 6 files
Logo Logo
Loading...