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

0 - h-lines targets v1.0.mq5

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

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

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

О программе

«0 - h-lines targets v1.0» — это пользовательский индикатор для MetaTrader 5, который отрисовывает на графике горизонтальные линии-цели в заданном временном интервале. Линии рассчитываются от цены открытия или закрытия бара, соответствующего указанному времени начала, на заданные расстояния в пунктах.

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

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

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

НастройкаОписание
B_Start_Time Время начала отрисовки горизонтальных линий
B_End_Time Время окончания отрисовки горизонтальных линий
SHT1 Включает отображение первой цели (горизонтальных линий)
SHT2 Включает отображение второй цели (горизонтальных линий)
TD1 Расстояние первой цели в пунктах от цены начала
TD2 Расстояние второй цели в пунктах от цены начала
B_Color Цвет горизонтальной линии времени начала
APRx Выбор цены для расчёта линий: цена закрытия или цена открытия бара, соответствующего времени начала
B_Width Толщина линии времени начала
B_Style Стиль линии времени начала
LT1_Color Цвет горизонтальной линии первой цели для позиции лонг
ST1_Color Цвет горизонтальной линии первой цели для позиции шорт
WT1_Width Толщина линий первой цели
ST1_Style Стиль линий первой цели
LT1_Color2 Цвет горизонтальной линии второй цели для позиции лонг
ST1_Color2 Цвет горизонтальной линии второй цели для позиции шорт
WT2_Width Толщина линий второй цели
ST2_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 int TD1 = 200;  // Target 1 Distance 
input int TD2 = 400; // Target 2 Distance 

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

input color LT1_Color = LimeGreen; // Long Target 1
input color ST1_Color = Red; // Short Target 1
input int WT1_Width = 5; // Width
input ENUM_LINE_STYLE ST1_Style = 0; // Style

input color LT1_Color2 = DarkGreen; // Long Target 2
input color ST1_Color2 = Maroon; // Short Target 2
input int WT2_Width = 5; // Width
input ENUM_LINE_STYLE ST2_Style = 0;  // 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;

string LabelID  = "Hlines";

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

int deinit()
{
   ObjectDelete( "B");
   ObjectDelete( "LT1");
   ObjectDelete( "ST1");
   ObjectDelete( "LT2");
   ObjectDelete( "ST2");

   ObjectDelete( "BT");
   ObjectDelete("LT1T");
   ObjectDelete("ST1T");
   ObjectDelete("LT2T");
   ObjectDelete("ST2T");

    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*Point;
     s1_sl = iClose(NULL, PERIOD_CURRENT, shift_s1) - TD1*Point;

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

     case b: 

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

     s1_tp2 = iOpen(NULL, PERIOD_CURRENT, shift_s1) + TD2*Point;
     s1_sl2 = iOpen(NULL, PERIOD_CURRENT, shift_s1) - TD2*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*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*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_C

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