Travail sur les prix (finissant par 20 par ex)
Forums › ProRealTime forum Français › Support ProOrder › Travail sur les prix (finissant par 20 par ex)
- This topic has 5 replies, 3 voices, and was last updated 5 years ago by
JC_Bywan.
-
-
05/18/2020 at 4:33 PM #132175
Bonjour,
Je cherche désespérément le code permettant de savoir si un prix se termine par « 20 » ou par « 50 » par exemple.
Evidemment il s’agit de fonction existante dans des langages de programmation standard mais sous Prorealcode est-ce que cela est possible ?
pour faire:
123IF price = FINPRICE(20) THENxxxxENDIFMerci par avance.
05/18/2020 at 7:47 PM #132205Bon si je comprends bien d’après mes recherches ça va être difficile. Je pense que ce n’est pas encore devoloppé et on doit bidouiller avec ce genre de truc:
https://www.prorealcode.com/topic/tracer-une-ligne-horizontal-a-chaque-centaine/#post-91468
en modifiant les lignes par les price.
y a pas encore de regex ou autre…
s’il y a une solution je suis preneur.
05/19/2020 at 8:13 AM #132241Si ça peut t’aider :
Un nombre entier est divisible par 20 si il se termine par 0, 20, 40, 60 ou 80.
Un nombre entier est divisible par 25 si il se termine par 0, 25, 50 ou 75.
123456prixtest = 1020a = (prixtest)/20test = round(a)=areturn test05/19/2020 at 9:29 AM #13224705/19/2020 at 9:36 AM #132250Les tableaux existent, voir ce sujet: array variables availability in ProRealTime – examples and discussions
Les fonctions viendront dans une mise à jour v11 sans doute.
Pour des instructions mathématiques qui manqueraient, n’hésite pas à me les lister stp, merci ! 😉
05/20/2020 at 7:54 AM #132340(en supposant que ton 20 est avant la virgule, pas en position variable avant ou après)
Tu prends ton nombre entier, tu le divises par 100, et tu y soustrais l’arrondi, pour vérifier que la différence vaut bien 0.2 :
Si nombre/100 – round(nombre/100) = 0.2 alors le nombre finissait par 20
Extrapolation autre que 20 : si tu veux 40 il faut =0.4, mais si tu veux quelque chose supérieur à 50 alors round va arrondir du mauvais côté (ex 1060 donnera 10.6 et 11 donc il faudra chercher =-0.4, et donc séparer les cas sup et inf à 50 si on veut généraliser (ou pour ne pas séparer les cas, utiliser l’astuce qui décale de 0.5 avant d’arrondir via round, qu’on peut trouver dans plusieurs files via le bouton search du site, au choix)
Petit mot pour le “futur débutant” lecteur du topic qui se demande pourquoi compliquer avec round: au moment d’écrire ces lignes sont utilisées selon le broker la v10.3 ou la v11. En v10.3 on n’a que round, en v11 on a floor et ceil, et en v11 il suffit bien sûr d’utiliser floor au lieu de round pour ne pas avoir besoin de séparer les cas sup et inf à 50
-
AuthorPosts
Find exclusive trading pro-tools on 