Declaration Tableau et boucle For

Forums ProRealTime forum Français Support ProBuilder Declaration Tableau et boucle For

Viewing 8 posts - 1 through 8 (of 8 total)
  • #240165

    Bonjour,

    Je pense ne pas bien comprendre la declaration de tableau.
    Le code ci-dessous ne lance aucun Trade et je suspecte mon utilisation du remplissage d’un tableau dans une boucle FOR.

    Sans la ligne “deltaEMA = 0”, on me demande de declarer la variable “deltaEMA” alors que c’est mon tableau.
    Du coup je pense que je ne declare pas ce tableau correctement car aucun Trade se lance avec ce code.

    Quelqu’un peut m’aider? Merci a tous.

    emaLength = 50
    curvatureLength =7
    volumeThreshold = 15
    curvatureThreshold = 5

    // Calcul EMA
    ema = ExponentialAverage[emaLength](close) // Current EMA value

    // Stockage des valeurs de EMA pour calcul de la coubure
    IF BarIndex >= curvatureLength THEN
    deltaEMA = 0
    // Remplissage du tabeau avec les valeurs EMA selon la longueur de courbre
    FOR i = 0 TO curvatureLength – 1 DO
    $deltaEMA[i] = ExponentialAverage[BarIndex – i](emaLength) – ExponentialAverage[BarIndex – i – 1](emaLength)
    NEXT

    // Calcul courbure
    curvature = ($deltaEMA[0] + $deltaEMA[1] + $deltaEMA[2] + $deltaEMA[3] + $deltaEMA[4] + $deltaEMA[5] + $deltaEMA[6]) / curvatureLength

    // Calcul derivee seconde simplifiee
    IF curvatureLength >= 2 THEN
    secondDifference = deltaEMA[0] – deltaEMA[1]
    ENDIF

    // Calcul de courbure en fonction de derivee seconde.
    IF Abs(secondDifference) > 0 THEN
    curvature = curvature / Abs(secondDifference)
    ELSE
    curvature = 0
    ENDIF
    ENDIF

    IF (intradayTradingActive) THEN
    IF (curvature > curvatureThreshold AND volumeCheck > volumeThreshold) THEN
    BUY AT MARKET
    SET STOP LOSS 8
    ENDIF
    ENDIF

     

    #240166

    Certaines variables sont manquantes, postez le fichier ITF s’il vous plaît.

     

    #240171

    Merci pour votre retour.

    Ci-joint le fichier  .itf

     

    #240179

    Oui, je pense vraiment que c’est une erreur dans la boucle FOR, justement là où tu utilises l’expression :

    Ajoutez cette ligne à la fin de votre code, afin que vous puissiez voir quelle est la valeur de l’expression pour comprendre si c’est une valeur correcte ou incorrecte :

     

    #240198

    Bonjour

    Renvoie bien une valeur mais lorsque je l’utilise dans la fonction EMA cela renvoie 0.

    En fait, je voudrais que dès que le nombre de période de mon graph est supérieur à Curvaturelength (nombre de période nécessaire pour calculer la courbure),
    pour chacune des périodes suivantes, les 7 dernières différence de EMA (dans le cas ou Curvature length = 7 ) soient stockées dans un tableau et utilisées dans le calcul de “Curvature”.

    Quelle serait la syntaxe correcte de la boucle FOR pour effectuer cette opération?

    Merci

    #240218

    J’ai changé :

    • ligne 18
    • ligne 19
    • lignes 21-23
    • ligne 28
    • ligne 33

     

    1 user thanked author for this post.
    #240253

    Merci, j’ai compris mon erreur.

    J’ai un autre code utilisant une boucle FOR et un tableau pour lequel j’ai un problème.

    Cette fois, la stratégie est de calculer, à chaque période, la courbe polynomiale du 2nd degré qui fit les 7 périodes précédentes de la courbe EMA.
    Une fois l’équation de la courbe trouvée, je calcule le rayon de courbure de celle-ci et déclenche un achat en fonction d’un rayon limite.

    Pourrais-tu regarder ce code?

    Merci

    #240323

    Essayez d’ajouter ces lignes à la fin et vous verrez que RadiusOfCurvature a une valeur très élevée, c’est donc TOUJOURS > curvatureThreshold.
    Vérifiez vos calculs, d’un point de vue formel le code me semble correct.

     

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

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