Aide pour tracer un rectangle. Pas si simple !
Forums › ProRealTime forum Français › Support ProBuilder › Aide pour tracer un rectangle. Pas si simple !
- This topic has 8 replies, 3 voices, and was last updated 4 years ago by JC_Bywan.
-
-
12/11/2020 at 9:15 PM #153437
Bonjour à tous,
J’ai besoin d’aide svp. Cela fait quelques jours que je cherche un bout de code pour créer un indicateur qui tracerait simplement un rectangle mais :
- je souhaiterais que ce rectangle soit tracé de 2h du matin à 22h30 : ça j’y arrive à peut près sur la base d’un code trouvé sur prorealcode
- (c’est ici que ça se complique) il faudrait que les hauts et bas de ce rectangle correspondent au plus haut et plus bas du cours constatés entre 2h et 9h45 : j’utilise principalement l’UT 15min
- (et c’est ici que je n’y arrive pas du tout) il faudrait que ce rectangle qui s’étendrait donc jusqu’à 22h30 se trace à partir de 9h45
J’ai tenté de me débrouiller avec le code de l’exemple n°2 ici : https://www.prorealcode.com/documentation/drawrectangle/
En remerciant par avance l’âme charitable qui trouverait une solution à ma requête !
12/11/2020 at 11:55 PM #153448Je me rends compte que je n’ai pas expliqué mon blocage : malgré toutes mes tentatives, tant qu’il n’est pas effectivement 22h30, le rectangle n’apparait pas. Le meilleurs résultat que j’ai pu obtenir, c’est un rectangle tracé entre 2h et 9h30 mais qui ne s’étend pas jusqu’à 22h30. A force de test, j’ai aussi eu un phénomène étrange car “un rectangle intermédiaire” se trace entre 22h30 et 2h et je ne comprends vraiment pas pourquoi. J’ajoute le code également composé à partir de code de prc et de doctrading.
rectangle 2h 22h3012345678910111213141516171819202122232425262728debut = 021500fin = 094500fin2 = 223000IF time = debut THENhaut = 0bas = 0barredebut = barindexENDIFIF time = fin2 THENbarrefin = barindexENDIFIF time >= debut AND time <= fin THENIF high > haut THENhaut = highENDIFIF low < bas OR time = debut THENbas = lowENDIFENDIFIF time >= fin2 THENDRAWRECTANGLE(barredebut,haut,barrefin,bas)ENDIFRETURN12/12/2020 at 12:45 AM #153454J’espère bien comprendre la question:
– je collectionne le plus haut et le plus bas entre 2h00 et 9h45
– je dessine un rectangle entre 9h45 et 22h45 avec ces niveauxCollect HH e LL in interval then plot rectangle1234567891011121314151617181920212223242526272829303132333435// Settings:startCollectTime = 20000 // 2:00endCollectTime = 94500 // 9:45endDrawTime = 224500 //22:45isCollectInterval = opentime >= startCollectTime and opentime < endCollectTimeisDrawInteval = opentime >= endCollectTime and opentime < endDrawTime//return isCollectInterval as "isCollectInterval", -isDrawInteval as "isDrawInteval"// Collect new highs and lowsif isCollectInterval and not isCollectInterval[1] thenHLev = 0LLev = +1073741824 // 2^30 --> just a big numberendifif isCollectInterval[1] thenLLev = min(LLev, Low[1])HLev = max(HLev, High[1])endif// Draw vertical segmentsif isDrawInteval <> isDrawInteval[1] thenidx = not isDrawIntevalDRAWSEGMENT(barindex[idx],LLev,barindex[idx],HLev) COLOURED(0,0,0,255)endif// hide lines where unusefulif isDrawInteval and isDrawInteval[1] thentrasparency = 255elsetrasparency = 0endifreturn HLev coloured(0,0,0,trasparency) as "HLev", LLev coloured(0,0,0,trasparency) as "LLev"J’ai créé un rectangle en combinant des lignes, de la transparence et des segments verticaux. Ce n’est pas la seule façon de faire cela.
Faites le moi savoir.1 user thanked author for this post.
12/12/2020 at 9:42 AM #15346312/12/2020 at 11:10 AM #153475D’accord,
je vous écris juste quelques commentaires:
– lors de l’ouverture de “endCollectTime” la ligne verticale gauche du rectangle “|” sera dessinée
– dans la barre suivante, vous verrez quelque chose comme “[”
– barre par barre le rectangle sera dessiné sans la ligne verticale droit (quelque chose comme ça, sans la ligne verticale indiqué “▭ ☚”)
– le rectangle ne sera complètement dessiné que lorsque le temps “endDrawTime” sera cliqué, à ce moment, vous le verrez dessiné comme ceci: “▭”Bon week-end à toi aussi!
12/15/2020 at 7:40 PM #153868Je mets le point final à ce topic. Après quelques recherches complémentaires, j’ai fini par comprendre que ce que je cherchais à faire était tout simplement impossible. A priori, il n’est pas possible de dessiner “dans le futur” et donc il n’est pas possible de dessiner mon rectangle en automatique car au moment du dessin (tel que je le souhaitais en tout cas – à partir de 9h45 donc), la bougie de 22h30 n’existant pas encore, on ne peut pas définir ce point comme cible. J’ai fini par me satisfaire d’un rectangle dessiné au fil de la journée et réactualisé à chaque nouvelle bougie + “DEFPARAM DRAWONLASTBARONLY = true” en paramètre pour ne pas avoir xx rectangles dessinés. Merci une nouvelle fois à Daniele d’avoir pris le temps de me répondre et je partage à toutes fins utiles le petit bout de code (la seule faille constatée pour l’anecdote : il a fallu que comme par hasard lundi, il n’y ait pas de bougie à 2h du matin ! et donc pas de dessin…quand ça veut pas, ça veut pas ! mon broker = IG).
dessin rectangle à partir de 9h45 jusqu'à 22h3012345678910111213141516171819202122232425262728DEFPARAM DRAWONLASTBARONLY = truedebut = 021500fin = 094500fin2 = 224500IF time = debut THENhaut = 0bas = 0barredebut = barindexENDIFIF time > debut AND time <= fin2 thenbarrefin = barindexENDIFIF time >= debut AND time <= fin THENIF high > haut THENhaut = highENDIFIF low < bas OR time = debut THENbas = lowENDIFENDIFIF time >= fin THENDRAWRECTANGLE(barredebut,haut,barrefin,bas)ENDIFRETURN12/15/2020 at 7:50 PM #153870Malgré le point final mis, si ça peut aider, en théorie d’ici très peu de temps tu auras la v11 avec IG en cours de déploiement pays après pays, et avec la v11 tu pourras dessiner dans les barres à droite du prix, soit avec une syntaxe simple de type barindex+N (N entier), soit à l’aide de l’instruction datetobarindex() qui permet de convertir des dates et horaires en barindex
1 user thanked author for this post.
12/15/2020 at 8:24 PM #15387512/15/2020 at 8:31 PM #153876 -
AuthorPosts
Find exclusive trading pro-tools on