ProRealTime
Pour discuter sur l’interface de ProRealTime Software, nos configurations graphiques...

Comment coder «le 2 ème plus haut » sur x days précédent ?

par GOLDENBOY » 16 oct. 2018 22:32

Hello tout le monde :mercichinois:

DHigh(1) c’est bien le plus haut de la journée précédente ,

mais moi je cherche à coder :arrow: « le deuxième ou troisième » :idea: plus haut de x journée précédente et je ne sais comment faire :?



:prier: :?:

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par David » 16 oct. 2018 23:27

le manuel est ton ami
https://www.prorealtime.com/fr/pdf/probuilder.pdf

page 41

DHigh(N)
Prix le plus haut de la n-ième journée antérieure
à celle de la barre courante

Re: Comment coder «le 2 ème plus haut » sur x day précédent

par GOLDENBOY » 16 oct. 2018 23:52

Bonsoir Greg et David , merci beaucoup pour vos réponses :mercichinois: ,

le canal de Donchian et la page 41 de prt que je connais parfaitement David depuis le temps :lol2: ne donnent pas solution à mon problème malheureusement :roll:

:arrow: On imagine 5 journées de bourse ,

je veux coder la droite « « du deuxième » » plus haut journalier (et non le plus haut) de ces 5 journées par exemple :?: :idea:

Si le lundi le plus haut de la journée du cac est à 5400 , le mardi 5500, mercredi 5200 , jeudi 5300 et le vendredi 5350 par exemple ,

Mon code doit me tracer une droite du plus haut de la journée du lundi soit 5400

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par David » 17 oct. 2018 00:04

ok je comprends mieux la subtilité de ta question.

Faut comparer tous les plus haut entre eux dans une boucle et garder les deux plus grands à chaque fois. Sinon les stocker dans un tableau qui se trie. Mais je n'ai pas l'impression que prt permet ce dernier.

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Scopy » 17 oct. 2018 00:23

Cela donnerait quelque chose comme ça, je l'écrirai en plus propre demain (enfin en prt, je ne pense pas que la syntaxe soit la bonne et il se fait tard), cette question va probablement me permettre de répondre à ma problématique du moment, donc merci :)

For i = 1 to 4 do
__if High > Max1 then
____Max1 = High
__elsif High > Max2 then
____Max2 = High
__endif
Next i

return Max2

Je relirai et testerai demain, ca devrait marcher mais je me surprendrais à écrire un truc bon du premier coup.

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par GOLDENBOY » 17 oct. 2018 00:25

Ok merci Scopy :mercichinois: ,

A demain , heureux que mon idée puisse t’aider :top:

Oui il faut peut être que le code fixe d’abord la valeur du plus haut par journée , après peut-être comparer les valeurs entre elles ...

et non les plus hauts qui sont nombreux pour une seule journée et s’arrêter au deuxième

Après niveau programmation je suis pas une :idea: :lol2:

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par David » 17 oct. 2018 00:28

Code : #

Ndays = 5
Max1 = 0
Max2 = 0

FOR i = 1 TO Ndays DO
     IF DHigh(i) > Max1 THEN 
          Max1 = DHigh(i)
     ELSIF DHigh(i) > Max2 THEN 
          Max2 = DHigh(i)
     ENDIF
NEXT

RETURN Max2 

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Scopy » 17 oct. 2018 00:55

Merci David pour la syntaxe, ca semble effectivement plus propre.
Je ne suis pas sur qu'il soit nécessaire d'initialiser les Max1 et Max2, prt prenant une valeur 0 par défaut, mais c'est plus propre.

DHigh ressort la valeur max du jour et High uniquement le max de la Bougie, cela ne fera pas de différence si tu es en Bougie daily, mais aura des fonctionnements différents si tu n'es pas en daily.

Les parenthèses fonctionnent ? Je croyais qu'il fallait des crochets, jamais essayé avec des parenthèses.

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Scopy » 17 oct. 2018 10:09

Code : #

NPeriod = 10
Max1 = 0
Max2 = 0

Max1 = highest[NPeriod](high)

FOR i = 0 TO NPeriod DO
    IF High[i] > Max2 AND High[i] < Max1 THEN
        Max2 = High[i]
    ENDIF
NEXT

RETURN Max2
Code corrigé, il faut le faire en deux étapes, d'abord calculer le max, puis boucler pour avoir le second max, on ne peut pas faire les deux en meme temps.

Ce code te donne le Max2 sur le nombre de périodes que tu veux, en daily ce serait un Max2 daily, en hebdo un Max2 hebdo ...

Si pour une raison quelconque tu souhaites afficher le Max2 Daily en étant en hour, c'est possible, mais il faut changer les High par DHigh et il peut y avoir des subtilités de syntaxes.

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Euraed » 17 oct. 2018 10:54

En passant
Pour étendre le principe à un classement décroissant des n derniers plus haut, tu peux utiliser la notion de PILE (dans une array par exemple).
Dès qu'il y a un nouveau plus haut, il est placé en sommet de pile et tu assures une rotation des contenus sur la pile (le i (n+1) devient le précédent i(n) );
A noter qu'ainsi dans l'array tu peux associer aussi d'autres caractéristiques/arguments du n ème point haut, tels que time stamp, volume etc...

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Scopy » 17 oct. 2018 11:18

