#
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Home
Forex Forum
+ Add Script
Metastock
Expert Advisors
Explorations
Indicators
Trading Systems
Metatrader
MQL Experts
MQL Indicators
MQ4 Experts
MQ4 Indicators
MQ4 Scripts
Tradestation
Functions
Indicators
PaintBars
ShowMe
Trading Systems
Amibroker
Commentaries
Explorations
Functions
Indicators
Trading Systems
Contact us
Newsletter
Group: Metatrader MQ4 Indicators
Title: Multi Pivots
Description:
Multi Pivots - Selectable Pivots Indicator
//+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+
Author/Source:
Flash52
Forex Directory
|
Free Forex Strategies
|
Forex Trading Systems
|
Privacy
|
Disclaimer
|
Contact