Tommytrend Pivot

Download script
Author: Tommy Trend 2008
Tommytrend Pivot

This tool is designed to automatically identify and plot key price levels on your trading chart, specifically focusing on "Pivot Points." These are standard technical analysis markers used by traders to determine the floor (support) and ceiling (resistance) of price action within a specific timeframe.

How it Works

The script monitors the historical price movement and identifies the highest and lowest points reached during a preceding period. Once a new trading day begins, the logic calculates a series of mathematical levels based on that previous data.

Instead of you having to calculate these numbers manually, the script performs the following:

  • The Pivot Point (P): It establishes a central equilibrium price by averaging the previous high, low, and closing price. This serves as the "anchor" for the rest of the levels.
  • Support Levels (S1, S2, S3): These represent potential "buying zones" where the price might stop falling and bounce back up. The script calculates three distinct tiers of support, providing a layered view of where buyers might step in.
  • Resistance Levels (R1, R2, R3): These represent potential "selling zones" where the price might face difficulty moving higher and could pull back. Like the support levels, these are calculated in three different intensities.

Visual Representation

When active on your chart, the script draws these levels as visual lines:

  • It labels each level clearly (e.g., S1, R1, S2, etc.) so you can easily distinguish between them.
  • The levels update automatically at the start of every new trading day (excluding weekends), ensuring that your chart always reflects the most relevant data based on the previous day's price action.

Key Benefits

  • Automated Analysis: It removes the manual work of calculating complex formulas for daily pivots.
  • Visual Clarity: By plotting these levels directly on the window, it allows you to see exactly where the "battlegrounds" between buyers and sellers are likely to occur.
  • Timeframe Awareness: The tool is optimized to run effectively on standard intraday charts, providing a structured roadmap for your price analysis.
Miscellaneous
Implements a curve of type %1
11 Views
0 Downloads
0 Favorites
Tommytrend Pivot
//+------------------------------------------------------------------+
//|                                                        Pivot.mq4 |
//|                                                 Tommy Trend 2008 |
//|                                           http://www.FXTrend.com |
//+------------------------------------------------------------------+
#property copyright "Tommy Trend 2008"
#property link      "http://www.FXTrend.com"

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Blue
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 Green
#property indicator_color5 Red
#property indicator_color6 Green
#property indicator_color7 Red

double PBuffer[];
double S1Buffer[];
double R1Buffer[];
double S2Buffer[];
double R2Buffer[];
double S3Buffer[];
double R3Buffer[];
string Pivot="Pivot Point",Sup1="S 1", Res1="R 1";
string Sup2="S 2", Res2="R 2", Sup3="S 3", Res3="R 3";
int fontsize=8;
double P,S1,R1,S2,R2,S3,R3;
double LastHigh,LastLow,x;

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {

   ObjectDelete("Pivot");
   ObjectDelete("Sup1");
   ObjectDelete("Res1");
   ObjectDelete("Sup2");
   ObjectDelete("Res2");
   ObjectDelete("Sup3");
   ObjectDelete("Res3");   

   return(0);
  }

int init()
  {
   string short_name;


   SetIndexStyle(0,DRAW_LINE,2,1,Blue);
   SetIndexStyle(1,DRAW_LINE,2,1,White);
   SetIndexStyle(2,DRAW_LINE,2,1,Red);
   SetIndexStyle(3,DRAW_LINE,2,1,White);
   SetIndexStyle(4,DRAW_LINE,2,1,Red);
   SetIndexStyle(5,DRAW_LINE,2,1,White);
   SetIndexStyle(6,DRAW_LINE,2,1,Red);
   SetIndexBuffer(0,PBuffer);
   SetIndexBuffer(1,S1Buffer);
   SetIndexBuffer(2,R1Buffer);
   SetIndexBuffer(3,S2Buffer);
   SetIndexBuffer(4,R2Buffer);
   SetIndexBuffer(5,S3Buffer);
   SetIndexBuffer(6,R3Buffer);

   short_name="Pivot Point";
   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)
{
   x=Period();
   if (x>240) return(-1);
   ObjectCreate("Pivot", OBJ_TEXT, 0, 0,0);
   ObjectSetText("Pivot", "                 Pivot Point",fontsize,"Arial",Red);
   ObjectCreate("Sup1", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("Sup1", "      S 1",fontsize,"Arial",Red);
   ObjectCreate("Res1", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("Res1", "      R 1",fontsize,"Arial",Red);
   ObjectCreate("Sup2", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("Sup2", "      S 2",fontsize,"Arial",Red);
   ObjectCreate("Res2", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("Res2", "      R 2",fontsize,"Arial",Red);
   ObjectCreate("Sup3", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("Sup3", "      S 3",fontsize,"Arial",Red);
   ObjectCreate("Res3", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("Res3", "      R 3",fontsize,"Arial",Red);
}
   if(counted_bars<0) return(-1);

   limit=(Bars-counted_bars)-1;



for (i=limit; i>=0;i--)
{ 

if (High[i+1]>LastHigh) LastHigh=High[i+1];
if (Low[i+1]<LastLow) LastLow=Low[i+1];

if (TimeDay(Time[i])!=TimeDay(Time[i+1]) && (TimeDayOfWeek(Time[i+1])!=0))
{
   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); 
   LastLow=Open[i]; LastHigh=Open[i];

   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);

   }
   
    PBuffer[i]=P;
    S1Buffer[i]=S1;
    R1Buffer[i]=R1;
    S2Buffer[i]=S2;
    R2Buffer[i]=R2;
    S3Buffer[i]=S3;
    R3Buffer[i]=R3;

}

   return(0);
  }

Comments