← К каталогу
Исходный код · ID 1112

multi pivots.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор отображает на графике несколько систем дневных опорных уровней (пивотов), используя данные предыдущей торговой сессии. Для каждой системы рисуются горизонтальные линии и текстовые метки с названиями уровней. Пользователь может включать или отключать отдельные системы через настройки.

Индикатор считывает дневные данные цены (открытие, максимум, минимум, закрытие) и рассчитывает наборы уровней для выбранных типов пивотов. Обновление происходит при появлении нового бара и при смене торгового дня.

Работает только на таймфреймах вплоть до дневного включительно. При выборе периода крупнее дневного индикатор выводит сообщение об ошибке и прекращает работу. Взаимодействие с графиком осуществляется средствами объектов MetaTrader — горизонтальные линии и текстовые подписи.

Настройки программы

НастройкаОписание
Show_Woodies_Pivots Включает или отключает отображение системы опорных уровней Вуди на графике.
Show_Camarilla_Pivots Включает или отключает отображение системы опорных уровней Камарилла на графике.
Show_Demark_Pivots Включает или отключает отображение системы опорных уровней Демарк на графике.
Show_Standard_Pivots Включает или отключает отображение стандартных опорных уровней на графике.
Получить полный код

Поиск по коду файла

#property indicator_chart_window

extern int Show_Woodies_Pivots = 1;    // 1 = Yes, 0 = No
extern int Show_Camarilla_Pivots = 1;  // 1 = Yes, 0 = No
extern int Show_Demark_Pivots = 1;     // 1 = Yes, 0 = No
extern int Show_Standard_Pivots = 0;   // 1 = Yes, 0 = No

datetime prevtime=0;
datetime prev_day=0;
datetime cur_day=0;
double rates_d1[2][6];
double day_high=0;	
double day_low=0;	
double yesterday_high=0;
double yesterday_open=0;			
double yesterday_low=0;			
double yesterday_close=0;
double today_open=0;

int init()
  {
      // код доступен только после оплаты
   }

int deinit()
  {

   return(0);
  }

