ind_SupportEX





//+------------------------------------------------------------------+
//|                                                ind_SupportEX.mq4 |
//|                                                     Yuriy Tokman |
//|                                            yuriytokman@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman"
#property link      "yuriytokman@gmail.com"

#property indicator_chart_window

extern bool MN           = false;
extern bool RECTANGLE_MN = false;
extern bool W1           = false;
extern bool RECTANGLE_W1 = false;
extern bool D1           = false;
extern bool RECTANGLE_D1 = false;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  for (int i=0;i<Bars;i++)
    {
    //----------------D1
    ObjectDelete("high_D1"+DoubleToStr(iTime(Symbol(),1440,i),0));    
    ObjectDelete("low_D1"+DoubleToStr(iTime(Symbol(),1440,i),0));    
    ObjectDelete("open_D1"+DoubleToStr(iTime(Symbol(),1440,i),0));    
    ObjectDelete("close_D1"+DoubleToStr(iTime(Symbol(),1440,i),0));
    ObjectDelete("se_D1"+DoubleToStr(iTime(Symbol(),1440,i),0));
    ObjectDelete("os_D1"+DoubleToStr(iTime(Symbol(),1440,i),0));
    ObjectDelete("RECTANGLE"+DoubleToStr(iTime(Symbol(),1440,i),0));
    //----------------W1
    ObjectDelete("high_W1"+DoubleToStr(iTime(Symbol(),10080,i),0));    
    ObjectDelete("low_W1"+DoubleToStr(iTime(Symbol(),10080,i),0));    
    ObjectDelete("open_W1"+DoubleToStr(iTime(Symbol(),10080,i),0));    
    ObjectDelete("close_W1"+DoubleToStr(iTime(Symbol(),10080,i),0));
    ObjectDelete("se_W1"+DoubleToStr(iTime(Symbol(),10080,i),0));
    ObjectDelete("os_W1"+DoubleToStr(iTime(Symbol(),10080,i),0));
    ObjectDelete("RECTANGLE_W1"+DoubleToStr(iTime(Symbol(),10080,i),0));    
    //----------------MN
    ObjectDelete("high_MN"+DoubleToStr(iTime(Symbol(),43200,i),0));    
    ObjectDelete("low_MN"+DoubleToStr(iTime(Symbol(),43200,i),0));    
    ObjectDelete("open_MN"+DoubleToStr(iTime(Symbol(),43200,i),0));    
    ObjectDelete("close_MN"+DoubleToStr(iTime(Symbol(),43200,i),0));
    ObjectDelete("se_MN"+DoubleToStr(iTime(Symbol(),43200,i),0));
    ObjectDelete("os_MN"+DoubleToStr(iTime(Symbol(),43200,i),0));
    ObjectDelete("RECTANGLE_MN"+DoubleToStr(iTime(Symbol(),43200,i),0));                       
    }
    //----------------D1
    ObjectDelete("PriceHighD1");
    ObjectDelete("PriceLowD1");
    ObjectDelete("PriceOpenD1");
    //----------------W1
    ObjectDelete("PriceHighW1");
    ObjectDelete("PriceLowW1");
    ObjectDelete("PriceOpenW1");    
    //----------------MN
    ObjectDelete("PriceHighMN");
    ObjectDelete("PriceLowMN");
    ObjectDelete("PriceOpenMN");       
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   int limit;
   int counted_bars=IndicatorCounted();
   
   if(counted_bars<0) return(-1);

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   for(int i=limit; i>=0; i--)
   {
    //----------------D1
    if(Period()<=240 && D1){
    double   high_D1   = iHigh(Symbol(),1440,i);
    double   low_D1    = iLow(Symbol(),1440,i);    
    double   open_D1   = iOpen(Symbol(),1440,i);   
    double   close_D1  = iClose(Symbol(),1440,i);
    datetime delta_D1  = 86400;
    datetime timeOP_D1 = iTime(Symbol(),1440,i);
    datetime timeCL_D1 = iTime(Symbol(),1440,i)+delta_D1;
    color    color_D1  = FireBrick;
        
    TrendLineGraf("high_D1"+DoubleToStr(timeOP_D1, 0),timeOP_D1,high_D1,timeCL_D1,high_D1,Red,0,1);
    TrendLineGraf("low_D1"+DoubleToStr(timeOP_D1, 0),timeOP_D1,low_D1,timeCL_D1,low_D1,Red,0,1);
    TrendLineGraf("open_D1"+DoubleToStr(timeOP_D1, 0),timeOP_D1,open_D1,timeCL_D1,open_D1,Red,0,2);    
    TrendLineGraf("close_D1"+DoubleToStr(timeOP_D1, 0),timeOP_D1,close_D1,timeCL_D1,close_D1,Red,0,1);    
    TrendLineGraf("se_D1"+DoubleToStr(timeOP_D1, 0),timeOP_D1,high_D1,timeOP_D1,low_D1,Red,0,1);
    TrendLineGraf("os_D1"+DoubleToStr(timeOP_D1, 0),timeCL_D1,high_D1,timeCL_D1,low_D1,Red,0,1);
    if(open_D1<close_D1)color_D1 = DarkGreen;
    if(RECTANGLE_D1)RECTANGLE("RECTANGLE"+DoubleToStr(timeOP_D1, 0),timeOP_D1,open_D1,timeCL_D1,close_D1,color_D1);

    RICE_ARROW("PriceHighD1",timeCL_D1,high_D1,Red,1);
    RICE_ARROW("PriceLowD1",timeCL_D1,low_D1,Red,1);    
    RICE_ARROW("PriceOpenD1",timeCL_D1,open_D1,Red,1);
    }
    //----------------W1
    if(Period()<=1440 && W1){
    double   high_W1   = iHigh(Symbol(),10080,i);
    double   low_W1    = iLow(Symbol(),10080,i);    
    double   open_W1   = iOpen(Symbol(),10080,i);   
    double   close_W1  = iClose(Symbol(),10080,i);
    datetime delta_W1  = 10080*60;
    datetime timeOP_W1 = iTime(Symbol(),10080,i);
    datetime timeCL_W1 = iTime(Symbol(),10080,i)+delta_W1;
    color    color_W1  = Maroon;
        
    TrendLineGraf("high_W1"+DoubleToStr(timeOP_W1, 0),timeOP_W1,high_W1,timeCL_W1,high_W1,DarkTurquoise,0,2);
    TrendLineGraf("low_W1"+DoubleToStr(timeOP_W1, 0),timeOP_W1,low_W1,timeCL_W1,low_W1,DarkTurquoise,0,2);
    TrendLineGraf("open_W1"+DoubleToStr(timeOP_W1, 0),timeOP_W1,open_W1,timeCL_W1,open_W1,DarkTurquoise,0,2);    
    TrendLineGraf("close_W1"+DoubleToStr(timeOP_W1, 0),timeOP_W1,close_W1,timeCL_W1,close_W1,DarkTurquoise,0,1);    
    TrendLineGraf("se_W1"+DoubleToStr(timeOP_W1, 0),timeOP_W1,high_W1,timeOP_W1,low_W1,DarkTurquoise,0,2);
    TrendLineGraf("os_W1"+DoubleToStr(timeOP_W1, 0),timeCL_W1,high_W1,timeCL_W1,low_W1,DarkTurquoise,0,2);
    if(open_W1<close_W1)color_W1 = OliveDrab;
    if(RECTANGLE_W1)RECTANGLE("RECTANGLE_W1"+DoubleToStr(timeOP_W1, 0),timeOP_W1,open_W1,timeCL_W1,close_W1,color_W1);

    RICE_ARROW("PriceHighW1",timeCL_W1,high_W1,DarkTurquoise,2);
    RICE_ARROW("PriceLowW1",timeCL_W1,low_W1,DarkTurquoise,2);    
    RICE_ARROW("PriceOpenW1",timeCL_W1,open_W1,DarkTurquoise,2);
    }    
    //----------------MN
    if(Period()<=10080 && MN){
    double   high_MN   = iHigh(Symbol(),43200,i);
    double   low_MN    = iLow(Symbol(),43200,i);    
    double   open_MN   = iOpen(Symbol(),43200,i);   
    double   close_MN  = iClose(Symbol(),43200,i);
    datetime delta_MN  = 43200*60;
    datetime timeOP_MN = iTime(Symbol(),43200,i);
    datetime timeCL_MN = iTime(Symbol(),43200,i)+delta_MN;
    color    color_MN  = LightSeaGreen;
        
    TrendLineGraf("high_MN"+DoubleToStr(timeOP_MN, 0),timeOP_MN,high_MN,timeCL_MN,high_MN,Yellow,0,3);
    TrendLineGraf("low_MN"+DoubleToStr(timeOP_MN, 0),timeOP_MN,low_MN,timeCL_MN,low_MN,Yellow,0,3);
    TrendLineGraf("open_MN"+DoubleToStr(timeOP_MN, 0),timeOP_MN,open_MN,timeCL_MN,open_MN,Yellow,0,3);    
    TrendLineGraf("close_MN"+DoubleToStr(timeOP_MN, 0),timeOP_MN,close_MN,timeCL_MN,close_MN,Yellow,0,1);    
    TrendLineGraf("se_MN"+DoubleToStr(timeOP_MN, 0),timeOP_MN,high_MN,timeOP_MN,low_MN,Yellow,0,3);
    TrendLineGraf("os_MN"+DoubleToStr(timeOP_MN, 0),timeCL_MN,high_MN,timeCL_MN,low_MN,Yellow,0,3);
    if(open_MN<close_MN)color_MN = Peru;
    if(RECTANGLE_MN)RECTANGLE("RECTANGLE_MN"+DoubleToStr(timeOP_MN, 0),timeOP_MN,open_MN,timeCL_MN,close_MN,color_MN);

    RICE_ARROW("PriceHighMN",timeCL_MN,high_MN,Yellow,3);
    RICE_ARROW("PriceLowMN",timeCL_MN,low_MN,Yellow,3);    
    RICE_ARROW("PriceOpenMN",timeCL_MN,open_MN,Yellow,3);
    }        
   }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Ôóíêöèÿ îòîáðàæåíèÿ òðåíäîâîé ëèíèè                              |
//| àâòîð: Þðèé Òîêìàíü                                              |
//| e-mail: yuriytokman@gmail.com                                    |
//| ICQ#    481-971-287                                              |
//| Skype:  yuriy.g.t                                                |
//+------------------------------------------------------------------+
 void TrendLineGraf(string labebe,datetime time1,double price1,datetime time2,double price2,
                    color colir,int STYLE,int WIDTH )
  {
   if (ObjectFind(labebe)!=-1) ObjectDelete(labebe);
   ObjectCreate(labebe, OBJ_TREND, 0,time1,price1,time2,price2);
   ObjectSet(labebe, OBJPROP_COLOR, colir);
   ObjectSet(labebe, OBJPROP_STYLE,STYLE);
   ObjectSet(labebe, OBJPROP_WIDTH,WIDTH);
   ObjectSet(labebe, OBJPROP_RAY,0);
   ObjectSet(labebe, OBJPROP_BACK, true);
  }
//+------------------------------------------------------------------+
//| Ôóíêöèÿ îòîáðàæåíèÿ ïðÿìîóãîëüíèêà                               |
//| àâòîð: Þðèé Òîêìàíü                                              |
//| e-mail: yuriytokman@gmail.com                                    |
//| ICQ#    481-971-287                                              |
//| Skype:  yuriy.g.t                                                |
//+------------------------------------------------------------------+
 void RECTANGLE(string labe,datetime time1,double price1,datetime time2,
                double price2,color colir)
  {
   if (ObjectFind(labe)!=-1) ObjectDelete(labe);
   ObjectCreate(labe, OBJ_RECTANGLE, 0,time1,price1,time2,price2);
   ObjectSet(labe, OBJPROP_COLOR, colir);
   ObjectSet(labe, OBJPROP_BACK, true);
  }
//+------------------------------------------------------------------+
//| Ôóíêöèÿ îòîáðàæåíèÿ öåíîâîé ìåòêè                                |
//| àâòîð: Þðèé Òîêìàíü                                              |
//| e-mail: yuriytokman@gmail.com                                    |
//| ICQ#    481-971-287                                              |
//| Skype:  yuriy.g.t                                                |
//+------------------------------------------------------------------+
 void RICE_ARROW(string label,datetime time1,double price1,color colir,int WIDTH )
  {
   if (ObjectFind(label)!=-1) ObjectDelete(label);
   ObjectCreate(label,OBJ_ARROW, 0,time1,price1);
   ObjectSet(label,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
   ObjectSet(label, OBJPROP_COLOR, colir);
   ObjectSet(label, OBJPROP_WIDTH,WIDTH);
   ObjectSet(label, OBJPROP_BACK, true);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open prices of each bar
Series array that contains close prices for each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: