ajouter une courbe de tendance mathématique polynomiale ordre 2

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #245496 quote
    roro_50
    Participant
    New

    Bonjour, j’aimerais une âme charitable pour ajouter sur un graphique boursier une courbe de tendance mathématique polynomiale ordre 2.

    Sur Excel c’est très facile, mais je suis surpris que sur les graphiques boursiers cette courbe n’est pas disponible ? où je ne la connais pas ! tout à fait possible . . .

    Ne maitrisant rien en mathématique, je pense pour cette courbe il faut lui donner une période d’échantillons, si c’est le cas, j’aimerais une période de 5 ans pour avoir une tendance “solide”.

    merci de votre aide,

    #245503 quote
    Iván González
    Moderator
    Master

    Bonjour,

    Voici une version optimisée et rapide de l’indicateur de courbe de tendance polynomiale d’ordre 2, que vous pouvez afficher sur un graphique boursier dans ProRealTime.

    Ce script calcule automatiquement une parabole ajustée aux derniers X cours de clôture (ici, 200 bougies par défaut, mais vous pouvez adapter la période selon vos besoins).

    ✅ Cette version utilise drawonlastbaronly = true et islastbarupdate pour améliorer la vitesse d’affichage, tout en traçant la courbe uniquement sur la dernière bougie.

    Voici le code à insérer dans un indicateur ProBuilder :

    // Indicator: 2nd-degree polynomial trend curve
    // Author: Iván González
    // date: 02-04-2025
    // version: 0
    // Purpose: Fit a parabola over the last X periods
    defparam drawonlastbaronly = true
    
    once sample = 200 // Number of bars to fit the curve
    
    // Initialize summations
    sumX = 0
    sumX2 = 0
    sumX3 = 0
    sumX4 = 0
    sumY = 0
    sumXY = 0
    sumX2Y = 0
    
    // Calculate necessary summations for least squares method
    FOR i = 0 TO sample - 1 DO
       x = i
       y = close[i]
       
       sumX = sumX + x
       sumX2 = sumX2 + x * x
       sumX3 = sumX3 + x * x * x
       sumX4 = sumX4 + x * x * x * x
       sumY = sumY + y
       sumXY = sumXY + x * y
       sumX2Y = sumX2Y + x * x * y
    NEXT
    
    // Denominator of the coefficient formulas
    denom = (sample * sumX2 * sumX4 + 2 * sumX * sumX2 * sumX3 - POW(sumX2, 3) - sample * POW(sumX3, 2) - POW(sumX, 2) * sumX4)
    
    // Calculate polynomial coefficients if denominator is valid
    IF denom <> 0 THEN
       a = (sample * sumX2 * sumX2Y + sumX * sumX3 * sumY + sumX2 * sumX * sumXY - POW(sumX2, 2) * sumY - sample * sumX3 * sumXY - POW(sumX, 2) * sumX2Y) / denom
       
       b = (sample * sumX4 * sumXY + sumX * sumX2 * sumX2Y + sumX2 * sumX3 * sumY - POW(sumX2, 2) * sumXY - sumX * sumX4 * sumY - sample * sumX3 * sumX2Y) / denom
       
       c = (sumY - b * sumX - a * sumX2) / sample
    ENDIF
    
    // Draw the fitted polynomial curve on the chart
    IF islastbarupdate THEN
       FOR i = sample DOWNTO 1 DO
          x1 = i
          x2 = i - 1
          
          y1 = a * x1 * x1 + b * x1 + c
          y2 = a * x2 * x2 + b * x2 + c
          
          drawsegment(barindex - x1, y1, barindex - x2, y2) coloured("orange") style(line,2)
       NEXT
    ENDIF
    
    // Return the most recent value of the polynomial trend (x = 0)
    xNow = 0
    polyTrendNow = a * xNow * xNow + b * xNow + c
    
    RETURN polyTrendNow AS "Polynomial Curve"
    
    LucasBest thanked this post
    #245534 quote
    roro_50
    Participant
    New

    Merci beaucoup ! ! !

    je vais tester cela prochainement,

    J’ai bien fait de vous demander cela, car j’étais incapable de sortir ce programme ! ! !

    je vais essayer de l’analyser, mais cela risque d’être très compliqué pour moi.

    Encore MERCI à vous d’avoir consacré un peu de votre temps pour moi.

    Roger.

    #245535 quote
    roro_50
    Participant
    New

    Je viens de tester => cela fonctionne ! ! ! je retrouve les mêmes valeurs que mon fichier excel.

    Juste une question “encore” serait-il possible d’afficher cette courbe sur le graphique des cours, et non comme indicateur indépendant ?
    ( cela me permettrait de voir en un clin d’œil, si le cours est au-dessus ou en dessous de sa tendance.  )

    #245546 quote
    Iván González
    Moderator
    Master

    Bonjour. Avant d'insérer l'indicateur, assurez-vous de cocher la case d'insertion au prix (voir capture d'écran).

    #245553 quote
    Quino
    Participant
    Average

    Merci Roro et Yvan pour cet indicateur vraiement intéressant notamment en ce qui concerne la courbe polymoniale

    J’ai rajouté une variable de retard pour voir dans le passé à x Périodes la forme de la courbe polymoniale à ce moment là.

    i.e : y = close[i+retard] et drawsegment(barindex-retard – x1, y1, barindex-retard – x2, y2) coloured(“noir”) style(line,2)

    Iván González thanked this post
    #245563 quote
    LucasBest
    Participant
    Junior

    Salut,
    je ne comprends pas cette partie du code… Y a t’il une erreur

    // Return the most recent value of the polynomial trend (x = 0)
    xNow = 0
    polyTrendNow = a * xNow * xNow + b * xNow + c
    
    // polyTrendNow = a * xNow * xNow + b * xNow + c
    // polyTrendNow = a * 0 * 0 + b * 0 + c
    // polyTrendNow = 0 + 0 + c
    // polyTrendNow = c

    ?

    #245580 quote
    Iván González
    Moderator
    Master

    Effectivement, ce que tu dis est correct :
    Lorsque xNow = 0, la formule quadratique polyTrendNow = a * x² + b * x + c se réduit uniquement à c.
    J’ai décidé de garder la formule complète pour deux raisons :

    – Clarté structurelle: cela permet de voir clairement qu’il s’agit de l’évaluation du polynôme au point actuel (x = 0), tout comme on le fait pour d’autres valeurs dans la boucle de dessin.

    – Facilité d’extension: si plus tard on souhaite évaluer le polynôme pour une autre valeur de xNow, par exemple un décalage vers l’avant (xNow = -n), on a déjà la formule complète prête à l’emploi, sans avoir à modifier quoi que ce soit.

    En résumé, il n’y a pas d’erreur : il s’agit simplement d’une évaluation explicite de la fonction polynomiale au point x = 0, ce qui donne c par définition même de la parabole.

    LucasBest thanked this post
    #245595 quote
    roro_50
    Participant
    New

    Bonjour, et excusez du retard (c’est mon boulot qui me prend tout mon temps).

    j’ai beaucoup de mal à suivre votre discution; mais votre programme fonctionne, il me sera donc très utile

    ( je trade sur le “moyen” terme, 1 position par semaine (manque de temps . . .), donc cet indicateur me convient bien.

    merci beaucoup !

    #245602 quote
    LucasBest
    Participant
    Junior

    Merci pour le retour Iván

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

ajouter une courbe de tendance mathématique polynomiale ordre 2


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
roro_50 @roro_50 Participant
Summary

This topic contains 9 replies,
has 4 voices, and was last updated by LucasBest
10 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 04/01/2025
Status: Active
Attachments: 1 files
Logo Logo
Loading...