//+------------------------------------------------------------------+
//| Pivot_Range_Weekly_Mid.mq4 |
//| Copyright © 2009, kris.pivo[at]gmail.com |
//+------------------------------------------------------------------+
#property copyright "© Kris, 2009" //|
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 C'000,100,000'
#property indicator_color2 C'000,100,000'
#property indicator_color3 C'080,080,080'
#property indicator_color4 C'200,200,200'
#property indicator_color5 C'080,080,080'
#property indicator_color6 C'100,000,000'
#property indicator_color7 C'100,000,000'
//---- input parameters
int fontsize=8;
//---- buffers
double BufferR2R1[]; // M4 - Mid R1-R2
double BufferR1PP[]; // M3 - Mid PP-R1
double BufferPRH[]; // Pivot Range High
//double BufferPP[]; // Pivot Point
double BufferPRL[]; // Pivot Range Low
double BufferPPS1[]; // M2 - Mid PP-S1
double BufferS1S2[]; // M1 - Mid S1-S2
double WH,WL,WC,PP,PD,PRH,PRL;
double S1,R1,S2,R2,S3,R3;
double R2R1, R1PP, PPS1, S1S2;
double last_week_high, last_week_low, last_week_close, this_week_open;
//+------------------------------------------------------------------+
int deinit() {
ObjectDelete("PivR2R1");
ObjectDelete("PivR1PP");
ObjectDelete("PivPRH");
// ObjectDelete("PivPP");
ObjectDelete("PivPRL");
ObjectDelete("PivPPS1");
ObjectDelete("PivS1S2");
ObjectDelete("LabPivR2R1");
ObjectDelete("LabPivR1PP");
ObjectDelete("LabPivPRH");
// ObjectDelete("LabPivPP");
ObjectDelete("LabPivPRL");
ObjectDelete("LabPivPPS1");
ObjectDelete("LabPivS1S2");
Comment("");
return(0); }
//+------------------------------------------------------------------+
int init()
{
string short_name;
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,160);
SetIndexBuffer(0,BufferR2R1);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,160);
SetIndexBuffer(1,BufferR1PP);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2,160);
SetIndexBuffer(2,BufferPRH);
// SetIndexStyle(3,DRAW_ARROW);
// SetIndexArrow(3,167);
// SetIndexBuffer(3,BufferPP);
SetIndexStyle(4,DRAW_ARROW);
SetIndexArrow(4,160);
SetIndexBuffer(4,BufferPRL);
SetIndexStyle(5,DRAW_ARROW);
SetIndexArrow(5,160);
SetIndexBuffer(5,BufferPPS1);
SetIndexStyle(6,DRAW_ARROW);
SetIndexArrow(6,160);
SetIndexBuffer(6,BufferS1S2);
short_name="Floor Pivot Mid Weekly";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexDrawBegin(0,1);
return(0); }
int start()
{
int counted_bars=IndicatorCounted();
int limit, i;
if (counted_bars==0)
{
ObjectCreate("PivR2R1", OBJ_TEXT, 0,0,0);
ObjectSetText("PivR2R1", " Weekly M4",fontsize,"Arial",indicator_color1);
ObjectCreate("PivR1PP", OBJ_TEXT, 0,0,0);
ObjectSetText("PivR1PP", " Weekly M3",fontsize,"Arial",indicator_color2);
ObjectCreate("PivPRH", OBJ_TEXT, 0,0,0);
ObjectSetText("PivPRH", " Weekly PR High",fontsize,"Arial",indicator_color3);
// ObjectCreate("PivPP", OBJ_TEXT, 0,0,0);
// ObjectSetText("PivPP", " Weekly Pivot Point",fontsize,"Arial",indicator_color4);
ObjectCreate("PivPRL", OBJ_TEXT, 0,0,0);
ObjectSetText("PivPRL", " Weekly PR Low",fontsize,"Arial",indicator_color5);
ObjectCreate("PivPPS1", OBJ_TEXT, 0,0,0);
ObjectSetText("PivPPS1", " Weekly M2",fontsize,"Arial",indicator_color6);
ObjectCreate("PivS1S2", OBJ_TEXT, 0,0,0);
ObjectSetText("PivS1S2", " Weekly M1",fontsize,"Arial",indicator_color7);
}
if(counted_bars<0) return(-1);
//----
limit=(Bars-counted_bars)-1;
//----
for(i=limit; i>=0;i--)
{
// Monday
if(1==TimeDayOfWeek(Time[i]) && 1!=TimeDayOfWeek(Time[i+1]) ) // 0=Sunday, 1=Monday, ...
{
last_week_close=Close[i+1];
this_week_open=Open[i];
WH = last_week_high;
WL = last_week_low;
WC = last_week_close;
PP = (WH + WL + WC)/3;
PD = MathAbs(((WH + WL)/2) - PP);
PRH = PP + PD;
PRL = PP - PD;
R1 = (2*PP)- WL;
S1 = (2*PP)- WH;
R2 = PP+(R1-S1);
S2 = PP-(R1-S1);
R2R1 = (R2+R1)/2;
R1PP = (R1+PP)/2;
PPS1 = (PP+S1)/2;
S1S2 = (S1+S2)/2;
last_week_low = Low[i];
last_week_high = High[i];
//----
ObjectMove("PivR2R1", 0, Time[i],R2R1);
ObjectMove("PivR1PP", 0, Time[i],R1PP);
ObjectMove("PivPRH", 0, Time[i],PRH);
// ObjectMove("PivPP", 0, Time[i],PP);
ObjectMove("PivPRL", 0, Time[i],PRL);
ObjectMove("PivPPS1", 0, Time[i],PPS1);
ObjectMove("PivS1S2", 0, Time[i],S1S2);
}
last_week_high=MathMax(last_week_high, High[i]);
last_week_low=MathMin(last_week_low, Low[i]);
BufferR2R1[i] = R2R1;
BufferR1PP[i] = R1PP;
BufferPRH[i] = PRH;
// BufferPP[i] = PP;
BufferPRL[i] = PRL;
BufferPPS1[i] = PPS1;
BufferS1S2[i] = S1S2;
DoLabel( "LabPivR2R1", BufferR2R1[0], indicator_color1 );
DoLabel( "LabPivR1PP", BufferR1PP[0], indicator_color2 );
DoLabel( "LabPivPRH", BufferPRH[0], indicator_color3 );
// DoLabel( "LabPivPP", BufferPP[0], indicator_color4 );
DoLabel( "LabPivPRL", BufferPRL[0], indicator_color5 );
DoLabel( "LabPivPPS1", BufferPPS1[0], indicator_color6 );
DoLabel( "LabPivS1S2", BufferS1S2[0], indicator_color7 );
}
return(0); }
void DoLabel( string dName, double dValue, color dColor )
{
if (ObjectFind(dName) != 0)
{
ObjectCreate(dName,OBJ_ARROW,0,Time[0],dValue);
ObjectSet(dName,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
ObjectSet(dName,OBJPROP_COLOR,dColor);
}
else
{
ObjectMove(dName,0,Time[0],dValue);
}
}
//+-----------------------------------------------------------------------------------------+
//| THE END |
//+-----------------------------------------------------------------------------------------+
Comments