Stochastique anomalie sur UT 2 minutes

Forums ProRealTime forum Français Support ProBuilder Stochastique anomalie sur UT 2 minutes

Viewing 2 posts - 1 through 2 (of 2 total)
  • #225896

    Bonjour à tous et mes meilleurs voeux pour cette nouvelle année !

    Voici le programme STO que j’ai réécris (juste pour une question d’esthétique) :

    // STO pgmeK = 100 * (close – lowest[perK]) / (highest[perK] – lowest[perK])

    D = Average[perD](K)
    r=5
    Ks = Average[r](K)
    Ds = Average[r](D)

    Ligne100 =100
    ligne80 = 80
    ligne50 = 50
    ligne20 = 20
    ligne0 = 0

    return Ks as “K%”,Ds as “D%”,ligne100 as “Ligne 100”,ligne80 as “Ligne 80”,ligne50 as “Ligne 50”, ligne20 as “Ligne 20”,ligne0 as “Ligne 0”

    Et jusqu’à ce matin, tout allait bien et cela continue d’aller bien si j’utilise des UT > 5 minutes sur EUR/USD  mais quand je descends à 2 minutes, le calcul de mon indicateur se dérègle et les valeurs passent au dessus de 100 (voir image jointe). Ce défaut s’installe après la période de non cotation du 1 janvier quand j’utilise une période de 30 barres mais s’installe avant si j’utilise une période plus petite.  Quand j’augmente la période jusqu’à 62 barres, le défaut persiste. Si je fais une période de 63 (ou plus), le défaut disparait.

    J’aimerais bien comprendre ce qui se passe et si l’un de vous a une idée, je suis preneur.

    Par ailleurs, quels outils ou instructions efficaces peut-on utiliser pour “débugger” un programme. Comment suivre pas à pas, les valeurs prises par une variable et voir à quel moment, une anomalie s’installe  ?

    Merci pour votre aide,

    Bonne journée,

    Gabriel

     

     

     

     

    #226047

    Bonjour à tous,

    Bon, puisque mes questions ont  laissé chacun de vous coi, je n’ai pas eu d’autre choix que de tenter d’y répondre par moi-même (lol).

    En fait, il s’agissait d’une classique division par zéro non gérée apparemment. Voici donc un code qui fonctionne maintenant :

    // STO pgme

    denom = (highest[perK] – lowest[perK])

    If denom <>0 THEN
    K = 100 * (close – lowest[perK]) / denom
    D = Average[perD](K)
    ENDIF

    Ks = Average[r](K)
    Ds = Average[r](D)

    Ligne100 =100
    ligne80 = 80
    ligne50 = 50
    ligne20 = 20
    ligne0 = 0

    return Ks as “K%”,Ds as “D%”,ligne100 as “Ligne 100”,ligne80 as “Ligne 80”,ligne50 as “Ligne 50”, ligne20 as “Ligne 20”,ligne0 as “Ligne 0”

    Concernant le debugging, je vais reposer la question dans un topic particulier car il me semble que c’est un point important et que cela pourrait être utile pour tout un chacun le cas échéant.

    Bonne journée à vous,

    G.

     

     

     

     

     

     

     

     

     

     

Viewing 2 posts - 1 through 2 (of 2 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login