Pivot SR_v1

Download script
Author: Poul Trade Forum
Pivot SR_v1

This script is a technical analysis tool designed for the MetaTrader platform to automatically identify and display Pivot Points on a trading chart. Pivot Points are essential levels used by traders to determine potential support and resistance zones, helping to predict where the price might stall or reverse during a trading session.

Core Functionality

The logic of this script revolves around identifying the boundaries of previous price action to calculate a central "equilibrium" point for the current period. Here is how it processes the data:

  • Tracking Price Extremes: The script continuously monitors the highest and lowest prices reached during the preceding period. It captures these "highs" and "lows" as it scans back through the historical data on your chart.
  • Detecting New Trading Days: The tool is designed to recognize when a new day begins by comparing the date of the current candle with the previous one.
  • Pivot Point Calculation: Every time a new day starts, the script performs a specific mathematical calculation. It takes the highest price from the previous day, the lowest price from the previous day, and the closing price of the final candle of that day. By averaging these three figures, it establishes the Pivot Point (P).
  • Dynamic Visual Mapping: Once the Pivot Point is calculated, the script automatically draws and updates a line on your chart. This allows you to see exactly where the "center" of the previous day's price action sits relative to the current price.

Key Features for Traders

  • Automated Updates: You do not need to manually calculate these levels; the script updates the lines automatically as the market moves and new days begin.
  • Visual Clarity: The tool provides a clear visual reference on the main chart window, allowing for easier identification of trend changes.
  • Efficiency: It is optimized to handle historical data quickly, ensuring that the pivot levels are plotted accurately across your past charts for backtesting or current analysis.

In summary, this script automates a fundamental technical analysis technique, providing you with a clear visual roadmap of daily price equilibrium based on previous market behavior.

Miscellaneous
Implements a curve of type %1
10 Views
0 Downloads
0 Favorites
Pivot SR_v1
//+------------------------------------------------------------------+
//|                                                        Pivot.mq4 |
//|                               Copyright © 2004, Poul_Trade_Forum |
//|                                                         Aborigen |
//|                                          http://forex.kbpauk.ru/ |
//+------------------------------------------------------------------+
#property copyright "Poul Trade Forum"
#property link      "http://forex.kbpauk.ru/"

#property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 Orange
#property indicator_color2 Blue
#property indicator_color3 Red
//#property indicator_color4 
//#property indicator_color5 
//#property indicator_color6 
//#property indicator_color7 
//---- input parameters

//---- buffers
double PBuffer[];
double S1Buffer[];
double R1Buffer[];
//double S2Buffer[];
//double R2Buffer[];
//double S3Buffer[];
//double R3Buffer[];
string Pivot="Pivot Point";
//string Sup2="", Res2="", Sup3="", Res3="";
int fontsize=10;
double P;
double LastHigh,LastLow,x;

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here

   ObjectDelete("Pivot");
   ObjectDelete("R1");
   ObjectDelete("S1");
   //ObjectDelete("");
   //ObjectDelete("");
   //ObjectDelete("");
   //ObjectDelete("");   

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;


//---- indicator line
   SetIndexStyle(0,DRAW_LINE,0,2,Orange);
   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,);
   SetIndexBuffer(0,PBuffer);
   SetIndexBuffer(1,S1Buffer);
   SetIndexBuffer(2,R1Buffer);
   //SetIndexBuffer(3,S2Buffer);
   //SetIndexBuffer(4,R2Buffer);
   //SetIndexBuffer(5,S3Buffer);
   //SetIndexBuffer(6,R3Buffer);


//---- name for DataWindow and indicator subwindow label
   short_name="Pivot Point";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);

//----
   SetIndexDrawBegin(0,1);
//----
 

//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()

  {
   int    counted_bars=IndicatorCounted();

   int limit, i;
//---- indicator calculation
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);
//---- last counted bar will be recounted
//   if(counted_bars>0) counted_bars--;
   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]))
   { 
   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