Conversion ZZ Fibo.mq4 – zigzag fibonacci

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #82933 quote
    Plscap
    Participant
    Veteran

    Bonjour Nicolas, Bonjour à tous,

    Est ce que l’un de vous aurait la possibilité de convertir le ZigZagFibo de mt4 en indicateur PRT. Bien que les Fibo existent déjà sous PRT, il n’est malheureusement pas automatiquement, il faut le tracer manuellement à chaque fois, ce que rend parfois son utilisation moins “sympathique”

    Voici le code et screen du mq4

    #property indicator_chart_window
    #property indicator_buffers 1
    #property indicator_color1 Red
    //---- indicator parameters
    extern int ExtDepth=12;
    extern int ExtDeviation=5;
    extern int ExtBackstep=3;
    //---- indicator buffers
    double ExtMapBuffer[];
    double ExtMapBuffer2[];
    int OldLastZigZag, OldPreviousZigZag;
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
       IndicatorBuffers(2);
    //---- drawing settings
       SetIndexStyle(0,DRAW_SECTION);
    //---- indicator buffers mapping
       SetIndexBuffer(0,ExtMapBuffer);
       SetIndexBuffer(1,ExtMapBuffer2);
       SetIndexEmptyValue(0,0.0);
       ArraySetAsSeries(ExtMapBuffer,true);
       ArraySetAsSeries(ExtMapBuffer2,true);
    //---- indicator short name
       IndicatorShortName("Fibodrawer");
    //---- initialization done
       return(0);
      }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
      int deinit() 
      {
       ObjectDelete("Fibo");
       return 0;
      }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    int start()
      {
       int    shift, back,lasthighpos,lastlowpos;
       double val,res;
       double curlow,curhigh,lasthigh,lastlow;
    //----
       for(shift=Bars-ExtDepth; shift>=0; shift--)
         {
          val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
          if(val==lastlow) val=0.0;
          else
            {
             lastlow=val;
             if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
             else
               {
                for(back=1; back<=ExtBackstep; back++)
                  {
                   res=ExtMapBuffer[shift+back];
                   if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
                  }
               }
            }
          ExtMapBuffer[shift]=val;
          //--- high
          val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];
          if(val==lasthigh) val=0.0;
          else
            {
             lasthigh=val;
             if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
             else
               {
                for(back=1; back<=ExtBackstep; back++)
                  {
                   res=ExtMapBuffer2[shift+back];
                   if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0;
                  }
               }
            }
          ExtMapBuffer2[shift]=val;
         }
       // final cutting 
       lasthigh=-1; lasthighpos=-1;
       lastlow=-1;  lastlowpos=-1;
    //----
       for(shift=Bars-ExtDepth; shift>=0; shift--)
         {
          curlow=ExtMapBuffer[shift];
          curhigh=ExtMapBuffer2[shift];
          if((curlow==0)&&(curhigh==0)) continue;
          //---
          if(curhigh!=0)
            {
             if(lasthigh>0)
               {
                if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
                else ExtMapBuffer2[shift]=0;
               }
             //---
             if(lasthigh<curhigh || lasthigh<0)
               {
                lasthigh=curhigh;
                lasthighpos=shift;
               }
             lastlow=-1;
            }
          //----
          if(curlow!=0)
            {
             if(lastlow>0)
               {
                if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
                else ExtMapBuffer[shift]=0;
               }
             //---
             if((curlow<lastlow)||(lastlow<0))
               {
                lastlow=curlow;
                lastlowpos=shift;
               }
             lasthigh=-1;
            }
         }
       for(shift=Bars-1; shift>=0; shift--)
         {
          if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0;
          else
            {
             res=ExtMapBuffer2[shift];
             if(res!=0.0) ExtMapBuffer[shift]=res;
            }
         }
       int i=0;
       int LastZigZag, PreviousZigZag;
       int h=0;
         while( ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) 
         {
          h++;
         }
       LastZigZag=h;
       h++;
         while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) 
         {
          h++;
         }
       PreviousZigZag=h;
         if (OldLastZigZag!=LastZigZag || OldPreviousZigZag!=PreviousZigZag) 
         {
          OldLastZigZag=LastZigZag;
          OldPreviousZigZag=PreviousZigZag;
          ObjectDelete("Fibo");
          ObjectCreate("Fibo", OBJ_FIBO, 0, Time[PreviousZigZag], ExtMapBuffer[LastZigZag], Time[LastZigZag], ExtMapBuffer[PreviousZigZag]);
         }
         return 0;
      }
    //+------------------------------------------------------------------+

    Merci à tous.

    2018-10-17-08_17_19-Window.png 2018-10-17-08_17_19-Window.png
    #82939 quote
    Nicolas
    Keymaster
    Master

    Je peux coder quelque-chose s’en approchant, avec les zigzag internes de la plateforme, donc ça ne sera pas une conversion 1:1. L’indicateur MT4 ZigZag auquel tu fais référence utilise des tableaux de données pour la recherches des pics et des creux et les confirmations, ce que l’on ne peut pas faire encore sous ProBuilder.

    #82943 quote
    Plscap
    Participant
    Veteran

    Bonjour Nicolas et merci pour ton retour,

    En effet c’est ce que je pensais, qu’on pouvait s’appuyer sur le ZigZag par defaut de la plateforme.

    Même si c’est pas exactement le même que mt4 c’est pas grave tant qu’on s’en approche 🙂

    #82950 quote
    Nicolas
    Keymaster
    Master

    J’ai réussi à produire un indicateur qui pourrait aider dans ce cas, je l’ai ajouté à notre bibliothèque de codes pour ProRealTime: ZigZag Fibonacci levels

    Plscap thanked this post
    fibonacci-zigzag-automatic-levels.png fibonacci-zigzag-automatic-levels.png
    #82954 quote
    Plscap
    Participant
    Veteran

    Super Nicolas,

    Merci pour l’indicateur, par contre est-ce normal qu’on ne puisse pas l’utiliser sur des plus petites UT que 1 heure?

    #82964 quote
    Nicolas
    Keymaster
    Master

    Je crois savoir pourquoi, soit on est lié à la taille des boucles, soit à un pourcentage trop important pour la détection des zigzag, je vais essayer d’y remédier.

    Plscap thanked this post
    #82972 quote
    Nicolas
    Keymaster
    Master

    Je viens de publier une mise à jour de l’indicateur. J’ai supprimé les boucles, mais il est possible que plusieurs retracements soit affichés (les anciens), on peut contrôler depuis combien de jours en arrière on affiche ou pas les retracements Fibonacci avec le paramètre “DaysBefore”, réglé à 20 jours par défaut, ce qui peut-être pas assez pour afficher le dernier sur des unités de temps assez importante, cela dépendant notamment du pourcentage des zigzag qu’on utilise..

    Plscap thanked this post
    #82975 quote
    Plscap
    Participant
    Veteran

    Super Nicolas,

    Je te remercie pour ton aide, cela fonctionne parfaitement désormais 🙂

    Un grand merci

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

Conversion ZZ Fibo.mq4 – zigzag fibonacci


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Plscap @flodefacebook Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by Plscap
7 years, 4 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 10/17/2018
Status: Active
Attachments: 2 files
Logo Logo
Loading...