Index of Chart Sentiment

Index of Chart Sentiment
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
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);
}

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---