Travail sur les prix (finissant par 20 par ex)

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #132175 quote
    imencity
    Participant
    Senior

    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:

    IF price = FINPRICE(20) THEN
    xxxx
    ENDIF

    Merci par avance.

    #132205 quote
    imencity
    Participant
    Senior

    Bon 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:

    Tracer une ligne horizontal à chaque centaine

    en modifiant les lignes par les price.

    y a pas encore de regex ou autre…

    s’il y a une solution je suis preneur.

    #132241 quote
    Nicolas
    Keymaster
    Master

    Si ç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.

    prixtest = 1020
    
    a = (prixtest)/20
    test = round(a)=a
    
    return test
    #132247 quote
    imencity
    Participant
    Senior

    Merci Nicolas,

    Une bidouille plus facile à mettre en place il est vrai…
    A quand un langage de prog plus puissant / complet dans PRT (fonctions, tableaux, math, …)   😉 ?

    Encore merci.

    #132250 quote
    Nicolas
    Keymaster
    Master

    Les 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 ! 😉

    #132340 quote
    JC_Bywan
    Moderator
    Master

    (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

Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.

Travail sur les prix (finissant par 20 par ex)


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
imencity @imencity Participant
Summary

This topic contains 5 replies,
has 3 voices, and was last updated by JC_Bywan
5 years, 9 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 05/18/2020
Status: Active
Attachments: No files
Logo Logo
Loading...