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

 

Индикатор BoDi.:

Индикатор BoDi для поиска точек закрытия позиций.

Author: Paladin80

 

Поздравляю с изобретением деревянного велосипеда. Иногда полезно знать устройство индикатора который используешь. Твоё изобретение называется Standart Deviation и есть в наборе терминала. Конверт Боллижера состоит из МА и Standart Deviation. Средняя линия это МА, верхняя линия это заданное количество Standart Deviation от МА вверх. Нижняя линия, соответственно вниз. Расстояние между верхней и нижней линиями конверта, это заданное количество Standart Deviation *2.

 
Целью данной публикации было показать новый взгляд на индикатор Bollinger Bands.
 
Полезный индикатор. Спасибо. И если продолжить сравнение с велосипедом, то это скорее мотоцикл: дает отличное визуальное представление использования индикатора Bollinger Bands. Моя оценка +10
 
Shuba:
Полезный индикатор. Спасибо. И если продолжить сравнение с велосипедом, то это скорее мотоцикл: дает отличное визуальное представление использования индикатора Bollinger Bands. Моя оценка +10

Ещё раз. Конверт Боллинжера состоит из МА и стандартной девиации сверху и снизу. Если МА не используется, а только расстояние между верхней и нижней то это уже не конверт Боллинжера, а стандартная девиация.

Тогда уж лучше сказать что даёт отличное визуальное представление использования стандартной девиации. Этот индикатор полностью повторяет форму стандартной девиации. Разве что выглядит симпатичнее. Стандартная девиация рисуется в виде линии, а этот в виде цветной гистограммы. Может быть удобнее что по смене цвета столбиков хорошо видно смену направления стандартной девиации.

 

Для тех, кто хотел бы использовать алгоритм этого индикатора в эксперте, ниже соответствующая пользовательская функция.


//--------------------------------------------- iBoDifunc() - start
//+----------------------------------------------------------------------------+
//| Input parameters:                                                          |
//|   Sy - Symbol.                                                             |
//|   Tf - Timeframe.                                                          |
//|   BoDi_per - Averaging period.                                             |
//|   BoDi_shift - The indicator shift relative to the chart.                  |
//|   Applied_price - Applied price.                                           |
//|   BoDi_MA_mode - Applied MA method.                                        |
//|   Shift - Index of the value taken from the indicator buffer.              |
//+----------------------------------------------------------------------------+
//|   Formula to calculate BoDi:                                               |
//}   BoDi = (UpperLine - LowerLine)*1000                                      |
//|    where: UpperLine - upper line of Bollinger Bands                        |
//|           LowerLine - lower line of Bollinger Bands                        |
//|           1000 - coefficient for better visualization                      |
//+----------------------------------------------------------------------------+
double iBoDifunc(string Sy,int Tf,int BoDi_per,int BoDi_shift,int Applied_price,int BoDi_MA_mode,int Shift)
{  
double ML, sum=0.0, a;
if (Sy=="" || Sy=="0") Sy=Symbol();
  
ML=iMA(Sy,Tf,BoDi_per,BoDi_shift,BoDi_MA_mode,Applied_price,Shift);
for (int i=Shift; i<=BoDi_per-1+Shift; i++)
{  switch(Applied_price)   
{  case PRICE_CLOSE:    a=iClose(Sy,Tf,i+BoDi_shift)-ML; break;
   case PRICE_OPEN:     a=iOpen (Sy,Tf,i+BoDi_shift)-ML; break;
   case PRICE_HIGH:     a=iHigh (Sy,Tf,i+BoDi_shift)-ML; break;
   case PRICE_LOW:      a=iLow  (Sy,Tf,i+BoDi_shift)-ML; break;
   case PRICE_MEDIAN:   a=(iHigh(Sy,Tf,i+BoDi_shift)+iLow(Sy,Tf,i+BoDi_shift))/2.0-ML; break;
   case PRICE_TYPICAL:  a=(iHigh(Sy,Tf,i+BoDi_shift)+iLow(Sy,Tf,i+BoDi_shift)+iClose(Sy,Tf,i+BoDi_shift))/3.0-ML; break;
   case PRICE_WEIGHTED: a=(iHigh(Sy,Tf,i+BoDi_shift)+iLow(Sy,Tf,i+BoDi_shift)+2*iClose(Sy,Tf,i+BoDi_shift))/4.0-ML; break;
   default: a=0.0;
}
sum+=a*a;
}
double semi_res=MathSqrt(sum/BoDi_per);
double upper=ML+semi_res;
double lower=ML-semi_res;
double diff=(upper-lower)*1000;
return (diff);
}
//--------------------------------------------- iBoDifunc() - end
 
Тут можно только согласиться с Ugar, автор действительно изобрел велосипед.
 
Любопытно, надо будет посмотреть, спасибо
Причина обращения: