PChannel3_Cloud_Digit_Grid Indicator For MT5

PChannel3_Cloud_Digit_Grid Indicator For MT5

The PChannel3_Cloud_Digit_Grid Indicator For MT5 is a price channel indicator that implements color filling of the area inside the channel. This results in a cloud like indicator. The last channel values get shown as price labels, with the additional option to round the latest channel values up to a required number of digits. To facilitate easier viewing, the indicator creates a price grid with rounded values.

The area sandwiched between the upper and middle channel lines gets filled in Pale Green, while the area bounded by the middle and lower channel lines gets filled in Pink. Price crossover in to the Pale Green cloud may provide an early signal of a likely up trend. Conversely, price retreating in to the Pink cloud can be viewed as a sign of potential market weakness.

FREE PChannel3_Cloud_Digit_Grid Indicator

Download the FREE PChannel3_Cloud_Digit_Grid Indicator for MT5.

To receive my email 100% sure: 
Put my email on your whitelist!

 

Partially Automated Trading Besides Your Day Job

Alerts In Real-Time When Divergences Occur

My Recommended MT4/MT5 Broker

 

Installing the PChannel3_Cloud_Digit_Grid Indicator For MT5

After you downloaded the indicator via the form above you need to unzip the zip-file. Then you need to copy the file pchannel3_cloud_digit_grid.mq5 into the folder MQL5\Indicators of your MT5 installation. After that please restart MT5 and then you will be able to see the indicator in the list of indicators.

Parameters of the PChannel3_Cloud_Digit_Grid Indicator For MT5

The PChannel3_Cloud_Digit_Grid Indicator For MT5 has 27 parameters to configure.

input string  SirName="PChannel3_Cloud_Digit_Grid";     //Ïåðâàÿ ÷àñòü èìåíè ãðàôè÷åñêèõ îáúåêòîâ
input uint   PCPeriod=55;
input int    Shift=0;     // Ñäâèã èíäèêàòîðà ïî ãîðèçîíòàëè â áàðàõ
input uint Digit=2; //êîëè÷åñòâî ðàçðÿäîâ îêðóãëåíèÿ
input bool RoundPrice=true; //îêðóãëÿòü öåíû
input bool ShowPrice=true; //ïîêàçûâàòü öåíîâûå ìåòêè
input color  Middle_color=clrBlue;
input color  Upper_color=clrMediumSeaGreen;
input color  Lower_color=clrRed;
input uint  Total=200;                       //êîëè÷åñòâî áëîêîâ ñåòêè ñâåðõó èëè ñíèçó îò öåíû
input color  Color_A = clrSlateBlue;         //öâåò óðîâíÿ 1
input STYLE  Style_A = DASHDOTDOT_;          //ñòèëü ëèíèè óðîâíÿ 1
input WIDTH  Width_A = Width_1;              //òîëùèíà ëèíèè óðîâíÿ 1
input color  Color_B = clrDarkOrange;        //öâåò óðîâíÿ 2
input STYLE  Style_B = DASH_;                //ñòèëü ëèíèè óðîâíÿ 2
input WIDTH  Width_B = Width_1;              //òîëùèíà ëèíèè óðîâíÿ 2
input color  Color_C = clrMagenta;           //öâåò óðîâíÿ 3
input STYLE  Style_C = SOLID_;               //ñòèëü ëèíèè óðîâíÿ 3
input WIDTH  Width_C = Width_1;              //òîëùèíà ëèíèè óðîâíÿ 3
input color  Color_D = clrRed;               //öâåò óðîâíÿ 4
input STYLE  Style_D = SOLID_;               //ñòèëü ëèíèè óðîâíÿ 4
input WIDTH  Width_D = Width_1;              //òîëùèíà ëèíèè óðîâíÿ 4
input color  Color_E = clrLime;              //öâåò óðîâíÿ 5
input STYLE  Style_E = SOLID_;               //ñòèëü ëèíèè óðîâíÿ 5
input WIDTH  Width_E = Width_1;              //òîëùèíà ëèíèè óðîâíÿ 5
input uint Fontsizex= 2;                     //ðàçìåð öåíîâûõ ìåòîê
input bool ShowLineInfo = true;              //îòîáðàæåíèå çíà÷åíèÿ óðîâíÿ íà öåíîâîì ãðàôèêå

Buffers of the PChannel3_Cloud_Digit_Grid Indicator For MT5

The PChannel3_Cloud_Digit_Grid Indicator For MT5 provides 7 buffers.

SetIndexBuffer(0,ExtUp1Buffer,INDICATOR_DATA);
SetIndexBuffer(1,ExtUp2Buffer,INDICATOR_DATA);
SetIndexBuffer(2,ExtABuffer,INDICATOR_DATA);
SetIndexBuffer(3,ExtBBuffer,INDICATOR_DATA);
SetIndexBuffer(4,ExtCBuffer,INDICATOR_DATA);
SetIndexBuffer(5,ExtDn1Buffer,INDICATOR_DATA);
SetIndexBuffer(6,ExtDn2Buffer,INDICATOR_DATA);

Main Parts Of The Code

int OnCalculate(
                const int rates_total,    // êîëè÷åñòâî èñòîðèè â áàðàõ íà òåêóùåì òèêå
                const int prev_calculated,// êîëè÷åñòâî èñòîðèè â áàðàõ íà ïðåäûäóùåì òèêå
                const datetime &Time[],
                const double &Open[],
                const double &High[],
                const double &Low[],
                const double &Close[],
                const long &Tick_Volume[],
                const long &Volume[],
                const int &Spread[]
                )
  {
//---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷åòà
   if(rates_total lt min_rates_total) return(0);
//---- èíäåêñàöèÿ ýëåìåíòîâ â ìàññèâàõ êàê â òàéìñåðèÿõ
   ArraySetAsSeries(Close,false);
   ArraySetAsSeries(Time,false);
//----
   double res=NormalizeDouble(PointPow10*MathCeil(Close[rates_total-1]/PointPow10),Normalize);
   if(prev_calculated!=rates_total)
     {
      for(Count=0; Count lt sizex; Count++) ObjectDelete(0,ObjectNames[Count]);
     }
   for(Count=0; Count lt sizex; Count++) Price[Count]=NormalizeDouble(res+PriceGrid[Count],Normalize);
   datetime Time0=Time[rates_total-1]+PeriodSeconds()*Shift;
   datetime TimeX=Time[0];
   for(Count=0; Count lt sizex; Count++)
     {
      string info="";
      if(ShowLineInfo) info=ObjectNames[Count]+" "+DoubleToString(Price[Count],Normalize);

      if(!NormalizeDouble(Price[Count]-PointPow100000*MathCeil(Price[Count]/PointPow100000),Normalize))
        {
         SetTline(0,ObjectNames[Count],0,TimeX,Price[Count],Time0,Price[Count],Color_E,Style_E,Width_E,info);
        }
      else if(!NormalizeDouble(Price[Count]-PointPow10000*MathCeil(Price[Count]/PointPow10000),Normalize))
        {
         SetTline(0,ObjectNames[Count],0,TimeX,Price[Count],Time0,Price[Count],Color_D,Style_D,Width_D,info);
        }
      else if(!NormalizeDouble(Price[Count]-PointPow1000*MathCeil(Price[Count]/PointPow1000),Normalize))
        {
         SetTline(0,ObjectNames[Count],0,TimeX,Price[Count],Time0,Price[Count],Color_C,Style_C,Width_C,info);
        }
      else  if(!NormalizeDouble(Price[Count]-PointPow100*MathCeil(Price[Count]/PointPow100),Normalize))
        {
         SetTline(0,ObjectNames[Count],0,TimeX,Price[Count],Time0,Price[Count],Color_B,Style_B,Width_B,info);
        }
      else
        {
         SetTline(0,ObjectNames[Count],0,TimeX,Price[Count],Time0,Price[Count],Color_A,Style_A,Width_A,info);
        }
     }
//---- èíäåêñàöèÿ ýëåìåíòîâ â ìàññèâàõ íå êàê â òàéìñåðèÿõ
   ArraySetAsSeries(Close,false);
   ArraySetAsSeries(Time,false);
//---- Îáúÿâëåíèå öåëî÷èñëåííûõ ïåðåìåííûõ
   int limit;
//---- ðàñ÷åò ñòàðòîâîãî íîìåðà limit äëÿ öèêëà ïåðåñ÷åòà áàðîâ
   if(prev_calculated gt rates_total || prev_calculated lt =0)// ïðîâåðêà íà ïåðâûé ñòàðò ðàñ÷åòà èíäèêàòîðà
      limit=rates_total-min_rates_total-1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷åòà âñåõ áàðîâ
   else limit=rates_total-prev_calculated;  // ñòàðòîâûé íîìåð äëÿ ðàñ÷åòà òîëüêî íîâûõ áàðîâ
//---- èíäåêñàöèÿ ýëåìåíòîâ â ìàññèâàõ êàê â òàéìñåðèÿõ  
   ArraySetAsSeries(High,true);
   ArraySetAsSeries(Low,true);
   ArraySetAsSeries(Time,true);
//---- îñíîâíîé öèêë ðàñ÷åòà èíäèêàòîðà
   for(int bar=limit; bar gt =0 && !IsStopped(); bar--)
     {
      ExtABuffer[bar]=High[ArrayMaximum(High,bar,PCPeriod)];
      ExtCBuffer[bar]=Low[ArrayMinimum(Low,bar,PCPeriod)];
      ExtBBuffer[bar]=(ExtABuffer[bar]+ExtCBuffer[bar])/2.0;
      //----
      if(RoundPrice)
        {
         ExtBBuffer[bar]=PointPow10*MathRound(ExtBBuffer[bar]/PointPow10);
         ExtABuffer[bar]=PointPow10*MathCeil(ExtABuffer[bar]/PointPow10);
         ExtCBuffer[bar]=PointPow10*MathFloor(ExtCBuffer[bar]/PointPow10);
        }
      //----
      ExtUp1Buffer[bar]=ExtABuffer[bar];
      ExtUp2Buffer[bar]=ExtBBuffer[bar];
      ExtDn1Buffer[bar]=ExtBBuffer[bar];
      ExtDn2Buffer[bar]=ExtCBuffer[bar];
     }
//----
   if(ShowPrice)
     {
      int bar0=0;
      Time0=Time[bar0]+Shift*PeriodSeconds();
      SetRightPrice(0,middle_name,0,Time0,ExtBBuffer[bar0],Middle_color,"Georgia");
      SetRightPrice(0,upper_name,0,Time0,ExtABuffer[bar0],Upper_color,"Georgia");
      SetRightPrice(0,lower_name,0,Time0,ExtCBuffer[bar0],Lower_color,"Georgia");
     }
//----
   ChartRedraw(0);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|  Ñîçäàíèå òðåíäîâîé ëèíèè                                        |
//+------------------------------------------------------------------+
void CreateTline(
                 long     chart_id,      // èäåíòèôèêàòîð ãðàôèêà
                 string   name,          // èìÿ îáúåêòà
                 int      nwin,          // èíäåêñ îêíà
                 datetime time1,         // âðåìÿ 1 öåíîâîãî óðîâíÿ
                 double   price1,        // 1 öåíîâîé óðîâåíü
                 datetime time2,         // âðåìÿ 2 öåíîâîãî óðîâíÿ
                 double   price2,        // 2 öåíîâîé óðîâåíü
                 color    Color,         // öâåò ëèíèè
                 int      style,         // ñòèëü ëèíèè
                 int      width,         // òîëùèíà ëèíèè
                 string   text           // òåêñò
                 )
//---- 
  {
//----
   ObjectCreate(chart_id,name,OBJ_TREND,nwin,time1,price1,time2,price2);
   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
   ObjectSetInteger(chart_id,name,OBJPROP_STYLE,style);
   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,width);
   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);
   ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,false);
   ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,false);
   ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,false);
   ObjectSetInteger(chart_id,name,OBJPROP_ZORDER,true);
//----
  }
//+------------------------------------------------------------------+
//|  Ïåðåóñòàíîâêà òðåíäîâîé ëèíèè                                   |
//+------------------------------------------------------------------+
void SetTline(
              long     chart_id,      // èäåíòèôèêàòîð ãðàôèêà
              string   name,          // èìÿ îáúåêòà
              int      nwin,          // èíäåêñ îêíà
              datetime time1,         // âðåìÿ 1 öåíîâîãî óðîâíÿ
              double   price1,        // 1 öåíîâîé óðîâåíü
              datetime time2,         // âðåìÿ 2 öåíîâîãî óðîâíÿ
              double   price2,        // 2 öåíîâîé óðîâåíü
              color    Color,         // öâåò ëèíèè
              int      style,         // ñòèëü ëèíèè
              int      width,         // òîëùèíà ëèíèè
              string   text           // òåêñò
              )
//---- 
  {
//----
   if(ObjectFind(chart_id,name)==-1) CreateTline(chart_id,name,nwin,time1,price1,time2,price2,Color,style,width,text);
   else
     {
      ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
      ObjectMove(chart_id,name,0,time1,price1);
      ObjectMove(chart_id,name,1,time2,price2);
      ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
      ObjectSetInteger(chart_id,name,OBJPROP_STYLE,style);
      ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,width);
     }
//----
  }
//+------------------------------------------------------------------+
//|  RightPrice creation                                             |
//+------------------------------------------------------------------+
void CreateRightPrice(long chart_id,// chart ID
                      string   name,              // object name
                      int      nwin,              // window index
                      datetime time,              // price level time
                      double   price,             // price level
                      color    Color,             // Text color
                      string   Font               // Text font
                      )
//---- 
  {
//----
   ObjectCreate(chart_id,name,OBJ_ARROW_RIGHT_PRICE,nwin,time,price);
   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
   ObjectSetString(chart_id,name,OBJPROP_FONT,Font);
   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);
   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,2);
//----
  }
//+------------------------------------------------------------------+
//|  RightPrice reinstallation                                       |
//+------------------------------------------------------------------+
void SetRightPrice(long chart_id,// chart ID
                   string   name,              // object name
                   int      nwin,              // window index
                   datetime time,              // price level time
                   double   price,             // price level
                   color    Color,             // Text color
                   string   Font               // Text font
                   )
//---- 
  {
//----
   if(ObjectFind(chart_id,name)==-1) CreateRightPrice(chart_id,name,nwin,time,price,Color,Font);
   else ObjectMove(chart_id,name,0,time,price);
//----
  }
//+------------------------------------------------------------------+

 

About Me

I'm Mike Semlitsch the owner of PerfectTrendSystem.com. My trading career started in 2007. Since 2013 I have helped thousands of traders to take their trading to the next level. Many of them are now constantly profitable traders. 

The following performance was achieved by me while trading live in front of hundreds of my clients:

Connect With Me:  

Results From 5 Months!
This service starts soon! Be the first who get's notified when it begins!

This FREE Indicator Can Transform
Your Trading!

FREE Indicator + Telegram Group


Request the Ultimate Double Top/Bottom Indicator which is used by 10,000+ traders.