ShadowCandles





//+------------------------------------------------------------------+
//|                                                ShadowCandles.mq4 |
//|                            Copyright © 2009, ÏàâåëÈâàíîâè÷ (api) |
//|                                              p231970@hotmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, ÏàâåëÈâàíîâè÷ (api)"
#property link      "p231970@hotmail.com"

#property indicator_chart_window
//---- input parameters
extern int       iPeriod=60;
extern int       iNumCandles=100;
extern color     BullCandle=LightSkyBlue;
extern color     BearCandle=SandyBrown;
extern color     BullShadow=Blue;
extern color     BearShadow=Orange;

double data[][6];

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   for(int i=0;i<iNumCandles;i++)
   {
      ObjectDelete("ShadowCandle"+i);
      ObjectDelete("ShadowCandleShadow"+i);
   }
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   if(iPeriod<=Period()) return(0);

   ArrayCopyRates(data,NULL,iPeriod);
   for(int i=0;i<iNumCandles;i++)
   {
      if(i>0) data[i][5] = data[i-1][0]-60*Period();
      else data[0][5]= Time[0];
      DrawCandle(i);
   }
}

void DrawCandle(int bar)
{
   string name1 = "ShadowCandleShadow"+bar;
   string name2 = "ShadowCandle"+bar;
   if(!ObjectCreate(name1,OBJ_RECTANGLE,0,data[bar][0],data[bar][2],data[bar][5],data[bar][3]))
   {
      ObjectSet(name1,OBJPROP_TIME1,data[bar][0]);
      ObjectSet(name1,OBJPROP_TIME2,data[bar][5]);
      ObjectSet(name1,OBJPROP_PRICE1,data[bar][2]);
      ObjectSet(name1,OBJPROP_PRICE2,data[bar][3]);
   }
   ObjectSet(name1,OBJPROP_BACK,false);
   if(!ObjectCreate(name2,OBJ_RECTANGLE,0,data[bar][0],data[bar][1],data[bar][5],data[bar][4]))
   {
      ObjectSet(name2,OBJPROP_TIME1,data[bar][0]);
      ObjectSet(name2,OBJPROP_TIME2,data[bar][5]);
      ObjectSet(name2,OBJPROP_PRICE1,data[bar][1]);
      ObjectSet(name2,OBJPROP_PRICE2,data[bar][4]);
   }
   ObjectSet(name2,OBJPROP_BACK,true);
   if(data[bar][1]<data[bar][4])
   {
      ObjectSet(name1,OBJPROP_COLOR, BullShadow);
      ObjectSet(name2,OBJPROP_COLOR, BullCandle);
   }else
   {
      ObjectSet(name1,OBJPROP_COLOR, BearShadow);
      ObjectSet(name2,OBJPROP_COLOR, BearCandle);
   }
}
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: