0 - h-lines targets v1.02.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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)