Probleme de code de Distribution des données
Forums › ProRealTime forum Français › Support ProBuilder › Probleme de code de Distribution des données
- This topic has 13 replies, 4 voices, and was last updated 2 years ago by
JC_Bywan.
-
-
12/01/2022 at 9:16 AM #205102
Bonjour à tous les prorealcodeurs,
Je rencontre actuellement un problème pour effectuer une distribution d’un indicateur stochastic.
En effet j’ai essayé de mettre en place un code qui charge rapidement les données plutot que de faire un lookback par rapport au temps présent.
Seulement plusieurs problèmes se posent à moi..
- Je n’arrive pas à réactualiser à chaque nouvelle Barindex
- Il y a une erreur dans le comptage des données sur les y
Est-ce que vous auriez une idée pour que je puisse avancer ?
Merci par avance.
Code12345678910111213141516171819202122232425262728293031323334Defparam drawonlastbaronly=trueonce signal=undefinedp = max(1,p)k = max(1,k)indicator = round(stochastic[p,k](close))IF date >Startdate Thensignal=indicatorfor a = 0 to 100if signal = a then$perc[a] = $perc[a]+1count=count+1maxval=max(maxval,count)If islastbarupdate ThenBreakendifendifnextENDIFdrawtext("#maxval#",barindex,50,sansserif,bold,14) coloured(0,0,258)for b = 0 to 100texttable=$perc[b]drawrectangle(barindex+5,b,barindex+5+$perc[b],b) coloured(0,255,255)drawtext("#texttable#",barindex+7+$perc[b],b,sansserif,bold,14) coloured(0,0,258)nextreturn 0 coloured(0,0,0,0) as "Line",108 coloured(0,0,0,0) as "Line",signal as "Signal"12/01/2022 at 9:33 AM #205106Selon moi, et si j’ai bien compris ton idée, tu devrais faire comme ceci:
En lisant l’historique (à partir de startdate) on stocke les valeurs.
Puis à chaque tick reçu sur la dernière barre, on update le graphique de la distribution. Par contre, ta variable $perc va continuer à s’incrémenter selon la position de la stochastic en temps réel, est-ce souhaitable ?1234567891011121314151617181920212223242526272829303132333435363738Defparam drawonlastbaronly=truestartdate=20221120p=8k=5once signal=undefinedonce p = max(1,p)once k = max(1,k)indicator = round(stochastic[p,k](close))IF date >Startdate Thensignal=indicatorfor a = 0 to 100if signal = a then$perc[a] = $perc[a]+1count=count+1maxval=max(maxval,count)endifnextENDIFif islastbarupdate thenfor b = 0 to 100texttable=$perc[b]drawrectangle(barindex+5,b,barindex+5+$perc[b],b) coloured(0,255,255)drawtext("#texttable#",barindex+7+$perc[b],b,sansserif,bold,14) coloured(0,0,258)nextdrawtext("#maxval#",barindex,50,sansserif,bold,14) coloured(0,0,258)endifreturn 0 coloured(0,0,0,0) as "Line",108 coloured(0,0,0,0) as "Line",signal as "Signal",indicator12/01/2022 at 9:51 AM #205108Bonjour Nicolas,
Merci pour ton retour.
Justement non l’incrémentation doit être stoppée ‘est pour ca que j’ai essayé de break à chaque nouvelle barindex , sinon il comptera a chaque fois que le sto touchera un niveau …
Je souhaiterai que le code se recalcul a chaque fois que l’on a une nouvelle barindex.
Et je ne sais pas si tu as remarqué mais il y a une erreur sur les rectangles dessinés supérieurs au 50, quelques uns ne se dessinent pas. Je n’arrive pas à comprendre pourquoi ..
12/01/2022 at 11:21 AM #205111Dans cette version j’introduit une variable $lastbar qui permet de tester si on a déjà récupéré les infos sur ce chandelier ou non.
Pour les valeurs qui ne s’affichent pas, c’est uniquement car les valeurs ne sont pas renseignés dans le tableau $perc (à cause de l’arrondi sans doute) et du coup renvoi un N/A et tu utilises cette info dans tes coordonnées, j’ai modifié ce comportement.
123456789101112131415161718192021222324252627282930313233343536373839404142Defparam drawonlastbaronly=truestartdate=20221120p=8k=5once signal=undefinedonce p = max(1,p)once k = max(1,k)indicator = round(stochastic[p,k](close))IF date >Startdate and barindex<>$lastbar[0] Then$lastbar[0]=barindexsignal=indicatorfor a = 0 to 100if signal = a then$perc[a] = $perc[a]+1count=count+1maxval=max(maxval,count)endifnextENDIFif islastbarupdate thenfor b = 0 to 100texttable=$perc[b]if $perc[b]>0 thendrawrectangle(barindex+5,b,barindex+5+$perc[b],b) coloured(0,255,255)drawtext("#texttable#",barindex+7+$perc[b],b,sansserif,bold,14) coloured(0,0,258)elsedrawtext("#texttable#",barindex+7,b,sansserif,bold,14) coloured(0,0,258)endifnextdrawtext("#maxval#",barindex,50,sansserif,bold,14) coloured(0,0,258)endifreturn 0 coloured(0,0,0,0) as "Line",108 coloured(0,0,0,0) as "Line",signal as "Signal",indicator12/01/2022 at 1:17 PM #205125Merci pour ton aide ! J’aurais pu chercher encore longtemps ^^
J’avais une petite idée en parallèle que j’aimerai essayer (ne me donne pas la solution).
Nous avons l’habitude de travailler sur le close de différents indicateurs. Et je me suis demandé si je pouvais capturer le passage des hauts/bas de chaque points de stochastic sur des périodes courantes.
Mes questions sont les suivantes :
- est ce que je dois utiliser deux tables distincites haut et bas.
- ou alors est ce que je peux utiliser les fonctions high et low ?
- et est ce que au chargement du programme, le code peut il récupérer les mouvements haut et bas qui se sont produits ?
Bien à toi
12/01/2022 at 1:39 PM #205128Pour l’histoire de l’arrondi ce qui est bizarre c’est que le signal qui est retourné il est arrondi correctement.
Et que lorsque tu essayes de les intérger dans la table ils ne sont pas présents.
J’ai entouré en bleu les anomalies
12/01/2022 at 4:57 PM #205132Pour l’histoire de l’arrondi ce qui est bizarre c’est que le signal qui est retourné il est arrondi correctement.
Oui mais puisque tu testes un seuil de la stochastic précis, il est possible que ce seuil ne soit jamais présent, si tu testes 55 et que la stochastique passe de 50 à 60 sans s’arrêter sur 55 (à fin de bougie), tu n’auras pas de comptage.
12/01/2022 at 9:48 PM #205152Sur le principe je suis d’accord avec toi, seulement le signal renvoyé est close est donc logiquement je devrais le capturer sur le niveau en question .. Quelque chose m’échappe
Le moyen que j’aurais pour vérifier se serait de controler mon maxval en comptant manuellement l’ensemble des closes.
12/02/2022 at 9:25 AM #205157Puisque tu testes un niveau exact:
signal = a
Il faut impérativement que la stochastique soit strictement égale à 1,2,3,4,5,6,.ou..100 lors d’une clôture.
Si cela n’est pas vérifié sur les X dernières bougies, alors on n’incrémente pas.
L’idéal c’est de le vérifier à la main. Sur la copie d’écran jointe, on voit bien que la sto n’a jamais été fixé tout en haut (au dessus de 90), donc pas de comptage.
12/06/2022 at 10:40 PM #205327Bonsoir Nicolas,
Désoler de la réponse tardive.
Pour moi il y a toujours un petit problème.
J’ai comparé mon maxval par rapport à la somme des “texttable” (compté manuellement) et je ne trouve pas la même valeur alors que le maxval est juste par rapport à sa date d’activation.
Lorsque j’ai compté manuellement j’ai eu un écart de presque 10 données.
12/07/2022 at 9:36 AM #205334Bonjour Antoine,
Parmi les façons de résoudre ceci, j’ai pris la moins élégante et la plus intéressante à la fois, car permet d’écrire un exemple d’usage d’isset:
1234567891011121314151617181920212223242526272829303132333435Defparam drawonlastbaronly=truestartdate=20221120p=8k=5once signal=undefinedonce p = max(1,p)once k = max(1,k)indicator = round(stochastic[p,k](close))IF date >Startdate and barindex<>$lastbar[0] Then$lastbar[0]=barindexsignal=indicatorfor a = 0 to 100if not(isset($perc[a])) then$perc[a] = 0endifif signal = a then$perc[a] = $perc[a]+1count=count+1maxval=max(maxval,count)endifnextENDIFif islastbarupdate thenfor b = 0 to 100texttable=$perc[b]if $perc[b]>0 thendrawrectangle(barindex+5,b,barindex+5+$perc[b],b) coloured(0,255,255)drawtext("#texttable#",barindex+7+$perc[b],b,sansserif,bold,14) coloured(0,0,258)elsedrawtext("#texttable#",barindex+7,b,sansserif,bold,14) coloured(0,0,258)endifnextdrawtext("#maxval#",barindex,50,sansserif,bold,14) coloured(0,0,258)endifreturn 0 coloured(0,0,0,0) as "Line",108 coloured(0,0,0,0) as "Line",signal as "Signal",indicator12/07/2022 at 10:29 AM #20533912/07/2022 at 7:06 PM #20535912/07/2022 at 9:42 PM #205366Elle force la définition quel que soit le rang, afin d’empêcher d’avoir des valeurs non définies qui se réinjectent en elles-mêmes (plus de détails dans nos échanges par email si besoin).
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on