Script for Classic Pivot Points with manually entered values for High, Low and Close

 

Last second spread widenings sometimes result in shifting the bid close a considerable distance down (15 pips for example). This may resemble a problem for Classic Pivot Points indicators depending on that close.

This very lame written script draws Classic Pivot Points on manually entered values for High, Low and Close:

//+-----------------------------------------------------------------------------------------------------+
//|                                                                                    пивотскръцпт.mq5 |
//|                                                            Copyright 2016, МегаКурец Software Corp. |
//|                                                                  https://www.mql5.com/en/users/kypa |
//+-----------------------------------------------------------------------------------------------------+

#property copyright "Copyright 2016, МегаКурец Software Corp."
#property link      "https://www.mql5.com/en/users/kypa"
#property version   "4.04"

//+-----------------------------------------------------------------------------------------------------+
//| Скрипта туря пивот подкрепи и съпротиви по ръчно зададени най-висока, най-ниска и цена на затваряне.|   
//| Ползват се две формули - основна и допълнителна/алтернативна (на Ууди, ама не съвсем).              |
//| Начертаното се показва само на таймфрейм по-малък от половин час (половин час включително).         |
//| Всичко начертано е обект-хоризонтална линия (няма пълзящи средни и тям подобни).                    |
//+-----------------------------------------------------------------------------------------------------+

//стойности да въведем отначалото:  

#property script_show_inputs  
               
   input double Връх  = 0;
   input double Дъно   = 0;
   input double Затваряне = 0;

//+-----------------------------------------------------------------------------------------------------+

//формулите за изчисление - основна:

   double Пивот = (Връх + Дъно + Затваряне)/3;    //Пивот
   double Рейндж = (Връх - Дъно);                 //Рейндж
   double П1 = (2*Пивот) - Връх;                  //Подкрепа 1
   double С1 = (2*Пивот) - Дъно;                  //Съпротива 1
   double П2 = Пивот - Рейндж;                    //Подкрепа 2
   double П3 = Пивот - 2*Рейндж;                  //Подкрепа 3   
   double С2 = Пивот + Рейндж;                    //Съпротива 2
   double С3 = Пивот + 2*Рейндж;                  //Съпротива 3
   
     
//и допълнителна/алтернативна:  

 
   double П25 = П1 - Рейндж;                      //Подкрепа 2 (и половина)
   double П35 = П1 - 2*Рейндж;                    //Подкрепа 3 (и половина)
   double С25 = С1 + Рейндж;                      //Съпротива 2 (и половина)
   double С35 = С1 + 2*Рейндж;                    //Съпротива 3 (и половина)
      
//+-----------------------------------------------------------------------------------------------------+

void OnStart()
  {

//да начертаем:

ResetLastError();
if(!ObjectCreate(0,"Пивот",OBJ_HLINE,0,0,Пивот))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };
          
ResetLastError();
if(!ObjectCreate(0,"Подкрепа 1",OBJ_HLINE,0,01))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };
          
ResetLastError();
if(!ObjectCreate(0,"Подкрепа 2",OBJ_HLINE,0,02))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };
         
ResetLastError();
if(!ObjectCreate(0,"Подкрепа 3",OBJ_HLINE,0,03))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };
         
ResetLastError();
if(!ObjectCreate(0,"Съпротива 1",OBJ_HLINE,0,01))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };
          
ResetLastError();
if(!ObjectCreate(0,"Съпротива 2",OBJ_HLINE,0,02))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };

ResetLastError();
if(!ObjectCreate(0,"Съпротива 3",OBJ_HLINE,0,03))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };

//и допълнителните/алтернативните:

ResetLastError();
if(!ObjectCreate(0,"Подкрепа 2 и половина",OBJ_HLINE,0,025))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };

ResetLastError();
if(!ObjectCreate(0,"Подкрепа 3 и половина",OBJ_HLINE,0,035))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };

ResetLastError();
if(!ObjectCreate(0,"Съпротива 2 и половина",OBJ_HLINE,0,025))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };

ResetLastError();
if(!ObjectCreate(0,"Съпротива 3 и половина",OBJ_HLINE,0,035))
     {
      Print(__FUNCTION__,
            ": Грешка, грешка!! Код (на грешката) = ",GetLastError());
      return;
     };

//+-----------------------------------------------------------------------------------------------------+

//цветовете да уточним:

ObjectSetInteger(0,"Пивот",OBJPROP_COLOR,C'0,0,222');
ObjectSetInteger(0,"Подкрепа 1",OBJPROP_COLOR,clrGreen);
ObjectSetInteger(0,"Подкрепа 2",OBJPROP_COLOR,clrGreen);
ObjectSetInteger(0,"Подкрепа 3",OBJPROP_COLOR,clrGreen);
ObjectSetInteger(0,"Съпротива 1",OBJPROP_COLOR,C'222,0,0');
ObjectSetInteger(0,"Съпротива 2",OBJPROP_COLOR,C'222,0,0');
ObjectSetInteger(0,"Съпротива 3",OBJPROP_COLOR,C'222,0,0');

//и на допълнителните/алтернативните:

ObjectSetInteger(0,"Подкрепа 2 и половина",OBJPROP_COLOR,clrGreen);
ObjectSetInteger(0,"Подкрепа 3 и половина",OBJPROP_COLOR,clrGreen);
ObjectSetInteger(0,"Съпротива 2 и половина",OBJPROP_COLOR,C'222,0,0');
ObjectSetInteger(0,"Съпротива 3 и половина",OBJPROP_COLOR,C'222,0,0');

//+-----------------------------------------------------------------------------------------------------+

//таймфреймовите дето ще се показват да уточним:

ObjectSetInteger(0,"Пивот",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Подкрепа 1",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Подкрепа 2",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Подкрепа 3",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Съпротива 1",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Съпротива 2",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Съпротива 3",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);

//и на допълнителните/алтернативните:

ObjectSetInteger(0,"Подкрепа 2 и половина",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Подкрепа 3 и половина",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Съпротива 2 и половина",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);
ObjectSetInteger(0,"Съпротива 3 и половина",OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30);

//+-----------------------------------------------------------------------------------------------------+

//да нагласим алтернативните да се показват като точки:

ObjectSetInteger(0,"Подкрепа 2 и половина",OBJPROP_STYLE,STYLE_DOT);
ObjectSetInteger(0,"Подкрепа 3 и половина",OBJPROP_STYLE,STYLE_DOT);
ObjectSetInteger(0,"Съпротива 2 и половина",OBJPROP_STYLE,STYLE_DOT);
ObjectSetInteger(0,"Съпротива 3 и половина",OBJPROP_STYLE,STYLE_DOT);

//готово

  }

Any propositions for additions and optimisations are welcome.

Reason: