ProRealCode - Trading & Coding with ProRealTime™
Bonjour,
Vu mon niveau de programmation sur PRT, je cherchais un indicateur déjà prêt , qui affiche chaque jour, trois lignes horizontales sur le DAX :
Première ligne, le niveau de la clôture de la veille 17h30
Deuxième lignes, le niveau de l’ouverture de l’Open, 8h00
Troisième lignes, le niveau de l’ouverture de l’Open Cash, 9h00
Comme pour le pivot, la possibilité d’afficher les jours précédents, mais donc afficher uniquement ses trois niveaux (Par exemple de 8h (pour les 2 premiers) à -17h30)
J’ai essayé de chercher à droite à gauche, je ne trouve rien. Pourtant ses trois niveaux étant importants, je suis curieux de ne rien trouver, ou bien y a t il une solution déjà intégré dans la plateforme?
J’ai tenté de commencer un code… mais étant totalement nul, j’ai arrêté les dégâts!
J’espère que mon message est clair, si besoin je pourrais poster un exemple.
Merci beaucoup de votre aide / conseil .
Bonne journée, bon weekend à vous
A voir avec ce petit bout d’indicateur :
// --- settings
DaysBefore = 3
// --- end of settings
idate=date
//plot Open/close
if today-idate<=DaysBefore then
if time=173000 then
drawhline(close) coloured(100,100,69)
endif
if time=080000 then
drawhline(close) coloured(200,50,69)
endif
if time=090000 then
drawhline(close) coloured(150,50,32)
endif
endif
return
La variable “DaysBefore” étant la quantité de journées à afficher.
Merci.
J’ai essayé différentes manipulations, ce sont toujours des lignes droites . J’ai essayé de chercher des segment layouts
Je vais essayer de trouver un code comme le pivot qui change chaque jour , ça devrait m’aider.
Hello, Sur base du code de Nicolas, je l’ai mis un peu à ma sauce pour ne garder que les lignes du jour avant et du jour même. Je l’utilise sur l’UT 2min, heure à adapter si nécessaire pour d’autre UT. 9h02 est l’heure officiel d’ouverture du marché cash. S’affiche également un petit texte pour s’y retrouver durant la journée
idate=date
//plot Open/close
if today-idate<=1 then
if time=173000 then
fermcash=close
Fermday=day
Fermmonth=month
//drawhline(close) coloured(100,100,69)
endif
if time=080200 then
OuvFut=Open
Ouvday=day
Ouvmonth=month
//drawhline(close) coloured(200,50,69)
endif
if time=090200 then
Ouvcash=Open
Ouvday=day
Ouvmonth=month
//drawhline(close) coloured(150,50,32)
endif
endif
If time=currenttime-10000 Then
drawtext("Ferm Cash #Fermday##Fermmonth#",barindex,fermcash+2,SansSerif,standard,10)
drawtext("Ouv Fut #Ouvday##Ouvmonth#",barindex,OuvFut+2,SansSerif,standard,10)
drawtext("Ouv Cash #Ouvday##Ouvmonth#",barindex,Ouvcash+2,SansSerif,standard,10)
Endif
//return
return OuvFut coloured(150,50,32) STYLE(dottedline,2), OuvCash coloured(100,100,69) STYLE(dottedline,2), FermCash coloured(200,50,69) STYLE(dottedline,2)
Rho lala
Merci beaucoup! J’avais essayé des trucs mais vu mon niveau 0 … c’était une vraie cata!
Encore merci Nicolas et Stefou
Bonjour,
Je continue ce post pour un indicateur de même style (Je pense que c’est plus pertinent que d’ouvrir un autre sujet).
Sur du UT M5 je cherche à tracer le plus haut et le plus bas des X précédentes bougies.
Ceci sur des périodes définis (08h00-10h00 puis 10h00-14h00…). J’aimerai que les segments restent affichés malgré le breakout.
Cf ci dessous (code qui ne fonctionne pas + photo)
//Réglages
Périod1 = time >= 080000 and time < 103000
Périod2 = time >= 103000 and time < 120000
if Périod1 then
drawsegment(080000,highest[13],103000,highest[13]) coloured(0,0,0)
drawsegment(080000,lowest[13],103000,lowest[13]) coloured(0,0,0)
endif
if Périod2 then
drawsegment(103000,highest[6],120000,highest[6]) coloured(0,0,0)
drawsegment(103000,lowest[6],120000,lowest[6]) coloured(0,0,0)
endif
return
J’ai essayé en insérant la partie du code qui permet de faire le “reset” pour les segments, lignes INTRADAY mais cela ne marche pas.
D’autres sujet parle de cela mais ce n’est pas exactement ce dont j’ai besoin (désolé)
Je cherche à coder un signal concrétisé par un breakout de ligne horizontale
DRAWLINE +Ht/+Bas entre 2 horaires + Heure précise pour J & J+1
Je vous remercie de vos réponses !
Bonsoir, à la lecture du code trois remarques:
– les abscisses dans drawsegment doivent être des numéros de barre (barindex ou barindex[13] ou barindex[n] en définissant n ailleurs dans le programme s’il doit varier selon les cas), pas des horaires.
– l’instruction time correspond à l’horaire de clôture d’une bougie et non pas à l’heure qu’il est pendant une bougie, en conséquence dire time<103000 dans ton ut5mn ne va pas compter jusqu’à 10h30 mais jusqu’à la dernière bougie de clôture strictement inférieure à 10h30 en ut5 c’est à dire celle de 10h20 à 10h25
– j’ai le vague souvenir d’avoir lu quelque part il y a longtemps qu’il vaut mieux éviter les accents ou caractères spéciaux dans les noms de variables, mais je ne sais plus où (ni même si je ne me mélange pas les pinceaux avec un autre langage, mais par prudence j’évite les accents)
Bonne suite
Noobywan,
Merci de ta réponse mais je n’y arrive pas !
Je réitère donc ma demande (qui j’espère pourra servir à d’autres)
Voici la base du code :
//Périodes d'observations
PO1 = ?
PO2 = ?
//Périodes de restitutions
PR1 = time > 080000 and time =< 103000
PR2 = time > 103000 and time =< 120000
if PR1 then
drawsegment(barindex,PO1,barindex[2],PO1) coloured(0,0,0)
endif
if PR2 then
drawsegment(barindex,PO2,barindex[2],PO2) coloured(0,0,0)
endif
return
Ce n’est pas évident ;-(
Très bonne journée à tous
Je me suis trompé dans la photo, celle-ci est plus claire.
Si quelqu’un peut coder cela j’arriverai à me débrouiller ensuite…
Dernière chose voici ce que cela pourrait donner en visuel…
Ici nous somme en M 15, si on descend en M 5 ce serait bien de voir ces mêmes niveaux sur les mêmes plages horaire.
Merci encore
J’ai préparé celui là mais il ne fonctionne pas non plus… Je n’ai pas bien compris la notion d’enregistrement d’une variable notamment de barindex.
Par exemple, comment enregistrer la 10ème barre avant 10h30 ?
Voici ou j’en suis (c’est moche je pense !)
//Périodes sur lesquelles doivent être tracé les segments
time1 = time > 080000 and time =< 103000
time2 = time > 103000 and time =< 120000
time3 = time > 150000 and time =< 170000
//Périodes d'observations (PO) => Permet de stocker des coordonnées des segments
if time1 then//PO1 = enregistrement du plus haut et plus bas de la veille
higher1 = max(higher1,Dhigh(1))
lower1 = min(higher1,Dlow(1))
endif
if time2 then//PO2 = enregistrement des 5 chandeliers précedents 10h30
higher2 = max(higher2,high[5])
lower2 = min(higher2,low[5])
endif
if time3 then//PO3 = enregistrement des 10 chandeliers précedents 15h00
higher3 = max(higher3,high[10])
lower3 = min(higher3,low[10])
endif
//Restitution
if time1 then
drawsegment(barindex,higher1,barindex[1],higher1) coloured(0,0,0)
drawsegment(barindex,lower1,barindex[1],lower1) coloured(0,0,0)
endif
if time2 then
drawsegment(barindex,higher2,barindex[1],higher2) coloured(0,0,0)
drawsegment(barindex,lower2,barindex[1],lower2) coloured(0,0,0)
endif
if time3 then
drawsegment(barindex,higher3,barindex[1],higher3) coloured(0,0,0)
drawsegment(barindex,lower3,barindex[1],lower3) coloured(0,0,0)
endif
return
Pouvez-vous m’aider ? Merci de vos retours
J’ai à peu près réussi mais :
//Reseat des variables chaque jours
if intradaybarindex=0 then//Test si la première barre de la journée est bien la première
hh1 = 0
ll1 = close*10
hh2 = 0
ll2 = close*10
hh3 = 0
ll3 = close*10
hh4 = 0
ll4 = close*10
hh5 = 0
ll5 = close*10
hh6 = 0
ll6 = close*10
endif
//Période sur laquelle doivent être enregistré les plus Haut et Les plus bas
PO1 = time >= 000000 and time < 080000//PO1 = Période d'observation 1 etc...
PO2 = time => 080000 and time < 103000
PO3 = time => 103000 and time < 120000
PO4 = time => 120000 and time < 133000
PO5 = time => 133000 and time < 150000
PO6 = time => 150000 and time < 163000
//Enregistrement des plus haut et plus bas dans des variables
if PO1 then//De 00h à 08h
HH1=max(high,HH1)//Enregistrement du plus haut = HH1
if LL1=0 then
LL1=low
endif
LL1=min(low,LL1)//Enregistrement du plus bas = LL1 etc...
endif
if PO2 then
HH2=max(high,HH2)
if LL2=0 then
LL2=low
endif
LL2=min(low,LL2)
endif
if PO3 then
HH3=max(high,HH3)
if LL3=0 then
LL3=low
endif
LL3=min(low,LL3)
endif
if PO4 then
HH4=max(high,HH4)
if LL4=0 then
LL4=low
endif
LL4=min(low,LL4)
endif
if PO5 then
HH5=max(high,HH5)
if LL5=0 then
LL5=low
endif
LL5=min(low,LL5)
endif
if PO6 then
HH6=max(high,HH6)
if LL6=0 then
LL6=low
endif
LL6=min(low,LL6)
endif
//Période sur laquelle doient être tracé les segments
PR1 = time > 080000 and time =< 103000//PR1 = Période de restitution 1 etc...
PR2 = time > 103100 and time =< 120000
PR3 = time > 120100 and time =< 133000
PR4 = time > 133100 and time =< 150000
PR5 = time > 150100 and time =< 163000
PR6 = time > 163100 and time =< 180000
//tracé des segments
if PR1 then
drawsegment(barindex,HH1, barindex[1],HH1)coloured(0,255,0)style(line,4)
drawsegment(barindex,LL1, barindex[1],LL1)coloured(255,0,0)style(line,4)
endif
if PR2 then
drawsegment(barindex,HH2, barindex[1],HH2)coloured(0,255,0)style(line,4)
drawsegment(barindex,LL2, barindex[1],LL2)coloured(255,0,0)style(line,4)
endif
if PR3 then
drawsegment(barindex,HH3, barindex[1],HH3)coloured(0,255,0)style(line,4)
drawsegment(barindex,LL3, barindex[1],LL3)coloured(255,0,0)style(line,4)
endif
if PR4 then
drawsegment(barindex,HH4, barindex[1],HH4)coloured(0,255,0)style(line,4)
drawsegment(barindex,LL4, barindex[1],LL4)coloured(255,0,0)style(line,4)
endif
if PR5 then
drawsegment(barindex,HH5, barindex[1],HH5)coloured(0,255,0)style(line,4)
drawsegment(barindex,LL5, barindex[1],LL5)coloured(255,0,0)style(line,4)
endif
if PR6 then
drawsegment(barindex,HH6, barindex[1],HH6)coloured(0,255,0)style(line,4)
drawsegment(barindex,LL6, barindex[1],LL6)coloured(255,0,0)style(line,4)
endif
return
Sur la base du même principe, c’est à dire le tracé de segment en fonction des plus haut et plus bas antérieur (Segments qui doivent rester en place)
Comment écrire ?
S’il est 08h alors enregistrement du plus haut de la 10ème barre avant 8h00
Cela me permettra de faire mes tests et sans doute de simplifier le code pour les autres.
Merci
//Reseat des variables chaque jours
if intradaybarindex=0 then//Test si la première barre de la journée est bien la première
hh1 = 0
ll1 = close*10
hh2 = 0
ll2 = close*10
endif
//Bornes temporelles
P1 = 080000
P2 = 120000
P3 = 180000
if time = P1 then
hh1 = highest[10](high)
ll1 = lowest[10](low)
endif
if time = P2 then
hh2 = highest[5](high)
ll2 = lowest[5](low)
endif
//tracé des segments
if time = P1 then
drawsegment(barindex,HH1, barindex[10],HH1)coloured(0,0,0)style(line,2)
drawsegment(barindex,LL1, barindex[10],LL1)coloured(0,0,0)style(line,2)
endif
if time = P2 then
drawsegment(barindex,HH1, barindex[5],HH1)coloured(0,0,0)style(line,2)
drawsegment(barindex,LL1, barindex[5],LL1)coloured(0,0,0)style(line,2)
endif
return
Bon voilà ce que j’ai pu faire.
Je rappelle que l’idée est de partir d’une heure fixe (ici 8h et 12h) et à partir cette heure fixe, aller chercher les + haut et + bas précédents pour ensuite tracer un segment vers l’avant jusqu’à la prochaine borne/heure (et ceci tous les jours).
Le code précédent (post 117155) fonctionne mais j’aimerai remplacer les tranches horaires justement par cette heure fixe.
Sur la base de ce code – qui ne fonctionne pas :
Je sais que le sujet est redondant mais en m’inspirant des autres posts (qui ne reflète pas exactement ma demande) je n’arrive pas à reproduire les codes… Je suis une quiche en programmation et je pense avoir atteint les limites de ce que je pouvais faire seul.
Je suis arrivé à mes fins avec le code précédent mais pour faire des tests multiple j’aimerai aller au bout de celui-ci… plus simple d’utilisation.
Pouvez-vous m’aider ? avec mes excuses et mes remerciements.
Les versions varient selon le broker, je suppose que tu es en version v10.3 ou antérieure? Le tracé “vers l’avant” par code (=à droite du prix, “dans le futur” par rapport à la barre en cours) ne sera possible qu’à partir de la version v11. En v10.3 tu ne peux que dessiner ton segment au fur et à mesure depuis le passé vers la barre en cours.
Pour ton autre question, tu fais une boucle if pour voir si on est à ton P2, et si oui tu mets dans une variable ton barindex correspondant, par exemple barP2=barindex, puis tant que tu es dans la plage horaire voulue depuis P2, tu fais un highest[barindex-barP2](high), comme ça selon que tu es en M5 ou M15 ou toute ut qui a un horaire de close compatible avec ton P2, le nombre de bougies à considérer s’ajustera.
Tracé quotidien 3 lignes horizontales : 17h30 / 8h /9h
This topic contains 16 replies,
has 5 voices, and was last updated by jeanguy
6 years, 1 month ago.
| Forum: | ProBuilder : Indicateurs & Outils Personnalisés |
| Language: | French |
| Started: | 11/24/2018 |
| Status: | Active |
| Attachments: | 14 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.