bool bull_dish(int shift)
Проверяет наличие бычьего сигнала «блюдце» по значениям индикатора AO на заданном смещении.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «b-profitunity_mt4.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
b-Profitunity_MT4.mqh — это библиотека исходного кода для MetaTrader 4, содержащая набор вспомогательных функций для анализа рыночных данных и работы с графическими объектами. Библиотека не является торговым советником, индикатором или скриптом: в ней отсутствуют обработчики событий, классы и торговые операции. Всего в файле объявлено 26 отдельных функций.
Часть функций предназначена для проверки сигналов на основе значений индикаторов Awesome Oscillator (AO) и Accelerator Oscillator (AC): определяются бычьи и медвежьи формации, пересечения нулевой линии, экстремумы и согласованные зоны. Другие функции возвращают нормализованные значения индикаторов, ищут смещения баров и вычисляют размер пункта для символа.
Отдельная группа функций создаёт и настраивает графические объекты: стрелки, трендовые линии и текстовые метки. Для этих объектов задаются координаты, цвет, толщина и другие свойства. Библиотека также содержит одну настройку BarsToProcess, ограничивающую количество обрабатываемых баров при поиске сигналов.
| Настройка | Описание |
|---|---|
| BarsToProcess | Целое число, задающее количество баров для обработки при поиске сигналов. Значение -1 означает использование всех доступных баров. |
Классов: 0 · методов: 0 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 26
bool bull_dish(int shift)
Проверяет наличие бычьего сигнала «блюдце» по значениям индикатора AO на заданном смещении.
bool bear_dish(int shift)
Проверяет наличие медвежьего сигнала «блюдце» по значениям индикатора AO на заданном смещении.
bool bull_cross(int Shift)
Проверяет факт пересечения нулевой линии индикатором AO снизу вверх на заданном смещении.
bool bear_cross(int Shift)
Проверяет факт пересечения нулевой линии индикатором AO сверху вниз на заданном смещении.
int GetPeak(int shift_start, int mode, int BarsToProcess)
Ищет смещение ближайшего экстремума AO заданного типа (верхнего или нижнего) в пределах указанного количества баров.
int Get0CrossShift(int shift_start,int mode,int BarsToProcess)
Ищет смещение ближайшего пересечения нулевой линии AO заданного направления в пределах указанного количества баров.
bool two_high_peaks(int Shift,int BarsToProcess)
Проверяет наличие двух последовательных верхних экстремумов AO с определённым соотношением значений.
bool two_low_peaks(int Shift,int BarsToProcess)
Проверяет наличие двух последовательных нижних экстремумов AO с определённым соотношением значений.
bool bull_second_wisdom(int shift)
Проверяет наличие бычьего сигнала «второе проникновение» по последовательности значений AO.
bool bear_second_wisdom(int shift)
Проверяет наличие медвежьего сигнала «второе проникновение» по последовательности значений AO.
double AO(int Shift)
Возвращает нормализованное значение индикатора Awesome Oscillator на заданном смещении.
double AC(int Shift)
Возвращает нормализованное значение индикатора Accelerator Oscillator на заданном смещении.
bool bull_double_bar_above(int Shift)
Проверяет бычью формацию из двух баров по значениям AC выше нуля.
bool bull_triple_bar_below(int Shift)
Проверяет бычью формацию из трёх баров по значениям AC ниже нуля.
bool bull_cross_and_double_bar(int Shift)
Проверяет бычью формацию из двух баров с пересечением нулевой линии по значениям AC.
bool bear_double_bar_below(int Shift)
Проверяет медвежью формацию из двух баров по значениям AC ниже нуля.
bool bear_triple_bar_above(int Shift)
Проверяет медвежью формацию из трёх баров по значениям AC выше нуля.
bool bear_cross_and_double_bar(int Shift)
Проверяет медвежью формацию из двух баров с пересечением нулевой линии по значениям AC.
int GetSecond(int shift,int mode)
Ищет смещение следующего бара, на котором цена превышает или опускается ниже уровня заданного бара.
int Zone(int shift)
Определяет зону согласованного направления AO и AC на заданном смещении.
bool consbars(int mode,int shift)
Проверяет наличие серии согласованных баров заданного направления по зонам AO и AC.
void CreateArrow(string name,datetime t1,double pr,int code,color clr,int width)
Создаёт или обновляет стрелку на графике с заданными координатами, кодом, цветом и толщиной.
void CreateTL(string name,datetime t1,double p1,datetime t2,double p2,int width,int stl,color clr,bool ray)
Создаёт или обновляет трендовую линию на графике с заданными координатами, стилем, цветом и параметром луча.
double GetTeeth(string sym,int tf,int bar)
Возвращает нормализованное значение линии Teeth индикатора Alligator для указанного символа, таймфрейма и бара.
void CreateText(string nm, string txt, int wnd,datetime t1, double pr1,int fs,color clr)
Создаёт или обновляет текстовый объект на графике с заданными координатами, размером и цветом шрифта.
double PointX(string Sym)
Возвращает размер пункта для указанного символа с учётом количества знаков после запятой.
extern int BarsToProcess=1000; //???????????? ??????????? ????? ??? ??????? (-1 ???)
bool bull_dish(int shift)
{
if(AO(shift)>AO(shift+1) && AO(shift+2)>AO(shift+1) && AO(shift)>0 && AO(shift+1)>0 && AO(shift+2)>0)
return(true);else return(false);
}
bool bear_dish(int shift)
{
if(AO(shift)<AO(shift+1) && AO(shift+2)<AO(shift+1) && AO(shift)<0 && AO(shift+1)<0 && AO(shift+2)<0)
return(true);else return (false);
}
bool bull_cross(int Shift)
{
if(AO(Shift+1)<0 && AO(Shift)>0)
return(true);else return(false);
}
bool bear_cross(int Shift)
{
if(AO(Shift+1)>0 && AO(Shift)<0)
return(true);else return(false);
}
int GetPeak(int shift_start, int mode, int BarsToProcess)
{
int shift;
double ao0,ao1,ao2;
int retn_shift;
for(shift=shift_start;shift<BarsToProcess;shift++)
{
ao0=iAO(NULL,0,shift);
ao1=iAO(NULL,0,shift+1);
ao2=iAO(NULL,0,shift+2);
if(mode==MODE_UPPER)
{
if(ao0>0 && ao2>0 && ao0<ao1 && ao1>ao2)
{
retn_shift=shift;
break;
}
}
else if(mode==MODE_LOWER)
{
if(ao0<0 && ao2<0 && ao0>ao1 && ao1<ao2)
{
retn_shift=shift;
break;
}
}
}
return(retn_shift+1);
}
int Get0CrossShift(int shift_start,int mode,int BarsToProcess)
{
int shift=0,
retn_shift=0;
double ao0=0,
ao1=0;
for(shift=shift_start;shift<BarsToProcess;shift++)
{
ao0=iAO(NULL,0,shift);
ao1=iAO(NULL,0,shift+1);
if(mode==MODE_UPPER)
{
if(ao0>0 && ao1<0)
{
retn_shift=shift;
break;
}
}
if(mode==MODE_LOWER)
{
if(ao0<0 && ao1>0)
{
retn_shift=shift;
break;
}
}
}
return(retn_shift+1);
}
bool two_high_peaks(int Shift,int BarsToProcess)
{
int high_peak1=GetPeak(Shift, MODE_UPPER,BarsToProcess);
int high_peak2=GetPeak(high_peak1,MODE_UPPER,BarsToProcess);
if(iAO(Symbol(),Period(),high_peak1)<iAO(Symbol(),Period(),high_peak2))
return(true);else return(false);
}
bool two_low_peaks(int Shift,int BarsToProcess)
{
int low_peak1=GetPeak(Shift,MODE_LOWER,BarsToProcess);
int low_peak2=GetPeak(low_peak1,MODE_LOWER,BarsToProcess);
if(iAO(Symbol(),Period(),low_peak1)>iAO(Symbol(),Period(),low_peak2))
return(true);else return(false);
}
bool bull_second_wisdom(int shift)
{
double ao=iAO(Symbol(),Period(),shift),
ao1=iAO(Symbol(),Period(),shift+1),
ao2=iAO(Symbol(),Period(),shift+2),
ao3=iAO(Symbol(),Period(),shift+3),
ao4=iAO(Symbol(),Period(),shift+4);
if(ao>ao1 && ao1>ao2 && ao2>ao3 && ao3<ao4)
return(true);else return(false);
}
bool bear_second_wisdom(int shift)
{
double ao=iAO(Symbol(),Period(),shift),
ao1=iAO(Symbol(),Period(),shift+1),
ao2=iAO(Symbol(),Period(),shift+2),
ao3=iAO(Symbol(),Period(),shift+3),
ao4=iAO(Symbol(),Period(),shift+4);
if(ao<ao1 && ao1<ao2 && ao2<ao3 && ao3>ao4)
return(true);else return(false);
}
double AO(int Shift)
{
return(NormalizeDouble(iAO(NULL, 0, Shift), Digits + 2));
}
double AC(int Shift)
{
return(NormalizeDouble(iAC(NULL, 0, Shift), Digits + 2));
}
bool bull_double_bar_above(int Shift)
{
if(AC(Shift)>AC(Shift+1) && AC(Shift+1)>AC(Shift+2) && AC(Shift+2) < AC(Shift+3) && AC(Shift+2) > 0)
return(true);else return(false);
}
bool bull_triple_bar_below(int Shift)
{
if(AC(Shift) > AC(Shift+1) && AC(Shift+1)>AC(Shift+2) && AC(Shift+2)>AC(Shift+3)
&& AC(Shift+3)<AC(Shift+4) && AC(Shift) < 0 /*) ||(AC(Shift) > 0 && AC(Shift+1) < 0Показано первые 50% кода (символов: 5770)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.