#Parabolic 4TF-1





//+------------------------------------------------------------------+
//|                                               #Parabolic 4TF.mq4 |
//+------------------------------------------------------------------+
#property copyright "Kalenzo - code adapted to bars by cja"
#property link      "http://www.foreksik.prv.pl"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 5
#property indicator_buffers 8
#property indicator_color1 Green
#property indicator_color2 Green
#property indicator_color3 Green
#property indicator_color4 Green
#property indicator_color5 Red
#property indicator_color6 Red
#property indicator_color7 Red
#property indicator_color8 Red
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];


extern int Maxbars   = 1500;
extern double Step = 0.013;
extern double Maximum = 0.20;
extern int Precision = 4;

extern int    TF1  = PERIOD_M30;
extern int    TF2  = PERIOD_H1;
extern int    TF3  = PERIOD_H4;
extern int    TF4  = PERIOD_D1;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,110);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,110);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,110);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexEmptyValue(2,0.0);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(3,110);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexEmptyValue(3,0.0);
   SetIndexStyle(4,DRAW_ARROW);
   SetIndexArrow(4,110);
   SetIndexBuffer(4,ExtMapBuffer5);
   SetIndexEmptyValue(4,0.0);
   SetIndexStyle(5,DRAW_ARROW);
   SetIndexArrow(5,110);
   SetIndexBuffer(5,ExtMapBuffer6);
   SetIndexEmptyValue(5,0.0);
   SetIndexStyle(6,DRAW_ARROW);
   SetIndexArrow(6,110);
   SetIndexBuffer(6,ExtMapBuffer7);
   SetIndexEmptyValue(6,0.0);
   SetIndexStyle(7,DRAW_ARROW);
   SetIndexArrow(7,110);
   SetIndexBuffer(7,ExtMapBuffer8);
   SetIndexEmptyValue(7,0.0);
   
   IndicatorShortName("Para 4TF ( M"+TF1+" )( M"+TF2+" )( M"+TF3+" )( M"+TF4+" )");
   
   RefreshRates();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 ObjectDelete("Para_Label");ObjectDelete("Para_Label1");ObjectDelete("Para_Label2");
 ObjectDelete("Para_Label3");ObjectDelete("Para_Label4");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   int limit;
   int TF[] = {0,0,0,0};
   
   TF[0] = TF1;
   TF[1] = TF2;
   TF[2] = TF3;
   TF[3] = TF4;
   
   limit = MathMin(counted_bars,Maxbars);
   if (limit ==0)
      limit = Maxbars;
   
   for (int ii=0; ii<limit; ii++)
   {
      ExtMapBuffer1[ii] = 0;
      ExtMapBuffer2[ii] = 0;
      ExtMapBuffer3[ii] = 0;
      ExtMapBuffer4[ii] = 0;
      ExtMapBuffer5[ii] = 0;
      ExtMapBuffer6[ii] = 0;
      ExtMapBuffer7[ii] = 0;
      ExtMapBuffer8[ii] = 0;
      for (int jj=0; jj<4; jj++)
      {
         int y = iBarShift(NULL, TF[jj], Time[ii]);
         SetIndicator(GetCustomBars(TF[jj], y), jj, ii);

      }
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

bool GetCustomBars(int TF, int shift)
{

   double h = iCustom(NULL,TF,"SAR Colour",Step,Maximum,Precision,0,shift);
   double l = iCustom(NULL,TF,"SAR Colour",Step,Maximum,Precision,1,shift);
   
   
   return(h<l);
}

void SetIndicator(bool isUP, int ind, int shift)
{
   if (isUP)
   {
      switch (ind) 
      {
         case 3:  ExtMapBuffer1[shift] = ind+1; break;
         case 2:  ExtMapBuffer2[shift] = ind+1; break;
         case 1:  ExtMapBuffer3[shift] = ind+1; break;
         case 0:  ExtMapBuffer4[shift] = ind+1; break;
      }
   } else {
         switch (ind)
         { 
            case 3:  ExtMapBuffer5[shift] = ind+1; break;
            case 2:  ExtMapBuffer6[shift] = ind+1; break;
            case 1:  ExtMapBuffer7[shift] = ind+1; break;
            case 0:  ExtMapBuffer8[shift] = ind+1; break;
         }
         
         /*           ObjectDelete("Para");   
                    ObjectCreate("Para", OBJ_LABEL,WindowFind("Para 4TF ( M"+TF1+" )( M"+TF2+" )( M"+TF3+" )( M"+TF4+" )"), 0, 0);
   ObjectSetText("Para","STD Parabolic [ M"+TF1+" ][ M"+TF2+" ][ M"+TF3+" ][ M"+TF4+" ]", 8, "Tahoma Narrow", White);
   ObjectSet("Para", OBJPROP_CORNER, 0);
   ObjectSet("Para", OBJPROP_XDISTANCE, indicator_maximum);
   ObjectSet("Para", OBJPROP_YDISTANCE, indicator_maximum );*/
   
   color para_col,para_col60,para_col15,para_col5;
   string PARAlabel="";
   
   if(ExtMapBuffer4[0]>ExtMapBuffer8[0]){para_col=indicator_color4;} 
   if(ExtMapBuffer8[0]>ExtMapBuffer4[0]){para_col=indicator_color8;} 
   
   if(ExtMapBuffer1[0]>ExtMapBuffer5[0]){para_col60=indicator_color1;} 
   if(ExtMapBuffer5[0]>ExtMapBuffer1[0]){para_col60=indicator_color5;} 
   if(ExtMapBuffer2[0]>ExtMapBuffer6[0]){para_col15=indicator_color2;} 
   if(ExtMapBuffer6[0]>ExtMapBuffer2[0]){para_col15=indicator_color6;} 
   if(ExtMapBuffer3[0]>ExtMapBuffer7[0]){para_col5=indicator_color3;} 
   if(ExtMapBuffer7[0]>ExtMapBuffer3[0]){para_col5=indicator_color7;} 
   int Trend_Trigger;
     if(Trend_Trigger==true){PARAlabel="             STD Parabolic";}
   if(Trend_Trigger==false){PARAlabel="             STD Parabolic";}
 
          
  /*ObjectDelete("Para_Label4");
   if(ObjectFind("Para_Label4") != 0) {
   ObjectCreate("Para_Label4", OBJ_TEXT,WindowFind("Para 4TF ( M"+TF1+" )( M"+TF2+" )( M"+TF3+" )( M"+TF4+" )"), Time[0],indicator_maximum-1);
   ObjectSetText("Para_Label4", "                           "+PARAlabel+"",15, "Tahoma Narrow",para_col5);
   } else{ ObjectMove("Para_Label4", 0, Time[0],indicator_maximum-1); } */    
        
   
   ObjectDelete("Para_Label");
   if(ObjectFind("Para_Label") != 0) {
   ObjectCreate("Para_Label", OBJ_TEXT,WindowFind("Para 4TF ( M"+TF1+" )( M"+TF2+" )( M"+TF3+" )( M"+TF4+" )"), Time[0],indicator_maximum-0.50);
   ObjectSetText("Para_Label", "                   M"+TF4+"",7, "Tahoma Narrow",para_col60);
   } else{ ObjectMove("Para_Label", 0, Time[0],indicator_maximum-0.50); }
   
         
  ObjectDelete("Para_Label1");
   if(ObjectFind("Para_Label1") != 0) {
   ObjectCreate("Para_Label1", OBJ_TEXT,WindowFind("Para 4TF ( M"+TF1+" )( M"+TF2+" )( M"+TF3+" )( M"+TF4+" )"), Time[0],indicator_maximum-1.50);
   ObjectSetText("Para_Label1", "                   M"+TF3+"",7, "Tahoma Narrow",para_col15);
   } else{ ObjectMove("Para_Label1", 0, Time[0],indicator_maximum-1.50); }
   
           
  ObjectDelete("Para_Label2");
   if(ObjectFind("Para_Label2") != 0) {
   ObjectCreate("Para_Label2", OBJ_TEXT,WindowFind("Para 4TF ( M"+TF1+" )( M"+TF2+" )( M"+TF3+" )( M"+TF4+" )"), Time[0],indicator_maximum-2.5);
   ObjectSetText("Para_Label2", "                 M"+TF2+"",7, "Tahoma Narrow",para_col5);
   } else{ ObjectMove("Para_Label2", 0, Time[0],indicator_maximum-2.5); }

   ObjectDelete("Para_Label3");
   if(ObjectFind("Para_Label3") != 0) {
   ObjectCreate("Para_Label3", OBJ_TEXT,WindowFind("Para 4TF ( M"+TF1+" )( M"+TF2+" )( M"+TF3+" )( M"+TF4+" )"), Time[0],indicator_maximum-3.50);
   ObjectSetText("Para_Label3", "                 M"+TF1+"",7, "Tahoma Narrow",para_col);
   } else{ ObjectMove("Para_Label3", 0, Time[0],indicator_maximum-3.50); }
   
     
  
   }
}





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:
SAR Colour

Order Management characteristics:

Other Features: