Annonce
Réduire
Aucune annonce.
Ads
Réduire
Market profile
Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • bonjour,

    que veux tu dire par :

    1x1 ou 2x2 ou 3x3 ou (4x4 grand max).

    tu peut le développer, stp.

    merci.

    Commentaire


    • --> réponse en mp lol!
      Computer day-trader sur contrats à terme
      Mon twitter : CharlesAntoine Levoy

      Commentaire


      • Good Morning!
        J'ai modifié le code du MP (une fois de plus), la séance asiatique est d'une seule couleur MidnightBlue, ensuite toutes les heures ont une couleur différentes jusqu'à la close US. Pour la pré-open US c'est SeanGreen (vert trés clair) et FireBrick (rouge) pour l'open. Sur MT4 on est à cheval car prés open à 14h30 est sur mt4 ça démarre à 14h, donc il faut faire attention et peut-être tracer des lignes pour avoir les niveaux (pour le moment impossible de créer un MP avec TPO de 30 min). Mais c'est couleur reste pratique surtout lorsque qu'on abandonne le trading matinal sur les indices euro pour passer au trading des indices us en début d'aprés-midi. Sinon pour le code de l'ib il est disponible sur le site MQL (et elle se règle aux heures souhaité, pas de problème) :


        Le code forex (avec pro-at lorsque l'on copie et colle certain code le site rajoute des / c'est un espèce de bug à la con! il faut les enlver pour que le code fonctionne, attention de ne pas enlevre les // type }//if en début de phrase qui font partie du code)
        :

        //+------------------------------------------------------------------+
        //| Market Profile FX Caltonio.mq4 |
        //| Levoy Charles-Antoine |
        //| http://trader-design.over-blog.com/ |
        //+------------------------------------------------------------------+
        #property copyright "Levoy Charles-Antoine"
        #property link "http://trader-design.over-blog.com/"
        #property indicator_chart_window


        extern datetime StartDate = D'2009.09.01 00:00';
        extern bool lastdayStart = true;
        extern int CountProfile = 4;


        int fontsize=10;
        int i,j;
        double LastHigh,LastLow,CurPos;
        bool signal;
        //+------------------------------------------------------------------+
        //| Custor indicator deinitialization function |
        //+------------------------------------------------------------------+
        int deinit()
        {
        ObjectsDeleteAll(0,OBJ_RECTANGLE);
        return(0);
        }
        //+------------------------------------------------------------------+
        //| Custom indicator initialization function |
        //+------------------------------------------------------------------+
        int init()
        {
        string short_name;


        //---- name for DataWindow and indicator subwindow label
        short_name="MarketProfile";
        IndicatorShortName(short_name);
        SetIndexLabel(0,short_name);

        return(0);
        }

        //+------------------------------------------------------------------+
        //| Custom indicator iteration function |
        //+------------------------------------------------------------------+
        int start()

        {
        deinit();
        double onetick;
        double Mediana=0;
        int MaxSize=0;
        int MySize=0;
        int MySizeA=0;
        int MySizeB=0;
        int MySizeC=0;
        int MySizeD=0;
        int MySizeE=0;
        int MySizeF=0;
        int MySizeG=0;
        int MySizeH=0;
        int MySizeI=0;
        int MySizeJ=0;
        int MySizeK=0;
        int MySizeL=0;
        int MySizeM=0;
        int MySizeN=0;
        int MySizeO=0;
        int MySizeP=0;
        int MySizeQ=0;
        int MySizeR=0;
        int BACK=0;
        if (lastdayStart) StartDate=Time[0];

        int x=Period();
        if (x>240) return(-1);
        if (x<1) return(-1);


        BACK=0;
        while (TimeDayOfYear(Time[BACK])>TimeDayOfYear(StartDate) || TimeYear(Time[BACK])!=TimeYear(StartDate) && (BACK BACK++;
        if (BACK>=Bars) return(0);
        }//while


        onetick = 1/(MathPow(6,Digits));
        i=BACK;
        ////
        int cycles;

        for (cycles=CountProfile;cycles>0;cycles--) {

        signal=false;
        LastHigh=High;
        LastLow=Low;
        while (!signal)
        {
        //if (i+1==Bars) signal=true;
        if (High[i+1]>LastHigh) LastHigh=High[i+1];
        if (Low[i+1] MaxSize=0;
        MySize=0;

        if (TimeDay(Time)!=TimeDay(Time[i+1]))
        {

        signal=true;
        CurPos=LastLow;
        while (CurPos<=LastHigh){
        MySizeA=0;
        MySizeB=0;
        MySizeC=0;
        MySizeD=0;
        MySizeE=0;
        MySizeF=0;
        MySizeG=0;
        MySizeH=0;
        MySizeI=0;
        MySizeJ=0;
        MySizeK=0;
        MySizeL=0;
        MySizeM=0;
        MySizeN=0;
        MySizeO=0;
        MySizeP=0;
        MySizeQ=0;
        MySizeR=0;
        for (j=i;j>=BACK;j--) {
        if ((High[j]>=CurPos) && (Low[j]<=CurPos)) {
        MySize++;
        if ((TimeHour(Time[j])>=21) && (TimeHour(Time[j])<00)) MySizeB++; else
        if ((TimeHour(Time[j])>=00) && (TimeHour(Time[j])<06)) MySizeC++; else
        if ((TimeHour(Time[j])>=06) && (TimeHour(Time[j])<07)) MySizeD++; else
        if ((TimeHour(Time[j])>=07) && (TimeHour(Time[j])<08)) MySizeE++; else
        if ((TimeHour(Time[j])>=08) && (TimeHour(Time[j])<09)) MySizeF++; else
        if ((TimeHour(Time[j])>=09) && (TimeHour(Time[j])<10)) MySizeG++; else
        if ((TimeHour(Time[j])>=10) && (TimeHour(Time[j])<11)) MySizeH++; else
        if ((TimeHour(Time[j])>=11) && (TimeHour(Time[j])<12)) MySizeI++; else
        if ((TimeHour(Time[j])>=12) && (TimeHour(Time[j])<13)) MySizeJ++; else
        if ((TimeHour(Time[j])>=13) && (TimeHour(Time[j])<14)) MySizeK++; else
        if ((TimeHour(Time[j])>=14) && (TimeHour(Time[j])<15)) MySizeL++; else
        if ((TimeHour(Time[j])>=15) && (TimeHour(Time[j])<16)) MySizeM++; else
        if ((TimeHour(Time[j])>=16) && (TimeHour(Time[j])<17)) MySizeN++; else
        if ((TimeHour(Time[j])>=17) && (TimeHour(Time[j])<18)) MySizeO++; else
        if ((TimeHour(Time[j])>=18) && (TimeHour(Time[j])<19)) MySizeP++; else
        if ((TimeHour(Time[j])>=19) && (TimeHour(Time[j])<20)) MySizeQ++; else
        if ((TimeHour(Time[j])>=20) && (TimeHour(Time[j])<21)) MySizeR++;


        }//if
        }//for
        if (MySizeA+MySizeB+MySizeC+MySizeD+MySizeE+MySizeF+MySizeG+MySizeH+MySizeI+MySizeJ+MySizeK+MySizeL+MySizeM+MySizeN+MySizeO+MySizeP+MySizeQ+MySizeR>MaxSize){
        MaxSize=MySizeA+MySizeB+MySizeC+MySizeD+MySizeE+MySizeF+MySizeG+MySizeH+MySizeI+MySizeJ+MySizeK+MySizeL+MySizeM+MySizeN+MySizeO+MySizeP+MySizeQ+MySizeR;
        Mediana=CurPos;
        }
        if (i-MySizeA>=0)
        if(ObjectFind("rec"+"A"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeA!=0) {
        ObjectCreate("rec"+"A"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time, CurPos,Time[i-MySizeA],CurPos+onetick);
        ObjectSet("rec"+"A"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, MidnightBlue);
        }//if
        if(ObjectFind("rec"+"B"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeB!=0) {
        ObjectCreate("rec"+"B"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeB], CurPos,Time[i-MySizeA-MySizeB],CurPos+onetick);
        ObjectSet("rec"+"B"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, MidnightBlue);
        }//if
        if(ObjectFind("rec"+"C"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeC!=0) {
        ObjectCreate("rec"+"C"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB], CurPos,Time[i-MySizeA-MySizeB-MySizeC],CurPos+onetick);
        ObjectSet("rec"+"C"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, MidnightBlue);
        }//if
        if(ObjectFind("rec"+"D"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeD!=0) {
        ObjectCreate("rec"+"D"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD],CurPos+onetick);
        ObjectSet("rec"+"D"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, RoyalBlue);
        }//if
        if(ObjectFind("rec"+"E"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeE!=0) {
        ObjectCreate("rec"+"E"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE],CurPos+onetick);
        ObjectSet("rec"+"E"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, DodgerBlue);
        }//if
        if(ObjectFind("rec"+"F"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeF!=0) {
        ObjectCreate("rec"+"F"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF],CurPos+onetick);
        ObjectSet("rec"+"F"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, SkyBlue);
        }//if
        if(ObjectFind("rec"+"G"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeG!=0) {
        ObjectCreate("rec"+"G"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG],CurPos+onetick);
        ObjectSet("rec"+"G"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, SteelBlue);
        }//if
        if(ObjectFind("rec"+"H"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeH!=0) {
        ObjectCreate("rec"+"H"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH],CurPos+onetick);
        ObjectSet("rec"+"H"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Green);
        }//if
        if(ObjectFind("rec"+"I"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeI!=0) {
        ObjectCreate("rec"+"I"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI],CurPos+onetick);
        ObjectSet("rec"+"I"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, DarkGreen);
        }//if
        if(ObjectFind("rec"+"J"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeJ!=0) {
        ObjectCreate("rec"+"J"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ],CurPos+onetick);
        ObjectSet("rec"+"J"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, MediumSeaGreen);
        }//if
        if(ObjectFind("rec"+"K"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeK!=0) {
        ObjectCreate("rec"+"K"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK],CurPos+onetick);
        ObjectSet("rec"+"K"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, FireBrick);
        }//if
        if(ObjectFind("rec"+"L"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeL!=0) {
        ObjectCreate("rec"+"L"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL],CurPos+onetick);
        ObjectSet("rec"+"L"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Chocolate);
        }//if
        if(ObjectFind("rec"+"M"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeM!=0) {
        ObjectCreate("rec"+"M"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM],CurPos+onetick);
        ObjectSet("rec"+"M"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Sienna);
        }//if
        if(ObjectFind("rec"+"N"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeN!=0) {
        ObjectCreate("rec"+"N"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN],CurPos+onetick);
        ObjectSet("rec"+"N"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Teal);
        }//if
        if(ObjectFind("rec"+"O"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeO!=0) {
        ObjectCreate("rec"+"O"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN-MySizeO],CurPos+onetick);
        ObjectSet("rec"+"O"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Gold);
        }//if
        if(ObjectFind("rec"+"P"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeP!=0) {
        ObjectCreate("rec"+"P"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN-MySizeO], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN-MySizeO-MySizeP],CurPos+onetick);
        ObjectSet("rec"+"P"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Goldenrod);
        }//if
        if(ObjectFind("rec"+"Q"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeQ!=0) {
        ObjectCreate("rec"+"Q"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN-MySizeO-MySizeP], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN-MySizeO-MySizeP-MySizeQ],CurPos+onetick);
        ObjectSet("rec"+"Q"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, DarkGoldenrod);
        }//if
        if(ObjectFind("rec"+"R"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeR!=0) {
        ObjectCreate("rec"+"R"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN-MySizeO-MySizeP-MySizeQ], CurPos,Time[i-MySizeA-MySizeB-MySizeC-MySizeD-MySizeE-MySizeF-MySizeG-MySizeH-MySizeI-MySizeJ-MySizeK-MySizeL-MySizeM-MySizeN-MySizeO-MySizeP-MySizeQ-MySizeR],CurPos+onetick);
        ObjectSet("rec"+"R"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, DarkOrange);
        }//if




        CurPos=CurPos+onetick;
        }//while
        ObjectCreate("mediana"+TimeToStr(Time,TIME_DATE), OBJ_RECTANGLE, 0, Time, Mediana,Time[i+10],Mediana+onetick);
        ObjectSet("mediana"+TimeToStr(Time,TIME_DATE), OBJPROP_STYLE, STYLE_SOLID);
        ObjectSet("mediana"+TimeToStr(Time,TIME_DATE), OBJPROP_COLOR,White);
        BACK=i+1;
        }//if
        i++;
        if (i>=Bars) return(0);
        }//while
        }//for
        //----
        return(0);
        }
        //+------------------------------------------------------------------+

        Computer day-trader sur contrats à terme
        Mon twitter : CharlesAntoine Levoy

        Commentaire


        • Et encore un PUTAIN DE BUG, pour que code fonctionne à la ligne :

          signal=false;
          LastHigh=High;
          LastLow=Low;

          VOUS Rajoutez les i avec ceci [ ](ignorés lors de mon copier/collé) ce qui donne :

          signal=false;
          LastHigh=High;
          LastLow=Low;

          Et voila le code fonctionne, en avant le Market Profile!

          Voir image plus bas et encore un bug
          Computer day-trader sur contrats à terme
          Mon twitter : CharlesAntoine Levoy

          Commentaire


          • Bon ça bug encore, demandez moi le code par mail si ça vous intéresse et voir avex Crock pourkoi le site n'accepte toutes les touches d'un clavier Azerty
            Computer day-trader sur contrats à terme
            Mon twitter : CharlesAntoine Levoy

            Commentaire


            • fais une image de ton code...on pourra comparer....dur dur....!

              envoie..tu as mon mail...!

              Commentaire


              • Les iiiiiiiiiiiiiiiiiiiiiiiii

                Ceci n'est pas bon:
                signal=false;
                LastHigh=High;
                LastLow=Low;

                Ceci est le code exact :



                Cool Boursi, bonne idée!
                Computer day-trader sur contrats à terme
                Mon twitter : CharlesAntoine Levoy

                Commentaire


                • Sinon comme d'hab! J'ai envoyé le code forex, pour le forex il y a 2 codes selon les paires sinon un code pour les gros indices et un pour les actions. Pour cela il faut changer le nombre de la ligne Digits, voir fichier joins.
                  2digits pour les indices
                  4digits pour le fx selon paires
                  6digits pour le fx selon paires
                  8digits pour les actions









                  nb : Ceci n'est pas un bug !
                  Computer day-trader sur contrats à terme
                  Mon twitter : CharlesAntoine Levoy

                  Commentaire


                  • une chtite question, l'ib pour le forex ? autant d'ib que de session ?

                    Commentaire


                    • réponse MP lol!
                      Computer day-trader sur contrats à terme
                      Mon twitter : CharlesAntoine Levoy

                      Commentaire


                      • Travail des plus intéressant Caltonio, cette approche par les fonctions de densités de probabilités: Ton market profile calcule en réalité ce que les mqthématiciens appèllent la "fonction de répartition" ou fonction de densité de probabilité ( http://fr.wikipedia.org/wiki/Fonction_de_répartition )

                        La fonction de répartition est une fonction fondamentale en théorie du signal, notamment lorsqu'elle est couplée à une "Fonction de Transfert".

                        Une idée, intéressante, par exemple, pour pouvoir interpreter plus facilement le résultat est d'utiliser lq technique de l'égalisation de l'histogramme:

                        Je m'explique:

                        En jettqnt un oeil à tes fonctions de répartition, on s'aperçoit très clairement que le mqrché ne fait pas "n'importe quoi" et travaille bien certains seuils plutot que d'autres. C'est un fait visuellement remarquable.

                        Je te propose donc un raisonnement par l'absurde: Si le cours était aléatoire (suivant la loi binomiale par exemple) comment serait ton histogramme ?

                        Oui, tu l'a deviné: il serait plat, c'est à dire que toutes les valeures seraient identiques puisque toutes les valeures auraient la meme frequence/probabilité d'apparition...

                        ...D'ou cette idée de creer une transformée (fonction de transfert) qui recalcule le cours "comme s'il était hasardeux, au sens binomial".

                        Ainsi, une simple comparaison entre le cour et sa transformée (par une simple différence/soustraction comme dans un MACD) indique alors QUAND le cours ne se comporte pas comme le hasard binomial...

                        Si la thématique te semble intéressante, voici l'algo. de l'égalisation de l'histogramme (il est en 2 demension 2D ici, mais pour un cours c'est encore plus simple puisque on est en 1D):

                        http://homepages.inf.ed.ac.uk/rbf/HIPR2/histeq.htm

                        Sinon, dans le même ordre d'idées, il y a la transformée de Fisher, qui considère un hasard Guassien pour la fonction de transfert de la fonction de densité de probabilité, plutot que la loi binomiale, mais son interpretation est identique...

                        Au plaisir,
                        Stéphane

                        Commentaire


                        • Oui bonne réflexion Slaruaz!
                          Le MP est excellent, il convient à tous type de trading sclaping ou swing, certain joue l'opening trade d'autre atendent une contraction des tpo puis que l'activité du marché horizontale devienne verticale la où on fait le + de points, ensuite c'est patience et discipline (rien de nouveau). C'est pas le graal non plus ça compréhension demande du temps et du travail. Mais c'est un outil efficaçe avec des niveaux cohérants, rien à voir avec une technique à la Macguyver ou des formules mathématique pathétique qui repeignent le passé sous forme d'indicateur.
                          AMHA il est peu utilisé car il y a peu d'écrit en français dessus et il est peu develloppé sur les plateforme voir couteux comme l'excellent footprint(http://www.marketdelta.com/Footprint_Chart), depuis peu j'ai la chance de suivre quelques personnes qui travaillent depuis de nombreuse années avec cette plateforme et le MP et rien d'autre pas besoin d'indicateur qui fasserait leurs jugements, tous ce je peux dire c'est qu'ils bombardent, vraiment!
                          See you!
                          Computer day-trader sur contrats à terme
                          Mon twitter : CharlesAntoine Levoy

                          Commentaire


                          • Et puis d'autres variations autour de ton MP peuvent être imaginées, comme par exemple une pondération de l'histogramme avec les volumes de transactions... Pour faire une analogie: Un peu comme le Money Flow index par rapport au Relative Strengh Index, bref un "Caltonio MP&Volumes" en quelques sortes.
                            Bref plein de perspectives de prospection autour de ce MP...

                            Commentaire


                            • Bonjour Caltonio,

                              J'ai pris le temps entre hier et aujourd'hui d'ecrire les lignes de code pour illustrer l'approche du MP en volume, ainsi que sur l'idée de la différence entre le cours et sa transformée (voir mes posts précédants):


                              Cliquez pour agrandir


                              Ici on a le EurUsd en M5 avec un historique de 288 bar (soit 1 journée)
                              On peut alors voir les seuils travaillés EN VOLUME, car mon algo présenté ici pondère le MP avec les volumes de transaction, ce qui me semble être un atout supplémentaire dans la philosophie dur MP qui cherche à déterminer les seuils les + travaillés


                              Cliquez pour agrandir


                              Ici la même chose en H1 (donc 4 jours de cotations)


                              Dans les 2 cas, j'ai fait apparitre un transformée de Fisher qui alerte le trader quand le mouvement n'est pas "normal" au sens Guaussien du terme ( voir loi normal ici : http://fr.wikipedia.org/wiki/Loi_normale )

                              Quand Fisher>0 alors distribution haussière "anormale" (au sens mathématique du terme, c'est à dire pas normale au sens guaussien du terme)
                              Quand Fisher<0, distribution baissière "anormale".

                              Je travaille en ce moment sur une Fisher qui intègre les volumes comme pour l'histogramme de densité de répartition pondérée avec les volumes de transactions présentés ici dans ce 2 graphiques ( histogrammes du haut, en gris)


                              Au plaisir,
                              Stéphane

                              Commentaire


                              • Salut Slaruaz, cette version du MP est dénomé Market Profile composite, tu aurais du me précis que tu souhaitez ce type de code car j'en ai un en reserve et cela t'aurais éviter de faire cet exercice fastidieux. Sinon le MP composite est connu par les traders MP et AMHconnaissance il est surtout utilisé sur une période de 5 jours et 8 jours, je jette réguliérement un oeil au composite 5 jours lorsque j'ai un doute sur les cloches intraday ça évite de prendre un trend un peu trop hazardeux.
                                Bon week-end!
                                Computer day-trader sur contrats à terme
                                Mon twitter : CharlesAntoine Levoy

                                Commentaire

                                Chargement...
                                X