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

wrb-hidden-gap-improved-2.1 bt.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор предназначен для идентификации широких диапазонных баров (WRB) и скрытых разрывов (HG) на ценовых графиках. Он сравнивает размеры тел баров в заданном периоде откатов и отмечает широкие бары специальными символами на графике.

При обнаружении WRB-бара индикатор проверяет формирование скрытого разрыва — ценового промежутка между последующими барами. Незаполненные разрывы отображаются прямоугольниками, а при их заполнении ценой заменяются залитыми прямоугольниками с разделительной линией.

Индикатор оснащён кнопкой-переключателем для скрытия и отображения объектов разрывов, а также системой уведомлений, которая срабатывает при достижении цены уровня незаполненного прямоугольника. Расчёт можно ограничить заданным количеством баров от текущего бара.

Настройки программы

НастройкаОписание
TimeFrame Таймфрейм — Таймфрейм, на котором производится расчёт индикатора
UseWholeBars Использовать целые бары — При включении для расчёта размера бара используется разница между максимумом и минимумом, иначе — абсолютное значение разницы между ценами открытия и закрытия
WRB_LookBackBarCount Количество баров откатов WRB — Количество баров в прошлом, сравниваемых с текущим для определения широкого диапазонного бара
WRB_WingDingsSymbol Символ маркера WRB — Код символа крыльев (WingDings), используемый для отображения маркера широкого диапазонного бара на графике
HGcolor1 Основной цвет разрыва — Основной цвет прямоугольников незаполненных скрытых разрывов
HGcolor2 Альтернативный цвет разрыва — Альтернативный цвет прямоугольников при пересечении со старым разрывом
HGLcolor Цвет линии разрыва — Цвет разделительной линии внутри прямоугольника скрытого разрыва
HGstyle Стиль разрыва — Стиль линий прямоугольников скрытых разрывов
StartCalculationFromBar Начальный бар расчёта — Максимальный номер бара от текущего, начиная с которого производится расчёт индикатора
HollowBoxes Пустые прямоугольники — Если включено, прямоугольники скрытых разрывов отображаются как пустые (не залитые)
DoAlerts Включить уведомления — Включает или отключает уведомления при пробое прямоугольников скрытых разрывов ценой
Button_Settings Кнопка настроек — Текстовая метка разделителя в группе настроек кнопки
btn_corner Угол кнопки — Угол графика, к которому привязывается кнопка-переключатель
btn_Font Шрифт кнопки — Шрифт текста на кнопке-переключателе
btn_FontSize Размер шрифта кнопки — Размер шрифта текста на кнопке-переключателе
btn_text_ON_color Цвет текста кнопки включена — Цвет текста кнопки в активном состоянии
btn_text_OFF_color Цвет текста кнопки выключена — Цвет текста кнопки в неактивном состоянии
btn_pressed Текст кнопки выключена — Текст кнопки в неактивном состоянии (индикатор выключен)
btn_unpressed Текст кнопки включена — Текст кнопки в активном состоянии (индикатор включён)
btn_background_color Цвет фона кнопки — Цвет фона кнопки-переключателя
btn_border_color Цвет рамки кнопки — Цвет рамки кнопки-переключателя
button_x Позиция кнопки по X — Горизонтальное расстояние кнопки-переключателя от указанного угла графика в пикселях
button_y Позиция кнопки по Y — Вертикальное расстояние кнопки-переключателя от указанного угла графика в пикселях
btn_Width Ширина кнопки — Ширина кнопки-переключателя в пикселях
btn_Height Высота кнопки — Высота кнопки-переключателя в пикселях
soundBT Звук кнопки — Имя звукового файла, воспроизводимого при нажатии кнопки-переключателя
Получить полный код

Поиск по коду файла

???//+------------------------------------------------------------------+

#property version   "1.00"

#property description "Identifies Wide Range Bars and Hidden Gaps."
#property description "WRB and HG definitions are taken from the WRB Analysis Tutorial-1"
#property description "by M.A.Perry from TheStrategyLab.com."
#property description "Alerts and optimization by Andriy Moraru."

#property indicator_chart_window
#property indicator_buffers 1

#property indicator_color1 clrAqua      // WRB symbol
#property indicator_width1 1

#define UNFILLED_PREFIX "HG_UNFILLED_"
#define FILLED_PREFIX "HG_FILLED_"
#define LINE_PREFIX "HG_LINE_"
#define PREFIX "HG_"

extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;
extern bool UseWholeBars = false;
extern int WRB_LookBackBarCount = 3;
extern int WRB_WingDingsSymbol = 115;
extern color HGcolor1 = clrDodgerBlue;
extern color HGcolor2 = clrBlue;
extern color HGLcolor = clrWhite;
extern ENUM_LINE_STYLE HGstyle = STYLE_SOLID;
extern int StartCalculationFromBar = 100;
extern bool HollowBoxes = false;
extern bool DoAlerts = false;

extern string             Button_Settings = "=====================";
extern ENUM_BASE_CORNER   btn_corner            = CORNER_LEFT_UPPER; 
extern string             btn_Font              = "Arial";
extern int                btn_FontSize          = 10;                            
extern color              btn_text_ON_color     = clrLime;
extern color              btn_text_OFF_color    = clrRed;
extern string             btn_pressed           = "WRB OFF";            
extern string             btn_unpressed         = "WRB ON";
extern color              btn_background_color  = clrDimGray;
extern color              btn_border_color      = clrBlack;
extern int                button_x              = 850;                                 
extern int                button_y              = 0;                                   
extern int                btn_Width             = 120;                                 
extern int                btn_Height            = 20;                                
extern string             soundBT               = "tick.wav";

bool           show_data            = true;
bool           recalc               = true;

double WRB[];

int totalBarCount = -1;

bool ButtonState = false;
string sButtonName = "Button WRB";

string   IndicatorName, IndicatorObjPrefix ,buttonId;

string   GenerateIndicatorName(const string target)
{
   string name = target;
   int try = 2;
   while (WindowFind(name) != -1)
   {
      name = target + " #" + IntegerToString(try++);
   }
   return name;
}

int init()
{
      // код доступен только после оплаты
   }

void ObDeleteObjectsByPrefix(string Prefix)
{
   int L = StringLen(Prefix);
   int i = 0; 
   while(i < ObjectsTotal())
   {
       string ObjName = ObjectName(i);
       if(StringSubstr(ObjName, 0, L) != Prefix) 
       { 
           i++; 
           continue;
       }
       ObjectDelete(ObjName);
   }
}

int intersect(double H1, double L1, double H2, double L2)
{
   if ( (L1>H2) || (H1<L2) ) return (0);
   if ( (H1>=H2) && (L1>=L2) ) return (1);
   if ( (H1<=H2) && (L1<=L2) ) return (2);
   if ( (H1>=H2) && (L1<=L2) ) return (3);
   if ( (H1<=H2) && (L1>=L2) ) return (4);
   return(0);
}  

void checkHGFilled(int barNumber)
{
   int j, i;
   string ObjectText;
   string Prefix = UNFILLED_PREFIX;
   double box_H, box_L;
   double HGFillPA_H, HGFillPA_L;
   datetime startTime;
   color objectColor;

   int L = StringLen(Prefix);
   i = 0; 
   while(i < ObjectsTotal()) // loop over all unfilled boxes
   {
       string ObjName = ObjectName(i);
       if(StringSubstr(ObjName, 0, L) != Prefix) 
       { 
           i++; 
           continue;
       }
       box_H=ObjectGet(ObjName, OBJPROP_PRICE1); // get HG high and low values
       box_L=ObjectGet(ObjName, OBJPROP_PRICE2);
       objectColor=ObjectGet(ObjName, OBJPROP_COLOR);
       startTime=ObjectGet(ObjName, OBJPROP_TIME1);

       HGFillPA_H = iHigh(NULL, TimeFrame, barNumber);
       HGFillPA_L = iLow(NULL, TimeFrame, barNumber);
       j = 0;
       while ( (intersect(iHigh(NULL, TimeFrame, barNumber+j), iLow(NULL, TimeFrame, barNumber+j), box_H, box_L)!=0) && (barNumber+j<Bars) && (startTime<iTime(NULL, TimeFrame, barNumber+j)))
       {
         if (iHigh(NULL, TimeFrame, barNumber+j) > HGFillPA_H)  HGFillPA_H = iHigh(NULL, TimeFrame, barNumber+j);
         if (iLow(NULL, TimeFrame, barNumber+j)  < HGFillPA_L)  HGFillPA_L = iLow(NULL, TimeFrame, barNumber+j);
         if ( (HGFillPA_H>box_H) && (HGFillPA_L<box_L) )
         {
            ObjectDelete(ObjName);
            StringReplace(ObjName, UNFILLED_PREFIX, LINE_PREFIX);
            ObjectDelete(ObjName);

            ObjectText = FILLED_PREFIX + TimeToStr(startTime,TIME_DATE|TIME_MINUTES);            
            ObjectCreate(ObjectText, OBJ_RECTANGLE, 0, startTime, box_H, iTime(NULL, TimeFrame, barNumber), box_L);
            ObjectSet(ObjectText, OBJPROP_STYLE, HGstyle);
            ObjectSet(ObjectText, OBJPROP_COLOR, objectColor);
            ObjectSet(ObjectText, OBJPROP_BACK, !HollowBoxes);

            double line = (box_H + box_L) / 2.0;
            ObjectText = LINE_PREFIX + TimeToStr(startTime,TIME_DATE|TIME_MINUTES);            
            ObjectCreate(ObjectText, OBJ_RECTANGLE, 0, startTime, line, iTime(NULL, TimeFrame, barNumber), line);
            ObjectSet(ObjectText, OBJPROP_STYLE, HGstyle);
            ObjectSet(ObjectText, OBJPROP_COLOR, HGLcolor);
            ObjectSet(ObjectText, OBJPROP_BACK, false);
            break;
         }
         j++;
       }

       i++;
   }

}

bool checkWRB(int i)
{
      int j;
      bool WRB_test;
      double body, bodyPrior;

      WRB_test = true;
      if (UseWholeBars) body = iHigh(NULL, TimeFrame, i) - iLow(NULL, TimeFrame, i);
      else body = MathAbs(iOpen(NULL, TimeFrame, i) - iClose(NULL, TimeFrame, i));
      for (j = 1;j <= WRB_LookBackBarCount; j++)
      {
        if (UseWholeBars) bodyPrior = iHigh(NULL, TimeFrame, i + j) - iLow(NULL, TimeFrame, i + j);
        else bodyPrior = MathAbs(iOpen(NULL, TimeFrame, i+j)-iClose(NULL, TimeFrame, i+j));
        if (bodyPrior>body)
        {
           WRB_test = false;
           break;
        }            
      }

      if (WRB_test)
      {
         if (UseWholeBars) WRB[i] = (iHigh(NULL, TimeFrame, i) + iLow(NULL, TimeFrame, i)) / 2;
         else WRB[i] = (iOpen(NULL, TimeFrame, i) + iClose(NULL, TimeFrame, i)) / 2;
      }
      else WRB[i] = EMPTY_VALUE;

      ret

Показано первые 50% кода (символов: 9649)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
964,90₽ ≈ $11.79