Universal_Pivot

Author: Poul Trade Forum
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains close prices for each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
Universal_Pivot
//+------------------------------------------------------------------+
//|                                              Universal Pivot.mq4 |
//|                               Copyright © 2004, Poul_Trade_Forum |
//|                                                         Aborigen |
//|                                          http://forex.kbpauk.ru/ |
//+------------------------------------------------------------------+
#property copyright "Poul Trade Forum"
#property link      "http://forex.kbpauk.ru/"
//----
// Èçìåíåííàÿ âåðñèÿ èíäèêàòîðà Pivot "http://codebase.mql4.com/ru/1747" 
// Äîáàâëåíà âîçìîæíîñòü âûáèðàòü ïåðèîä äëÿ ðàñ÷åòà óðîâíåé ïîääåðæêè/ñîïðîòèâëåíèÿ
//
// PERIOD_M1   1     1 minute 
// PERIOD_M5   5     5 minute 
// PERIOD_M15  15    15 minute 
// PERIOD_M30  30    30 minute 
// PERIOD_H1   60    1 hour 
// PERIOD_H4   240   4 hour 
// PERIOD_D1   1440  1 day 
// PERIOD_W1   10080 1 weekly
// PERIOD_MN1  43200 1 mounth
//
// À òàê æå îïèñàíèå äëÿ ëèíèé ðàçíûõ ïåðèîäîâ îò ÒÔ Í1 è âûøå.
//----
#property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 Red
#property indicator_color2 DarkBlue
#property indicator_color3 Maroon
#property indicator_color4 DarkBlue
#property indicator_color5 Maroon
#property indicator_color6 Green
#property indicator_color7 Green
//---- input parameters
//---- buffers

extern int period = 1440;

double PBuffer[];
double S1Buffer[];
double R1Buffer[];
double S2Buffer[];
double R2Buffer[];
double S3Buffer[];
double R3Buffer[];

     string Pv, S, SS, SSS;
     string R, RR, RRR;
     string Pivot, Sup1, Sup2, Sup3;
     string Res1, Res2, Res3;
     string txtPivot, txtSup1, txtSup2, txtSup3;
     string txtRes1, txtRes2, txtRes3;
     

double P,S1,R1,S2,R2,S3,R3;
double Q,x;
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
     
//---- TODO: add your code here
  ObjectDelete(Pivot);
   ObjectDelete(Sup1);
   ObjectDelete(Res1);
   ObjectDelete(Sup2);
   ObjectDelete(Res2);
   ObjectDelete(Sup3);
   ObjectDelete(Res3);
   
   ObjectDelete(txtPivot);
   ObjectDelete(txtSup1);
   ObjectDelete(txtRes1);
   ObjectDelete(txtSup2);
   ObjectDelete(txtRes2);
   ObjectDelete(txtSup3);
   ObjectDelete(txtRes3);
//----

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
     
     string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE,0,2,Red);
   SetIndexStyle(1,DRAW_LINE,0,0,DarkBlue);
   SetIndexStyle(2,DRAW_LINE,0,0,Maroon);
   SetIndexStyle(3,DRAW_LINE,0,0,DarkBlue);
   SetIndexStyle(4,DRAW_LINE,0,0,Maroon);
   SetIndexStyle(5,DRAW_LINE,0,0,Green);
   SetIndexStyle(6,DRAW_LINE,0,0,Green);
   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="Universal Pivot";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,1);
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    dayi, counted_bars=IndicatorCounted();
   int limit, i;
//---- indicator calculation
   if (counted_bars==0)
     {
      x=Period();
      if (x>240) return(-1);
      
     }
   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--)
     {
      dayi = iBarShift(Symbol(), period, Time[i], false);
       Q = (iHigh(Symbol(), period,dayi + 1) - iLow(Symbol(), period, dayi + 1));
       P = (iHigh(Symbol(), period, dayi + 1) + iLow(Symbol(), period, dayi + 1) + iClose(Symbol(), period, dayi + 1)) / 3; 
       
       //---
         R1=(2*P)-iLow(Symbol(), period, dayi + 1);
         S1=(2*P)-iHigh(Symbol(), period,dayi + 1);
         R2=P+(iHigh(Symbol(), period,dayi + 1) - iLow(Symbol(), period, dayi + 1));
         S2=P-(iHigh(Symbol(), period,dayi + 1) - iLow(Symbol(), period, dayi + 1));
         R3=(2*P)+(iHigh(Symbol(), period,dayi + 1)-(2*iLow(Symbol(), period, dayi + 1)));
         S3=(2*P)-((2* iHigh(Symbol(), period,dayi + 1))-iLow(Symbol(), period, dayi + 1));
       //---
//----
     if (period < 60)
     {  
       Pv = "Pivot";
       S = "S 1"; SS = "S 2"; SSS = "S 3";
       R = "R 1"; RR = "R 2"; RRR = "R 3";
       Pivot = "Pivot"; Sup1 = "Sup1"; Sup2 = "Sup2"; Sup3 = "Sup3";
       Res1 = "Res1"; Res2 = "Res2"; Res3 = "Res3";
       txtPivot = "txtPivot"; txtSup1 = "txtSup1"; txtSup2 = "txtSup2";  txtSup3 = "txtSup3";
       txtRes1 = "txtRes1"; txtRes2 = "txtRes2"; txtRes3 = "txtRes3";
       } 
         if (period == 60)
         {  
           Pv = "Hour Pivot";
           S = "S 1 Hour"; SS = "S 2 Hour"; SSS = "S 3 Hour";
           R = "R 1 Hour"; RR = "R 2 Hour"; RRR = "R 3 Hour";
           Pivot = "1HPivot"; Sup1 = "1HSup1"; Sup2 = "1HSup2"; Sup3 = "1HSup3";
           Res1 = "1HRes1"; Res2 = "1HRes2"; Res3 = "1HRes3";
           txtPivot = "txt1HPivot"; txtSup1 = "txt1HSup1"; txtSup2 = "txt1HSup2";  txtSup3 = "txt1HSup3";
           txtRes1 = "txt1HRes1"; txtRes2 = "txt1HRes2"; txtRes3 = "txt1HRes3";
           } 
             if (period == 240)
             {  
               Pv = "4Hour Pivot"; S = "S 1 4Hour"; SS = "S 2 4Hour"; SSS = "S 3 4Hour";
               R = "R 1 4Hour"; RR = "R 2 4Hour"; RRR = "R 3 4Hour";
               Pivot = "4HPivot"; Sup1 = "4HSup1"; Sup2 = "4HSup2"; Sup3 = "4HSup3";
               Res1 = "4HRes1"; Res2 = "4HRes2"; Res3 = "4HRes3";
               txtPivot = "txt4HPivot"; txtSup1 = "txt4HSup1"; txtSup2 = "txt4HSup2";  txtSup3 = "txt4HSup3";
               txtRes1 = "txt4HRes1"; txtRes2 = "txt4HRes2"; txtRes3 = "txt4HRes3";
               }
                 if (period == 1440)
                 {
                   Pv = "Day Pivot"; S = "S 1 Day"; SS = "S 2 Day"; SSS = "S 3 Day";
                   R = "R 1 Day"; RR = "R 2 Day"; RRR = "R 3 Day";
                   Pivot = "DPivot"; Sup1 = "DSup1"; Sup2 = "DSup2"; Sup3 = "DSup3";
                   Res1 = "DRes1"; Res2 = "DRes2"; Res3 = "DRes3";
                   txtPivot = "txtDPivot"; txtSup1 = "txtDSup1"; txtSup2 = "txtDSup2";  txtSup3 = "txtDSup3";
                   txtRes1 = "txtDRes1"; txtRes2 = "txtDRes2"; txtRes3 = "txtDRes3";
                   }
                     if (period == 10080)
                     {  
                       Pv = "Weekly Pivot"; S = "S 1 Weekly"; SS = "S 2 Weekly"; SSS = "S 3 Weekly";
                       R = "R 1 Weekly"; RR = "R 2 Weekly"; RRR = "R 3 Weekly"; 
                       Pivot = "WPivot"; Sup1 = "WSup1"; Sup2 = "WSup2"; Sup3 = "WSup3";
                       Res1 = "WRes1"; Res2 = "WRes2"; Res3 = "WRes3";
                       txtPivot = "txtWPivot"; txtSup1 = "txtWSup1"; txtSup2 = "txtWSup2";  txtSup3 = "txtWSup3";
                       txtRes1 = "txtWRes1"; txtRes2 = "txtWRes2"; txtRes3 = "txtWRes3";
                       }
                         if (period == 43200)
                         {  
                           Pv = "Mounth Pivot"; S = "S 1 Mounth"; SS = "S 2 Mounth"; SSS = "S 3 Mounth";
                           R = "R 1 Mounth"; RR = "R 2 Mounth"; RRR = "R 3 Mounth";
                           Pivot = "MNPivot"; Sup1 = "MNSup1"; Sup2 = "MNSup2"; Sup3 = "MNSup3";
                           Res1 = "MNRes1"; Res2 = "MNRes2"; Res3 = "MNRes3";
                           txtPivot = "txtMNPivot"; txtSup1 = "txtMNSup1"; txtSup2 = "txtMNSup2";  txtSup3 = "txtMNSup3";
                           txtRes1 = "txtMNRes1"; txtRes2 = "txtMNRes2"; txtRes3 = "txtMNRes3";
                           }
//--
 
//--
       
      PBuffer[i]=P;
      SetPrice(Pivot, Time[i], P, indicator_color1);
      SetText(txtPivot, Pv, Time[i], P, indicator_color1);
      
      S1Buffer[i]=S1;
      SetPrice(Sup1, Time[i], S1, indicator_color2);
      SetText(txtSup1, S, Time[i], S1, indicator_color2);
      
      R1Buffer[i]=R1;
      SetPrice(Res1, Time[i], R1, indicator_color3);
      SetText(txtRes1, R, Time[i], R1, indicator_color3);
      
      S2Buffer[i]=S2;
      SetPrice(Sup2, Time[i], S2, indicator_color4);
      SetText(txtSup2, SS, Time[i], S2, indicator_color4);
      
      R2Buffer[i]=R2;
      SetPrice(Res2, Time[i], R2, indicator_color5);
      SetText(txtRes2, RR, Time[i], R2, indicator_color5);
      
      S3Buffer[i]=S3;
      SetPrice(Sup3, Time[i], S3, indicator_color6);
      SetText(txtSup3, SSS, Time[i], S3, indicator_color6);
      
      R3Buffer[i]=R3;
      SetPrice(Res3, Time[i], R3, indicator_color7);
      SetText(txtRes3, RRR, Time[i], R3, indicator_color7);
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetPrice(string name, datetime Tm, double Prc, color clr)
  {
   if(ObjectFind(name) == -1)
     {
       ObjectCreate(name, OBJ_ARROW, 0, Tm, Prc);
       ObjectSet(name, OBJPROP_COLOR, clr);
       ObjectSet(name, OBJPROP_WIDTH, 1);
       ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
     }
   else
     {
       ObjectSet(name, OBJPROP_TIME1, Tm);
       ObjectSet(name, OBJPROP_PRICE1, Prc);
       ObjectSet(name, OBJPROP_COLOR, clr);
       ObjectSet(name, OBJPROP_WIDTH, 1);
       ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
     } 
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetText(string name, string txt, datetime Tm, double Prc, color clr)
  {
   if(ObjectFind(name) == -1)
     {
       ObjectCreate(name, OBJ_TEXT, 0, Tm, Prc);
       ObjectSetText(name, txt, 10, "Times New Roman", clr);
       ObjectSet(name, OBJPROP_CORNER, 2);
     }
   else
     {
       ObjectSet(name, OBJPROP_TIME1, Tm);
       ObjectSet(name, OBJPROP_PRICE1, Prc);
       ObjectSetText(name, txt, 10, "Times New Roman", clr);
       ObjectSet(name, OBJPROP_CORNER, 2);
     } 
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---