Index of Chart Sentiment





//+--------------------------------------------------------+
//| Candle_Code      Ñâå÷íîé èíäèêàòîð ñèììåòðè÷íûé êîä.mq4|
//|Copight © 2005,àëãîðèòì Ëèõîâèäîâ, äîðàáîòàë Tiger Woods|
//|                                e-mail:tagir1970@mail.ru|
//+--------------------------------------------------------+
//Îñíîâíîå îòëè÷èå îò èíäèêàòîðà Ëèõîâèäîâà â òîì, ÷òî áåëûå è ÷åðíûå ñâå÷è êîäèðóþòñÿ îäèíàêîâûì îáðàçîì,
//ò.å. åñëè ó áåëîé ñâå÷è êîä ðàâåí 50, òî ó òàêîé æå ÷åðíîé ñâå÷è êîä ðàâåí -50. Òàêèì îáðàçîì, èíäèêàòîð ñèììåòðè÷åí 
//îòíîñèòåëüíî íóëåâîé ëèíèè. 
#property  copyright "Copyright © 2005-2007,Tiger Woods"
#property  link      "e-mail:tagir1970@mail.ru"
//---- indicator settings
#property  indicator_separate_window
#property indicator_minimum -50
#property indicator_maximum  50

#property  indicator_buffers 2
#property  indicator_color1  Red
#property  indicator_color2  Blue

#property indicator_level1 -25
#property indicator_level2 -50
#property indicator_level3  50
#property indicator_level4  25
#property indicator_level5   0

//---- ïàðàìåòðû èíäèêàòîðà
//extern int    îñíîâíàÿ_ëèíèÿ   =3;  //ïåðèîä ñðåäíåé ïðè ñãëàæèâàíèè îñíîâíîé ëèíèè
//extern int    ñèãíàëüíàÿ_ëèíèÿ =2;  //ïåðèîä ñðåäíåé ïðè ñãëàæèâàíèè ñèãíàëüíîé ëèíèè
extern int    îñíîâíàÿ_ëèíèÿ   =3;  //ïåðèîä ñðåäíåé ïðè ñãëàæèâàíèè îñíîâíîé ëèíèè
extern int    ñèãíàëüíàÿ_ëèíèÿ =2;  //ïåðèîä ñðåäíåé ïðè ñãëàæèâàíèè ñèãíàëüíîé ëèíèè
extern int    òåëî_äîæè        =5;  //ðàçìåð òåëà ñâå÷è â ïóíêòàõ, ïðè êîòîðîì îíà ñ÷èòàåòñÿ äîæè
extern int    áîëëèíäæåð       =55; //ïåðèîä Áîëëèíäæåðà
extern double îòêëîíåíèå       =0.5;//ñòàíäàðòíîå îòêëîíåíèå 
//---- èíäèêàòîðíûå ìàññèâû
double code[],code_av1[],code_av2[],code_av3[],code_av4[],h_shadow[],l_shadow[],body[];
#define	MODE_UPPER	1
#define	MODE_LOWER	2
     int init()
  {
//---- Äëÿ ðàñ÷åòîâ èñïîëüçóþ 8 ìàññèâîâ
   IndicatorBuffers(8);
//----óñòàíîâêè äëÿ ðèñîâàíèÿ 
   SetIndexStyle(0,DRAW_LINE);
   SetIndexDrawBegin(0,2*îñíîâíàÿ_ëèíèÿ);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,2*(îñíîâíàÿ_ëèíèÿ+ñèãíàëüíàÿ_ëèíèÿ));
   IndicatorDigits(2);
   //---- 2 èíäèêàòîðíûõ ìàññèâà è 6 äëÿ âû÷èñëåíèé
   if(!SetIndexBuffer(0,code_av2)&&!SetIndexBuffer(1,code_av4)&&
      !SetIndexBuffer(2,code_av1)&&!SetIndexBuffer(3,code_av3)&&
      !SetIndexBuffer(4,    code)&&!SetIndexBuffer(5,    body)&&
      !SetIndexBuffer(6,l_shadow)&&!SetIndexBuffer(7,h_shadow))
      Print("cannot set indicator buffers!");
//---- Èìÿ äëÿ îêíà è ïåðèîäîâ
  IndicatorShortName("Èíäåêñ ÍÐ("+îñíîâíàÿ_ëèíèÿ+","+ñèãíàëüíàÿ_ëèíèÿ+","+òåëî_äîæè+","+áîëëèíäæåð+","+DoubleToStr(îòêëîíåíèå,1)+")");
//---- Èíèöèàëèçàöèÿ ñäåëàíà
   return(0);
  }

int start()
{  
   double h_limit_body,h_limit_h_shadow,h_limit_l_shadow,l_limit_body,l_limit_h_shadow,l_limit_l_shadow;
   int    i,counted_bars=IndicatorCounted(),limit=Bars-counted_bars;
  
   if(counted_bars<0) return(-1);
//---- ïîñëåäíèé áàð âû÷èñëþ åùå ðàç
   if(counted_bars>0) limit--;
//âû÷èñëÿþ âåëè÷èíû òåëà è òåíåé äëÿ áàðîâ, íà÷èíàÿ ñ limit äî 0 
for(i=limit;i>=0;i--)
   {
      body    [i]=MathAbs(Open[i]-Close[i]);        //òåëî
      h_shadow[i]=High[i]-MathMax(Open[i],Close[i]);//âåðõíÿÿ òåíü
      l_shadow[i]=MathMin(Open[i],Close[i])-Low[i]; //íèæíÿÿ òåíü
   }
//âû÷èñëÿþ code äëÿ ýëåìåíòîâ ìàññèâà
for(i=limit;i>=0;i--)
   {
      code[i]=0;//îáíóëÿþ ñòàðîå çíà÷åíèå
//âû÷èñëÿþ ïîðîãè äëÿ òåëà è òåíåé áàðà
      h_limit_body    =BandsOnArray(body,    Bars,áîëëèíäæåð,îòêëîíåíèå,MODE_UPPER,i);//âåðõíèé ïîðîã äëÿ òåëà
      l_limit_body    =BandsOnArray(body,    Bars,áîëëèíäæåð,îòêëîíåíèå,MODE_LOWER,i);//íèæíèé ïîðîã äëÿ òåëà 
         
      h_limit_h_shadow=BandsOnArray(h_shadow,Bars,áîëëèíäæåð,îòêëîíåíèå,MODE_UPPER,i);//âåðõíèé ïîðîã äëÿ âåðõíåé òåíè 
      l_limit_h_shadow=BandsOnArray(h_shadow,Bars,áîëëèíäæåð,îòêëîíåíèå,MODE_LOWER,i);//íèæíèé ïîðîã äëÿ âåðõíåé òåíè 
         
      h_limit_l_shadow=BandsOnArray(l_shadow,Bars,áîëëèíäæåð,îòêëîíåíèå,MODE_UPPER,i);//âåðõíèé ïîðîã äëÿ íèæíåé òåíè
      l_limit_l_shadow=BandsOnArray(l_shadow,Bars,áîëëèíäæåð,îòêëîíåíèå,MODE_LOWER,i);//íèæíèé ïîðîã äëÿ íèæíåé òåíè 

//âû÷èñëÿþ êîä äëÿ öâåòà è äëÿ òåëà ñâå÷è
      if(body[i]>òåëî_äîæè*Point)//íå äîæè 
        {
          if(Close[i]>Open[i])//áåëàÿ ñâå÷à
            {                                      
              if     (body[i]<l_limit_body) code[i]+=16;//ìàëåíüêîå òåëî
              else if(body[i]<h_limit_body) code[i]+=32;//ñðåäíåå òåëî
              else                          code[i]+=48;//áîëüøîå òåëî
            }                      
          else                //÷åðíàÿ ñâå÷à 
            {                                     
              if     (body[i]<l_limit_body) code[i]-=16;//ìàëåíüêîå òåëî
              else if(body[i]<h_limit_body) code[i]-=32;//ñðåäíåå òåëî
              else                          code[i]-=48;//áîëüøîå òåëî
            }
        } 
      else                                  code[i]+= 0;//äîæè 
//âû÷èñëÿþ êîä äëÿ âåðõíåé òåíè 
      if     (h_shadow[i]==0)               code[i]+= 0;//âåðõíÿÿ òåíü îòñóòñòâóåò
      else if(h_shadow[i]<l_limit_h_shadow) code[i]+= 4;//ìàëåíüêàÿ âåðõíÿÿ òåíü
      else if(h_shadow[i]<h_limit_h_shadow) code[i]+= 8;//ñðåäíÿÿ âåðõíÿÿ òåíü
      else                                  code[i]+=12;//áîëüøàÿ âåðõíÿÿ òåíü             
//âû÷èñëÿþ êîä äëÿ íèæíåé òåíè 
      if     (l_shadow[i]==0)               code[i]-= 0;//íèæíÿÿ òåíü îòñóòñòâóåò
      else if(l_shadow[i]<l_limit_l_shadow) code[i]-= 4;//ìàëåíüêàÿ íèæíÿÿ òåíü 
      else if(l_shadow[i]<h_limit_l_shadow) code[i]-= 8;//ñðåäíÿÿ íèæíÿÿ òåíü
      else                                  code[i]-=12;//áîëüøàÿ íèæíÿÿ òåíü  
   }
//îñíîâíàÿ ëèíèÿ, ñãëàæèâàíèå 2 ðàçà    
for(i=limit;i>=0;i--) code_av1[i]=iMAOnArray(code,    Bars,îñíîâíàÿ_ëèíèÿ,  0,3,i);
for(i=limit;i>=0;i--) code_av2[i]=iMAOnArray(code_av1,Bars,îñíîâíàÿ_ëèíèÿ,  0,3,i);
//ñèãíàëüíàÿ ëèíèÿ, ñãëàæèâàíèå 2 ðàçà  
for(i=limit;i>=0;i--) code_av3[i]=iMAOnArray(code_av2,Bars,ñèãíàëüíàÿ_ëèíèÿ,0,3,i);
for(i=limit;i>=0;i--) code_av4[i]=iMAOnArray(code_av3,Bars,ñèãíàëüíàÿ_ëèíèÿ,0,3,i); 
 
return(0);
 }
//---------------------------------------------------------------------------
//Ðàñ÷åò èíäèêàòîðà Bollinger Bands ñ äðîáíûì îòêëîíåíèåì íà äàííûõ, õðàíÿùèõñÿ â ìàññèâå (îäíà òî÷êà):
//---------------------------------------------------------------------------
double BandsOnArray(double array[],int total,int period,double b_deviation,int mode,int shift)
{
	double deviation,sum,newres,ma_centr;

	if((shift+period)>=total||shift<0) return(0);
//Âû÷èñëèì öåíòðàëüíóþ ëèíèþ (ñðåäíþþ):
   ma_centr=0.0;
   int k=shift+period-1;
	while(k>=shift)
     {
       ma_centr+=array[k];
	    k--;
	  }
   ma_centr=ma_centr/period;
//Âåðõíÿÿ/íèæíÿÿ ëèíèè êàíàëà:   
	sum=0.0;
   k=shift+period-1;
	while(k>=shift)
     {
       newres=array[k]-ma_centr;
	    sum  +=newres*newres;
	    k--;
	  }
	deviation=b_deviation*MathSqrt(sum/period);
	if(mode==MODE_UPPER) return(ma_centr+deviation);
	if(mode==MODE_LOWER) return(ma_centr-deviation);
	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 highest prices of each bar
Series array that contains the lowest 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: