Price Data Components
0
Views
0
Downloads
0
Favorites
Pivot Daily Zone
//+------------------------------------------------------------------+
//| Pivot Daily Zone.mq4 |
//| Copyright © 2006, Eli Hayun |
//| http://www.elihayun.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Eli Hayun"
#property link "http://www.elihayun.com"
#property indicator_chart_window
#define PIVOT_LINE "Pivot line"
#define R1 "R1"
#define R2 "R2"
#define R3 "R3"
#define S1 "S1"
#define S2 "S2"
#define S3 "S3"
bool ObjectCreated = false;
extern color PivotColor = DarkSlateGray;
extern color R3Color = NavajoWhite;
extern color R2Color = LightSalmon;
extern color R1Color = DarkSalmon;
extern color S3Color = PowderBlue;
extern color S2Color = LightBlue;
extern color S1Color = SkyBlue;
bool HaveSunday = false;
int PivotTF = PERIOD_D1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
if (PivotTF >= PERIOD_D1)
PivotTF = PERIOD_W1;
for (int ii=0; ii<10; ii++)
{
if (TimeDayOfWeek(iTime(NULL, PivotTF, ii)) == 0)
HaveSunday = true;
}
CreatePivotZones();
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
DeleteObjects();
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (NewBar())
{
CreatePivotZones();
}
}
//+------------------------------------------------------------------+
void CreateObj(string objName, double start, double end, color clr)
{
int fvb = FirstVisibleBar();
int bpw = BarsPerWindow();
if (start == end) end -= 2 * Point;
ObjectCreate(objName, OBJ_RECTANGLE, 0, iTime(NULL,PERIOD_D1, 0), start, Time[0], end);
ObjectSet(objName, OBJPROP_COLOR, clr);
}
void DeleteObjects()
{
ObjectDelete(PIVOT_LINE);
ObjectDelete(R1);
ObjectDelete(R2);
ObjectDelete(R3);
ObjectDelete(S1);
ObjectDelete(S2);
ObjectDelete(S3);
ObjectDelete("Start Day");
}
bool NewBar()
{
static datetime dt = 0;
static datetime dtDay = 0;
if (dtDay != iTime(NULL, PivotTF, 0))
{
ObjectDelete("Start Day");
ObjectCreate("Start Day", OBJ_VLINE, 0, iTime(NULL, PERIOD_D1, 0),0);
dtDay = iTime(NULL, PivotTF, 0);
}
if (dt != Time[0])
{
dt = Time[0];
return(true);
}
return(false);
}
void CreatePivotZones()
{
double yOpen = GetOpen();
double yClose = GetClose();
double yHigh = GetHigh();
double yLow = GetLow();
double pivot = (yHigh + yClose + yLow) / 3;
double r1 = 2 * pivot - yLow;
double s1 = 2 * pivot - yHigh;
double r2 = pivot + (r1 - s1);
double r3 = yHigh + 2 * (pivot - yLow);
double s2 = pivot - (r1 - s1);
double s3 = yLow - 2 * (yHigh - pivot);
DeleteObjects();
CreateObj(PIVOT_LINE, pivot, pivot, PivotColor);
CreateObj(R1, pivot, r1, R1Color);
CreateObj(R2, r1, r2, R2Color);
CreateObj(R3, r2, r3, R3Color);
CreateObj(S1, pivot, s1, S1Color);
CreateObj(S2, s1, s2, S2Color);
CreateObj(S3, s2, s3, S3Color);
}
double GetHigh()
{
int dow = TimeDayOfWeek(iTime(NULL, PivotTF, 0));
int dow1 = TimeDayOfWeek(iTime(NULL, PivotTF, 1));
int sh = 1;
if ((HaveSunday) && (dow == 1))
sh = 2; // skip sunday
if (dow == 2) // Teusday
{
return ( Highest(NULL, PivotTF, MODE_HIGH, 2,1) );
}
return( iHigh(NULL, PivotTF, sh) );
}
double GetLow()
{
int dow = TimeDayOfWeek(iTime(NULL, PivotTF, 0));
int dow1 = TimeDayOfWeek(iTime(NULL, PivotTF, 1));
int sh = 1;
if ((HaveSunday) && (dow == 1))
sh = 2; // skip sunday
if (dow == 2) // Teusday
{
return ( Lowest(NULL, PivotTF, MODE_LOW,2,1) );
}
return( iLow(NULL, PivotTF, sh) );
}
double GetOpen()
{
int dow = TimeDayOfWeek(iTime(NULL, PivotTF, 0));
int sh = 1;
if (HaveSunday && (dow == 1)) sh = 2; // Today is Monday
return( iOpen(NULL, PivotTF, sh) );
}
double GetClose()
{
int dow = TimeDayOfWeek(iTime(NULL, PivotTF, 0));
int sh = 1;
if (HaveSunday && (dow == 1)) sh = 2; // Today is Monday
return( iClose(NULL, PivotTF, sh) );
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---