BB Analyzer
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «bb_analyzer_2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
BB Analyzer — индикатор для MetaTrader 4, который анализирует поведение полос Боллинджера и классифицирует текущее состояние рынка. Он рассчитывает верхнюю, среднюю и нижнюю линии полос на основе стандартной формулы с настраиваемым периодом и отклонением.
После расчёта исходных линий индикатор применяет к ним выбранный метод сглаживания (из 17 доступных вариантов) с дополнительным периодом сглаживания. На основе усреднённых линий определяется направление тренда и рассчитывается наклон верхней и нижней границ.
В зависимости от комбинации сигналов наклона, положения цены и пороговых значений индикатор распределяет текущий бар по одной из пяти фаз: «Пузырь вверх», «Пузырь вниз», «Колбаса вверх», «Колбаса вниз» или «Сжатие». Каждая фаза отображается гистограммными буферами с индивидуальной цветовой настройкой.
Индикатор предоставляет настройки отображения средней линии полос, порога наклона для подтверждения фаз, процентного параметра для определения перехода в сжатие, а также полную палитру цветов для визуального различения фаз.
Настройки программы
| Настройка | Описание |
|---|---|
| Periods | Период расчёта полос Боллинджера |
| Deviation | Отклонение полос Боллинджера от средней линии |
| Method_to_Smooth | Метод сглаживания, применяемый к линиям полос (SMA, EMA, Wilder, LWMA и другие) |
| Periods_to_Smooth | Период сглаживания, применяемый к линиям полос |
| Comment0 | Текстовый параметр для отображения описания параметра наклона в интерфейсе |
| Slope | Пороговое значение наклона для подтверждения начала фазы пузыря |
| Comment1 | Текстовый параметр для отображения описания параметра процента в интерфейсе |
| Percent | Процентный параметр для определения перехода из фазы колбасы в сжатие |
| Show_BB_Middle_Line | Переключатель отображения средней линии полос Боллинджера на графике |
| Slope_Detection | Параметр, используемый для обнаружения изменения наклона линий полос |
| Bars_to_Calculate_Slope | Количество баров, используемых для расчёта наклона линий полос |
| Color_Bands | Цвет линий верхней и нижней границ полос |
| Color_Middle | Цвет средней линии полос Боллинджера |
| Color_Middle_Up | Цвет линии среднего направления вверх |
| Color_Middle_Dn | Цвет линии среднего направления вниз |
| Color_Bubble_Up | Цвет отображения фазы «Пузырь вверх» |
| Color_Bubble_Down | Цвет отображения фазы «Пузырь вниз» |
| Color_Sausage_Up | Цвет отображения фазы «Колбаса вверх» |
| Color_Sausage_Down | Цвет отображения фазы «Колбаса вниз» |
| Color_Squeeze | Цвет отображения фазы «Сжатие» |
Поиск по коду файла
#property indicator_buffers 15
#property indicator_chart_window
enum e_method{ SMA = 1,
EMA = 2,
Wilder = 3,
LWMA = 4,
SineWMA = 5,
TriMA = 6,
LSMA = 7,
SMMA = 8,
HMA = 9,
ZeroLagEMA = 10,
ITrend = 11,
Median = 12,
GeoMean = 13,
REMA = 14,
ILRS = 15,
IE_2 = 16,
TriMAgen = 17
};
extern int Periods = 20;
extern double Deviation = 2.0;
input e_method Method_to_Smooth = EMA;
extern int Periods_to_Smooth = 3;
extern string Comment0 = "- Slope: Minimum Slope to Confirm Bubble (pip/minute) -";
extern double Slope = 0.18;
extern string Comment1 = "- Percent: To Confirm end of sausage (%) -";
extern double Percent = 25;
extern bool Show_BB_Middle_Line = true;
extern double Slope_Detection = 0.5;
extern int Bars_to_Calculate_Slope = 1;
extern color Color_Bands = clrDarkGoldenrod;
extern color Color_Middle = clrWhite;
extern color Color_Middle_Up = clrLime;
extern color Color_Middle_Dn = clrRed;
extern color Color_Bubble_Up = clrDarkGreen;
extern color Color_Bubble_Down = clrRed;
extern color Color_Sausage_Up = clrTeal;
extern color Color_Sausage_Down = clrMaroon;
extern color Color_Squeeze = C'33,33,33';
double BB_Top[];
double BB_Middle[];
double BB_Bottom[];
double AVG_Top[];
double AVG_Middle[];
double AVG_Bottom[];
double Middle_Up[];
double Middle_Dn[];
double Bubble_Up_min[]; double Bubble_Up_max[];
double Bubble_Dn_min[]; double Bubble_Dn_max[];
double Sausage_Up_min[]; double Sausage_Up_max[];
double Sausage_Dn_min[]; double Sausage_Dn_max[];
double Squeeze_min[]; double Squeeze_max[];
double Signal_AVG_Top[];
double Signal_AVG_Bottom[];
bool StartBubbleUp = false;
bool StopBubbleUp = false;
bool StartBubbleDn = false;
bool StopBubbleDn = false;
bool StartSausageUp = false;
bool StartSausageDn = false;
int init(){
// код доступен только после оплаты
}
int start(){
// код доступен только после оплаты
}
int i;
int counted_bars=IndicatorCounted();
int limit = Bars-counted_bars-1;
double EcartConfirmBubbleUp, EcartConfirmBubbleDn, EcartBubble;
double pipSize = MarketInfo(Symbol(),MODE_POINT);
if (MarketInfo("EURUSD",MODE_DIGITS)==5) pipSize=pipSize*10; // I take the EURUSD as an example to check if it is 5 digits instead of 4, if so, I multiply it by 10
for(i=limit; i>=0; i--){
BB_Top[i] = iBands(NULL,0,Periods,Deviation,0,PRICE_CLOSE,MODE_UPPER,i);
BB_Middle[i] = iBands(NULL,0,Periods,Deviation,0,PRICE_CLOSE,MODE_MAIN,i);
BB_Bottom[i] = iBands(NULL,0,Periods,Deviation,0,PRICE_CLOSE,MODE_LOWER,i);
switch(Method_to_Smooth){
case 1 :
AVG_Top[i] = SMA(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = SMA(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = SMA(BB_Bottom,Periods_to_Smooth,i);
break;
case 2 :
AVG_Top[i] = EMA(BB_Top[i],AVG_Top[i+1],Periods_to_Smooth,i);
AVG_Middle[i] = EMA(BB_Middle[i],AVG_Middle[i+1],Periods_to_Smooth,i);
AVG_Bottom[i] = EMA(BB_Bottom[i],AVG_Bottom[i+1],Periods_to_Smooth,i);
break;
case 3 :
AVG_Top[i] = Wilder(BB_Top[i],AVG_Top[i+1],Periods_to_Smooth,i);
AVG_Middle[i] = Wilder(BB_Middle[i],AVG_Middle[i+1],Periods_to_Smooth,i);
AVG_Bottom[i] = Wilder(BB_Bottom[i],AVG_Bottom[i+1],Periods_to_Smooth,i);
break;
case 4 :
AVG_Top[i] = LWMA(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = LWMA(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = LWMA(BB_Bottom,Periods_to_Smooth,i);
break;
case 5 :
AVG_Top[i] = SineWMA(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = SineWMA(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = SineWMA(BB_Bottom,Periods_to_Smooth,i);
break;
case 6 :
AVG_Top[i] = TriMA(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = TriMA(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = TriMA(BB_Bottom,Periods_to_Smooth,i);
break;
case 7 :
AVG_Top[i] = LSMA(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = LSMA(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = LSMA(BB_Bottom,Periods_to_Smooth,i);
break;
case 8 :
AVG_Top[i] = SMMA(BB_Top,AVG_Top[i+1],Periods_to_Smooth,i);
AVG_Middle[i] = SMMA(BB_Middle,AVG_Middle[i+1],Periods_to_Smooth,i);
AVG_Bottom[i] = SMMA(BB_Bottom,AVG_Bottom[i+1],Periods_to_Smooth,i);
break;
case 9 :
AVG_Top[i] = HMA(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = HMA(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = HMA(BB_Bottom,Periods_to_Smooth,i);
break;
case 10:
AVG_Top[i] = ZeroLagEMA(BB_Top,AVG_Top[i+1],Periods_to_Smooth,i);
AVG_Middle[i] = ZeroLagEMA(BB_Middle,AVG_Middle[i+1],Periods_to_Smooth,i);
AVG_Bottom[i] = ZeroLagEMA(BB_Bottom,AVG_Bottom[i+1],Periods_to_Smooth,i);
break;
case 11:
AVG_Top[i] = ITrend(BB_Top,AVG_Top,Periods_to_Smooth,i);
AVG_Middle[i] = ITrend(BB_Middle,AVG_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = ITrend(BB_Bottom,AVG_Bottom,Periods_to_Smooth,i);
break;
case 12:
AVG_Top[i] = Median(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = Median(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = Median(BB_Bottom,Periods_to_Smooth,i);
break;
case 13:
AVG_Top[i] = GeoMean(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = GeoMean(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = GeoMean(BB_Bottom,Periods_to_Smooth,i);
break;
case 14:
AVG_Top[i] = REMA(BB_Top[i],AVG_Top,Periods_to_Smooth,0.5,i);
AVG_Middle[i] = REMA(BB_Middle[i],AVG_Middle,Periods_to_Smooth,0.5,i);
AVG_Bottom[i] = REMA(BB_Bottom[i],AVG_Bottom,Periods_to_Smooth,0.5,i);
break;
case 15:
AVG_Top[i] = ILRS(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = ILRS(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = ILRS(BB_Bottom,Periods_to_Smooth,i);
break;
case 16:
AVG_Top[i] = IE2(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = IE2(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = IE2(BB_Bottom,Periods_to_Smooth,i);
break;
case 17:
AVG_Top[i] = TriMA_gen(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = TriMA_gen(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = TriMA_gen(BB_Bottom,Periods_to_Smooth,i);
break;
default:
AVG_Top[i] = SMA(BB_Top,Periods_to_Smooth,i);
AVG_Middle[i] = SMA(BB_Middle,Periods_to_Smooth,i);
AVG_Bottom[i] = SMA(BB_Bottom,Periods_to_Smooth,i);
break;
}
if (AVG_Middle[i] > AVG_Middle[i+1]) Middle_Up[i] = AVG_Middle[i];
if (AVG_Middle[i] < AVG_Middle[i+1]) Middle_Dn[i] = AVG_Middle[i];
EcartConfirmBubbleUp = (AVG_Top[i] - AVG_Top[i+1] ) / (pipSize*1440*((iTime(NULL,Period(),i)*1.0) - (iTime(NULL,Period(),i+1)*1.0))/(3600*24));
EcartConfirmBubbleDn = (AVG_Bottom[i+1]- AVG_Bottom[i]) / (pipSize*1440*((iTime(NULL,Period(),i)*1.0) - (iTime(NULL,Period(),i+1)*1.0))/(3600*24));
Signal_AVG_Top[i] =Показано первые 50% кода (символов: 15022)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.