MA_RSI_BB





//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// MA_RSI_BB.mq4                                                             Èíäèêàòîð. 
// Ïîñòðîåí íà îñíîâå ñòàíäàðíûõ èíäèêàòîðîâ RSI è ÂÂ îò MetaQuotes Software Corp.
// ÌÀ ñòðîèòñÿ ïî öåíàì çàêðûòèÿ. RSI ñòðîèòñÿ íà îñíîâå ÌÀ. 
// Ëèíèè BB ñòðîÿòñÿ íà îñíîâå ìàññèâà RSI.
// Ñåðãåé Êîâàë¸â, Äíåïðîïåòðîâñê, sk@autograf.dp.ua, ICQ 64015987, http://autograf.dp.ua
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ 0 ææ
#property copyright "Copyright SK AutoGraf © 2008"
#property link      "http://autograf.dp.ua/"

#property indicator_separate_window             // Èíäèêàïòîð â îòäåëüíîì îêíå
#property indicator_minimum 0                   // Óðîâåíü ìèíèìóì
#property indicator_maximum 100                 // Óðîâåíü ìàêñèìóì
#property indicator_buffers 6                   // Êîëè÷åñòâî áóôåðîâ 6
//================================================================================== 1 ==
#property indicator_color1 Gold           // Öâåò äëÿ RSI
 
extern int MA_period= 2;                        // Ïåðèîä ÌÀ (ðàñ÷¸ò íå ïî Close,à ïî ÌÀ)
extern int RSIPeriod=14;                        // Ïåðèîä äëÿ ðàñ÷¸òà RSI
extern int Level_1 = 70;                        // Óðîâåíü 1
extern int Level_2 = 30;                        // Óðîâåíü 2

double RSIBuffer[];                             // Áóôåð äëÿ ðàñ÷¸òà ëèíèè RSI
double PosBuffer[];                             // Òåõíè÷åñêèé áóôåð
double NegBuffer[];                             // Òåõíè÷åñêèé áóôåð
//---------------------------------------------------------------------------------- 2 --
#property indicator_color4 Aqua                 // Öâåò âåðõíåé ëèíèè ÂÂ
#property indicator_color5 Lime               // Öâåò ñðåäíåé ëèíèè ÂÂ
#property indicator_color6 Aqua            // Öâåò íèæíåé ëèíèè ÂÂ

extern int    BandsPeriod=20;                   // Ïåðèîä äëÿ ðàñ÷¸òà ÂÂ
extern double K_Dev=1.5;                        // Êîýôôèöèåíò óâåëè÷. äëÿ âíåøíèõ ëèíèé

double Up_Buffer[];                             // Áóôåð äëÿ ðàñ÷¸òà âåðõíåé ëèíèè ÂÂ
double MovingBuffer[];                          // Áóôåð äëÿ ðàñ÷¸òà ñðåäíåé ëèíèè ÂÂ
double Dn_Buffer[];                             // Áóôåð äëÿ ðàñ÷¸òà íèæíåé ëèíèè ÂÂ
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ 3 ææ
int init()
   {
//================================================================================== 4 ==
   string short_name="MA_RSI_BB("+MA_period+","+RSIPeriod+","+BandsPeriod+","+K_Dev+")";
   IndicatorShortName(short_name);              // Óñòàíîâêà êîðîòêîãî èìåíè
   SetLevelValue(1, Level_1);                   // Óñòàíîâêà óðîâíÿ 1
   SetLevelValue(2, Level_2);                   // Óñòàíîâêà óðîâíÿ 2
//---------------------------------------------------------------------------------- 5 --
   SetIndexStyle(0,DRAW_LINE);                  // Ñòèëü ëèíèè
   SetIndexBuffer(0,RSIBuffer);                 // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà
   SetIndexDrawBegin(0,RSIPeriod);              // Íà÷àëî îòðèñîâêè ëèíèè RSI

   SetIndexBuffer(1,PosBuffer);                 // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà
   SetIndexBuffer(2,NegBuffer);                 // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà
//---------------------------------------------------------------------------------- 6 --
   SetIndexStyle(3,DRAW_LINE);                  // Ñòèëü ëèíèè
   SetIndexBuffer(3,Up_Buffer);                 // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà
   SetIndexDrawBegin(3,BandsPeriod);            // Íà÷àëî îòðèñîâêè âåðõíåé ëèíèè BB

   SetIndexStyle(4,DRAW_LINE);                  // Ñòèëü ëèíèè
   SetIndexBuffer(4,MovingBuffer);              // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà
   SetIndexDrawBegin(4,BandsPeriod);            // Íà÷àëî îòðèñîâêè ñðåäíåé ëèíèè BB

   SetIndexStyle(5,DRAW_LINE);                  // Ñòèëü ëèíèè
   SetIndexBuffer(5,Dn_Buffer);                 // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà
   SetIndexDrawBegin(5,BandsPeriod);            // Íà÷àëî îòðèñîâêè íèæíåé ëèíèè BB
//================================================================================== 7 ==
   return;
   }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ 8 ææ
int start()
   {
//================================================================================== 9 ==
   if(Bars<=RSIPeriod || Bars<=MA_period || Bars<=BandsPeriod) // Åñëè íåäîñòàòî÷íî áàðîâ
      return;                                   // Óõîäèì

   int counted_bars=IndicatorCounted();         // Êîëè÷åñòâî íåèçìåí¸ííûõ áàðîâ
   int i=Bars-counted_bars-1;                   // Èíäåêñ ïîñëåäíåãî íåïîñ÷èòàííîãî áàðà
//--------------------------------------------------------------------------------- 10 --
   while(i>=0)                                  // Öèêë äëÿ âû÷èñëåíèÿ áóôåðîâ
      {
      double sumn=0.0,sump=0.0;                 // Òåõíè÷åñêèå ïåðåìåííûå
      double MA_n = iMA(NULL, 0, MA_period, 0, MODE_SMMA, PRICE_CLOSE, i);// Òåêóùèé áàð
      double MA_n1= iMA(NULL, 0, MA_period, 0, MODE_SMMA, PRICE_CLOSE, i+1);// Ïðåäûäóùèé
      double rel = MA_n - MA_n1;                // Ðàçíèöà ÌÀ

      if(rel>0) sump=rel;                       // Äâèæåíèå ââåðõ
      else      sumn=-rel;                      // Äâèæåíèå âíèç
      double  positive=(PosBuffer[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;// Ìåòîä ðàñ÷¸òà íà
      double  negative=(NegBuffer[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;// îñíîâå ñòàíä. RSI

      PosBuffer[i]=positive;                    // Òåõíè÷. áóôåð íå âûâîäèòñÿ â âèäå ëèíè
      NegBuffer[i]=negative;                    // Òåõíè÷. áóôåð íå âûâîäèòñÿ â âèäå ëèíè
      if(negative==0.0) RSIBuffer[i]=0.0;       // Àíàëèç äåëåíèÿ íà 0 ïðè âû÷èñë. RSI
      else RSIBuffer[i]=100.0-100.0/(1+positive/negative);// Âû÷èñëåíèå RSI
//--------------------------------------------------------------------------------- 11 --
      MovingBuffer[i]= 50;                      // Ïðèíÿòûé âàðèàíò - ñðåäíÿÿ ãîðèçîíàëüí
//    MovingBuffer[i]= RSIBuffer[i];            // 2é âàðèàíò - ñðåäíÿÿ = RSI
      double sum=0.0;                           // Òåõí. ïåðåìåííàÿ
      int k = i+BandsPeriod-1;                  // Èíäåêñ ïîñëåäíåãî áàðà äëÿ ðàñ÷¸òà
      while(k>=i)                               // Öèêë äëÿ âû÷èñë. ñóììû êâàäðàòîâ îòêë.
         {
         double newres = RSIBuffer[k] - MovingBuffer[i]; // Îòêëîíåíèå
         sum += newres*newres;                           // Ñóììà êâàäðàòîâ îòêëîíåíèé
         k--;
         }
      double deviation=K_Dev*MathSqrt(sum/BandsPeriod);  // Ñðåäíåå îòêëîíåíèå
      Up_Buffer[i]= MovingBuffer[i] + deviation;// Âåðõíÿÿ ëèíèÿ
      Dn_Buffer[i]= MovingBuffer[i] - deviation;// Íèæíÿÿ ëèíèÿ
      i--;
      }
//================================================================================= 12 ==
   return;
   }
//ææææææææææææææææææææææææææææææææææææ Êîíåö ìîäóëÿ æææææææææææææææææææææææææææææææ 13 ææ



Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: