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

breakout_box_5_asian_session_hlbox_screen_text_indicator.mq5

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

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

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

О программе

Это пользовательский индикатор для MetaTrader 5, который отображает на графике ценовые диапазоны торговых сессий за заданное число прошедших дней. Индикатор рисует прямоугольники и линии, соответствующие периодам A и B, а также дополнительные зоны пробоя и текстовые метки с ценами. Настройки позволяют выбрать, какие именно диапазоны отображать: по максимуму и минимуму или по ценам открытия и закрытия.

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

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

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

НастройкаОписание
Server Time --- GMT+2 --- (UniqueID) Уникальный идентификатор — Уникальный идентификатор индикатора, добавляемый к именам объектов, что позволяет запускать несколько копий на одном графике.
NumberOfDays Количество дней — Количество прошедших дней, для которых строятся прямоугольники и линии периодов.
Day0 Sydney Open (periodA_begin) Начало периода A — Время начала периода A в формате ЧЧ:ММ (серверное время).
Day0 Frankfurt Open (periodA_end) Окончание периода A — Время окончания периода A в формате ЧЧ:ММ (серверное время).
Set to zero if periodA_begin and periodA_end are on the same day. (nextDayA) Следующий день для периода A — Сдвиг окончания периода A на следующий день: 0 — тот же день, 1 — следующий день.
Day0 New York Open (periodB_end) Окончание периода B — Время окончания периода B в формате ЧЧ:ММ (серверное время).
Set to zero if periodA_begin and periodB_end are on the same day. (nextDayB) Следующий день для периода B — Сдвиг окончания периода B на следующий день: 0 — тот же день, 1 — следующий день.
rectAB_color1 Цвет 1 прямоугольника A+B — Основной цвет прямоугольника периода A и B.
second rectangle color to indicate relative position of Open/Close (rectAB_color2) Цвет 2 прямоугольника A+B — Дополнительный цвет прямоугольника периода A и B, используемый для индикации взаимного расположения цен открытия и закрытия.
true - filled solid; false - outline (rectAB_background) Фон прямоугольника A+B — Если true — прямоугольник периода A и B залит сплошным цветом; если false — отображается только контур.
rectA_color Цвет прямоугольника периода A — Цвет прямоугольника периода A.
true - filled solid; false - outline (rectA_background) Фон прямоугольника периода A — Если true — прямоугольник периода A залит сплошным цветом; если false — отображается только контур.
rectB1_color Цвет прямоугольника периода B — Цвет прямоугольника периода B.
true - filled solid; false - outline (rectB1_background) Фон прямоугольника периода B — Если true — прямоугольник периода B залит сплошным цветом; если false — отображается только контур.
Box Break-Out Band for the Period B rectangle (rectB1_band) Полоса пробоя периода B — Ширина полосы пробоя для прямоугольника периода B в пунктах.
rectsB2_color Цвет прямоугольников зон пробоя — Цвет верхнего и нижнего прямоугольников зон пробоя.
true - filled solid, false - outline (rectsB2_background) Фон прямоугольников зон пробоя — Если true — верхний и нижний прямоугольники зон пробоя залиты сплошным цветом; если false — отображается только контур.
Box Break-Out Band for the two upper and lower rectangles (rectsB2_band) Полоса пробоя прямоугольников зон пробоя — Ширина полосы пробоя для верхнего и нижнего прямоугольников зон пробоя в пунктах.
false - High/Low boxes; true - Open/Close boxes (OpenClose) Тип прямоугольников — Если false — прямоугольники строятся по максимуму и минимуму периода; если true — по ценам открытия и закрытия.
false - period A close indication line begins at end of period A; true - period A close line is draw (rectA_close_begin) Начало линии закрытия периода A — Если false — линия закрытия периода A начинается от конца периода A; если true — линия проводится от начала периода A.
Alerts are set on the upper and lower sides of the upper and lower rectangles - rectsB2 (periodB_ALERTS) Оповещения для периода B — Если true — на верхней и нижней границах прямоугольников зон пробоя создаются линии оповещений с текстовыми метками.
Получить полный код

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

#property indicator_chart_window               // Configuration for Asian Session

extern string UniqueID        = "Asian Session";  // --- Server Time --- GMT+2 ---
extern int    NumberOfDays    = 50;        
extern string periodA_begin   = "05:00";     // Day0  Sydney Open
extern string periodA_end     = "09:00";     // Day0  Frankfurt Open
extern int    nextDayA        = 0;           // Set to zero if periodA_begin and periodA_end are on the same day.

extern string periodB_end     = "15:00";     // Day0  New York Open
extern int    nextDayB        = 0;           // Set to zero if periodA_begin and periodB_end are on the same day.

extern color  rectAB_color1      = PowderBlue; 
extern color  rectAB_color2      = LightCoral;  // second rectangle color to indicate relative position of Open/Close
extern bool   rectAB_background  = true;        // true - filled solid; false - outline
extern color  rectA_color        = Crimson;
extern bool   rectA_background   = false;       // true - filled solid; false - outline
extern color  rectB1_color       = Orange;
extern bool   rectB1_background  = false;       // true - filled solid; false - outline
extern int    rectB1_band        = 0;           // Box Break-Out Band for the Period B rectangle
extern color  rectsB2_color      = SkyBlue;
extern bool   rectsB2_background = true;        // true - filled solid, false - outline
extern int    rectsB2_band       = 5;           // Box Break-Out Band for the two upper and lower rectangles
extern bool   OpenClose          = false;        // false - High/Low boxes;  true - Open/Close boxes
extern bool   rectA_close_begin  = true;        // false - period A close indication line begins at end of period A;  true - period A close line is drawn from beginning of period A
extern bool   periodB_ALERTS     = false;       // Alerts are set on the upper and lower sides of the upper and lower rectangles - rectsB2

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

void deinit() {
  DeleteObjects();
return(0);
}

void DeleteObjects() {
      datetime dtTradeDate=TimeCurrent();

      if(OpenClose) string sRectABname = " BoxOC  ";
         else sRectABname = " BoxHL  ";

  for (int i=0; i<NumberOfDays; i++) {

    ObjectDelete(UniqueID + sRectABname + TimeToStr(dtTradeDate,TIME_DATE));
    ObjectDelete(UniqueID + " BoxOpen  " + TimeToStr(dtTradeDate,TIME_DATE));
    ObjectDelete(UniqueID + " BoxClose  " + TimeToStr(dtTradeDate,TIME_DATE));    
    ObjectDelete(UniqueID + " BoxBO_High  " + TimeToStr(dtTradeDate,TIME_DATE));
    ObjectDelete(UniqueID + " BoxBO_HIGH ALERT " + TimeToStr(dtTradeDate,TIME_DATE));
    ObjectDelete(UniqueID + " BoxBO_Low  " + TimeToStr(dtTradeDate,TIME_DATE));
    ObjectDelete(UniqueID + " BoxBO_LOW ALERT  " + TimeToStr(dtTradeDate,TIME_DATE));    
    ObjectDelete(UniqueID + " BoxPeriodA  " + TimeToStr(dtTradeDate,TIME_DATE));
    ObjectDelete(UniqueID + " BoxPeriodB  " + TimeToStr(dtTradeDate,TIME_DATE));
    ObjectsDeleteAll(0,OBJ_TEXT);

    dtTradeDate=decrementTradeDate(dtTradeDate);
    while (TimeDayOfWeek(dtTradeDate) > 5 || TimeDayOfWeek(dtTradeDate) < 1 ) dtTradeDate = decrementTradeDate(dtTradeDate);     // Removed Sundays from plots
    }     
 return(0); 
}

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

void DrawObjects(datetime dtTradeDate, string sObjName, string sTimeBegin, string sTimeEnd, string sTimeObjEnd, color cObjColor1, color cObjColor2, int iOffSet, int iForm, bool background, int nextDayA, int nextDayB, bool OpenClose, bool rectA_close_begin) {
  datetime dtTimeBegin, dtTimeEnd, dtTimeObjEnd;
  double   dPriceHigh,  dPriceLow, dPriceOpen, dPriceClose;
  int      iBarBegin,   iBarEnd;
  string   sObjDesc;

  dtTimeBegin = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeBegin);
  dtTimeEnd = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeEnd);
  dtTimeObjEnd = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeObjEnd);

  if(nextDayA == 1) dtTimeEnd = dtTimeEnd + 86400;
  if(nextDayB == 1) dtTimeObjEnd = dtTimeObjEnd + 86400;
  if(nextDayA == 1 && TimeDayOfWeek(dtTradeDate) == 5) dtTimeEnd = dtTimeEnd + (2 * 86400);
  if(nextDayB == 1 && TimeDayOfWeek(dtTradeDate) == 5) dtTimeObjEnd = dtTimeObjEnd + (2 * 86400);

  iBarBegin = iBarShift(NULL, 0, dtTimeBegin)+1;                                    // added 1 to bar count to correct calculation for highest price for the period
  iBarEnd = iBarShift(NULL, 0, dtTimeEnd)+1;                                        // added 1 to bar count to correct calculation for lowest price for the period 

   dPriceHigh  = High[Highest(NULL, 0, MODE_HIGH, (iBarBegin)-iBarEnd, iBarEnd)];
   dPriceLow   = Low [Lowest (NULL, 0, MODE_LOW , (iBarBegin)-iBarEnd, iBarEnd)];
   dPriceOpen  = Open[iBarBegin-1];                                                 // Open/Close added to enable Open/Close rectangles
   dPriceClose = Close[iBarEnd];

      if(OpenClose){                                                                // Selection of extremes of Open/Close values
         dPriceHigh = MathMax(dPriceOpen, dPriceClose);
         dPriceLow  = MathMin(dPriceOpen, dPriceClose); 
         }

   if(iForm==1){  
      ObjectCreate(sObjName, OBJ_RECTANGLE, 0, 0, 0, 0, 0);
      ObjectSet(sObjName, OBJPROP_TIME1 , dtTimeBegin);
      ObjectSet(sObjName, OBJPROP_TIME2 , dtTimeObjEnd);
      ObjectSet(sObjName, OBJPROP_PRICE1, dPriceHigh);  
      ObjectSet(sObjName, OBJPROP_PRICE2, dPriceLow);
      ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
      if(dPriceClose<dPriceOpen && OpenClose==true) cObjColor1 = cObjColor2;        // Color change of rectangle dependent on Open/Close positions
      ObjectSet(sObjName, OBJPROP_COLOR, cObjColor1);
      ObjectSet(sObjName, OBJPROP_BACK, background);
   }

  if(iForm==2){
      ObjectCreate(sObjName, OBJ_RECTANGLE, 0, 0, 0, 0, 0);
      ObjectSet(sObjName, OBJPROP_TIME1 , dtTimeEnd);
      ObjectSet(sObjName, OBJPROP_TIME2 , dtTimeObjEnd);
      ObjectSet(sObjName, OBJPROP_PRICE1, dPriceHigh);
      ObjectSet(sObjName, OBJPROP_PRICE2, dPriceHigh + iOffSet*Point);
      ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet(sObjName, OBJPROP_COLOR, cObjColor1);
      ObjectSet(sObjName, OBJPROP_BACK, background);

if(iOffSet>0){                                                                                                 // SCREEN TEXT       
string  sObjName_text_up = StringConcatenate(sObjName, "_text");        // SCREEN TEXT                         // SCREEN TEXT
      {                                                                                                        // SCREEN TEXT
      ObjectCreate(sObjName_text_up, OBJ_TEXT, 0,dtTimeEnd-420, dPriceHigh + iOffSet*Point+2*Point);           // SCREEN TEXT
      string      sObjNameOBprice_up = DoubleToStr(dP

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

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

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

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

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

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

Стоимость полного кода
1 402,50₽ ≈ $17.14