//+------------------------------------------------------------------+
//| CamarillaOnly.com |
//| Pivots.mq4 |
//+------------------------------------------------------------------+
/*
Background:
I used to use the Standard Pivot Points calculations for a long
time. But I was never satisfied with them because the pivot
lines were too far apart to be useful to me.
Somehow I found a different set of Calculations for Pivot
Points. They are called Camarilla Level Pivot Points.
You will find the definitions for these Pivot Points Lines at:
http://www.mypivots.com/dictionary/definition/42/camarilla-pivot-points
There is only 1 calculation that I think is wrong. That is the
calculation of PP (Pivot Point). The calculation is the one used
in calculating the Standard Pivot Point.
Instead I will use: PP = (R1 + S1) / 2 because it places the pivot
in the center of the other pivot points.
*/
#property copyright "© 2014. Bill halliday"
#property link "http://www.oneoleguy.com/metatrader/indicators"
#property indicator_chart_window
#property indicator_buffers 9
// Establish the Colors for the Pivot lines
// Color1 is for the Pivot Point Line
#property indicator_color1 Yellow
// Colors 1 through 4 are for the Resistance Lines
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 Red
#property indicator_color5 Red
// Colors 5 through 9 are for the Support Lines
#property indicator_color6 Aqua
#property indicator_color7 Aqua
#property indicator_color8 Aqua
#property indicator_color9 Aqua
// Set Buffers
double Resistance4[],
Resistance3[],
Resistance2[],
Resistance1[],
PivotPoint[],
Support1[],
Support2[],
Support3[],
Support4[];
double range;
/*
string Res4,
Res3,
Res2,
Res1,
Pivot,
Sup1,
Sup2,
Sup3,
Sup4;
*/
int WhichWindow=0,
WhatTime=0,
WhatPrice=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
// Set up the Pivot Lines
// Resistance Lines
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(1,Resistance4);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(2,Resistance3);
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(3,Resistance2);
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(4,Resistance1);
// Camarilla Pivot Point Line
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
SetIndexBuffer(0,PivotPoint);
// Support Lines
SetIndexStyle(5,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(5,Support1);
SetIndexStyle(6,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(6,Support2);
SetIndexStyle(7,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(7,Support3);
SetIndexStyle(8,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(8,Support4);
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
ObjectsRedraw();
return(0);
}
//+------------------------------------------------------------------+
//| Camarilla Level Indicator Iteration Function |
//+------------------------------------------------------------------+
int start()
{
// Declare the variables to be used in getting the valuse for the lines
int change_day_hour=0,
counted_bars=IndicatorCounted(),
number_of_bars_to_use = Bars - counted_bars,
cnt=720;
double yesterday_high,
yesterday_low,
yesterday_close;
// Find out if there are enough Bars to perform a calculation
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
// Bars in an internal value for the Number of bars in the current chart.
//----
for(int i=number_of_bars_to_use; i>=0; i--)
{
if (
// Check to see if this record is the 1st of the day
// then set the valuse for yesterday.
TimeHour(Time[i]) == change_day_hour &&
TimeMinute(Time[i]) == 0
)
{
// Calculate yesterday's High, Low and Close
yesterday_close= Close[i + 1];
yesterday_high = iHigh(Symbol(),PERIOD_D1,1);
yesterday_low = iLow(Symbol(),PERIOD_D1,1);
range = yesterday_high - yesterday_low;
} // if
//Comment(" ");
/*Comment("Current bar for ", Symbol(), "Open : ", iOpen(Symbol(),PERIOD_D1,1),", High : ",
iHigh(Symbol(),PERIOD_D1,1),", Low : ", iLow(Symbol(),PERIOD_D1,1),", Close : ",
iClose(Symbol(),PERIOD_D1,1),", ", iVolume(Symbol(),PERIOD_D1,1));*/
//----- Standard Pivot Calculation =====> NOT USED <=====
//----- P[] = (yesterday_high + yesterday_low + yesterday_close)/3;
Resistance4[i] = yesterday_close + (range * 1.1 / 2);
Resistance3[i] = yesterday_close + (range * 1.1 / 4);
Resistance2[i] = yesterday_close + (range * 1.1 / 6);
Resistance1[i] = yesterday_close + (range * 1.1 / 12);
Support1[i] = yesterday_close - (range * 1.1 / 12);
Support2[i] = yesterday_close - (range * 1.1 / 6);
Support3[i] = yesterday_close - (range * 1.1 / 4);
Support4[i] = yesterday_close - (range * 1.1 / 2);
//----- My Carmarilla Pivot Calculation =====> USED <=====
PivotPoint[i] = (Resistance1[i] + Support1[i]) / 2;
} // if
return(0);
} // start()
//+------------------------------------------------------------------+
Comments