DaylyPivot
Download scriptThis script is designed to provide traders with a clear visual roadmap of potential price turning points based on daily market behavior. It automatically calculates and plots several key levels on your chart—specifically Pivot Points, Support levels, and Resistance levels—helping you identify where the market might encounter "friction" or where a trend might reverse.
Core Logic and Functionality
The script operates by analyzing the price action of the previous trading day to project significant milestones for the current day. Here is a breakdown of how it processes this information:
1. Data Requirements and Environment To ensure accuracy, the script is specifically designed for intraday charts (specifically those smaller than the 1-hour timeframe). It monitors the price movements to identify when a new trading day begins.
2. Identifying Key Price Points At the start of each new day, the script looks back at the previous day's performance—specifically its highest high, its lowest low, and its closing price. It uses these three variables to calculate a series of mathematical levels:
- The Pivot Point: This serves as the central "balance" point of the day. If the price is trading above this point, the sentiment is generally considered bullish; below it, the sentiment is considered bearish.
- Support Levels (S1, S2, S3): These represent the "floors." They are calculated areas where buying interest is expected to increase, potentially preventing the price from falling further. The script provides three levels of depth for these boundaries.
- Resistance Levels (R1, R2, R3): These represent the "ceilings." They are calculated areas where selling pressure is expected to intensify, potentially preventing the price from rising further. Like the support levels, these are provided in three tiers of intensity.
3. Dynamic Visual Updates The script does not just place a single static line; it continuously updates its calculations as new price data comes in. As the market moves, the script maintains these levels on your screen, providing real-time visual cues.
4. Visual Organization To make the chart easy to read at a glance, the script distinguishes between different types of levels using specific colors and labels:
- Pivot Points are highlighted in Orange to serve as the primary focal point.
- Support Levels are clearly marked with unique identifiers.
- Resistance Levels are clearly marked with unique identifiers.
By automating these calculations, the script allows you to see exactly where "battlegrounds" between buyers and sellers are likely to occur based on the previous day's history, allowing for more informed decision-making without requiring manual math.
//+------------------------------------------------------------------+
//| Dayly Pivot |
//| Copyright © 2006, Profitrader |
//| Coded/Verified by Profitrader |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Profitrader."
#property link "profitrader@inbox.ru"
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Orange
#property indicator_color2 DarkBlue
#property indicator_color3 Maroon
#property indicator_color4 DarkBlue
#property indicator_color5 Maroon
#property indicator_color6 Green
#property indicator_color7 Green
//---- buffers
double PBuffer[];
double S1Buffer[];
double R1Buffer[];
double S2Buffer[];
double R2Buffer[];
double S3Buffer[];
double R3Buffer[];
double P,S1,R1,S2,R2,S3,R3,LastHigh,LastLow;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,PBuffer);
SetIndexBuffer(1,S1Buffer);
SetIndexBuffer(2,R1Buffer);
SetIndexBuffer(3,S2Buffer);
SetIndexBuffer(4,R2Buffer);
SetIndexBuffer(5,S3Buffer);
SetIndexBuffer(6,R3Buffer);
SetIndexStyle(0,DRAW_LINE,0,2);
SetIndexStyle(1,DRAW_LINE,0,2);
SetIndexStyle(2,DRAW_LINE,0,2);
SetIndexStyle(3,DRAW_LINE,0,2);
SetIndexStyle(4,DRAW_LINE,0,2);
SetIndexStyle(5,DRAW_LINE,0,2);
SetIndexStyle(6,DRAW_LINE,0,2);
SetIndexLabel(0,"Pivot Point");
SetIndexLabel(1,"Support 1");
SetIndexLabel(2,"Resistant 1");
SetIndexLabel(3,"Support 2");
SetIndexLabel(4,"Resistant 2");
SetIndexLabel(5,"Support 3");
SetIndexLabel(6,"Resistant 3");
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("Pivot");
ObjectDelete("Sup1");
ObjectDelete("Res1");
ObjectDelete("Sup2");
ObjectDelete("Res2");
ObjectDelete("Sup3");
ObjectDelete("Res3");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
if(Period()>PERIOD_H1) return(-1);
if(counted_bars==0)
{
ObjectCreate("Pivot",OBJ_TEXT,0,0,0);
ObjectSetText("Pivot"," Pivot Point",9,"Arial",Orange);
ObjectCreate("Sup1",OBJ_TEXT,0,0,0);
ObjectSetText("Sup1"," Sup 1",9,"Arial",Red);
ObjectCreate("Res1",OBJ_TEXT,0,0,0);
ObjectSetText("Res1"," Res 1",9,"Arial",Red);
ObjectCreate("Sup2",OBJ_TEXT,0,0,0);
ObjectSetText("Sup2"," Sup 2",9,"Arial",Red);
ObjectCreate("Res2",OBJ_TEXT,0,0,0);
ObjectSetText("Res2"," Res 2",9,"Arial",Red);
ObjectCreate("Sup3",OBJ_TEXT,0,0,0);
ObjectSetText("Sup3"," Sup 3",9,"Arial",Red);
ObjectCreate("Res3",OBJ_TEXT,0,0,0);
ObjectSetText("Res3"," Res 3",9,"Arial",Red);
}
for(i=limit-1; i>=0; i--)
{
if(TimeDay(Time[i])!=TimeDay(Time[i+1]))
{
P=(LastHigh+LastLow+Close[i+1])/3;
R1=(2*P)-LastLow;
S1=(2*P)-LastHigh;
R2=P+(LastHigh-LastLow);
S2=P-(LastHigh-LastLow);
R3=(2*P)+(LastHigh-(2*LastLow));
S3=(2*P)-((2*LastHigh)-LastLow);
ObjectMove("Pivot",0,Time[i],P);
ObjectMove("Sup1",0,Time[i],S1);
ObjectMove("Res1",0,Time[i],R1);
ObjectMove("Sup2",0,Time[i],S2);
ObjectMove("Res2",0,Time[i],R2);
ObjectMove("Sup3",0,Time[i],S3);
ObjectMove("Res3",0,Time[i],R3);
LastLow=Low[i];
LastHigh=High[i];
}
LastLow=MathMin(LastLow,Low[i]);
LastHigh=MathMax(LastHigh,High[i]);
PBuffer[i]=P;
S1Buffer[i]=S1;
R1Buffer[i]=R1;
S2Buffer[i]=S2;
R2Buffer[i]=R2;
S3Buffer[i]=S3;
R3Buffer[i]=R3;
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments