Download MetaTrader 5

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

To add comments, please log in or register
kypa
517
kypa  

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.

To add comments, please log in or register