0
Views
0
Downloads
0
Favorites
Pivot_Lines1
//+------------------------------------------------------------------+
//| Pivot.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
extern bool pivots = true;
extern bool camarilla = true;
extern bool midpivots = true;
extern int pivots_offset = 20;
extern int camarilla_offset = 35;
extern int midpivots_offset = 20;
double day_high=0;
double day_low=0;
double yesterday_high=0;
double yesterday_open=0;
double yesterday_low=0;
double yesterday_close=0;
double today_open=0;
double today_high=0;
double today_low=0;
double P=0;
double Q=0;
double R1,R2,R3,R4;
double MS3_5,MS2_5,MS1_5,MS0_5,MR0_5,MR1_5,MR2_5,MR3_5;
double S1,S2,S3,S4;
double H5,H4,H3,L5,L4,L3;
double nQ=0;
double nD=0;
double D=0;
double rates_d1[2][6];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
R1=0; R2=0; R3=0; R4=0;
MR0_5=0; MR1_5=0; MR2_5=0; MR3_5=0;
MS0_5=0; MS1_5=0; MS2_5=0; MS3_5=0;
S1=0; S2=0; S3=0; S4=0;
H5=0; H4=0; H3=0; L5=0; L4=0; L3=0;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
ObjectDelete("R1 Label");
ObjectDelete("R1 Line");
ObjectDelete("R2 Label");
ObjectDelete("R2 Line");
ObjectDelete("R3 Label");
ObjectDelete("R3 Line");
ObjectDelete("R4 Label");
ObjectDelete("R4 Line");
ObjectDelete("S1 Label");
ObjectDelete("S1 Line");
ObjectDelete("S2 Label");
ObjectDelete("S2 Line");
ObjectDelete("S3 Label");
ObjectDelete("S3 Line");
ObjectDelete("S4 Label");
ObjectDelete("S4 Line");
ObjectDelete("P Label");
ObjectDelete("P Line");
ObjectDelete("H5 Label");
ObjectDelete("H5 Line");
ObjectDelete("H4 Label");
ObjectDelete("H4 Line");
ObjectDelete("H3 Label");
ObjectDelete("H3 Line");
ObjectDelete("L3 Label");
ObjectDelete("L3 Line");
ObjectDelete("L4 Label");
ObjectDelete("L4 Line");
ObjectDelete("L5 Label");
ObjectDelete("L5 Line");
ObjectDelete("MR3_5 Label");
ObjectDelete("MR3_5 Line");
ObjectDelete("MR2_5 Label");
ObjectDelete("MR2_5 Line");
ObjectDelete("MR1_5 Label");
ObjectDelete("MR1_5 Line");
ObjectDelete("MR0_5 Label");
ObjectDelete("MR0_5 Line");
ObjectDelete("MS0_5 Label");
ObjectDelete("MS0_5 Line");
ObjectDelete("MS1_5 Label");
ObjectDelete("MS1_5 Line");
ObjectDelete("MS2_5 Label");
ObjectDelete("MS2_5 Line");
ObjectDelete("MS3_5 Label");
ObjectDelete("MS3_5 Line");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//---- TODO: add your code here
//---- exit if period is greater than daily charts
if(Period() > 1440)
{
Print("Error - Chart period is greater than 1 day.");
return(-1); // then exit
}
//---- Get new daily prices
ArrayCopyRates(rates_d1, Symbol(), PERIOD_D1);
yesterday_close = rates_d1[1][4];
yesterday_open = rates_d1[1][1];
today_open = rates_d1[0][1];
yesterday_high = rates_d1[1][3];
yesterday_low = rates_d1[1][2];
day_high = rates_d1[0][3];
day_low = rates_d1[0][2];
//---- Calculate Pivots
D = (day_high - day_low);
Q = (yesterday_high - yesterday_low);
P = (yesterday_high + yesterday_low + yesterday_close) / 3;
R1 = (2*P)-yesterday_low;
S1 = (2*P)-yesterday_high;
R2 = P+(yesterday_high - yesterday_low);
S2 = P-(yesterday_high - yesterday_low);
R3 = (2*P)+(yesterday_high-(2*yesterday_low));
S3 = (2*P)-((2* yesterday_high)-yesterday_low);
R4 = (2*P)+(yesterday_high-(3*yesterday_low));
S4 = (2*P)-((3* yesterday_high)-yesterday_low);
H5 = (yesterday_high/yesterday_low)*yesterday_close;
H4 = (Q*0.55)+yesterday_close;
H3 = (Q*0.27)+yesterday_close;
MR3_5 = (R3+R4)/2;
MR2_5 = (R2+R3)/2;
// R2 = P-S1+R1;
MR1_5 = (R1+R2)/2;
// R1 = (2*P)-yesterday_low;
MR0_5 = (P+R1)/2;
// P = (yesterday_high + yesterday_low + yesterday_close)/3;
MS0_5 = (P+S1)/2;
// S1 = (2*P)-yesterday_high;
MS1_5 = (S1+S2)/2;
// S2 = P-R1+S1;
L3 = yesterday_close-(Q*0.27);
L4 = yesterday_close-(Q*0.55);
L5 = yesterday_close-((yesterday_high/yesterday_low)*yesterday_close-yesterday_close);
MS2_5 = (S2+S3)/2;
MS3_5 = (S3+S4)/2;
if (Q > 5)
{
nQ = Q;
}
else
{
nQ = Q*10000;
}
if (D > 5)
{
nD = D;
}
else
{
nD = D*10000;
}
Comment("High= ",yesterday_high,
" Previous Days Range= ",nQ,
"\nLow= ",yesterday_low," Current Days Range= ",nD,
"\nClose= ",yesterday_close,
"\nR4= ",R4," S4 = ",S4);
//---- Set line labels on chart window
//---- Pivot Lines
if (pivots==true)
{
if(ObjectFind("R1 label") != 0)
{
ObjectCreate("R1 label", OBJ_TEXT, 0, Time[pivots_offset], R1);
ObjectSetText("R1 label", " R1", 8, "Arial", White);
}
else
{
ObjectMove("R1 label", 0, Time[pivots_offset], R1);
}
if(ObjectFind("R2 label") != 0)
{
ObjectCreate("R2 label", OBJ_TEXT, 0, Time[pivots_offset], R2);
ObjectSetText("R2 label", " R2", 8, "Arial", White);
}
else
{
ObjectMove("R2 label", 0, Time[pivots_offset], R2);
}
if(ObjectFind("R3 label") != 0)
{
ObjectCreate("R3 label", OBJ_TEXT, 0, Time[pivots_offset], R3);
ObjectSetText("R3 label", " R3", 8, "Arial", White);
}
else
{
ObjectMove("R3 label", 0, Time[pivots_offset], R3);
}
if(ObjectFind("R4 label") != 0)
{
ObjectCreate("R4 label", OBJ_TEXT, 0, Time[pivots_offset], R4);
ObjectSetText("R4 label", " R4", 8, "Arial", White);
}
else
{
ObjectMove("R4 label", 0, Time[pivots_offset], R4);
}
if(ObjectFind("P label") != 0)
{
ObjectCreate("P label", OBJ_TEXT, 0, Time[pivots_offset], P);
ObjectSetText("P label", "Pivot", 8, "Arial", White);
}
else
{
ObjectMove("P label", 0, Time[pivots_offset], P);
}
if(ObjectFind("S1 label") != 0)
{
ObjectCreate("S1 label", OBJ_TEXT, 0, Time[pivots_offset], S1);
ObjectSetText("S1 label", "S1", 8, "Arial", White);
}
else
{
ObjectMove("S1 label", 0, Time[pivots_offset], S1);
}
if(ObjectFind("S2 label") != 0)
{
ObjectCreate("S2 label", OBJ_TEXT, 0, Time[pivots_offset], S2);
ObjectSetText("S2 label", "S2", 8, "Arial", White);
}
else
{
ObjectMove("S2 label", 0, Time[pivots_offset], S2);
}
if(ObjectFind("S3 label") != 0)
{
ObjectCreate("S3 label", OBJ_TEXT, 0, Time[pivots_offset], S3);
ObjectSetText("S3 label", "S3", 8, "Arial", White);
}
else
{
ObjectMove("S3 label", 0, Time[pivots_offset], S3);
}
if(ObjectFind("S4 label") != 0)
{
ObjectCreate("S4 label", OBJ_TEXT, 0, Time[pivots_offset], S4);
ObjectSetText("S4 label", "S4", 8, "Arial", White);
}
else
{
ObjectMove("S4 label", 0, Time[pivots_offset], S4);
}
//--- Draw Pivot lines on chart
if(ObjectFind("S1 line") != 0)
{
ObjectCreate("S1 line", OBJ_HLINE, 0, Time[40], S1);
ObjectSet("S1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("S1 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("S1 line", 0, Time[40], S1);
}
if(ObjectFind("S2 line") != 0)
{
ObjectCreate("S2 line", OBJ_HLINE, 0, Time[40], S2);
ObjectSet("S2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("S2 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("S2 line", 0, Time[40], S2);
}
if(ObjectFind("S3 line") != 0)
{
ObjectCreate("S3 line", OBJ_HLINE, 0, Time[40], S3);
ObjectSet("S3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("S3 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("S3 line", 0, Time[40], S3);
}
if(ObjectFind("S4 line") != 0)
{
ObjectCreate("S4 line", OBJ_HLINE, 0, Time[40], S4);
ObjectSet("S4 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("S4 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("S4 line", 0, Time[40], S4);
}
if(ObjectFind("P line") != 0)
{
ObjectCreate("P line", OBJ_HLINE, 0, Time[40], P);
ObjectSet("P line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("P line", OBJPROP_COLOR, Magenta);
}
else
{
ObjectMove("P line", 0, Time[40], P);
}
if(ObjectFind("R1 line") != 0)
{
ObjectCreate("R1 line", OBJ_HLINE, 0, Time[40], R1);
ObjectSet("R1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("R1 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("R1 line", 0, Time[40], R1);
}
if(ObjectFind("R2 line") != 0)
{
ObjectCreate("R2 line", OBJ_HLINE, 0, Time[40], R2);
ObjectSet("R2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("R2 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("R2 line", 0, Time[40], R2);
}
if(ObjectFind("R3 line") != 0)
{
ObjectCreate("R3 line", OBJ_HLINE, 0, Time[40], R3);
ObjectSet("R3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("R3 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("R3 line", 0, Time[40], R3);
}
if(ObjectFind("R4 line") != 0)
{
ObjectCreate("R4 line", OBJ_HLINE, 0, Time[40], R4);
ObjectSet("R4 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("R4 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("R4 line", 0, Time[40], R4);
}
}
//---- End of Pivot Line Draw
//----- Camarilla Lines
if (camarilla==true)
{
if(ObjectFind("H5 label") != 0)
{
ObjectCreate("H5 label", OBJ_TEXT, 0, Time[camarilla_offset], H5);
ObjectSetText("H5 label", " H5", 8, "Arial", White);
}
else
{
ObjectMove("H5 label", 0, Time[camarilla_offset], H5);
}
if(ObjectFind("H4 label") != 0)
{
ObjectCreate("H4 label", OBJ_TEXT, 0, Time[camarilla_offset], H4);
ObjectSetText("H4 label", " H4", 8, "Arial", White);
}
else
{
ObjectMove("H4 label", 0, Time[camarilla_offset], H4);
}
if(ObjectFind("H3 label") != 0)
{
ObjectCreate("H3 label", OBJ_TEXT, 0, Time[camarilla_offset], H3);
ObjectSetText("H3 label", " H3", 8, "Arial", White);
}
else
{
ObjectMove("H3 label", 0, Time[camarilla_offset], H3);
}
if(ObjectFind("L3 label") != 0)
{
ObjectCreate("L3 label", OBJ_TEXT, 0, Time[camarilla_offset], L3);
ObjectSetText("L3 label", " L3", 8, "Arial", White);
}
else
{
ObjectMove("L3 label", 0, Time[camarilla_offset], L3);
}
if(ObjectFind("L4 label") != 0)
{
ObjectCreate("L4 label", OBJ_TEXT, 0, Time[camarilla_offset], L4);
ObjectSetText("L4 label", " L4", 8, "Arial", White);
}
else
{
ObjectMove("L4 label", 0, Time[camarilla_offset], L4);
}
if(ObjectFind("L5 label") != 0)
{
ObjectCreate("L5 label", OBJ_TEXT, 0, Time[camarilla_offset], L5);
ObjectSetText("L5 label", " L5", 8, "Arial", White);
}
else
{
ObjectMove("L5 label", 0, Time[camarilla_offset], L5);
}
//---- Draw Camarilla lines on Chart
if(ObjectFind("H4 line") != 0)
{
ObjectCreate("H4 line", OBJ_HLINE, 0, Time[40], H4);
ObjectSet("H4 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("H4 line", OBJPROP_COLOR, Yellow);
}
else
{
ObjectMove("H4 line", 0, Time[40], H4);
}
if(ObjectFind("H3 line") != 0)
{
ObjectCreate("H3 line", OBJ_HLINE, 0, Time[40], H3);
ObjectSet("H3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("H3 line", OBJPROP_COLOR, Yellow);
}
else
{
ObjectMove("H3 line", 0, Time[40], H3);
}
if(ObjectFind("L3 line") != 0)
{
ObjectCreate("L3 line", OBJ_HLINE, 0, Time[40], L3);
ObjectSet("L3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("L3 line", OBJPROP_COLOR, Yellow);
}
else
{
ObjectMove("L3 line", 0, Time[40], L3);
}
if(ObjectFind("L4 line") != 0)
{
ObjectCreate("L4 line", OBJ_HLINE, 0, Time[40], L4);
ObjectSet("L4 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("L4 line", OBJPROP_COLOR, Yellow);
}
else
{
ObjectMove("L4 line", 0, Time[40], L4);
}
}
//-------End of Draw Camarilla Lines
//------ Midpoints Pivots
if (midpivots==true)
{
if(ObjectFind("MR3_5 label") != 0)
{
ObjectCreate("MR3_5 label", OBJ_TEXT, 0, Time[midpivots_offset], MR3_5);
ObjectSetText("MR3_5 label", " MR3.5", 8, "Arial", White);
}
else
{
ObjectMove("MR3_5 label", 0, Time[midpivots_offset], MR3_5);
}
if(ObjectFind("MR2_5 label") != 0)
{
ObjectCreate("MR2_5 label", OBJ_TEXT, 0, Time[midpivots_offset], MR2_5);
ObjectSetText("MR2_5 label", " MR2.5", 8, "Arial", White);
}
else
{
ObjectMove("MR2_5 label", 0, Time[midpivots_offset], MR2_5);
}
if(ObjectFind("MR1_5 label") != 0)
{
ObjectCreate("MR1_5 label", OBJ_TEXT, 0, Time[midpivots_offset], MR1_5);
ObjectSetText("MR1_5 label", " MR1.5", 8, "Arial", White);
}
else
{
ObjectMove("MR1_5 label", 0, Time[midpivots_offset], MR1_5);
}
if(ObjectFind("MR0_5 label") != 0)
{
ObjectCreate("MR0_5 label", OBJ_TEXT, 0, Time[midpivots_offset], MR0_5);
ObjectSetText("MR0_5 label", " MR0.5", 8, "Arial", White);
}
else
{
ObjectMove("MR0_5 label", 0, Time[midpivots_offset], MR0_5);
}
if(ObjectFind("MS0_5 label") != 0)
{
ObjectCreate("MS0_5 label", OBJ_TEXT, 0, Time[midpivots_offset], MS0_5);
ObjectSetText("MS0_5 label", " MS0.5", 8, "Arial", White);
}
else
{
ObjectMove("MS0_5 label", 0, Time[midpivots_offset], MS0_5);
}
if(ObjectFind("MS1_5 label") != 0)
{
ObjectCreate("MS1_5 label", OBJ_TEXT, 0, Time[midpivots_offset], MS1_5);
ObjectSetText("MS1_5 label", " MS1.5", 8, "Arial", White);
}
else
{
ObjectMove("MS1_5 label", 0, Time[midpivots_offset], MS1_5);
}
if(ObjectFind("MS2_5 label") != 0)
{
ObjectCreate("MS2_5 label", OBJ_TEXT, 0, Time[20], MS2_5);
ObjectSetText("MS2_5 label", " MS2.5", 8, "Arial", White);
}
else
{
ObjectMove("MS2_5 label", 0, Time[midpivots_offset], MS2_5);
}
if(ObjectFind("MS3_5 label") != 0)
{
ObjectCreate("MS3_5 label", OBJ_TEXT, 0, Time[20], MS3_5);
ObjectSetText("MS3_5 label", " MS3.5", 8, "Arial", White);
}
else
{
ObjectMove("MS3_5 label", 0, Time[midpivots_offset], MS3_5);
}
//---- Draw Midpoint Pivots on Chart
if(ObjectFind("MR3_5 line") != 0)
{
ObjectCreate("MR3_5 line", OBJ_HLINE, 0, Time[40], MR3_5);
ObjectSet("MR3_5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("MR3_5 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("MR3_5 line", 0, Time[40], MR3_5);
}
if(ObjectFind("MR2_5 line") != 0)
{
ObjectCreate("MR2_5 line", OBJ_HLINE, 0, Time[40], MR2_5);
ObjectSet("MR2_5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("MR2_5 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("MR2_5 line", 0, Time[40], MR2_5);
}
if(ObjectFind("MR1_5 line") != 0)
{
ObjectCreate("MR1_5 line", OBJ_HLINE, 0, Time[40], MR1_5);
ObjectSet("MR1_5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("MR1_5 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("MR1_5 line", 0, Time[40], MR1_5);
}
if(ObjectFind("MR0_5 line") != 0)
{
ObjectCreate("MR0_5 line", OBJ_HLINE, 0, Time[40], MR0_5);
ObjectSet("MR0_5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("MR0_5 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("MR0_5 line", 0, Time[40], MR0_5);
}
if(ObjectFind("MS0_5 line") != 0)
{
ObjectCreate("MS0_5 line", OBJ_HLINE, 0, Time[40], MS0_5);
ObjectSet("MS0_5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("MS0_5 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("MS0_5 line", 0, Time[40], MS0_5);
}
if(ObjectFind("MS1_5 line") != 0)
{
ObjectCreate("MS1_5 line", OBJ_HLINE, 0, Time[40], MS1_5);
ObjectSet("MS1_5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("MS1_5 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("MS1_5 line", 0, Time[40], MS1_5);
}
if(ObjectFind("MS2_5 line") != 0)
{
ObjectCreate("MS2_5 line", OBJ_HLINE, 0, Time[40], MS2_5);
ObjectSet("MS2_5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("MS2_5 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("MS2_5 line", 0, Time[40], MS2_5);
}
if(ObjectFind("MS3_5 line") != 0)
{
ObjectCreate("MS3_5 line", OBJ_HLINE, 0, Time[40], MS3_5);
ObjectSet("MS3_5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("MS3_5 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("MS3_5 line", 0, Time[40], MS3_5);
}
}
//----End of Midpoint Pivots Draw
//---- End Of Program
return(0);
}
//+------------------------------------------------------------------+
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
---