int start()
  {
      // код доступен только после оплаты
   }
    int    counted_bars=IndicatorCounted();

   double r2=0;
   double r1=0;
   double p=0;
   double s1=0;
   double s2=0;
   double sr3=0;
   double sr2=0;
   double sr1=0;
   double sp=0;
   double ss1=0;
   double ss2=0;
   double ss3=0;
   double ch1=0;
   double ch2=0;
   double ch3=0;
   double ch4=0;
   double cl1=0;
   double cl2=0;
   double cl3=0;
   double cl4=0;
   double D1=0.091667;
   double D2=0.183333;
   double D3=0.2750;
   double D4=0.55;
   double dr=0;
   double ds=0;
   double x=0;
   string ch3_text="";

   if(Period() > 1440)
   {
      Print("Error - Chart period is greater than 1 day.");
      return(-1);   // then exit 
   }

   if(prevtime == Time[0])return(0); // exit unless new bar
   prevtime = Time[0]; // reset to current bar time
  	cur_day = Day();
  	if(prev_day != cur_day) 
  	{
      ArrayCopyRates(rates_d1, Symbol(), PERIOD_D1);

      yesterday_close = rates_d1[1][4];
      yesterday_open = rates_d1[1][1];
      today_open = rates_d1[0][1];
      yesterday_high = rates_d1[1][3];
      yesterday_low = rates_d1[1][2];
      prev_day = cur_day;
  	}

   if(Show_Standard_Pivots == 1)   
   {
      sp = (yesterday_high+yesterday_low+yesterday_close+today_open)/4;
		sr1 = (2*sp)-yesterday_low;
		ss1 = (2*sp)-yesterday_high;
		sr2 = sp+(yesterday_high-yesterday_low);
		ss2 = sp-(yesterday_high+yesterday_low);
		sr3 = (2*sp)-yesterday_low-yesterday_low+yesterday_high;
		ss3 = (2*sp)-yesterday_high-yesterday_high+yesterday_low;	

      if(ObjectFind("SR1 label") != 0)
      {
         ObjectCreate("SR1 label", OBJ_TEXT, 0, Time[20], sr1);
         ObjectSetText("SR1 label", "R1 "+DoubleToStr(sr1,4), 8, "Arial", White);
      }
      else
      {
         ObjectSetText("SR1 label", "R1 "+DoubleToStr(sr1,4), 8, "Arial", White);
         ObjectMove("SR1 label", 0, Time[20], sr1);
      }

      if(ObjectFind("SR2 label") != 0)
      {
         ObjectCreate("SR2 label", OBJ_TEXT, 0, Time[20], sr2);
         ObjectSetText("SR2 label", "R2 "+DoubleToStr(sr2,4), 8, "Arial", White);
      }
      else
      {
         ObjectSetText("SR2 label", "R2 "+DoubleToStr(sr2,4), 8, "Arial", White);
         ObjectMove("SR2 label", 0, Time[20], sr2);
      }

      if(ObjectFind("SR3 label") != 0)
      {
         ObjectCreate("SR3 label", OBJ_TEXT, 0, Time[20], sr3);
         ObjectSetText("SR3 label", "R3 "+DoubleToStr(sr3,4), 8, "Arial", White);
      }
      else
      {
         ObjectSetText("SR3 label", "R3 "+DoubleToStr(sr3,4), 8, "Arial", White);
         ObjectMove("SR3 label", 0, Time[20], sr3);
      }

      if(ObjectFind("SP label") != 0)
      {
         ObjectCreate("SP label", OBJ_TEXT, 0, Time[20], sp);
         ObjectSetText("SP label", "Pivot "+DoubleToStr(sp,4), 8, "Arial", White);
      }
      else
      {
         ObjectSetText("SP label", "Pivot "+DoubleToStr(sp,4), 8, "Arial", White);
         ObjectMove("SP label", 0, Time[20], sp);
      }

      if(ObjectFind("SS1 label") != 0)
      {
         ObjectCreate("SS1 label", OBJ_TEXT, 0, Time[20], ss1);
         ObjectSetText("SS1 label", "S1 "+DoubleToStr(ss1,4), 8, "Arial", White);
      }
      else
      {
         ObjectSetText("SS1 label", "S1 "+DoubleToStr(ss1,4), 8, "Arial", White);
         ObjectMove("SS1 label", 0, Time[20], ss1);
      }

      if(ObjectFind("SS2 label") != 0)
      {
         ObjectCreate("SS2 label", OBJ_TEXT, 0, Time[20], ss2);
         ObjectSetText("S2 label", "S2 "+DoubleToStr(ss2,4), 8, "Arial", White);
      }
      else
      {
         ObjectSetText("SS2 label", "S2 "+DoubleToStr(ss2,4), 8, "Arial", White);
         ObjectMove("SS2 label", 0, Time[20], ss2);
      }

      if(ObjectFind("SS3 label") != 0)
      {
         ObjectCreate("SS3 label", OBJ_TEXT, 0, Time[20], ss3);
         ObjectSetText("SS3 label", "S3 "+DoubleToStr(ss3,4), 8, "Arial", White);
      }
      else
      {
         ObjectSetText("SS3 label", "S3 "+DoubleToStr(ss3,4), 8, "Arial", White);
         ObjectMove("SS3 label", 0, Time[20], ss3);
      }

      if(ObjectFind("SS1 line") != 0)
      {
         ObjectCreate("SS1 line", OBJ_HLINE, 0, Time[40], ss1);
         ObjectSet("SS1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
         ObjectSet("SS1 line", OBJPROP_COLOR, LimeGreen);
      }
      else
      {
         ObjectMove("SS1 line", 0, Time[40], ss1);
      }

      if(ObjectFind("SS2 line") != 0)
      {
         ObjectCreate("SS2 line", OBJ_HLINE, 0, Time[40], ss2);
         ObjectSet("SS2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
         ObjectSet("SS2 line", OBJPROP_COLOR, LimeGreen);
      }
      else
      {
         ObjectMove("SS2 line", 0, Time[40], ss2);
      }

      if(ObjectFind("SS3 line") != 0)
      {
         ObjectCreate("SS3 line", OBJ_HLINE, 0, Time[40], ss3);
         ObjectSet("SS3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
         ObjectSet("SS3 line", OBJPROP_COLOR, LimeGreen);
      }
      else
      {
         ObjectMove("SS3 line", 0, Time[40], ss3);
      }

      if(ObjectFind("SP line") != 0)
      {
         ObjectCreate("SP line", OBJ_HLINE, 0, Time[40], sp);
         ObjectSet("SP line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
         ObjectSet("SP line", OBJPROP_COLOR, Magenta);
      }
      else
      {
         ObjectMove("SP line", 0, Time[40], sp);
      }

      if(ObjectFind("SR1 line") != 0)
      {
         ObjectCreate("SR1 line", OBJ_HLINE, 0, Time[40], sr1);
         ObjectSet("SR1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
         ObjectSet("SR1 line", OBJPROP_COLOR, OrangeRed);
      }
      else
      {
         ObjectMove("SR1 line", 0, Time[40], sr1);
      }

      if(ObjectFind("SR2 line") != 0)
      {
         ObjectCreate("SR2 line", OBJ_HLINE, 0, Time[40], sr2);
         ObjectSet("SR2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
         ObjectSet("SR2 line", OBJPROP_COLOR, OrangeRed);
      }
      else
      {
         ObjectMove("SR2 line", 0, Time[40], sr2);
      }

      if(ObjectFind("SR3 line") != 0)
      {
         ObjectCreate("SR3 line", OBJ_HLINE, 0, Time[40], sr3);
         ObjectSet("SR3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
         ObjectSet("SR3 line", OBJPROP_COLOR, OrangeRed);
      }
      else
      {
         ObjectMove("SR3 line", 0, Time[40], sr3);
      }
   }

   if(Show_Woodies_Pivots == 1)
   {
      p = (yesterday_high + yesterday_low + today_open + today_open) / 4;// Woodies Pivot
   	r1 = (2*p)-yesterday_low;
   	s1 = (2*p)-yesterday_high;
   	r2 = p+(yesterday_high - yesterday_low);
   	s2 = p-(yesterday_high - yesterday_low);

      if(ObjectFind("R1 label") != 0)
      {
         ObjectCreate("R1 label", OBJ_TEXT, 0, Time[20], r1);
         ObjectSetText("R1 label", "Woodies R1 "+DoubleToStr(r1,4), 8, "Arial", White);
      }
      else
      {
         ObjectSetText("R1 label", "Woodies R1 "+DoubleToStr(r1,4), 8, "Arial", White);
         ObjectMove("R1 label", 0, Time[20], r1);
      }

      if(ObjectFind("R2 label") != 0)
      {
         ObjectCreate("R2 label", OBJ_TEXT, 0, Time[20], r2);
         ObjectSetText("R2 label", "Woodies R2 "+DoubleToStr(r2,4), 8, "Arial", Whi

Показано первые 50% кода (символов: 10935)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 093,50₽ ≈ $13.36