20090717_SupportEX_v.3





//+------------------------------------------------------------------+
//|                                                    SupportEX.mq4 |
//|                                                    Ø.Àëåêñàíäð. |
//|                                              shestovav@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Ø.Àëåêñàíäð.Â"
#property link      "shestovav@gmail.com"

#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
extern int äðîáü = 5;
//---
extern bool Äåíü = true;
extern bool Íåäåëÿ = true;
extern bool Ìåñÿö = true;
//---
extern bool OC = true;
extern bool HL = true;
//---

extern color cMN = Red;
extern color cW1 = Gold;
extern color cD1 = Green;

datetime TimeBegin, TimeEnd;

int d,w,mn;
int tD=0,tW=0,tMN=0;
int D=1,W=1,MN=1;


string   D0 = " DO ";
string   DC = " DC ";
string   DH = " DH ";
string   DL = " DL ";

string   W0 = " W0 ";
string   WC = " WC ";
string   WH = " WH ";
string   WL = " WL ";

string   MN0 = " MN0 ";
string   MNC = " MNC ";
string   MNH = " MNH ";
string   MNL = " MNL ";

int deinit()
  {
//----
ObjectsDeleteAll(0, OBJ_TREND);  
//----
   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--)
   {
     if(Äåíü)
         {
               d++;
               TimeBegin = iTime(NULL,PERIOD_D1,tD);
               TimeEnd = (TimeBegin + 86400);
         
               double D1_Open  =iOpen(NULL,PERIOD_D1,D);
               double D1_Close =iClose(NULL,PERIOD_D1,D);
               double D1_High  =iHigh(NULL,PERIOD_D1,D);
               double D1_Low   =iLow(NULL,PERIOD_D1,D);

               if(OC){
               ObjectCreate (D0+d,OBJ_TREND, 0, 0,0, 0,0,0,0);
               ObjectSet (D0+d,OBJPROP_RAY,false);
               ObjectSet (D0+d,OBJPROP_TIME1, TimeBegin);
               ObjectSet (D0+d,OBJPROP_PRICE1, D1_Open);
               ObjectSet (D0+d,OBJPROP_TIME2, TimeEnd);
               ObjectSet (D0+d,OBJPROP_PRICE2, D1_Open);
               ObjectSet (D0+d,OBJPROP_COLOR,cD1); // èçìåíÿåì öâåò ëèíèè
               ObjectSet (D0+d,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
               ObjectSet (D0+d,OBJPROP_STYLE,STYLE_SOLID); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé
               ObjectSetText(D0+d,D0+DoubleToStr(D1_Open,äðîáü),10);  
         
               ObjectCreate (DC+d, OBJ_TREND, 0, 0,0, 0,0,0,0);
               ObjectSet (DC+d,OBJPROP_RAY,false);
               ObjectSet (DC+d, OBJPROP_TIME1,TimeBegin);
               ObjectSet (DC+d, OBJPROP_PRICE1, D1_Close);
               ObjectSet (DC+d, OBJPROP_TIME2, TimeEnd);
               ObjectSet (DC+d, OBJPROP_PRICE2, D1_Close);
               ObjectSet (DC+d,OBJPROP_COLOR,cD1); // èçìåíÿåì öâåò ëèíèè
               ObjectSet (DC+d,OBJPROP_WIDTH,3); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
               ObjectSet (DC+d,OBJPROP_STYLE,STYLE_SOLID); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé
               ObjectSetText(DC+d,DC+DoubleToStr(D1_Close,äðîáü),10);} 
               if(HL){
               ObjectCreate (DH+d, OBJ_TREND, 0, 0,0, 0,0,0,0);
               ObjectSet (DH+d,OBJPROP_RAY,false);
               ObjectSet (DH+d, OBJPROP_TIME1, TimeBegin);
               ObjectSet (DH+d, OBJPROP_PRICE1, D1_High);
               ObjectSet (DH+d, OBJPROP_TIME2, TimeEnd);
               ObjectSet (DH+d, OBJPROP_PRICE2, D1_High);
               ObjectSet (DH+d,OBJPROP_COLOR,cD1); // èçìåíÿåì öâåò ëèíèè
               ObjectSet (DH+d,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
               ObjectSet (DH+d,OBJPROP_STYLE,STYLE_DOT); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé  
               ObjectSetText(DH+d,DH+DoubleToStr(D1_High,äðîáü),10);  
         
               ObjectCreate (DL+d, OBJ_TREND, 0, 0,0, 0,0,0,0);
               ObjectSet (DL+d,OBJPROP_RAY,false);
               ObjectSet (DL+d, OBJPROP_TIME1,TimeBegin);
               ObjectSet (DL+d, OBJPROP_PRICE1, D1_Low);
               ObjectSet (DL+d, OBJPROP_TIME2, TimeEnd);
               ObjectSet (DL+d, OBJPROP_PRICE2, D1_Low);
               ObjectSet (DL+d,OBJPROP_COLOR,cD1); // èçìåíÿåì öâåò ëèíèè
               ObjectSet (DL+d,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
               ObjectSet (DL+d,OBJPROP_STYLE,STYLE_DOT); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé
               ObjectSetText(DL+d,DL+DoubleToStr(D1_Low,äðîáü),10);}
         
               tD++;
               D++;
         }
     
     if(Íåäåëÿ)
         {
               w++;
               TimeBegin = iTime(NULL,PERIOD_W1,tW);
               TimeEnd = (TimeBegin + 518400);
         
               double W1_Open  =iOpen(NULL,PERIOD_W1,W);
               double W1_Close =iClose(NULL,PERIOD_W1,W);
               double W1_High  =iHigh(NULL,PERIOD_W1,W);
               double W1_Low   =iLow(NULL,PERIOD_W1,W);
               
               if(OC){
               ObjectCreate (W0+w, OBJ_TREND, 0, 0,0, 0,0,0,0);
               ObjectSet (W0+w,OBJPROP_RAY,false);
               ObjectSet (W0+w, OBJPROP_TIME1, TimeBegin);
               ObjectSet (W0+w, OBJPROP_PRICE1, W1_Open);
               ObjectSet (W0+w, OBJPROP_TIME2, TimeEnd);
               ObjectSet (W0+w, OBJPROP_PRICE2, W1_Open);
               ObjectSet (W0+w,OBJPROP_COLOR,cW1); // èçìåíÿåì öâåò ëèíèè
               ObjectSet (W0+w,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
               ObjectSet (W0+w,OBJPROP_STYLE,STYLE_SOLID); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé
               ObjectSetText(W0+w,"                   "+W0+DoubleToStr(W1_Open,äðîáü),10);   
         
               ObjectCreate (WC+w, OBJ_TREND, 0, 0,0, 0,0,0,0);
               ObjectSet (WC+w,OBJPROP_RAY,false);
               ObjectSet (WC+w, OBJPROP_TIME1, TimeBegin);
               ObjectSet (WC+w, OBJPROP_PRICE1, W1_Close);
               ObjectSet (WC+w, OBJPROP_TIME2, TimeEnd);
               ObjectSet (WC+w, OBJPROP_PRICE2, W1_Close);
               ObjectSet (WC+w,OBJPROP_COLOR,cW1); // èçìåíÿåì öâåò ëèíèè
               ObjectSet (WC+w,OBJPROP_WIDTH,3); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
               ObjectSet (WC+w,OBJPROP_STYLE,STYLE_SOLID); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé
               ObjectSetText(WC+w,"                   "+WC+DoubleToStr(W1_Close,äðîáü),20);}  
               if(HL){
               ObjectCreate (WH+w, OBJ_TREND, 0, 0,0, 0,0,0,0);
               ObjectSet (WH+w,OBJPROP_RAY,false);
               ObjectSet (WH+w, OBJPROP_TIME1, TimeBegin);
               ObjectSet (WH+w, OBJPROP_PRICE1, W1_High);
               ObjectSet (WH+w, OBJPROP_TIME2, TimeEnd);
               ObjectSet (WH+w, OBJPROP_PRICE2, W1_High);
               ObjectSet (WH+w,OBJPROP_COLOR,cW1); // èçìåíÿåì öâåò ëèíèè
               ObjectSet (WH+w,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
               ObjectSet (WH+w,OBJPROP_STYLE,STYLE_DOT); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé  
               ObjectSetText(WH+w,"                   "+WH+DoubleToStr(W1_High,äðîáü),10); 
         
               ObjectCreate (WL+w, OBJ_TREND, 0, 0,0, 0,0,0,0);
               ObjectSet (WL+w,OBJPROP_RAY,false);
               ObjectSet (WL+w, OBJPROP_TIME1,TimeBegin);
               ObjectSet (WL+w, OBJPROP_PRICE1, W1_Low);
               ObjectSet (WL+w, OBJPROP_TIME2, TimeEnd);
               ObjectSet (WL+w, OBJPROP_PRICE2, W1_Low);
               ObjectSet (WL+w,OBJPROP_COLOR,cW1); // èçìåíÿåì öâåò ëèíèè
               ObjectSet (WL+w,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
               ObjectSet (WL+w,OBJPROP_STYLE,STYLE_DOT); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé
               ObjectSetText(WL+w,"                   "+WL+DoubleToStr(W1_Low,äðîáü),10);} 
         
               tW++;
               W++; 
            }

     if(Ìåñÿö)
         {
         mn++;  
         TimeBegin = iTime(NULL,PERIOD_MN1,tMN);
         TimeEnd = (TimeBegin + 86400*30);
         
         double MN_Open  =iOpen(NULL,PERIOD_MN1,MN);
         double MN_Close =iClose(NULL,PERIOD_MN1,MN);
         double MN_High  =iHigh(NULL,PERIOD_MN1,MN);
         double MN_Low   =iLow(NULL,PERIOD_MN1,MN);
         
         if(OC){
         ObjectCreate (MN0+mn, OBJ_TREND, 0, 0,0, 0,0,0,0);
         ObjectSet (MN0+mn,OBJPROP_RAY,false);
         ObjectSet (MN0+mn, OBJPROP_TIME1, TimeBegin);
         ObjectSet (MN0+mn, OBJPROP_PRICE1, MN_Open);
         ObjectSet (MN0+mn, OBJPROP_TIME2, TimeEnd);
         ObjectSet (MN0+mn, OBJPROP_PRICE2, MN_Open);
         ObjectSet (MN0+mn,OBJPROP_COLOR,cMN); // èçìåíÿåì öâåò ëèíèè
         ObjectSet (MN0+mn,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
         ObjectSet (MN0+mn,OBJPROP_STYLE,STYLE_SOLID); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé
         ObjectSetText(MN0+mn,"                                   "+MN0+DoubleToStr(MN_Open,äðîáü),10);   
         
         ObjectCreate (MNC+mn, OBJ_TREND, 0, 0,0, 0,0,0,0);
         ObjectSet (MNC+mn,OBJPROP_RAY,false);
         ObjectSet (MNC+mn, OBJPROP_TIME1, TimeBegin);
         ObjectSet (MNC+mn, OBJPROP_PRICE1, MN_Close);
         ObjectSet (MNC+mn, OBJPROP_TIME2, TimeEnd);
         ObjectSet (MNC+mn, OBJPROP_PRICE2, MN_Close);
         ObjectSet (MNC+mn,OBJPROP_COLOR,cMN); // èçìåíÿåì öâåò ëèíèè
         ObjectSet (MNC+mn,OBJPROP_WIDTH,3); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
         ObjectSet (MNC+mn,OBJPROP_STYLE,STYLE_SOLID); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé 
         ObjectSetText(MNC+mn,"                                   "+MNC+DoubleToStr(MN_Close,äðîáü),10);}
         if(HL){
         ObjectCreate (MNH+mn, OBJ_TREND, 0, 0,0, 0,0,0,0);
         ObjectSet (MNH+mn,OBJPROP_RAY,false);
         ObjectSet (MNH+mn, OBJPROP_TIME1, TimeBegin);
         ObjectSet (MNH+mn, OBJPROP_PRICE1, MN_High);
         ObjectSet (MNH+mn, OBJPROP_TIME2, TimeEnd);
         ObjectSet (MNH+mn, OBJPROP_PRICE2, MN_High);
         ObjectSet (MNH+mn,OBJPROP_COLOR,cMN); // èçìåíÿåì öâåò ëèíèè
         ObjectSet (MNH+mn,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
         ObjectSet (MNH+mn,OBJPROP_STYLE,STYLE_DOT); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé  
         ObjectSetText(MNH+mn,"                                   "+MNH+DoubleToStr(MN_High,äðîáü),10); 
         
         ObjectCreate (MNL+mn, OBJ_TREND, 0, 0,0, 0,0,0,0);
         ObjectSet (MNL+mn,OBJPROP_RAY,false);
         ObjectSet (MNL+mn, OBJPROP_TIME1, TimeBegin);
         ObjectSet (MNL+mn, OBJPROP_PRICE1, MN_Low);
         ObjectSet (MNL+mn, OBJPROP_TIME2, TimeEnd);
         ObjectSet (MNL+mn, OBJPROP_PRICE2, MN_Low);
         ObjectSet (MNL+mn,OBJPROP_COLOR,cMN); // èçìåíÿåì öâåò ëèíèè
         ObjectSet (MNL+mn,OBJPROP_WIDTH,1); // òåïåðü ëèíèÿ áóäåò òîëùèíîé â 3 ïèêñåëÿ
         ObjectSet (MNL+mn,OBJPROP_STYLE,STYLE_DOT); // òåïåðü íèæíÿÿ ëèíèÿ áóäåò ïóíêòèðíîé
         ObjectSetText(MNL+mn,"                                   "+MNL+DoubleToStr(MN_Low,äðîáü),10);} 
      
         tMN++;
         MN++; 
       }
   }

   
   return;
}
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

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


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: