← К каталогу
Исходный код · ID 2423

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 и перейдите к оплате.

Стоимость полного кода
577₽ ≈ $7.05