//+------------------------------------------------------------------+
//|                                                 S & R lilita.mq4 |
//|                      Copyright © 2012, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
extern string Variables = "Support & Resistance Lilita indicator.";
extern bool Indicator_Panel_On = true;
extern int Sensibility =  30;
extern bool SB =          true;
extern int SIGNAL_BAR =   0;                 
extern int Fontsize =     8;
extern int Panel_Corner = 1;   
extern int XDISTANCE =    0;
extern int YDISTANCE =    40;

int deinit(){ 
   ObjectDelete("Support_Resistance0");ObjectDelete("Support_Resistance1");ObjectDelete("Support_Resistance2");ObjectDelete("Support_Resistance3");ObjectDelete("Support_Resistance4");
   ObjectDelete("Support_Resistance5");ObjectDelete("Support_Resistance6");ObjectDelete("Indicator label");ObjectDelete("---");
   ObjectDelete("Lilita M1");ObjectDelete("Lilita M5");ObjectDelete("Lilita M15");ObjectDelete("Lilita M30");
   ObjectDelete("Lilita H1");ObjectDelete("Lilita H4");ObjectDelete("Lilita D1");
return(0);}
//+------------------------------------------------------------------+
//| Support & Resistance Lilita indicator iteration function         |
//+------------------------------------------------------------------+
int start(){    
   if(Indicator_Panel_On == false){deinit();
    return (0);}
   static int PrevSignal = 0;
   static datetime PrevTime = 0;
	if(SIGNAL_BAR > 0 && Time[0] <= PrevTime)
	return(0);
    int limit;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int k=0;k<limit;k++)   
   int i=0+k;{
   
    string Signalsa0; 
   color Colors;  
   if(PrevSignal <= 0 || !SB)
   double n1=0;
   for( i=0+k;i<(10+Sensibility)+k; i++){    
   if(iHigh(NULL,PERIOD_M1,k)>iHigh(NULL,PERIOD_M1,i) && iHigh(NULL,PERIOD_M1,k)-iHigh(NULL,PERIOD_M1,i)>n1){
     n1=iHigh(NULL,PERIOD_M1,k)-iHigh(NULL,PERIOD_M1,i);} }  
   if(PrevSignal >= 0 || !SB)
   double m1=0;
   for( i=0+k;i<(10+Sensibility)+k; i++){if(iLow(NULL,PERIOD_M1,k)<iLow(NULL,PERIOD_M1,i) && iLow(NULL,PERIOD_M1,k)-iLow(NULL,PERIOD_M1,i)<m1){
     m1= iLow(NULL,PERIOD_M1,k)-iLow(NULL,PERIOD_M1,i);} } 
   if ((m1-n1)==(n1-m1)){Signalsa0="Calculated";Colors=Yellow;} 
   else if ((n1+m1)==(n1-m1)){Signalsa0="Resistance";Colors=Red;}   
   else if ((n1+m1)==(m1-n1)){Signalsa0="Support";Colors=Lime;}
    string signals0 = "Support_Resistance0";
   ObjectDelete(signals0);
   ObjectCreate(signals0, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(signals0, Signalsa0 ,Fontsize, "Arial Bold", Colors);
   ObjectSet(signals0, OBJPROP_CORNER, Panel_Corner );
   ObjectSet(signals0, OBJPROP_XDISTANCE, 40+Fontsize + XDISTANCE );
   ObjectSet(signals0, OBJPROP_YDISTANCE, 25 + YDISTANCE);
    string label0 = "Lilita M1";
   ObjectDelete(label0);
   ObjectCreate( label0, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label0,"M1",Fontsize, "Arial Bold", Yellow);
   ObjectSet( label0, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label0, OBJPROP_XDISTANCE, 10 + XDISTANCE );
   ObjectSet( label0, OBJPROP_YDISTANCE, 25 + YDISTANCE );
   
    string Signalsa; 
   if(PrevSignal <= 0 || !SB)
   double n5=0;
   for( i=0+k;i<Sensibility+k; i++){    
   if(iHigh(NULL,PERIOD_M5,k)>iHigh(NULL,PERIOD_M5,i) && iHigh(NULL,PERIOD_M5,k)-iHigh(NULL,PERIOD_M5,i)>n5){
     n5=iHigh(NULL,PERIOD_M5,k)-iHigh(NULL,PERIOD_M5,i);} }  
   if(PrevSignal >= 0 || !SB)
   double m5=0;
   for( i=0+k;i<Sensibility+k; i++){if(iLow(NULL,PERIOD_M5,k)<iLow(NULL,PERIOD_M5,i) && iLow(NULL,PERIOD_M5,k)-iLow(NULL,PERIOD_M5,i)<m5){
     m5= iLow(NULL,PERIOD_M5,k)-iLow(NULL,PERIOD_M5,i);} } 
   if ((m5-n5)==(n5-m5)){Signalsa="Calculated";Colors=Yellow;} 
   else if ((n5+m5)==(n5-m5)){Signalsa="Resistance";Colors=Red;}   
   else if ((n5+m5)==(m5-n5)){Signalsa="Support";Colors=Lime;}
    string signals1 = "Support_Resistance1";
   ObjectDelete(signals1);
   ObjectCreate(signals1, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(signals1, Signalsa ,Fontsize, "Arial Bold", Colors);
   ObjectSet(signals1, OBJPROP_CORNER, Panel_Corner );
   ObjectSet(signals1, OBJPROP_XDISTANCE, 40+Fontsize + XDISTANCE );
   ObjectSet(signals1, OBJPROP_YDISTANCE, 40 + YDISTANCE);
    string label1 = "Lilita M5";
   ObjectDelete(label1);
   ObjectCreate( label1, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label1,"M5",Fontsize, "Arial Bold", Yellow);
   ObjectSet( label1, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label1, OBJPROP_XDISTANCE, 10 + XDISTANCE );
   ObjectSet( label1, OBJPROP_YDISTANCE, 40 + YDISTANCE );
   
    string Signalsb;
   if(PrevSignal <= 0 || !SB)
   double n15=0;
   for( i=0+k;i<Sensibility+k; i++){    
   if(iHigh(NULL,PERIOD_M15,k)>iHigh(NULL,PERIOD_M15,i) && iHigh(NULL,PERIOD_M15,k)-iHigh(NULL,PERIOD_M15,i)>n15){
     n15=iHigh(NULL,PERIOD_M15,k)-iHigh(NULL,PERIOD_M15,i);} }  
   if(PrevSignal >= 0 || !SB)
   double m15=0;
   for( i=0+k;i<Sensibility+k; i++){if(iLow(NULL,PERIOD_M15,k)<iLow(NULL,PERIOD_M15,i) && iLow(NULL,PERIOD_M15,k)-iLow(NULL,PERIOD_M15,i)<m15){
     m15= iLow(NULL,PERIOD_M15,k)-iLow(NULL,PERIOD_M15,i);} } 
   if ((m15-n15)==(n15-m15)){Signalsb="Calculated";Colors=Yellow;} 
   else if ((n15+m15)==(n15-m15)){Signalsb="Resistance";Colors=Red;}   
   else if ((n15+m15)==(m15-n15)){Signalsb="Support";Colors=Lime;}
    string signals2 = "Support_Resistance2";
   ObjectDelete(signals2);
   ObjectCreate(signals2, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(signals2, Signalsb ,Fontsize, "Arial Bold", Colors);
   ObjectSet(signals2, OBJPROP_CORNER, Panel_Corner );
   ObjectSet(signals2, OBJPROP_XDISTANCE, 40+Fontsize + XDISTANCE );
   ObjectSet(signals2, OBJPROP_YDISTANCE, 55 + YDISTANCE );
    string label2 = "Lilita M15";
   ObjectDelete(label2);
   ObjectCreate( label2, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label2,"M15",Fontsize, "Arial Bold", Yellow);
   ObjectSet( label2, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label2, OBJPROP_XDISTANCE, 10 + XDISTANCE );
   ObjectSet( label2, OBJPROP_YDISTANCE, 55 + YDISTANCE );
   
    string Signalsc;
   if(PrevSignal <= 0 || !SB)
   double n30=0;
   for( i=0+k;i<Sensibility+k; i++){    
   if(iHigh(NULL,PERIOD_M30,k)>iHigh(NULL,PERIOD_M30,i) && iHigh(NULL,PERIOD_M30,k)-iHigh(NULL,PERIOD_M30,i)>n30){
     n30=iHigh(NULL,PERIOD_M30,k)-iHigh(NULL,PERIOD_M30,i);} }  
   if(PrevSignal >= 0 || !SB)
   double m30=0;
   for( i=0+k;i<Sensibility+k; i++){if(iLow(NULL,PERIOD_M30,k)<iLow(NULL,PERIOD_M30,i) && iLow(NULL,PERIOD_M30,k)-iLow(NULL,PERIOD_M30,i)<m30){
     m30= iLow(NULL,PERIOD_M30,k)-iLow(NULL,PERIOD_M30,i);} } 
   if ((m30-n30)==(n30-m30)){Signalsc="Calculated";Colors=Yellow;} 
   else if ((n30+m30)==(n30-m30)){Signalsc="Resistance";Colors=Red;}   
   else if ((n30+m30)==(m30-n30)){Signalsc="Support";Colors=Lime;}
    string signals3 = "Support_Resistance3";
   ObjectDelete(signals3);
   ObjectCreate(signals3, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(signals3, Signalsc ,Fontsize, "Arial Bold", Colors);
   ObjectSet(signals3, OBJPROP_CORNER, Panel_Corner );
   ObjectSet(signals3, OBJPROP_XDISTANCE, 40+Fontsize + XDISTANCE );
   ObjectSet(signals3, OBJPROP_YDISTANCE, 70 + YDISTANCE );
    string label3 = "Lilita M30";
   ObjectDelete(label3);
   ObjectCreate( label3, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label3,"M30",Fontsize, "Arial Bold", Yellow);
   ObjectSet( label3, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label3, OBJPROP_XDISTANCE, 10 + XDISTANCE );
   ObjectSet( label3, OBJPROP_YDISTANCE, 70 + YDISTANCE );
   
    string Signalsd;
   if(PrevSignal <= 0 || !SB)
   double n60=0;
   for( i=0+k;i<Sensibility+k; i++){    
   if(iHigh(NULL,PERIOD_H1,k)>iHigh(NULL,PERIOD_H1,i) && iHigh(NULL,PERIOD_H1,k)-iHigh(NULL,PERIOD_H1,i)>n60){
     n60=iHigh(NULL,PERIOD_H1,k)-iHigh(NULL,PERIOD_H1,i);} }  
   if(PrevSignal >= 0 || !SB)
   double m60=0;
   for( i=0+k;i<Sensibility+k; i++){if(iLow(NULL,PERIOD_H1,k)<iLow(NULL,PERIOD_H1,i) && iLow(NULL,PERIOD_H1,k)-iLow(NULL,PERIOD_H1,i)<m60){
     m60= iLow(NULL,PERIOD_H1,k)-iLow(NULL,PERIOD_H1,i);} } 
   if ((m60-n60)==(n60-m60)){Signalsd="Calculated";Colors=Yellow;} 
   else if ((n60+m60)==(n60-m60)){Signalsd="Resistance";Colors=Red;}   
   else if ((n60+m60)==(m60-n60)){Signalsd="Support";Colors=Lime;}
    string signals4 = "Support_Resistance4";
   ObjectDelete(signals4);
   ObjectCreate(signals4, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(signals4, Signalsd ,Fontsize, "Arial Bold", Colors);
   ObjectSet(signals4, OBJPROP_CORNER, Panel_Corner );
   ObjectSet(signals4, OBJPROP_XDISTANCE, 40+Fontsize + XDISTANCE );
   ObjectSet(signals4, OBJPROP_YDISTANCE, 85 + YDISTANCE ); 
    string label4 = "Lilita H1";
   ObjectDelete(label4);
   ObjectCreate( label4, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label4,"H1",Fontsize, "Arial Bold", Yellow);
   ObjectSet( label4, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label4, OBJPROP_XDISTANCE, 10 + XDISTANCE );
   ObjectSet( label4, OBJPROP_YDISTANCE, 85 + YDISTANCE );
   
    string Signalse;
   if(PrevSignal <= 0 || !SB)
   double n240=0;
   for( i=0+k;i<Sensibility+k; i++){    
   if(iHigh(NULL,PERIOD_H4,k)>iHigh(NULL,PERIOD_H4,i) && iHigh(NULL,PERIOD_H4,k)-iHigh(NULL,PERIOD_H4,i)>n240){
     n240=iHigh(NULL,PERIOD_H4,k)-iHigh(NULL,PERIOD_H4,i);} }  
   if(PrevSignal >= 0 || !SB)
   double m240=0;
   for( i=0+k;i<Sensibility+k; i++){if(iLow(NULL,PERIOD_H4,k)<iLow(NULL,PERIOD_H4,i) && iLow(NULL,PERIOD_H4,k)-iLow(NULL,PERIOD_H4,i)<m240){
     m240= iLow(NULL,PERIOD_H4,k)-iLow(NULL,PERIOD_H4,i);} } 
   if ((m240-n240)==(n240-m240)){Signalse="Calculated";Colors=Yellow;} 
   else if ((n240+m240)==(n240-m240)){Signalse="Resistance";Colors=Red;}   
   else if ((n240+m240)==(m240-n240)){Signalse="Support";Colors=Lime;}
    string signals5 = "Support_Resistance5";
   ObjectDelete(signals5);
   ObjectCreate(signals5, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(signals5, Signalse ,Fontsize, "Arial Bold", Colors);
   ObjectSet(signals5, OBJPROP_CORNER, Panel_Corner );
   ObjectSet(signals5, OBJPROP_XDISTANCE, 40+Fontsize + XDISTANCE );
   ObjectSet(signals5, OBJPROP_YDISTANCE, 100 + YDISTANCE ); 
    string label5 = "Lilita H4";
   ObjectDelete(label5);
   ObjectCreate( label5, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label5,"H4",Fontsize, "Arial Bold", Yellow);
   ObjectSet( label5, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label5, OBJPROP_XDISTANCE, 10 + XDISTANCE );
   ObjectSet( label5, OBJPROP_YDISTANCE, 100 + YDISTANCE );
   
    string Signalsf;
   if(PrevSignal <= 0 || !SB)
   double n1440=0;
   for( i=0+k;i<Sensibility+k; i++){    
   if(iHigh(NULL,PERIOD_H4,k)>iHigh(NULL,PERIOD_H4,i) && iHigh(NULL,PERIOD_H4,k)-iHigh(NULL,PERIOD_H4,i)>n1440){
     n1440=iHigh(NULL,PERIOD_H4,k)-iHigh(NULL,PERIOD_H4,i);} }  
   if(PrevSignal >= 0 || !SB)
   double m1440=0;
   for( i=0+k;i<Sensibility+k; i++){if(iLow(NULL,PERIOD_H4,k)<iLow(NULL,PERIOD_H4,i) && iLow(NULL,PERIOD_H4,k)-iLow(NULL,PERIOD_H4,i)<m1440){
     m1440= iLow(NULL,PERIOD_H4,k)-iLow(NULL,PERIOD_H4,i);} } 
   if ((m1440-n1440)==(n1440-m1440)){Signalsf="Calculated";Colors=Yellow;} 
   else if ((n1440+m1440)==(n1440-m1440)){Signalsf="Resistance";Colors=Red;}   
   else if ((n1440+m1440)==(m1440-n1440)){Signalsf="Support";Colors=Lime;}
   string signals6 = "Support_Resistance6";
   ObjectDelete(signals6);
   ObjectCreate(signals6, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(signals6, Signalsf ,Fontsize, "Arial Bold", Colors);
   ObjectSet(signals6, OBJPROP_CORNER, Panel_Corner );
   ObjectSet(signals6, OBJPROP_XDISTANCE, 40+Fontsize  + XDISTANCE);
   ObjectSet(signals6, OBJPROP_YDISTANCE, 115 + YDISTANCE ); 
    string label6 = "Lilita D1";
   ObjectDelete(label6);
   ObjectCreate( label6, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label6,"D1",Fontsize, "Arial Bold", Yellow);
   ObjectSet( label6, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label6, OBJPROP_XDISTANCE, 10 + XDISTANCE );
   ObjectSet( label6, OBJPROP_YDISTANCE, 115 + YDISTANCE );   
    
    string label9 = "Indicator label";
   ObjectDelete(label9);
   ObjectCreate( label9, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label9,"S & R lilita ("+Sensibility+")",8, "Arial Bold", Yellow);
   ObjectSet( label9, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label9, OBJPROP_XDISTANCE, 10 + XDISTANCE );
   ObjectSet( label9, OBJPROP_YDISTANCE, 5 + YDISTANCE ); 
    string label10 = "---";
   ObjectDelete(label10);
   ObjectCreate( label10, OBJ_LABEL, 0, 0, 0 );
   ObjectSetText(label10,"-------------------------",8, "Arial Bold", Yellow);
   ObjectSet( label10, OBJPROP_CORNER, Panel_Corner );
   ObjectSet( label10, OBJPROP_XDISTANCE, 10 + XDISTANCE);
   ObjectSet( label10, OBJPROP_YDISTANCE, 15 + YDISTANCE );}}
   WindowRedraw();    
return(0);
  
//+------------------------------------------------------------------+