0
Views
0
Downloads
0
Favorites
Multi Pivots
//+------------------------------------------------------------------+
//| Multi Pivots.mq4 |
//| Converted to MT4 / MQ4 by Flash52 |
//| MetaTrader_Experts_and_Indicators@yahoogroups.com |
//+------------------------------------------------------------------+
#property copyright "Converted to MT4 / MQ4 by Flash52"
#property link "MetaTrader_Experts_and_Indicators@yahoogroups.com"
//----
// This indicator allows the user to select which set(s) of pivots they wish to display.
// If your favorite pivot is not included, simply add it in or modify one of the existing pivots
//----
#property indicator_chart_window
extern int Show_Woodies_Pivots = 1; // 1 = Yes, 0 = No
extern int Show_Camarilla_Pivots = 1; // 1 = Yes, 0 = No
extern int Show_Demark_Pivots = 1; // 1 = Yes, 0 = No
extern int Show_Standard_Pivots = 0; // 1 = Yes, 0 = No
datetime prevtime=0;
datetime prev_day=0;
datetime cur_day=0;
double rates_d1[2][6];
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;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Multi Daily Pivots iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//---- initialize local variables
double r2=0;
double r1=0;
double p=0;
double s1=0;
double s2=0;
double sr3=0;
double sr2=0;
double sr1=0;
double sp=0;
double ss1=0;
double ss2=0;
double ss3=0;
double ch1=0;
double ch2=0;
double ch3=0;
double ch4=0;
double cl1=0;
double cl2=0;
double cl3=0;
double cl4=0;
double D1=0.091667;
double D2=0.183333;
double D3=0.2750;
double D4=0.55;
double dr=0;
double ds=0;
double x=0;
string ch3_text="";
//---- exit if period is greater than daily charts
if(Period() > 1440)
{
Print("Error - Chart period is greater than 1 day.");
return(-1); // then exit
}
//---- If the day has changed then get new daily rates & recalculate pivots
//---- Check for day change once each new bar
//---- Allow labels & lines to be redrawn each bar
if(prevtime == Time[0])return(0); // exit unless new bar
prevtime = Time[0]; // reset to current bar time
cur_day = Day();
if(prev_day != cur_day)
{
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];
prev_day = cur_day;
}
//---- Calculate Standard Pivots
if(Show_Standard_Pivots == 1)
{
sp = (yesterday_high+yesterday_low+yesterday_close+today_open)/4;
sr1 = (2*sp)-yesterday_low;
ss1 = (2*sp)-yesterday_high;
sr2 = sp+(yesterday_high-yesterday_low);
ss2 = sp-(yesterday_high+yesterday_low);
sr3 = (2*sp)-yesterday_low-yesterday_low+yesterday_high;
ss3 = (2*sp)-yesterday_high-yesterday_high+yesterday_low;
//---- Set standard pivot line labels on chart window
if(ObjectFind("SR1 label") != 0)
{
ObjectCreate("SR1 label", OBJ_TEXT, 0, Time[20], sr1);
ObjectSetText("SR1 label", "R1 "+DoubleToStr(sr1,4), 8, "Arial", White);
}
else
{
ObjectSetText("SR1 label", "R1 "+DoubleToStr(sr1,4), 8, "Arial", White);
ObjectMove("SR1 label", 0, Time[20], sr1);
}
if(ObjectFind("SR2 label") != 0)
{
ObjectCreate("SR2 label", OBJ_TEXT, 0, Time[20], sr2);
ObjectSetText("SR2 label", "R2 "+DoubleToStr(sr2,4), 8, "Arial", White);
}
else
{
ObjectSetText("SR2 label", "R2 "+DoubleToStr(sr2,4), 8, "Arial", White);
ObjectMove("SR2 label", 0, Time[20], sr2);
}
if(ObjectFind("SR3 label") != 0)
{
ObjectCreate("SR3 label", OBJ_TEXT, 0, Time[20], sr3);
ObjectSetText("SR3 label", "R3 "+DoubleToStr(sr3,4), 8, "Arial", White);
}
else
{
ObjectSetText("SR3 label", "R3 "+DoubleToStr(sr3,4), 8, "Arial", White);
ObjectMove("SR3 label", 0, Time[20], sr3);
}
if(ObjectFind("SP label") != 0)
{
ObjectCreate("SP label", OBJ_TEXT, 0, Time[20], sp);
ObjectSetText("SP label", "Pivot "+DoubleToStr(sp,4), 8, "Arial", White);
}
else
{
ObjectSetText("SP label", "Pivot "+DoubleToStr(sp,4), 8, "Arial", White);
ObjectMove("SP label", 0, Time[20], sp);
}
if(ObjectFind("SS1 label") != 0)
{
ObjectCreate("SS1 label", OBJ_TEXT, 0, Time[20], ss1);
ObjectSetText("SS1 label", "S1 "+DoubleToStr(ss1,4), 8, "Arial", White);
}
else
{
ObjectSetText("SS1 label", "S1 "+DoubleToStr(ss1,4), 8, "Arial", White);
ObjectMove("SS1 label", 0, Time[20], ss1);
}
if(ObjectFind("SS2 label") != 0)
{
ObjectCreate("SS2 label", OBJ_TEXT, 0, Time[20], ss2);
ObjectSetText("S2 label", "S2 "+DoubleToStr(ss2,4), 8, "Arial", White);
}
else
{
ObjectSetText("SS2 label", "S2 "+DoubleToStr(ss2,4), 8, "Arial", White);
ObjectMove("SS2 label", 0, Time[20], ss2);
}
if(ObjectFind("SS3 label") != 0)
{
ObjectCreate("SS3 label", OBJ_TEXT, 0, Time[20], ss3);
ObjectSetText("SS3 label", "S3 "+DoubleToStr(ss3,4), 8, "Arial", White);
}
else
{
ObjectSetText("SS3 label", "S3 "+DoubleToStr(ss3,4), 8, "Arial", White);
ObjectMove("SS3 label", 0, Time[20], ss3);
}
//---- Set standard pivot lines on chart window
if(ObjectFind("SS1 line") != 0)
{
ObjectCreate("SS1 line", OBJ_HLINE, 0, Time[40], ss1);
ObjectSet("SS1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SS1 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("SS1 line", 0, Time[40], ss1);
}
if(ObjectFind("SS2 line") != 0)
{
ObjectCreate("SS2 line", OBJ_HLINE, 0, Time[40], ss2);
ObjectSet("SS2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SS2 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("SS2 line", 0, Time[40], ss2);
}
if(ObjectFind("SS3 line") != 0)
{
ObjectCreate("SS3 line", OBJ_HLINE, 0, Time[40], ss3);
ObjectSet("SS3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SS3 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("SS3 line", 0, Time[40], ss3);
}
if(ObjectFind("SP line") != 0)
{
ObjectCreate("SP line", OBJ_HLINE, 0, Time[40], sp);
ObjectSet("SP line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SP line", OBJPROP_COLOR, Magenta);
}
else
{
ObjectMove("SP line", 0, Time[40], sp);
}
if(ObjectFind("SR1 line") != 0)
{
ObjectCreate("SR1 line", OBJ_HLINE, 0, Time[40], sr1);
ObjectSet("SR1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SR1 line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("SR1 line", 0, Time[40], sr1);
}
if(ObjectFind("SR2 line") != 0)
{
ObjectCreate("SR2 line", OBJ_HLINE, 0, Time[40], sr2);
ObjectSet("SR2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SR2 line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("SR2 line", 0, Time[40], sr2);
}
if(ObjectFind("SR3 line") != 0)
{
ObjectCreate("SR3 line", OBJ_HLINE, 0, Time[40], sr3);
ObjectSet("SR3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SR3 line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("SR3 line", 0, Time[40], sr3);
}
}
//---- End Of standard pivots
//----------------------------------------------------------------------------------------------
//---- Calculate Woody Pivots
if(Show_Woodies_Pivots == 1)
{
p = (yesterday_high + yesterday_low + today_open + today_open) / 4;// Woodies Pivot
r1 = (2*p)-yesterday_low;
s1 = (2*p)-yesterday_high;
r2 = p+(yesterday_high - yesterday_low);
s2 = p-(yesterday_high - yesterday_low);
//---- Set Woody pivot line labels on chart window
if(ObjectFind("R1 label") != 0)
{
ObjectCreate("R1 label", OBJ_TEXT, 0, Time[20], r1);
ObjectSetText("R1 label", "Woodies R1 "+DoubleToStr(r1,4), 8, "Arial", White);
}
else
{
ObjectSetText("R1 label", "Woodies R1 "+DoubleToStr(r1,4), 8, "Arial", White);
ObjectMove("R1 label", 0, Time[20], r1);
}
if(ObjectFind("R2 label") != 0)
{
ObjectCreate("R2 label", OBJ_TEXT, 0, Time[20], r2);
ObjectSetText("R2 label", "Woodies R2 "+DoubleToStr(r2,4), 8, "Arial", White);
}
else
{
ObjectSetText("R2 label", "Woodies R2 "+DoubleToStr(r2,4), 8, "Arial", White);
ObjectMove("R2 label", 0, Time[20], r2);
}
if(ObjectFind("P label") != 0)
{
ObjectCreate("P label", OBJ_TEXT, 0, Time[20], p);
ObjectSetText("P label", "Woodies Pivot "+DoubleToStr(p,4), 8, "Arial", White);
}
else
{
ObjectSetText("P label", "Woodies Pivot "+DoubleToStr(p,4), 8, "Arial", White);
ObjectMove("P label", 0, Time[20], p);
}
if(ObjectFind("S1 label") != 0)
{
ObjectCreate("S1 label", OBJ_TEXT, 0, Time[20], s1);
ObjectSetText("S1 label", "Woodies S1 "+DoubleToStr(s1,4), 8, "Arial", White);
}
else
{
ObjectSetText("S1 label", "Woodies S1 "+DoubleToStr(s1,4), 8, "Arial", White);
ObjectMove("S1 label", 0, Time[20], s1);
}
if(ObjectFind("S2 label") != 0)
{
ObjectCreate("S2 label", OBJ_TEXT, 0, Time[20], s2);
ObjectSetText("S2 label", "Woodies S2 "+DoubleToStr(s2,4), 8, "Arial", White);
}
else
{
ObjectSetText("S2 label", "Woodies S2 "+DoubleToStr(s2,4), 8, "Arial", White);
ObjectMove("S2 label", 0, Time[20], s2);
}
//---- Set Woody pivot lines on chart window
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, LimeGreen);
}
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, LimeGreen);
}
else
{
ObjectMove("S2 line", 0, Time[40], s2);
}
if(ObjectFind("P line") != 0)
{
ObjectCreate("P line", OBJ_HLINE, 0, Time[40], p);
ObjectSet("P line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
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, OrangeRed);
}
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, OrangeRed);
}
else
{
ObjectMove("R2 line", 0, Time[40], r2);
}
}
//---- End Of Woodies Pivots
//---------------------------------------------------------------------------------------------
//---- Calculate & Display Camarilla Equation Pivots
if(Show_Camarilla_Pivots == 1)
{
//---- To display all 8 Camarilla pivots remove comment symbols and
// add the appropriate object functions below
// ch1 = ((yesterday_high - yesterday_low) * D1) + yesterday_close;
// ch2 = ((yesterday_high - yesterday_low) * D2) + yesterday_close;
ch3 = ((yesterday_high - yesterday_low)* D3) + yesterday_close;
ch4 = ((yesterday_high - yesterday_low)* D4) + yesterday_close;
// cl1 = yesterday_close - ((yesterday_high - yesterday_low)*(D1));
// cl2 = yesterday_close - ((yesterday_high - yesterday_low)*(D2));
cl3 = yesterday_close - ((yesterday_high - yesterday_low)*(D3));
cl4 = yesterday_close - ((yesterday_high - yesterday_low)*(D4));
//---- Set Camarilla pivots line labels on chart window
if(ObjectFind("CH3") != 0)
{
ObjectCreate("CH3", OBJ_TEXT, 0, Time[35], ch3);
ObjectSetText("CH3","Camarilla H3 "+DoubleToStr(ch3,4) , 8, "Arial", White);
}
else
{
ObjectSetText("CH3","Camarilla H3 "+DoubleToStr(ch3,4) , 8, "Arial", White);
ObjectMove("CH3", 0, Time[35], ch3);
}
if(ObjectFind("CH4") != 0)
{
ObjectCreate("CH4", OBJ_TEXT, 0, Time[35], ch4);
ObjectSetText("CH4", "Camarilla H4 "+DoubleToStr(ch4,4), 8, "Arial", White);
}
else
{
ObjectSetText("CH4", "Camarilla H4 "+DoubleToStr(ch4,4), 8, "Arial", White);
ObjectMove("CH4", 0, Time[35], ch4);
}
if(ObjectFind("CL3") != 0)
{
ObjectCreate("CL3", OBJ_TEXT, 0, Time[35], cl3);
ObjectSetText("CL3", "Camarilla L3 "+DoubleToStr(cl3,4), 8, "Arial", White);
}
else
{
ObjectSetText("CL3", "Camarilla L3 "+DoubleToStr(cl3,4), 8, "Arial", White);
ObjectMove("CL3", 0, Time[35 ], cl3);
}
if(ObjectFind("CL4") != 0)
{
ObjectCreate("CL4", OBJ_TEXT, 0, Time[ 35], cl4);
ObjectSetText("CL4", "Camarilla L4 "+DoubleToStr(cl4,4), 8, "Arial", White);
}
else
{
ObjectSetText("CL4", "Camarilla L4 "+DoubleToStr(cl4,4), 8, "Arial", White);
ObjectMove("CL4", 0, Time[35], cl4);
}
//---- Set Camarilla pivots lines on chart window
if(ObjectFind("CH3line") != 0)
{
ObjectCreate("CH3line", OBJ_HLINE, 0, Time[40], ch3);
ObjectSet("CH3line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("CH3line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("CH3line", 0, Time[40], ch3);
}
if(ObjectFind("CH4line") != 0)
{
ObjectCreate("CH4line", OBJ_HLINE, 0, Time[40], ch4);
ObjectSet("CH4line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("CH4line", OBJPROP_COLOR, DodgerBlue);
}
else
{
ObjectMove("CH4line", 0, Time[40], ch4);
}
if(ObjectFind("CL3line") != 0)
{
ObjectCreate("CL3line", OBJ_HLINE, 0, Time[40], cl3);
ObjectSet("CL3line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("CL3line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("CL3line", 0, Time[40], cl3);
}
if(ObjectFind("CL4line") != 0)
{
ObjectCreate("CL4line", OBJ_HLINE, 0, Time[40], cl4);
ObjectSet("CL4line", OBJPROP_STYLE, STYLE_DOT);
ObjectSet("CL4line", OBJPROP_COLOR, DodgerBlue);
}
else
{
ObjectMove("CL4line", 0, Time[40], cl4);
}
}
//---- End Of Camarilla Pivots
//----------------------------------------------------------------------------------------------
//---- Calculate DeMark Pivots (Projected Daily High & Low)
if(Show_Demark_Pivots == 1)
{
if(yesterday_close < yesterday_open)
{
x = (yesterday_high + (2* yesterday_low) + yesterday_close);
}
if(yesterday_close > yesterday_open)
{
x = ((yesterday_high*2) + yesterday_low + yesterday_close);
}
if(yesterday_close == yesterday_open)
{
x = (yesterday_high + yesterday_low + (2* yesterday_close));
}
dr = (x/2 - yesterday_low); //projected high
ds = (x/2 - yesterday_high); //projected low
//---- Set DeMark pivots line labels on chart window
if(ObjectFind("DS Label") != 0)
{
ObjectCreate("DS Label", OBJ_TEXT, 0, Time[55], ds);
ObjectSetText("DS Label", "DeMark Projected Low "+DoubleToStr(ds,4), 8, "Arial", White);
}
else
{
ObjectSetText("DS Label", "DeMark Projected Low "+DoubleToStr(ds,4), 8, "Arial", White);
ObjectMove("DS Label", 0, Time[55], ds);
}
if(ObjectFind("DR Label") != 0)
{
ObjectCreate("DR Label", OBJ_TEXT, 0, Time[55], dr);
ObjectSetText("DR Label", "DeMark Projected High "+DoubleToStr(dr,4), 8, "Arial", White);
}
else
{
ObjectSetText("DR Label", "DeMark Projected High "+DoubleToStr(dr,4), 8, "Arial", White);
ObjectMove("DR Label", 0, Time[55], dr);
}
//---- Set DeMark pivots lines on chart window
if(ObjectFind("DS Line") != 0)
{
ObjectCreate("DS Line", OBJ_HLINE, 0, Time[50], ds);
ObjectSet("DS Line", OBJPROP_STYLE, STYLE_DASHDOT);
ObjectSet("DS Line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("DS Line", 0, Time[50], ds);
}
if(ObjectFind("DR Line") != 0)
{
ObjectCreate("DR Line", OBJ_HLINE, 0, Time[50], dr);
ObjectSet("DR Line", OBJPROP_STYLE, STYLE_DASHDOT);
ObjectSet("DR Line", OBJPROP_COLOR, Lime);
}
else
{
ObjectMove("DR Line", 0, Time[50], dr);
}
}
//---- End Of Demark Pivots
//----------------------------------------------------------------------------------------------
//---- Done
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
---