Индикаторы: Val_Bands.mq4

 

Val_Bands.mq4 :

Индикатор волантильности длины свечей

Author: alex

 

"Использование. Удобен для отслежиания гэпов на рынке. За гэп считется
все, что выше желтой линии"

- интересное нововведение в идентификацию и определение гэпа

 
abolk:

"Использование. Удобен для отслежиания гэпов на рынке. За гэп считется
все, что выше желтой линии"

- интересное нововведение в идентификацию и определение гэпа


не имеет значения - имеется разрыв между open и close или нет. Сдишком часто после длинных свечей идет откат на манер закрытия гэпа.
 
интересный оригинальный индикатор. 10.
 

+10!

давно ищу что то подобное!

 
Martingeil:

+10!

давно ищу что то подобное!


кушайте на здоровье и трейдерское благополучие

 

Да извинит меня Автор за представление моего варианта его отличного индикатора, не дождавшись его благословения. Ниже предлагаю вашему вниманию код полностью с моим комментарием в заголовке.

//ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
//|   Эта версия оценившего индикатор Автора по достоинству и нашедшего в нем |
//| возможность расширить его применение. Внимание на нулевой бар! Усилил его |
//| сигнальные функции, добавив 3 буфера, и поменял цветовую гамму. Borilunad.|
//ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
//|   Val_Bands_v1.mq4                                                        |
//|   Индикатор волантильности длины свечей:                                  |
//|      - красная(у меня желтая) гистограмма - длина свечи в пипсах          |
//|      - линии: это средние от длины свечей со стандартным отклонением      |
//|    Настройки - аналогичны каналу Болинджера                               |
//|    Использование. Удобен для отслежиания гэпов на рынке. За гэп считется  |
//|                    все, что выше желтой(у меня красной) линии             |
//|      - выход за верхнюю границу - а) подарок в ТР (если по позиции);      |
//|                                   б) SL (если против позиции;             | 
//|                                   в) запрет входа в этой точке            |
//|      - выход за нижнюю границу - боковик                                  |
//|      - пересечение снизу вверх нижней границы - начало тренда.            |
//ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
#property copyright "Copyright © 2010, Fomenko"
#property link      "http://faa1947@mail.ru"
// ----------------- Отдельное окно для индикатора ----------------------------
#property   indicator_separate_window
// ---------------- Кол-во видимых буферов индикатора -------------------------
#property   indicator_buffers 7
// ---------------- Установка цвета индикатора --------------------------------
#property   indicator_color1           LightSeaGreen
#property   indicator_color2           Red//Yellow 
#property   indicator_color3           Lime//Orchid
#property   indicator_color4           Gold//Red
#property   indicator_color5           Beige
#property   indicator_color6           LimeGreen
#property   indicator_color7           OrangeRed
// ---------------- Установка ширины линии -----------------------------------
#property   indicator_width1           2
#property   indicator_width2           1
#property   indicator_width3           1
#property   indicator_width4           1
#property   indicator_width5           3
#property   indicator_width6           3
#property   indicator_width7           3
// ---------------- Установка стиля линии -----------------------------------
#property   indicator_style1           0
#property   indicator_style2           0
#property   indicator_style3           0
#property   indicator_style4           0
#property   indicator_style5           0
#property   indicator_style6           0
#property   indicator_style7           0
//----------------- Внешние настройки индикатора ==========--------------------
extern      int    BandsPeriod      =  14;      // Период расчета
extern      double BandsDeviations  =  1.0;     // Величина стандартного отклонения
            int    BandsShift       =  0;       // Сдвиг относительно графика
//----------------- Объявление буферов инидикаторов --------------------------
            double MovingBuffer[];
            double UpperBuffer[];
            double LowerBuffer[];
            double Val_BarsBuffer[];
            double Val_BarsBufferA[];
            double Val_BarsBufferB[];
            double Val_BarsBufferS[];         
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   string short_name="Val_Bands";
   IndicatorShortName(short_name);
      
   IndicatorDigits         (1);
//--------- Три? видимых буфера --------------------------------------
   IndicatorBuffers        (7);
//---------- Установка параметров рисования -------------------------
   SetIndexStyle           (0,   DRAW_LINE);
   SetIndexDrawBegin       (0,   BandsPeriod+BandsShift);
   SetIndexStyle           (1,   DRAW_LINE);
   SetIndexDrawBegin       (1,   BandsPeriod+BandsShift);
   SetIndexStyle           (2,   DRAW_LINE);
   SetIndexDrawBegin       (2,   BandsPeriod+BandsShift);
   
   SetIndexStyle           (3,   DRAW_HISTOGRAM);
   SetIndexDrawBegin       (3,   BandsPeriod+BandsShift);
   SetIndexStyle           (4,   DRAW_HISTOGRAM);
   SetIndexDrawBegin       (4,   BandsPeriod+BandsShift);
   SetIndexStyle           (5,   DRAW_HISTOGRAM);
   SetIndexDrawBegin       (5,   BandsPeriod+BandsShift);
   SetIndexStyle           (6,   DRAW_HISTOGRAM);
   SetIndexDrawBegin       (6,   BandsPeriod+BandsShift);
//---------- Привязываем номер буфера к его имени -------------------
   SetIndexBuffer          (0,   MovingBuffer);
   SetIndexBuffer          (1,   UpperBuffer);
   SetIndexBuffer          (2,   LowerBuffer);
   SetIndexBuffer          (3,   Val_BarsBuffer);
   SetIndexBuffer          (4,   Val_BarsBufferA);
   SetIndexBuffer          (5,   Val_BarsBufferB);
   SetIndexBuffer          (6,   Val_BarsBufferS);
// ----------- Устанавливаем первоначальные значения ---------------
   SetIndexEmptyValue      (0,   0.0);   
   SetIndexEmptyValue      (1,   0.0);   
   SetIndexEmptyValue      (2,   0.0);   
   SetIndexEmptyValue      (3,   0.0);
   SetIndexEmptyValue      (4,   0.0);
   SetIndexEmptyValue      (5,   0.0);
   SetIndexEmptyValue      (6,   0.0);
//------------------ Метка для линии индикатора ---------------------
   SetIndexLabel           (0,   "Mov");
   SetIndexLabel           (1,   "Up");   
   SetIndexLabel           (2,   "Down");   
   return(0);
}
//+------------------------------------------------------------------+
//| Bollinger Bands                                                  |
//+------------------------------------------------------------------+
int start()
{
   int      i,
            k,
            counted_bars   =  IndicatorCounted();
   double   deviation;
   double   sum,  
            oldval,
            newres;
//----
   if(Bars           <= BandsPeriod) 
      return(0);
//---------------- Вычисляем среднюю --------------------------------
   int limit         =  Bars  -  counted_bars;
   if(counted_bars   >  0) 
      limit++;
   for(i =  0;    i  <  limit;   i++)
      Val_BarsBuffer[i] =  (High[i] -  Low[i])  /  Point;
   for(i =  0;    i  <  limit;   i++)
      MovingBuffer[i]   =  iMAOnArray(Val_BarsBuffer,
                           Bars, 
                           BandsPeriod,
                           BandsShift,
                           MODE_SMA,//MODE_SMA, MODE_EMA, MODE_SMMA, MODE_LWMA
                           i);       
//--------------- Вычисляем стороны канала ----------------------------
   i                 =  Bars  -  BandsPeriod    +  1;
   if(counted_bars   >  BandsPeriod -  1) 
      i              =  Bars  -  counted_bars   -  1;
   while(i           >= 0)
   {
      sum            =  0.0;
      k              =  i  +  BandsPeriod -  1;
      oldval         =  MovingBuffer[i];
      while(k        >= i)
      {
         newres      =  Val_BarsBuffer[k] -  oldval;
         sum         += newres   *  newres;
         k--;
      }
      deviation      =  BandsDeviations   *  MathSqrt(sum   /  BandsPeriod);
      UpperBuffer[i] =  oldval   +  deviation;
      LowerBuffer[i] =  oldval   -  deviation;
      Val_BarsBufferA[i] = 0.0;
      Val_BarsBufferB[i] = 0.0;
      Val_BarsBufferS[i] = 0.0;
      i--;
      if ((Close[0] == High[0] || Close[0] == Low[0] && Val_BarsBuffer[0] < LowerBuffer[0]) 
      || ((Close[0] == High[0] || Close[0] == Low[0] || Close[0] == Open[0]) 
      && Val_BarsBuffer[0] > LowerBuffer[0] && Val_BarsBuffer[0] < UpperBuffer[0]))
         Val_BarsBufferA[0] = (High[0] - Low[0]) / Point;
      if (Close[0] == High[0] || Close[0] == Low[0])
      {
         Val_BarsBufferB[0] = 0.0;
         Val_BarsBufferS[0] = 0.0;
      }else
         {   
         if (Close[0] > Open[0] && Val_BarsBuffer[0] > LowerBuffer[0] && Val_BarsBuffer[0] < UpperBuffer[0])
         {
            Val_BarsBufferB[0] = (High[0] - Low[0]) / Point;
            Val_BarsBufferS[0] = 0.0;
         }
         if (Close[0] < Open[0] && Val_BarsBuffer[0] > LowerBuffer[0] && Val_BarsBuffer[0] < UpperBuffer[0])
         {
            Val_BarsBufferB[0] = 0.0;
            Val_BarsBufferS[0] = (High[0] - Low[0]) / Point;
         }
      }
   }
//----------------- Индикатор вычислен --------------------------------
   return(0);
}   
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
  
   return(0);
}
 
Спасибо, полезная штука!
 

Как можно считать данные из четвертого буфера (красная гистограмма)?

Причина обращения: