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

0 - h-lines targets v1.02.mq5

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

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

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

О программе

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

Продукт работает на платформе MetaTrader 5 как индикатор, отрисовывающий графические объекты непосредственно в окне графика. Поддерживается отображение ценовых подписей для референсной цены и каждой цели с настройкой шрифта, размера и смещения. По графику также размещаются стрелки-маркеры в фиксированные часы.

Встроенная система уведомлений позволяет получать алерты при сравнении цены открытия дневного бара с референсной ценой. Поддерживаются всплывающие сообщения, звуковые сигналы, email-рассылка и push-уведомления. Все параметры настраиваются через панель свойств индикатора.

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

НастройкаОписание
B_Start_Time Время начала отображения горизонтальных линий на графике (в формате ЧЧ:ММ).
B_End_Time Время окончания отображения горизонтальных линий на графике (в формате ЧЧ:ММ).
SHT1 Включает или отключает отображение целевых линий первого уровня.
SHT2 Включает или отключает отображение целевых линий второго уровня.
SHT3 Включает или отключает отображение целевых линий третьего уровня.
SHT4 Включает или отключает отображение целевых линий четвёртого уровня.
SHT5 Включает или отключает отображение целевых линий пятого уровня.
TD1 Расстояние в пунктах от референсной цены до целевых линий первого уровня.
TD2 Расстояние в пунктах от референсной цены до целевых линий второго уровня.
TD3 Расстояние в пунктах от референсной цены до целевых линий третьего уровня.
TD4 Расстояние в пунктах от референсной цены до целевых линий четвёртого уровня.
TD5 Расстояние в пунктах от референсной цены до целевых линий пятого уровня.
B_Color Цвет горизонтальной референсной линии, проведённой на уровне цены открытия или закрытия.
APRx Выбор цены для привязки референсной линии: цена закрытия или цена открытия бара в заданное время.
B_Width Толщина референсной горизонтальной линии в пикселях.
B_Style Стиль линии референсного уровня (пунктир, сплошная и т. д.).
LT1_Color Цвет длинной целевой линии первого уровня.
ST1_Color Цвет короткой целевой линии первого уровня.
WT1_Width Толщина целевых линий первого уровня в пикселях.
ST1_Style Стиль короткой целевой линии первого уровня.
LT1_Color2 Цвет длинной целевой линии второго уровня.
ST1_Color2 Цвет короткой целевой линии второго уровня.
WT2_Width Толщина целевых линий второго уровня в пикселях.
ST2_Style Стиль короткой целевой линии второго уровня.
LT1_Color3 Цвет длинной целевой линии третьего уровня.
ST1_Color3 Цвет короткой целевой линии третьего уровня.
WT3_Width Толщина целевых линий третьего уровня в пикселях.
ST3_Style Стиль короткой целевой линии третьего уровня.
LT1_Color4 Цвет длинной целевой линии четвёртого уровня.
ST1_Color4 Цвет короткой целевой линии четвёртого уровня.
WT4_Width Толщина целевых линий четвёртого уровня в пикселях.
ST4_Style Стиль короткой целевой линии четвёртого уровня.
LT1_Color5 Цвет длинной целевой линии пятого уровня.
ST1_Color5 Цвет короткой целевой линии пятого уровня.
WT5_Width Толщина целевых линий пятого уровня в пикселях.
ST5_Style Стиль короткой целевой линии пятого уровня.
SHT Включает или отключает отображение ценовых подписей на графике.
FB Включает жирный шрифт для ценовых подписей на графике.
T_Size Размер шрифта ценовых подписей на графике.
TLRx Горизонтальное смещение ценовых подписей от левого или правого края бара.
TUDx Вертикальное смещение ценовых подписей вверх или вниз от уровня линии.
_AlertSetting Текстовый разделитель для настроек уведомлений.
alertsOn Включает или отключает систему уведомлений целиком.
alertsOnCurrentBar Если включено, алерты срабатывают на текущем открытом баре; если выключено — на предыдущем закрытом.
alertsMessage Включает отправку всплывающих сообщений при срабатывании алерта.
alertsSound Включает воспроизведение звукового сигнала при срабатывании алерта.
alertsNotification Включает отправку push-уведомлений при срабатывании алерта.
alertsEmail Включает отправку email-уведомлений при срабатывании алерта.
soundFile Имя звукового файла для воспроизведения при срабатывании алерта.

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

#property description "FREE - NOT FOR SALE or RENT"

#property indicator_chart_window
#property strict

enum APR
{
  a, // Price Close
  b // Price  Open
};

input string B_Start_Time = "01:00"; // Start Time
input string B_End_Time = "23:59"; // End Time
input bool SHT1 = true; // Show Target 1
input bool SHT2 = true; // Show Target 2
input bool SHT3 = true; // Show Target 3
input bool SHT4 = true; // Show Target 4
input bool SHT5 = true; // Show Target 5

input int TD1 = 20;  // Target 1 Distance 
input int TD2 = 30; // Target 2 Distance 
input int TD3 = 50; // Target 3 Distance 
input int TD4 = 70; // Target 4 Distance
input int TD5 = 80; // Target 5 Distance

input color B_Color = clrSlateGray; // Start Time Line 
input APR APRx = b; // Start Time Price (Bar Open or Close)
input int B_Width = 1; // Width
input ENUM_LINE_STYLE B_Style = STYLE_DOT; // Style

input color LT1_Color = clrLime; // Long Target 1
input color ST1_Color = clrRed; // Short Target 1
input int WT1_Width = 1; // Width
input ENUM_LINE_STYLE ST1_Style = STYLE_DASHDOT; // Style

input color LT1_Color2 = clrLime; // Long Target 2
input color ST1_Color2 = clrRed; // Short Target 2
input int WT2_Width = 1; // Width
input ENUM_LINE_STYLE ST2_Style = STYLE_DASHDOT;  // Style

input color LT1_Color3 = clrCyan; // Long Target 3
input color ST1_Color3 = clrOrange; // Short Target 3
input int WT3_Width = 1; // Width
input ENUM_LINE_STYLE ST3_Style = STYLE_SOLID; // Style

input color LT1_Color4 = clrGreen; // Long Target 4
input color ST1_Color4 = clrMaroon; // Short Target 4
input int WT4_Width = 1; // Width
input ENUM_LINE_STYLE ST4_Style = STYLE_DASHDOT; // Style

input color LT1_Color5 = clrGreen; // Long Target 5
input color ST1_Color5 = clrMaroon; // Short Target 5
input int WT5_Width = 1; // Width
input ENUM_LINE_STYLE ST5_Style = STYLE_DASHDOT; // Style

input bool SHT  = true; // Show Price
input bool FB = True ; // Price Font Bold
input int T_Size = 10 ; // Price Size

input int  TLRx = 5; // Price Left-Right
input int  TUDx = 5; // Price Up-Down

input string  _AlertSetting = "---Alert Settings ---";
input bool   alertsOn            = true;  //Turn alerts on?
input bool   alertsOnCurrentBar     = false; //Alerts on (still opened) bar true/false?
input bool   alertsMessage       = true;  //Alerts Message true/false?
input bool   alertsSound         = true;   //Alerts sound true/false?
input bool   alertsNotification  = false;  //Alerts push notification true/false?
input bool   alertsEmail         = false;  //Alerts email true/false?
input string  soundFile = "alert.wav";

string Fontx, OP;

double s1_b, s1_tp, s1_sl, s1_tp2,s1_sl2, s1_tp3,s1_sl3, s1_tp4,s1_sl4, s1_tp5,s1_sl5;

string LabelID  = "Hlines";
int multiplier;

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

int deinit()
{
   ObjectDelete( "B");
   ObjectDelete( "LT1");
   ObjectDelete( "ST1");
   ObjectDelete( "LT2");
   ObjectDelete( "ST2");
   ObjectDelete( "LT3");
   ObjectDelete( "ST3");
   ObjectDelete( "ST4");
   ObjectDelete( "LT4");
   ObjectDelete( "ST5");
   ObjectDelete( "LT5");

   ObjectDelete( "BT");
   ObjectDelete("LT1T");
   ObjectDelete("ST1T");
   ObjectDelete("LT2T");
   ObjectDelete("ST2T");
   ObjectDelete("LT3T");
   ObjectDelete("ST3T");
   ObjectDelete("LT4T");
   ObjectDelete("ST4T");
   ObjectDelete("LT5T");
   ObjectDelete("ST5T");

    deleteArrowObjects();

   return(0);
}

void deleteArrowObjects()
{
   string lookFor       = LabelID;
   int    lookForLength = StringLen(lookFor);
   for (int i=ObjectsTotal()-1; i>=0; i--)
   {
      string objectName = ObjectName(i);
         if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
   }
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
      // код доступен только после оплаты
   }

   datetime st1 = StrToTime(B_Start_Time);
   datetime et1 = StrToTime(B_End_Time);

   int shift_s1 = iBarShift(NULL,PERIOD_CURRENT,st1);

   switch(APRx)
   {
     case a:

     OP = "Close: ";
     s1_b =  Close[shift_s1];
     s1_tp = iClose(NULL, PERIOD_CURRENT, shift_s1) + TD1*multiplier*Point;
     s1_sl = iClose(NULL, PERIOD_CURRENT, shift_s1) - TD1*multiplier*Point;

     s1_tp2 = iClose(NULL, PERIOD_CURRENT, shift_s1) + TD2*multiplier*Point;
     s1_sl2 = iClose(NULL, PERIOD_CURRENT, shift_s1) - TD2*multiplier*Point; 

     s1_tp3 = iClose(NULL, PERIOD_CURRENT, shift_s1) + TD3*multiplier*Point;
     s1_sl3 = iClose(NULL, PERIOD_CURRENT, shift_s1) - TD3*multiplier*Point; 

     s1_tp4 = iClose(NULL, PERIOD_CURRENT, shift_s1) + TD4*multiplier*Point;
     s1_sl4 = iClose(NULL, PERIOD_CURRENT, shift_s1) - TD4*multiplier*Point; 

     s1_tp5 = iClose(NULL, PERIOD_CURRENT, shift_s1) + TD5*multiplier*Point;
     s1_sl5 = iClose(NULL, PERIOD_CURRENT, shift_s1) - TD5*multiplier*Point; 

     break;

     case b: 

     OP = "Open: ";
     s1_b = Open[shift_s1];
     s1_tp = iOpen(NULL, PERIOD_CURRENT, shift_s1) + TD1*multiplier*Point;
     s1_sl = iOpen(NULL, PERIOD_CURRENT, shift_s1) - TD1*multiplier*Point;

     s1_tp2 = iOpen(NULL, PERIOD_CURRENT, shift_s1) + TD2*multiplier*Point;
     s1_sl2 = iOpen(NULL, PERIOD_CURRENT, shift_s1) - TD2*multiplier*Point;

     s1_tp3 = iOpen(NULL, PERIOD_CURRENT, shift_s1) + TD3*multiplier*Point;
     s1_sl3 = iOpen(NULL, PERIOD_CURRENT, shift_s1) - TD3*multiplier*Point;

     s1_tp4 = iOpen(NULL, PERIOD_CURRENT, shift_s1) + TD4*multiplier*Point;
     s1_sl4 = iOpen(NULL, PERIOD_CURRENT, shift_s1) - TD4*multiplier*Point;

     s1_tp5 = iOpen(NULL, PERIOD_CURRENT, shift_s1) + TD5*multiplier*Point;
     s1_sl5 = iOpen(NULL, PERIOD_CURRENT, shift_s1) - TD5*multiplier*Point;
   }

   ObjectCreate( "B", OBJ_TREND, 0, 0, 0, 0, 0); 
   ObjectSet( "B", OBJPROP_COLOR, B_Color);
   ObjectSet( "B", OBJPROP_WIDTH, B_Width);
   ObjectSet( "B", OBJPROP_STYLE, B_Style);
   ObjectSet( "B", OBJPROP_TIME1, st1);
   ObjectSet( "B", OBJPROP_TIME2, et1);
   ObjectSet( "B", OBJPROP_PRICE1, s1_b);
   ObjectSet( "B", OBJPROP_PRICE2, s1_b);
   ObjectSet( "B", OBJPROP_RAY, false);
   ObjectSet( "B", OBJPROP_BACK, true);
   ObjectSet( "B", OBJPROP_SELECTABLE, false);

   if(SHT){
   ObjectCreate( "BT",OBJ_TEXT,0,0,0);
   ObjectSet( "BT",OBJPROP_TIME1,Time[0]+(TLRx*Period()*60));
   ObjectSet( "BT",OBJPROP_PRICE1,s1_b-TUDx*multiplier*Point);
   ObjectSetText( "BT",OP + DoubleToStr(s1_b,Digits),T_Size,Fontx,B_Color);}
   ObjectSet( "BT", OBJPROP_SELECTABLE, false);

   if(SHT1){
   ObjectCreate( "LT1", OBJ_TREND, 0, 0, 0, 0, 0); 
   ObjectSet( "LT1", OBJPROP_COLOR, LT1_Color);
   ObjectSet( "LT1", OBJPROP_WIDTH, WT1_Width);
   ObjectSet( "LT1", OBJPROP_STYLE, ST1_Style);
   ObjectSet( "LT1", OBJPROP_TIME1, st1);
   ObjectSet( "LT1", OBJPROP_TIME2, et1);
   ObjectSet( "LT1", OBJPROP_PRICE1, s1_tp );
   ObjectSet( "LT1", OBJPROP_PRICE2, s1_tp );
   ObjectSet( "LT1", OBJPROP_RAY, false);
   ObjectSet( "LT1", OBJPROP_BACK, true);}
   ObjectSet( "LT1", OBJPROP_SELECTABLE, false);

   if(SHT && SHT1){
   ObjectCreate( "LT1T",OBJ_TEXT,0,0,0);
   ObjectSet( "LT1T",OBJPROP_TIME1,Time[0]+(TLRx*Period()*60));
   ObjectSet( "LT1T",OBJPROP_PRICE1,s1_tp-TUDx*multiplier*Point);
   ObjectSetText( "LT1T","T1: " + DoubleToStr(s1_tp,Digits),T_Size,Fontx,LT1_Color);}
   ObjectSet( "LT1T", OBJPROP_SELECTABLE, false);

   if(SHT1){
   ObjectCreate( "ST1", OBJ_TREND, 0, 0, 0, 0, 0); 
   ObjectSet( "ST1", OBJPROP_COLOR, ST1_Color);
   ObjectSet( "ST1", OBJPROP_WIDTH, WT1_Width);
   ObjectSet( "ST1", OBJPROP_STYLE, ST1_Style);
   ObjectSet( "ST1", OBJPROP_TIME1, st1);
   ObjectSet( "ST1", OBJPROP_TIME2, et1);
   ObjectSet( "ST1", OBJPROP_PRICE1, s1_sl );
   ObjectSet( "ST1", OBJPROP_PRICE2, s1_sl );
   ObjectSet( "ST1", OBJPROP_RAY, false);  
   ObjectSet( "ST1", OBJPROP_BACK, true);} 
   ObjectSet( "ST1", OBJPROP_SELECTABLE, false);

   if(SHT && SHT1){
   ObjectCreate( "ST1T",OBJ_TEXT,0,0,0);
   ObjectSet( "ST1T",OBJPROP_TIME1,Time[0]+(TLRx*Period()*60));
   ObjectSet( "ST1T",OBJPROP_PRICE1,s1_sl-TUDx*multiplier*Point);
   ObjectSetText( "ST1T","T1: " +DoubleToStr(s1_sl,Digits),T_Size,Fontx,ST1_Color);}
   ObjectSet( "ST1T", OBJPROP_SELECTABLE, false);

   if(SHT2){
   ObjectCreate( "LT2", OBJ_TREND, 0, 0, 0, 0, 0); 
   ObjectSet( "LT2", OBJPROP_COLOR, LT1_Color2);
   ObjectSet( "LT2", OBJPROP_WIDTH, WT2_Width);
   ObjectSet( "LT2", OBJPROP_STYLE, ST2_Style);
   ObjectSet( "LT2", OBJPROP_TIME1, st1);
   ObjectSet( "LT2", OBJPROP_TIME2, et1);
   ObjectSet( "LT2", OBJPROP_PRICE1, s1_tp2 );
   ObjectSet( "LT2", OBJPROP_PRICE2, s1_tp2 );
   ObjectSet( "LT2", OBJPROP_RAY, false);
   ObjectSet( "LT2", OBJPROP_BACK, true);}
   ObjectSet( "LT2", OBJPROP_SELECTABLE, false);

   if(SHT && SHT2){
   ObjectCreate( "LT2T",OBJ_TEXT,0,0,0);
   ObjectSet( "LT2T",O

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