-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDay_Hight_Low.mq5
72 lines (69 loc) · 3.41 KB
/
Day_Hight_Low.mq5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//+------------------------------------------------------------------+
//| Day_Hight_Low.mq5 |
//| Copyright 2015, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property script_show_inputs
//--- input parameters
input datetime Day;
input color Day_level=clrDarkViolet;
input color Night_Level=clrRoyalBlue;
input bool Night_Session=true;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
datetime TStart,TDay,TNight;
MqlDateTime STRTime;
int IStart,IDay,INight;
int IDayHight,IDayLow,INightHight,INightLow;
double MHightD[1],MLowD[1],MHightN[1],MLowN[1];
//---
TimeToStruct(Day,STRTime);
STRTime.hour= 10;
STRTime.min = 0;
TStart=StructToTime(STRTime);
STRTime.hour= 18;
STRTime.min = 40;
TDay=StructToTime(STRTime);
STRTime.hour= 23;
STRTime.min = 45;
TNight=StructToTime(STRTime);
//Print (TStart, TDay, TNight);
IStart=iBarShift(NULL,PERIOD_CURRENT,TStart,true);
IDay=iBarShift(NULL,PERIOD_CURRENT,TDay,true);
INight=iBarShift(NULL,PERIOD_CURRENT,TNight,true);
//Print ("IStart = ", IStart , " IDay = ", IDay, " INight = ",INight);
IDayHight=iHighest(NULL,0,MODE_HIGH,IStart-IDay+1,IDay);
IDayLow=iLowest(NULL,0,MODE_LOW,IStart-IDay+1,IDay);
INightHight=iHighest(NULL,0,MODE_HIGH,IStart-INight+2,INight);
INightLow=iLowest(NULL,0,MODE_LOW,IStart-INight+2,INight);
CopyHigh(NULL,0,IDayHight,1,MHightD);
CopyHigh(NULL,0,INightHight,1,MHightN);
CopyLow(NULL,0,IDayLow,1,MLowD);
CopyLow(NULL,0,INightLow,1,MLowN);
//Print ("Hight дня = ",MHightD[0]," - ",IDayHight," Low дня = ", MLowD[0], " - ",IDayLow," Hight с вечером = ", MHightN[0], " - ",INightHight, " Low с вечером = ",MLowN[0], " - ",INightLow);
ObjectCreate(0,"NOFX_DH",OBJ_HLINE,0,IStart,MHightD[0]);
ObjectSetInteger(0,"NOFX_DH",OBJPROP_COLOR,Day_level);
ObjectSetInteger(0,"NOFX_DH",OBJPROP_HIDDEN,false);
ObjectCreate(0,"NOFX_DL",OBJ_HLINE,0,IStart,MLowD[0]);
ObjectSetInteger(0,"NOFX_DL",OBJPROP_COLOR,Day_level);
ObjectSetInteger(0,"NOFX_DL",OBJPROP_HIDDEN,false);
if(Night_Session)//если включен учёт ночной сессии, то дорисовываем ночные экстремумы если они выходят за рамки дня
{
if(MHightD[0]<MHightN[0])//если дневной максимум меньше ночного то дорисовываем уровень вечернего максимума
{
ObjectCreate(0,"NOFX_NH",OBJ_HLINE,0,IStart,MHightN[0]);
ObjectSetInteger(0,"NOFX_NH",OBJPROP_COLOR,Night_Level);
ObjectSetInteger(0,"NOFX_NH",OBJPROP_HIDDEN,false);
}
if(MLowD[0]>MLowN[0])//если дневной минимум больше ночного то дорисовываем ночной минимум
{
ObjectCreate(0,"NOFX_DL",OBJ_HLINE,0,IStart,MLowN[0]);
ObjectSetInteger(0,"NOFX_DL",OBJPROP_COLOR,Night_Level);
ObjectSetInteger(0,"NOFX_DL",OBJPROP_HIDDEN,false);
}
}
}
//+------------------------------------------------------------------+