Annonce
Réduire
Aucune annonce.
Ads
Réduire
[Graphe AT PRo : programmation]
Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Bonjour,

    En étant nul en programmation, j'ai besoin de vos lumières.

    Il s'agit de tracer deus courbes à partir de 6 valeurs calculées auparavant. Les valeurs sont
    A>B>C>D>E>F En prenant le cours de clôture, qui doit en principe se trouver entre A et F ou à défaut prendre la valeur elle-même, et si par exemple,la valeur se trouve entre B et C, dire que une des courbes nommée SUPERIEUR=B et l'autre nommée INFERIEUR=C


    Merci

    Commentaire


    • Bonjour Sphynx,

      J'ai les mêmes résultats que toi pour le NM.
      Merci pour tes encouragements mais avoue que le problème n'était pas très difficile à résoudre...


      Bonjour Bomdu,

      Pourrais-tu être un peu plus explicite dans l'énoncé de ton cahier des charges?

      Commentaire


      • Bonjour Smallcaps,

        Je vais essayer d'être plus explicite:

        J'ai 6 valeurs calculés et par rapport au cours de cloture je veux en utiliser 2 de ces valeurs pour construir mes deux courbes.

        Un exemple:
        A=15 B=15.3 C=15.8 D=16 E=16.3 F=16.5 par ordre croissante, bien sur.

        mon cours de cloture (Cloture(0)) est à 15.7 donc il se trouve entre les valeurs B et C qui sont les deux points à utiliser pour la construction des courbes, courbe1=B et courbe2=C. Si la cloture se trouve à 16.4 les points à utiliser seraient E et F.

        note: si le cours de cloture est inferieur à A ou superieur à F il faut prendre ce cours de cloture lui-même avec A ou F selon le cas.

        Merci

        Bomdu

        Commentaire


        • bonjour,

          j'essaie d'écrire une régle stat pour trier les actions dont les 6 dernières ouvertures et clotures ont eu lieu entre les bandes de Bollinger, avec une volatilité faible (c'est le parametre "indice").
          Cependant, certaines actions correspondantes à ces criteres ne sont pas sélectionnées. Pourquoi ??
          je voudrais faire la même stat en weekly, est-ce la même régle ??

          merci
          jlr

          régle:

          <font size="1">Colonne1 = (UBOLL(0)-LBOLL(0))/MBOLL(0)*100
          Colonne2 = CTXT$(Colonne1,2) & "%"

          indice = (INDEX_VOLAT.VOLATILITE(0)-INDEX_VOLAT.VOLMIN(0)) /
          (INDEX_VOLAT.VOLMAX(0)-INDEX_VOLAT.VOLMIN(0))
          limite = 0.1

          Si CROISE(Cloture,UBOLL)>0
          et cloture(1) > RSAR.RLBOLL(1) et cloture(2) > RSAR.RLBOLL(2)
          et cloture(3) > RSAR.RLBOLL(3) et cloture(4) > RSAR.RLBOLL(4)
          et cloture(5) > RSAR.RLBOLL(5) et cloture(6) > RSAR.RLBOLL(6)
          et cloture(1) < RSAR.RUBOLL(1) et cloture(2) < RSAR.RUBOLL(2)
          et cloture(3) < RSAR.RUBOLL(3) et cloture(4) < RSAR.RUBOLL(4)
          et cloture(5) < RSAR.RUBOLL(5) et cloture(6) < RSAR.RUBOLL(6)
          et indice < limite
          Alors SelectionAchat

          Si CROISE(Cloture,LBOLL)<0
          et cloture(1) > RSAR.RLBOLL(1) et cloture(2) > RSAR.RLBOLL(2)
          et cloture(3) > RSAR.RLBOLL(3) et cloture(4) > RSAR.RLBOLL(4)
          et cloture(5) > RSAR.RLBOLL(5) et cloture(6) > RSAR.RLBOLL(6)
          et cloture(1) < RSAR.RUBOLL(1) et cloture(2) < RSAR.RUBOLL(2)
          et cloture(3) < RSAR.RUBOLL(3) et cloture(4) < RSAR.RUBOLL(4)
          et cloture(5) < RSAR.RUBOLL(5) et cloture(6) < RSAR.RUBOLL(6)
          et indice < limite
          Alors SelectionVente</font id="size1">

          Commentaire


          • Bonjour jlr,

            Ton intention dis-tu est de tester si les cours <u>d'ouverture et de cloture </u> des 6 dernières périodes ont bien eu lieu entre les BB avec une volatilité faible.
            Cependant je ne vois pas de référence aux cours d'<u>ouverture </u>dans le programme de ta règle statistique...Peut-être est-ce cela qui coince?

            Bon week end.

            Commentaire


            • bonjour, je souhaiterai afficher sur les graphes des points à la manière des points pivots que Smallcaps nous a donné ici (que je remercie d'ailleurs). Mais, car il y a un mais, le calcul de ces points varie en fonction d'une variable , d'où la difficulté.
              En clair: si la cloture du jour est supérieure à (Plushaut du jour+ plus bas du jour)/2 on obtient 4 points dont le mode de calcul sera détaillé plus loin
              si la cloture du jour est inférieure à (Plushaut du jour+ plus bas du jour)/2 on obtient 4 autres points dont le mode de calcul sera détaillé plus loin.

              Ces 4 points correspondent à des objectifs théoriques de cours pour le lendemain.voici les modes de calcul en fonction de la condition décrite ci dessus:

              si la cloture du jour est supérieure à (Plushaut du jour+ plus bas du jour)/2 ALORS
              Point 1 = [ (Plushaut du jour - Plus bas du jour)X 0,46] + Plushaut du jour
              Point 2 = [ (Plushaut du jour - Plus bas du jour)X 0,10] + Plushaut du jour
              Point 3 = Plushaut du jour -[( Plushautdu jour-Plusbas du jour)X 0,28]
              Point 4 = Plushaut du jour -[( Plushautdu jour-Plusbas du jour)X 0,50]


              si la cloture du jour est inférieure à (Plushaut du jour+ plus bas du jour)/2 ALORS
              Point 1 = [ (Plushaut du jour - Plus bas du jour)X 0,50] + Plusbas du jour
              Point 2 = [ (Plushaut du jour - Plus bas du jour)X 0,28] + Plusbas du jour
              Point 3 = Plusbas du jour -[( Plushautdu jour-Plusbas du jour)X 0,10]
              Point 4 = Plusbas du jour -[( Plushautdu jour-Plusbas du jour)X 0,46]


              Avec mes remerciements anticipés et bon WE



              Commentaire


              • Bonsoir Sphynx,

                Tu as presque écrit le programme dans ton énoncé...
                Bien sûr il faut encadrer tout çà par un test sur RANGHISTO qui doit être = FINHISTO pour que les 4 points ne soient tracés que le dernier jour de l'historique. Sous forme de tirets pour qu'ils soient plus visibles.
                De plus il y a un 3ème cas où aucun point n'est représenté, c'est celui dans lequel CLOTURE(0)=(HAUT(0)+BAS(0))/2. Cela peut arriver...regarde l'exemple de THOMSON ci-dessous.

                PROGRAMME :
                -----------------------------------------------------------
                <font size="1">//Indicateur "QUATRE POINTS" de Sphynx
                //

                SI RANGHISTO = FINHISTO
                ALORS

                SI CLOTURE>(HAUT+BAS)/2
                ALORS
                PT1 = 0.46*(HAUT-BAS)+HAUT
                PT2 = 0.10*(HAUT-BAS)+HAUT
                PT3 = HAUT- 0.28*(HAUT-BAS)
                PT4 = HAUT-0.50*(HAUT-BAS)
                FINSI

                SI CLOTURE<(HAUT+BAS)/2
                ALORS
                PT1 = 0.50*(HAUT-BAS)+BAS
                PT2 = 0.28*(HAUT-BAS)+BAS
                PT3 = BAS- 0.10*(HAUT-BAS)
                PT4 = BAS-0.46*(HAUT-BAS)
                FINSI

                SI CLOTURE=(HAUT+BAS)/2
                ALORS
                PT5=CLOTURE
                FINSI

                FINSI</font id="size1">
                -----------------------------------------------------------

                La fenêtre propriétés :

                <center><img src='http://images.pro-at.com/200409/b/prop_4_pts.gif' alt='' /></center>


                Exemple avec VIVENDI :

                <center><img src='http://images.pro-at.com/200409/b/vivendi.gif' alt='' /></center>

                Et avec THOMSON pour laquelle la 3ème condition dont je parle ci-dessus est justement réalisée le 24 sept.
                J'ai choisi de placer un "gros" point rouge sur la clôture ce jour là plutôt que de ne rien représenter. Mais çà se discute évidemment.

                <center><img src='http://images.pro-at.com/200409/b/thomson.gif' alt='' /></center>

                Bon week end.

                Commentaire


                • génial, mais je me suis perdu dans les ranghisto. Peux t on afficher les tirets sur les 2 dernières bougies? Car là il y a qq modifs à faire notamment avec ranhisto je crois.

                  Commentaire


                  • Bonjour,

                    pour afficher les 4 points sur les deux derniers jours, il suffit de modifier la condition comme suit:
                    <font face="Courier New">
                    SI (( RANGHISTO = FINHISTO) ou ( RANGHISTO = FINHISTO-1))
                    </font id="Courier New">

                    Cordialement,
                    RickenBroc

                    Commentaire


                    • Exact RickenBroc.
                      Ou encore au choix :

                      SI RANGHISTO >= FINHISTO-1
                      ALORS
                      ....

                      SI RANGHISTO > FINHISTO-2
                      ALORS
                      ....

                      Commentaire


                      • merci à vous deux, ça marche impeccable. Bon WE

                        Commentaire


                        • merci beaucoup smallcaps, j'avais effectivement fait une grosse bourde !!
                          ça fonctionne très bien maintenant, sauf pour le weekly <img src='http://www.pro-at.com/style/images/icones/icon_smile_sad.gif' border='0' alt='' title='' align='middle' />

                          jlr

                          Commentaire


                          • Bonjour jlr,

                            Si tu places ta règle statistique à la fois sous les onglets JOUR et SEMAINE, il ne te donnera comme résultat que les actions qui satisfont <u>à la fois </u>les deux règles (voir doc GrapheAt Pro).

                            Il faut aussi vérifier que tu disposes d'assez de jours pour calculer la stat. Tu peux vérifier çà sous le bouton "Options" disponible dans la fenêtre "Statistiques" en haut.
                            Il faut un nombre de jour suffisant pour que çà marche :

                            <center><img src='http://images.pro-at.com/200409/b/stats_options.gif' alt='' /></center>

                            Commentaire


                            • <b>CONNAISSEZ-VOUS LA REGRESSION NON-PARAMETRIQUE?</b>

                              Les modèles classiques de régression sont paramétriques. Ils ne fournissent qu'une approximation, souvent limitée, de la structure sous-jacente des données auxquels ils sont appliqués.
                              Les modèles statistiques qui explicitent plus précisément les données sont souvent plus complexes que de simples polynômes fussent-ils trigonométriques ou autres (simple polynôme du 1er degré pour l'indicateur de régression linéaire REGLIN dans GrapheAT Pro par exemple).

                              A la différence de ces modèles, les méthodes de régression non-paramétriques consistent à estimer la relation liant les données <u>sans faire la moindre hypothèse a priori </u>sur la nature de cette liaison qui reste donc inconnue.
                              On doit surtout à Rosenblatt (1965), à Parzen (1962), à Cleveland(1979) et à bien d'autres la formalisation de cette approche. Son principe est très simple.

                              On définit une fenêtre glissante qui contient le point où on désire effectuer l'estimation. Ce point sera nommé point focal par la suite.
                              La taille de la fenêtre, dont le choix est laissé à l'utilisateur, influe fortement sur le résultat obtenu à l'instar de l'effet de la taille de la fenêtre glissante de calcul d'une moyenne mobile.
                              On choisit ensuite une fonction pondérante, ou noyau (kernel en anglais), des plus proches voisins de ce point qui sont contenus dans la fenêtre. La pondération dépend de la distance de ces voisins au point focal de telle sorte que les points éloignés du point focal soient affectés d'un poids moindre que les points qui en sont proches. Il existe une grande variété de fonctions pondérantes. Leur choix est peu influant sur le résultat final. On utilise souvent une fonction TRI-CUBIQUE définie comme suit .

                              Si Di est la distance du point focal au proche voisin i et h la 1/2 largeur de la fenêtre mobile centrée au point focal, en notant : Zi = Di/h cette distance relative, la pondération du voisin i est égale à :

                              Wi = (1 - |Zi|^3)^3 si Zi < 1 c'est à dire pour tout voisin i dans la fenêtre,
                              Wi = 0 si Zi >= 1 pour tous les points extérieurs à la fenêtre ou aux limites de celle-ci.

                              <center><img src='http://images.pro-at.com/200409/b/kernel2.gif' alt='' /></center>

                              La méthode procède comme suit :

                              1- On positionne la fenêtre du kernel de telle sorte que son axe vertical soit sur le point focal c'est-à-dire centré sur le cours à partir duquel on souhaite calculer la régression.
                              2- On calcule les poids des voisins du point focal courant à l'aide de la fonction W ci-dessus définie.
                              3- On effectue ensuite une régression polynomiale locale sur les points i contenus dans la fenêtre et affectés des poids Wi. On utilise pour ce faire la méthode des moindres carrés.
                              Et on calcule la valeur de la régression au point focal qui donne l'estimation cherchée.
                              4- On déplace la fenêtre d'une période vers la droite.
                              5- On répète les pas précédents sur l'ensemble des points sur lesquels on souhaite calculer la régression non-paramétrique.

                              <center><img src='http://images.pro-at.com/200409/b/essai1.gif' alt='' /></center>

                              Ici, afin de simplifier les calculs nécessaires, nous choisirons un polynôme de degré 1 pour effectuer chaque régression locale pondérée. Cela permet en effet de calculer les paramètres de la droite de régression locale pondérée par la méthode des moindres carrés, pour chaque position de la fenêtre du kernel, sans avoir à manipuler de matrices (paramètres A, B, C, D, E, ALPHA et BETA dans le programme ci-dessous).
                              Les points obtenus dans les différentes fenêtres forment la courbe de régression cherchée.

                              Cette méthode s'apparente à la méthode LOWESS (LOcally WEighted Scatterplot Smoothing) de Cleveland qui comporte en plus des itérations de recherche de la robustesse du résultat obtenu dans le cas où des données seraient très éloignées des autres et risqueraient de fausser le résultat. Nous n'introduirons pas cette étape ici.

                              PROGRAMME :
                              --------------------------------------------------------------------------------------------------------
                              <font size="1">//REGRESSION NON-PARAMETRIQUE TYPE LOWESS
                              //V1.6 du 11/09/2004
                              //

                              //Calcul du nb de points dans la fenêtre de pondération
                              //et de la distance du bord au centre de la fenêtre
                              SI RANGHISTO=1
                              ALORS
                              SI MOD(ENTIER(P2*P3),2)=0
                              ALORS
                              N=ENTIER(P2*P3)+1
                              SINON
                              N=ENTIER(P2*P3)
                              FINSI
                              DMAXI= ENTIER(N/2)
                              FINSI

                              //Calcul de la régression locale et déplacement du kernel
                              //
                              SI RANGHISTO=FINHISTO-P1
                              ALORS

                              //Calcul des poids de proximité W(k) du kernel
                              //centré sur le point de départ
                              //
                              POUR (P2+DMAXI+1) COURS
                              W(0)=(1-(ABSOLU((-DMAXI-1+RANGPOUR)/DMAXI))^3)^3
                              W(2*((RANGPOUR-1)-DMAXI))=W(0)
                              SI RANGPOUR=(DMAXI+1) ALORS BREAK
                              FINPOUR

                              //Calcul de la régression locale
                              //
                              POUR (P2-DMAXI+1) COURS
                              POUR N COURS
                              X(0)=RANGPOUR
                              Y(0)=CLOTURE
                              FINPOUR

                              A=SOMME(W,N)
                              B=SOMME(W*X,N)
                              C=SOMME(W*Y,N)
                              D=SOMME(W*X*Y,N)
                              E=SOMME(W*X*X,N)

                              ALPHA=(A*D-B*C)/(A*E-B*B)
                              BETA=(C*E-B*D)/(A*E-B*B)
                              LOWESS(DMAXI)=ALPHA*X(DMAXI)+BETA

                              //Decalage de la fenêtre du kernel
                              //
                              SI RANGPOUR <=P2-DMAXI
                              ALORS
                              POUR N COURS
                              W(2*RANGPOUR-(N+2))=W(2*RANGPOUR-(N+1))
                              FINPOUR
                              FINSI

                              FINPOUR

                              //Traitement des derniers cas
                              //
                              J=1
                              TANTQUE J<=DMAXI FAIRE

                              //Déplacement fenêtre de pondération
                              POUR (N-J+1) COURS
                              W(2*RANGPOUR-(N-J+3))=W(2*RANGPOUR-(N-J+2))
                              FINPOUR

                              //Régression locale sur les derniers cas
                              POUR (N-J) COURS
                              X(0)=RANGPOUR
                              Y(0)=CLOTURE
                              FINPOUR

                              A=SOMME(W,N-J)
                              B=SOMME(W*X,N-J)
                              C=SOMME(W*Y,N-J)
                              D=SOMME(W*X*Y,N-J)
                              E=SOMME(W*X*X,N-J)

                              ALPHA=(A*D-B*C)/(A*E-B*B)
                              BETA=(C*E-B*D)/(A*E-B*B)
                              LOWESS(DMAXI-J)=ALPHA*X(DMAXI-J)+BETA

                              J=J+1
                              FINTANTQUE

                              FINSI </font id="size1">
                              ---------------------------------------------------------------------------------------------------

                              Fenêtre Propriétés :

                              <center><img src='http://images.pro-at.com/200409/b/propri%e9t%e9s1.gif' alt='' /></center>

                              Le paramètre P1 fixe le cours de fin de la régression non-paramétrique.
                              Si on souhaite la tracer jusqu'au dernier jour de l'historique, faire P1 = 0 comme ici.
                              Le paramètre P2 définit le nombre total de cours sur lesquels on souhaite calculer la régression avant P1 cours. Ici P2 = 100 cours.
                              P3 précise le ratio qui permet de déterminer combien la fenêtre glissante du kernel de pondération va contenir de cours. Ici P3 = 0.50, c'est-à-dire que la fenêtre glissante va contenir P2*P3 cours soit 100*0.50 = 50 cours. Ce nombre est transformé en nombre impair si nécessaire pour des raisons de calcul. On prendra 51 cours en l'occurence.

                              Afin d'illustrer ce que l'on obtient :

                              <center><img src='http://images.pro-at.com/200409/b/essai2.gif' alt='' /></center>

                              Comme on le constate ci-dessus où 2 courbes sont tracées avec des valeurs différentes du nombre de cours pris en compte, la largeur de la fenêtre du kernel de pondération a un effet important sur le résultat :
                              - si elle est trop petite (11 cours dans la fenêtre donnant la courbe bleue), il n'y a pas assez de données pour effectuer les calculs et le résultat est proche du point focal, la courbe obtenue au final est peu lissée, il y a peu de biais mais beaucoup de variance globale ;
                              - inversement si la largeur de la fenêtre est grande (51 cours pour la courbe rouge), il y a plus de données, le résultat est sur-lissé et éloigné des points réels, le biais est plus grand, la variance globale est plus faible que dans le cas précédent.

                              On obtient malgré tout des résultats qui semblent moins retardés qu'avec une simple moyenne mobile ou même qu'avec une classique régression paramétrique linéaire.
                              Les creux et les sommets sont atténués.

                              <center><img src='http://images.pro-at.com/200409/b/moyenne_11.gif' alt='' /></center>
                              <center><img src='http://images.pro-at.com/200409/b/moyenne_51.gif' alt='' /></center>
                              <center><img src='http://images.pro-at.com/200409/b/essai5.gif' alt='' /></center>
                              <center><img src='http://images.pro-at.com/200409/b/essai6.gif' alt='' /></center>

                              Vos impressions?

                              Commentaire


                              • Bonjour Smallcaps

                                Je viens de prendre connaissance de ton travail et je ne connaissais pas la "Légression non paramétrique" et pour cause je vais bientôt apprendre les divisions.

                                Je vais regarder cela de près et te donnerai mon avis, c'est le minimum qu'on te doit.

                                J'ai fait de mon coté des stats sur les Moyennes mobiles et sur la MamaFama avec l'aide du programme "Trade AchatVente" et "fenêtre affichage" dans graph AT. Je n'ai pas encore fini mais autant je n'ai pas réussi trouver un avantage avec MamaFama (mais c'est peut être de ma faute malgré bon nombre d'essais sur les paramétrages) autant l'utilisation des moyenne 20, 100 et 150 peuvent apporter quelques résultats (pas la fortune mais peuvent être un outil au trader) par leurs croisement <img src='http://www.pro-at.com/style/images/icones/icon_smile_big.gif' border='0' alt='' title='' align='middle' />.

                                FOKI

                                Commentaire

                                Chargement...
                                X