Comment tracer un rectangle jusqu’à comblement d’un gap
Forums › ProRealTime forum Français › Support ProBuilder › Comment tracer un rectangle jusqu’à comblement d’un gap
- This topic has 42 replies, 5 voices, and was last updated 1 year ago by jprt.
-
-
07/19/2022 at 11:04 PM #197533
Je ne suis pas sûr de comprendre ce que vous essayez de faire.
Je pense qu’il me manque une information essentielle et/ou une compréhension.
Je peux voir que vous avez mentionné ‘Arrays’ mais ce n’est pas clair pourquoi.
Peut-être que c’est perdu dans la traduction.Stocker les lacunes dans un tableau est facile maintenant que les lacunes peuvent être identifiées.
Mais la raison m’est inconnue, pourquoi !
07/20/2022 at 11:43 AM #197566bonjour,
je pense que nous nous sommes bien compris 🙂
Je rajoute une image plus précise. L’idée serait de dessiner un rectangle jusqu’à ce que le gap soit comblé comme l’image ci-dessous, la même que la première mais plus précises.
le premier bout de code affiche un rectangle mais jusqu’à la barindex courante.
+++
if i try in english 🙂 You understood well, i think. I ll precise, the goal is to draw a rectangle until the gap is filled, few candles later. The first code draw a rectangle until the current candle only. The picture below explain the objective.
+++
07/20/2022 at 9:47 PM #197601Bj…
Vous pouvez conduire un cheval à l’abreuvoir, mais vous ne pouvez pas le faire boire !
Je commence à comprendre. Je vais clarifier.
- Lorsque vous faites référence à un écart, voulez-vous dire, pas de bougie, ou un écart entre la clôture/le bas d’une bougie et l’ouverture/le haut de la suivante.
- Les bougies ours sont rouges.
- Les chandelles taureaux sont bleues.
- Lorsqu’un espace apparaît.
- Commencez à dessiner un rectangle à partir de la dernière bougie.
- dernière bougie bleue tirée de ‘open’.
-
Rectangle de dessin continu après la fin de l’espace.
- Arrêtez-vous lorsque la bougie se brise au-dessus du rectangle et se ferme.
- Dernière bougie rouge, ours, avec mèche au-dessus du haut du rectangle.
-
Bas du rectangle dessiné à l’ouverture de la bougie de rupture.
- Bas du rectangle dessiné vers la position ouverte de la bougie qui a cassé le haut du rectangle
- Est-ce un gap baissier ?
07/21/2022 at 8:42 AM #197606bonjour Druby,
oui. j ‘qi mis en gras ce qui est juste. barré se qui est faux et italique j’explique ci-dessous.
- Lorsque vous faites référence à un écart, voulez-vous dire,
pas de bougie, ou un écart entre la clôture/le bas d’une bougie et l’ouverture/le haut de la suivante. - Les bougies ours sont rouges.
- Les chandelles taureaux sont bleues.
- Lorsqu’un espace apparaît.
- Commencez à dessiner un rectangle à partir de la dernière bougie.
- dernière bougie bleue tirée de ‘open’.
- Rectangle de dessin continu après la fin de l’espace.
- Arrêtez-vous lorsque la bougie se brise au-dessus du rectangle et ferme le gap.
- Dernière bougie rouge, ours, avec mèche au-dessus du haut du rectangle.
- Bas du rectangle dessiné à l’ouverture de la bougie de rupture.
- Bas du rectangle dessiné vers la position ouverte de la bougie qui a cassé le haut du rectangle
Voici le code pour le gap commun d’ouverture à la baisse, en rouge, et pour le gap commun d’ouverture à la hausse, en vert.
gap commun123456789101112131415161718192021222324252627282930/*definition generale: Un gap est une zone de cours pendant laquelle aucune transaction n’a eu lieu. Il s’observe sur le graphique et ce phénomène intervient normalement entre deux periodes de bourse. Le cours d’ouverture de la periode 2 est alors intégralement plus haut ou plus bas que les cours de la periode de cotation précédent.*/defparam drawonlastbaronly=trueX = 500 // les 500 dernieres bougies à partir de la derniere bougie closeif islastbarupdate thenfor i = 1 to x do//gap commun rougeif open[i]<low[i+1] then//DRAWRECTANGLE( x1, y1, x2, y2 ) COLOURED(R,V,B,a) BORDER(R,V,B)DRAWRECTANGLE(barindex[i+1], Low[i+1] ,barindex, open[i]) COLOURED(255,0,0,50) bordercolor(255,0,0)endif//gap commun vertif open[i]>high[i+1] then//DRAWRECTANGLE( x1, y1, x2, y2 ) COLOURED(R,V,B,a) BORDER(R,V,B)DRAWRECTANGLE(barindex[i+1], High[i+1], barindex, open[i]) coloured(0,255,0,50) bordercolor(0,255,0)endifnextendifreturnl’image PRT du code ci dessus en pièce jointe. Le rectangle est infini.
Objectif:
- Dessiner un rectangle qui débute sur la bougie i+1,
- la hauteur du rectangle sera la bougie i,
- le rectangle s’arrête sur la bougie qui comble le gap.
Warms regards 🙂
07/21/2022 at 9:02 AM #197612Je prends le du gap rouge. Je pense que je vais stocker le low[i+1] quand la condition se vérifie pour ensuite refaire une boucle FOR qui va checker quand le cours touche la variable pour récupérer le barindex, comme cela j’obtiens mon x2.
07/21/2022 at 7:00 PM #197651Est-ce que l’image représente votre processus.
0. Démarrer
1. Attendez l’écart de marché.
2. Préparez-vous à dessiner un rectangle.
3. La barre précédant l’écart de marché est ‘x1’. ‘y1’ est le prix d’ouverture de ‘x1’.
4. Lorsque l’écart de marché se termine, ‘y2’ est le prix d’ouverture de cette barre.
5. ‘x1’ et la barre (y2) représentent l’écart de marché.
6. ‘y2-y1’ est l’écart de prix, de l’écart de marché.
7. La nouvelle bougie croise ‘y1’.
8. La barre de la croix de bougie est ‘x2’
9 FINJ’ai écrit ce code plus tôt sur les mauvaises pensées tout en essayant de le résoudre.
Votre code remonte à la dernière bougie, mais le mien fonctionne de la barre zéro à la bougie actuelle.Il stocke les valeurs dans un ensemble de tableaux. Il affiche trois icônes ainsi qu’un rectangle. ‘O’ bar condition true,’xy1′ rectangle start bar ‘x1’and open value ‘y1’, ‘xy2’ is bar end of rectangle ‘x2’ and open ‘y2’.
Il n’utilise pas d’écart de marché pour démarrer ou d’écart de prix, juste la condition comme dans votre code.
Sur la base de mes puces, j’ajouterai l’écart de marché et les “y1”, “y2” du rectangle de dessin à l’écart de prix comme point de départ.
Image 2.
07/23/2022 at 1:03 PM #197809bonjour,
l’image 1 représente bien l’objectif. J’ai superposé un rectangle gris sur votre dessin.
Dans le cas du gap, le rectangle commence à la bougie 455 pour x1, y1
y2 serait l’ouverture de la bougie 458 et x2 serait la bougie ~473 (le gap sera comblé avec cette bougie).
07/23/2022 at 4:22 PM #197811Merci pour vos commentaires d’édition.
Les choses s’améliorent, nous semblions d’accord pour finir à la même bougie !
Soit mon image initiale n’était pas claire, et vous n’avez pas vu les petites bougies aux barres 456 et 457, de chaque côté de l’écart du marché.
Ou, vous utilisez un critère différent pour les déterminer à 455 et 458.Veuillez préciser.
D’après l’image,
- ‘x’ marque l’écart du marché, sans changement de numéro de barre.
- Numéros de barre consécutifs si bougie présente.
- lignes pointillées rouges et rectangle intérieur, mon choix.
- Lignes jaunes et rectangle extérieur, votre choix.
- La hauteur du rectangle indique l’écart de prix.
- Mien … X1 @ 456, Y1 @ close[X1], Y2 @ open[457], X2 @ 473.
- Ton… X1 @ 455, Y1 @ close[X1], Y2 @ open[458], X2 @ 473.
- Écart de prix Y1 à Y2
07/23/2022 at 6:56 PM #19781607/23/2022 at 8:06 PM #197818avec ce code on a un début de dessin des rectangles mais cela reste très approximatif.
il faut stocker les valeurs des gaps x1,y1,x2,y2 dans un tableau et ensuite vérifier pour chaque data gqp du tableau si le prix touche y2 afin d’update la valeur x2 avec la barindex du moment ou le prix = y2
123456789101112131415161718192021if low[1] > Open then// quand le cas se produit, on stocke les variablesx1=barindex[1]y1=low[1]y2=Openendifif close = y1 then //on test si le prix = le gapx2=barindex// on dessine le rectangle qui comble le gapdrawrectangle(x1,y1,x2,y2)coloured(255,144,143,75)bordercolor(255,144,143,150)elseon dessine un rectangle qui doit rester ouvertdrawrectangle(x1,y1,barindex,y2)coloured(255,144,143,75)bordercolor(255,144,143,150)endif07/23/2022 at 11:55 PM #197821bonjour,
je parviens à ranger les données dans des tableaux et afficher mes rectangles.
1234567891011121314151617181920212223242526272829303132defparam drawonlastbaronly=trueX = 250if islastbarupdate then// on injecte les datas dans les tableauxfor i = 1 to x doif open[i]<low[i+1] then$x1[i]=barindex[i+1]$y1[i]=low[i+1]$x2[i]=barindex$y2[i]=open[i]endifnext// on lit les tableauxfor i = 1 to x dodrawrectangle($x1[i],$y1[i],$x2[i],$y2[i]) coloured(255,0,0,100) bordercolor(255,0,0,0)nextendif// detecter le comblement de gap en lisant les tableaux et la le prix qui comblerareturnje cale un peu pour detecter le comblement du gap. je souhaite parser le tableau $y1 et comparer avec le prix high des bougies qui suivent le gap car il y a le phenomene d’historique, les gaps peuvent etre combler plusieurs bougies aprés. C’est pour cela que j’ai decidé de ranger les données dans des tableaux avec la meme valeur index. ici le x=250 donc je stocke les 250 dernieres bougies.
condition: si le high d’une bougie suivant le gap est supérieur à $y1 alors cela signifie que le gap est comblé.
Je n’arrive pas a traduire cette condition :/ car j ai du mal à parser le passé dans mon tableau.
merci de votre aide.
07/24/2022 at 4:48 PM #197849J’ai regardé votre code, c’était le seul moyen d’obtenir X2 et d’arrêter le rectangle.
Le code que j’écris trouve l’écart de marché et dessine un rectangle au bon endroit, mais filtrer toutes les combinaisons de type de bougie et d’écart de marché, l’écart de prix haut/bas et quelle ouverture/fermeture est requise, sur laquelle, est un peu difficile.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556//defparam drawonlastbaronly=trueonce count=-1 // arr[count]X = 250 // lookback/search scope// on injecte les datas dans les tableaux // we inject the data into the arraysif open<low[1] then // conditioncount = count+1 // count for array index on true condition$x1[count]=barindex[1] // data set = [ $x1, $y1, $y2, later $x2 ]$y1[count]=low[1]$y2[count]=openendifif islastbarupdate thenif barindex > X then // reduce search to within scopez=barindex-Xendiffor i = 0 to lastset($x1) // loop through each data set indexif $x1[i] < z then // shorten loop, test if x1 is within X lookback scopecontinue // jump to next loop iteration, dont do this data set, out of 'X' scopeelsefor j = $x1[i]+1 to barindex // loop forward though each data set in scopeif high[barindex[j]] > $y1[i] then // compare indexed high with y1$x2[i] = barindex-barindex[j] // if true store in arr $x2break // break out of loop, if x2 foundendifnextendifnext// on lit les tableauxfor i = 1 to lastset($x1) doif $x1[i] < z then // limit drawing to scope Xcontinue // miss iteration if out of scopeelsedrawrectangle($x1[i],$y1[i],$x2[i],$y2[i]) coloured(255,0,0,100) bordercolor(255,0,0,0)endifnextendif // islastbarupdateif open<low[1] thendrawtext("y1",barindex,10)anchor(bottom,index,yShift)endifreturn1 user thanked author for this post.
07/24/2022 at 5:15 PM #19785107/24/2022 at 5:38 PM #197853dans la capture sur un graph 70 ticks, on voit bien le mécanisme de comblement de gap.
j ai rajouté un inducteur en bas de l’écran à la place de y1:
R pour gap red pour le cas du code ci-dessus
G pour gap green dans le cas ou le gap sera Open>High[1]
07/24/2022 at 5:49 PM #197856le code pour le green gap avec une petite modif de condition sur le comblement du gap: si le prix touche le low alors le gap est comblé. on peut faire la meme modification sur le red gap
1if low[barindex[j]] <= $y1[i] then // compare indexed high with y1ici le code pour green gap:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859//defparam drawonlastbaronly=trueonce count=-1 // arr[count]//X = 500 // lookback/search scope// on injecte les datas dans les tableaux // we inject the data into the arrays// green gapif open>high[1] then // conditioncount = count+1 // count for array index on true condition$x1[count]=barindex[1] // data set = [ $x1, $y1, $y2, later $x2 ]$y1[count]=high[1]$y2[count]=openr=0g=255b=0endifif islastbarupdate thenif barindex > X then // reduce search to within scopez=barindex-Xendiffor i = 0 to lastset($x1) // loop through each data set indexif $x1[i] < z then // shorten loop, test if x1 is within X lookback scopecontinue // jump to next loop iteration, dont do this data set, out of 'X' scopeelsefor j = $x1[i]+1 to barindex // loop forward though each data set in scopeif low[barindex[j]] <= $y1[i] then // compare indexed high with y1$x2[i] = barindex-barindex[j] // if true store in arr $x2break // break out of loop, if x2 foundendifnextendifnext// on lit les tableauxfor i = 1 to lastset($x1) doif $x1[i] < z then // limit drawing to scope Xcontinue // miss iteration if out of scopeelsedrawrectangle($x1[i],$y1[i],$x2[i],$y2[i]) coloured(r,g,b,100) bordercolor(0,0,0,0)endifnext// end of islastbarupdateendif// controlif open>High[1] thendrawtext("G",barindex,10)anchor(bottom,index,yShift) // G for green gapendifreturnon peut mutualisé les deux codes Red et Green si on les valide.
-
AuthorPosts
Find exclusive trading pro-tools on