Je ne crois pas que prt permette l'utilisation de pile, les variables sont très limitées : double ou booléen.

A moins que je sois totalement passé à coté de quelque chose ? Après tu peux recréer une pile manuellement.

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Euraed » 18 oct. 2018 11:10

Ah...je ne connais pas du tout prt, désolé.

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par GOLDENBOY » 18 oct. 2018 12:36

Merci Scopy, Euraed et David pour votre investissement :mercichinois:

Oui j’aimerai mettre cette indicateur sur mon graphique en 21 ticks ou 5 min, je veux que ce soit recalculé automatiquement tous les jours sur les X jours ,

donc je remplace par Dhigh pour avoir le deuxième + haut journalier des X days , c’est bien ça :?:

NB: Je vais tester ce soir ou ce week-end car énormément de boulot :cry: , il faut bien faire cela pour manger et payer son loyer :roll:

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Scopy » 18 oct. 2018 14:14

En fait le nombre entre crochets (NbPeriod) indique sur combien de périodes il va chercher les plus hauts. Il faut donc que tu calcules le nombres de périodes correspondant au nombre de jours. En 5min c'est facile, en 21Tick je ne sais pas.

En 5min ca donnerait un truc comme ça. A tester, le code fonctionne, mais je n'ai pas vérifié s'il donnait le bon résultat.
Le souci est qu'en 5minutes, il faut afficher au moins 10000 ticks pour avoir 10 jours et ca devient un peu lourd à calculer.

Code : #

NDays = 5
NPeriod = NDays*24*60/5
Max1 = 0
Max2 = 0

Max1 = highest[NPeriod](Dhigh(0))

FOR i = 0 TO NPeriod DO
    IF DHigh(i) > Max2 AND DHigh(i) < Max1 THEN
        Max2 = DHigh(i)
    ENDIF
NEXT

RETURN Max2

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par GOLDENBOY » 18 oct. 2018 18:00

Il me semble que j’ai vu un code sur le forum qui permettait justement à un indiceur de s’adapter sur toutes les unités de temps :roll:

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Scopy » 18 oct. 2018 23:42

Comment ça ?
Les indicateurs s'adaptent à toutes les unités de temps, puisqu'ils comptent en barres. Que la barre représente 1 journée, 5 minutes ou 122 ticks ne change rien.

Je dis juste que je ne sais pas calculer exactement le nombre de barres correspondant à X jours en 21 ticks, peut-être en prenant le volume ? Mais si tu mets par défaut un nombre de période très élevée, tu auras le calcul du deuxième max sur les quelques derniers jours, le "quelque" n'étant pas forcément clairement défini.

Dans tous les cas, si tu affiches en 21 ticks, je doute que tu puisses afficher un historique très grand, et tu as besoin d'afficher l'historique pour pouvoir calculer un indicateur.

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par GOLDENBOY » 19 oct. 2018 12:49

Après c’est seulement sur quelques jours , 1 semaine par exemple avec une mise à jour journalière :cry:

Est qu’avec les heures et les jours de la semaine ça ne pourrait pas simplifier le code :?: :idea:

J’ai essayé le code je crois qu’il ne fonctionne pas , ça me fait un grand rectangle rempli gris :shock:

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Scopy » 19 oct. 2018 15:58

Il fonctionne chez moi, mais effectivement, si tu l'affiches comme un indicateur, il va faire une mise à l'échelle en incluant le 0 ce qui n'est pas lisible du tout et donne l'effet d'un grand rectangle.

Comment ça avec les heures ? En fait le souci de lisibilité est que pour afficher un historique aussi lointain (plusieurs jours en 5 minutes est un historique très lointain) il faut que les données soient dispo et affichées, d'ou la nécessité d'afficher bien trop de point.

Je ne vois pas ce que tu veux dire en parlant d'heures et jours de la semaine. Mais je suis loin d'être un expert sur prt.

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par GOLDENBOY » 25 oct. 2018 23:15

Scopy si tu l'affiches pas comme indicateur , tu l'affiches comme quoi :lol2: :?:

:roll:

Re: Comment coder «le 2 ème plus haut » sur x days précédent

par Scopy » 25 oct. 2018 23:32

Tu peux afficher comme un indicateur sur la meme fenètre, ou sur une nouvelle fenètre.

Sujets similaires
40 000 ème sujet
Fichier(s) joint(s) par Cissou » 28 oct. 2022 15:17 (11 Réponses)
Le 7 ème art le cinéma, musical
par ChristelleP » 09 déc. 2024 21:30 (4 Réponses)
Un précédent signal en appelle un autre
par YanaPhil » 10 nov. 2016 13:26 (5 Réponses)
Tracer le plus haut et plus bas du jour précédent
par Eren » 20 févr. 2019 06:46 (7 Réponses)
Plus haut et plus bas du jour précédent
par ChristelleP » 14 avr. 2020 21:47 (1 Réponses)
résultat économique prévision vs précédent
Fichier(s) joint(s) par tatu06 » 24 mai 2020 22:20 (5 Réponses)
code PRT plus haut/bas M/H/J de la période (M/H/J) précédent
Fichier(s) joint(s) par Amarantine » 12 août 2020 21:24 (13 Réponses)
Pivot 4H et court jour precedent
Fichier(s) joint(s) par liukang97 » 14 déc. 2020 21:17 (9 Réponses)