to_ind_CandlCode_ICS





//+------------------------------------------------------------------+
//|                                         to_ind_CandlCode_ICS.mq4 |
//|                                                                * |
//|                                                                * |
//+------------------------------------------------------------------+
#property copyright "Integer"
#property link      "for-good-letters@yandex.ru"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_minimum 0
#property indicator_maximum 128
#property indicator_level1 35
#property indicator_level2 64
#property indicator_level3 93


//---- input parameters
extern int       BBPeriod=55;
extern double    BBDevs=0.5; 
extern int       smPeriod=3; 
extern int       smMethod=0; 
//---- buffers
double body[];
double ushd[];
double lshd[];

double Buf4[];
double Buf5[];
double Buf6[];
double Buf7[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators

   IndicatorBuffers(7);

   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Buf4);
   
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Buf7);   

   SetIndexBuffer(2,body);
   SetIndexBuffer(3,lshd);
   SetIndexBuffer(4,ushd);
   SetIndexBuffer(5,Buf5);
   SetIndexBuffer(6,Buf6);   

   SetIndexLabel(0,"CandlCode ICS");
   SetIndexLabel(1,"CandlCode ICS Smoothed");   
   IndicatorDigits(0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    limit=Bars-IndicatorCounted()-1;
      for(int i=limit;i>=0;i--){
         body[i]=MathAbs(Open[i]-Close[i]);
         lshd[i]=Close[i]-Low[i];
         if(Close[i]>=Open[i])lshd[i]=Open[i]-Low[i];
         ushd[i]=High[i]-Open[i];
         if(Close[i]>=Open[i])ushd[i]=High[i]-Close[i];         
      }
      for(i=limit;i>=0;i--){
         double ThBot_b=iMAOnArray(body,0,BBPeriod,0,1,i)-BBDevs*(iMAOnArray(body,0,BBPeriod,0,1,i)-iBandsOnArray(body,0,BBPeriod,1,0,MODE_LOWER,i));
         double ThBot_l=iMAOnArray(lshd,0,BBPeriod,0,1,i)-BBDevs*(iMAOnArray(lshd,0,BBPeriod,0,1,i)-iBandsOnArray(lshd,0,BBPeriod,1,0,MODE_LOWER,i));
         double ThBot_u=iMAOnArray(ushd,0,BBPeriod,0,1,i)-BBDevs*(iMAOnArray(ushd,0,BBPeriod,0,1,i)-iBandsOnArray(ushd,0,BBPeriod,1,0,MODE_LOWER,i));
         double ThTop_b=iMAOnArray(body,0,BBPeriod,0,1,i)+BBDevs*(-iMAOnArray(body,0,BBPeriod,0,1,i)+iBandsOnArray(body,0,BBPeriod,1,0,MODE_UPPER,i));
         double ThTop_l=iMAOnArray(lshd,0,BBPeriod,0,1,i)+BBDevs*(-iMAOnArray(lshd,0,BBPeriod,0,1,i)+iBandsOnArray(lshd,0,BBPeriod,1,0,MODE_UPPER,i));
         double ThTop_u=iMAOnArray(ushd,0,BBPeriod,0,1,i)+BBDevs*(-iMAOnArray(ushd,0,BBPeriod,0,1,i)+iBandsOnArray(ushd,0,BBPeriod,1,0,MODE_UPPER,i));

         double k1=0;
         if(Close[i]==Open[i])k1=1;
         double k2=48;
         if(ushd[i]>=lshd[i])k2=64;
         double k3=1;
         if(Close[i]==Open[i])k3=0;
         double k4=0;
         if(Close[i]>Open[i])k4=1;
         double k5=0;
         if(body[i]<=ThBot_b)k5=80;
         double k6=0;
         if(body[i]>ThBot_b && body[i]<=ThTop_b)k6=96;
         double k7=0;
         if(body[i]>ThTop_b)k7=112;
         double k8=0;
         if(Close[i]<Open[i])k8=1;
         double k9=0;
         if(body[i]<=ThBot_b)k9=32;
         double k10=0;
         if(body[i]>ThBot_b && body[i]<=ThTop_b)k10=16;
         double CandleCode_b=k1*k2+k3*(k4*(k5+k6+k7)+k8*(k9+k10));
   
 
         k1=0;
         if(lshd[i]==0)k1=3;
         k2=0;
         if(lshd[i]<ThBot_l && lshd[i]>0)k2=2;
         k3=0;
         if(lshd[i]>ThBot_l && lshd[i]<=ThTop_l && lshd[i]>0)k3=1;
         double CandleCode_l=k1+k2+k3;

 
         k1=0;
         if(ushd[i]>0 && ushd[i]<=ThBot_u)k1=4;
         k2=0;
         if(ushd[i]>ThBot_u && ushd[i]<=ThTop_u)k2=8;
         k3=0;
         if(ushd[i]>ThTop_u)k3=12;
         double CandleCode_u=k1+k2+k3;

 
         double CandlCode=CandleCode_b+CandleCode_l+CandleCode_u;
         Buf4[i]=CandlCode;

      }  
      for(i=limit;i>=0;i--){
         Buf5[i]=iMAOnArray(Buf4,0,smPeriod,0,smMethod,i);
      }      
      for(i=limit;i>=0;i--){
         Buf6[i]=iMAOnArray(Buf5,0,smPeriod,0,smMethod,i);
      }        
      for(i=limit;i>=0;i--){
         Buf7[i]=iMAOnArray(Buf6,0,smPeriod,0,smMethod,i);
      }        
      
          
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

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


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: