MPT01





//+------------------------------------------------------------------+
//|                                                        MPT01.mq4 |
//|                                                           by STS |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "STS"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_width1 4
#property indicator_width2 4
#property indicator_width3 4
//---- buffers
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];

extern int step=34;
extern int laenge=50;
extern double fibo1=0.382;
extern double fibo2=0.618;
extern double fibo3=1.000;
//0.25, 0.382, 0.618, 0.75, 1
extern bool drawarrors=False;
extern int ICWRDepth=12;
extern int ICWRDeviation=5;
extern int ICWRBackstep=3;
extern int Bar=300;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,216);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,215);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexEmptyValue(2,0.0);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(3,220);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexEmptyValue(3,0.0);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
int r;
   r=1;
 ObjectDelete("ActiveWave1a" +r);
 ObjectDelete("ActiveWave1b" + r);
 ObjectDelete("ActiveWave1c" + r);
 ObjectDelete("AB1");
 ObjectDelete("BC1");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  int r;
   r=1;
 ObjectDelete("ActiveWave1a" +r);
 ObjectDelete("ActiveWave1b" + r);
 ObjectDelete("ActiveWave1c" + r);
 ObjectDelete("AB1");
 ObjectDelete("BC1");
   if (Period() ==1){
      step=21;
   }
   else
   {
      step=34;
   }
   //Print(step); 
   int    counted_bars=IndicatorCounted();
//----
   int c;
   c=0;
   int shift;
   int last0;
   int last1;
   int last2;
   double T1;
   double T2;
   double T3;
   int vorne;
       
   T1=0;
   T2=0;
   T3=0;
   last0=0;
   last1=0;
   last2=0;
    for (shift=Bar;shift>=0;shift--)
   { 
   
     ExtMapBuffer2[shift]=0;
     ExtMapBuffer3[shift]=0;
     ExtMapBuffer4[shift]=0;
    
   }
   for (shift=Bar;shift>=0;shift--)
   { 
   
   double icwr0;
   icwr0=iCustom(Symbol(),0,"ICWRr",ICWRDepth,ICWRDeviation,ICWRBackstep,step,0,shift);
   
   if (icwr0>0){
   
      last2=last1;
      last1=last0;
      last0=shift;
      double last0val;
      double last1val;
      double last2val;
      last0val=iCustom(Symbol(),0,"ICWRr",ICWRDepth,ICWRDeviation,ICWRBackstep,step,0,last0);
      last1val=iCustom(Symbol(),0,"ICWRr",ICWRDepth,ICWRDeviation,ICWRBackstep,step,0,last1);
      last2val=iCustom(Symbol(),0,"ICWRr",ICWRDepth,ICWRDeviation,ICWRBackstep,step,0,last2);
      
      if (MathAbs(last2val-last1val)>= step*0.0001){
         if (drawarrors){
            ExtMapBuffer4[shift]=last0val;  
            ExtMapBuffer3[last1]=last1val; 
            ExtMapBuffer2[last2]=last2val;
         }
         
         T1=fibo1*(last1val-last2val)+last0val;
         T2=fibo2*(last1val-last2val)+last0val;
         T3=fibo3*(last1val-last2val)+last0val;
         c=1;
    
       string namea;
        namea="ActiveWave1a"+c;
        string nameb;
        nameb="ActiveWave1b"+c;
        string namec;
        namec="ActiveWave1c"+c;
        string named;
        named="AB1";
        string namee;
        namee="BC1";
        vorne=shift;
        int l;
        if (vorne>=laenge){
         vorne=laenge;
         
        }
        l=laenge-vorne;
        if (l > laenge){
        l=0;
        }
        l=5;
        
           if(ObjectFind(namea) != 0)
               {
                  ObjectCreate(namea, OBJ_TREND, 0, Time[shift+l], T1, Time[shift-vorne], T1);
                  ObjectSet(namea, OBJPROP_STYLE, STYLE_SOLID);
                  ObjectSet(namea, OBJPROP_COLOR, DarkOrange);               
                  ObjectSet(namea, OBJPROP_WIDTH, 3);
                  ObjectSet(namea, OBJPROP_RAY, false);  
               }
               else
               {
                 ObjectMove(namea, 0, Time[shift+l], T1);
                 
                  ObjectMove(namea, 1, Time[shift-vorne], T1);
               
                }
               
               if(ObjectFind(nameb) != 0)
               {
                  ObjectCreate(nameb, OBJ_TREND, 0, Time[shift+l], T2, Time[shift-vorne], T2);
                  ObjectSet(nameb, OBJPROP_STYLE, STYLE_SOLID);
                  ObjectSet(nameb, OBJPROP_COLOR, Magenta);               
                  ObjectSet(nameb, OBJPROP_WIDTH, 3);
                  ObjectSet(nameb, OBJPROP_RAY, false);  
               }
               else
               {
                  ObjectMove(nameb, 0, Time[shift+l], T2);
                  ObjectMove(nameb, 1, Time[shift-vorne], T2);
               }
               
               if(ObjectFind(namec) != 0)
               {
                  ObjectCreate(namec, OBJ_TREND, 0, Time[shift+l], T3, Time[shift-vorne], T3);
                  ObjectSet(namec, OBJPROP_STYLE, STYLE_SOLID);
                  ObjectSet(namec, OBJPROP_COLOR, Red);               
                  ObjectSet(namec, OBJPROP_WIDTH, 3);
                  ObjectSet(namec, OBJPROP_RAY, false);  
               }
               else
               {
                  ObjectMove(namec, 0, Time[shift+l], T3);
                  ObjectMove(namec, 1, Time[shift-vorne], T3);
               }
                   
               if(ObjectFind(named) != 0)
               {
                  ObjectCreate(named, OBJ_TREND, 0, Time[last1], last1val, Time[last0], last0val);
                  ObjectSet(named, OBJPROP_STYLE, STYLE_SOLID);
                  ObjectSet(named, OBJPROP_COLOR, Red);               
                  ObjectSet(named, OBJPROP_WIDTH, 3);
                  ObjectSet(named, OBJPROP_RAY, false);  
               }
               else
               {
                  ObjectMove(named, 0, Time[last1], last1val);
                  ObjectMove(named, 1, Time[last0], last0val);
                  ObjectSet(named, OBJPROP_COLOR, Red);               
                  
               }
                       if(ObjectFind(namee) != 0)
               {
                  ObjectCreate(namee, OBJ_TREND, 0, Time[last2], last2val, Time[last1], last1val);
                  ObjectSet(namee, OBJPROP_STYLE, STYLE_SOLID);
                  ObjectSet(namee, OBJPROP_COLOR, Red);               
                  ObjectSet(namee, OBJPROP_WIDTH, 3);
                  ObjectSet(namee, OBJPROP_RAY, false);  
               }
               else
               {
                  ObjectMove(namee, 0, Time[last2], last2val);
                  ObjectMove(namee, 1, Time[last1], last1val);
                  ObjectSet(namee, OBJPROP_COLOR, Red);               
                  
               }   
                     
      }
     
      }
     
    
//----
   
   }
   
  }
   return(0);
 
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:

Implements a curve of type DRAW_ARROW


Indicators Used:




Custom Indicators Used:
ICWRr

Order Management characteristics:

Other Features: