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

AutoPivotIndicator

###auto pivot2.mq5
Вы автор или правообладатель?

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

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

О программе

Данный индикатор для MetaTrader 5 отображает на графике ценовые уровни, рассчитанные по данным дневного, недельного и месячного таймфреймов. Он строит линии Pivot и уровни поддержки/сопротивления (S1-S3, R1-R3) для каждого из выбранных периодов, а также подписи к ним. Пользователь может включать или отключать отображение уровней для каждого таймфрейма независимо.

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

Предусмотрена возможность учёта или игнорирования данных воскресного дня при расчёте дневных уровней. Также доступна опция сдвига линий вправо и настройка положения подписей. Индикатор не содержит торговых функций и предназначен исключительно для визуального анализа.

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

НастройкаОписание
Use_Sunday_Data Определяет, учитывать ли данные воскресного дня при расчёте дневных уровней. При отключении используется предыдущий торговый день.
Daily Включает или отключает отображение дневных уровней Pivot и подписи к ним.
Daily_SR_Levels Включает или отключает отображение дневных уровней поддержки и сопротивления (S1-S3, R1-R3).
Weekly Включает или отключает отображение недельных уровней Pivot и подписи к ним.
Weekly_SR_Levels Включает или отключает отображение недельных уровней поддержки и сопротивления (S1-S3, R1-R3).
Monthly Включает или отключает отображение месячных уровней Pivot и подписи к ним.
Monthly_SR_Levels Включает или отключает отображение месячных уровней поддержки и сопротивления (S1-S3, R1-R3).
Labels_Adjust Задаёт горизонтальное смещение подписей уровней относительно текущего бара, выраженное в количестве периодов графика.
Lines_Move_to_Right Определяет, будут ли линии уровней смещены вправо от текущего бара, а не привязаны к предыдущему дню.
Lines_Shift Задаёт величину сдвига линий вправо в количестве периодов графика при включённой опции сдвига.
Получить полный код

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

#property indicator_chart_window

   extern bool Use_Sunday_Data     = true;
   extern bool Daily               = true;
   extern bool Daily_SR_Levels     = true;
   extern bool Weekly              = false;
   extern bool Weekly_SR_Levels    = false;
   extern bool Monthly             = false;
   extern bool Monthly_SR_Levels   = false;
   extern int  Labels_Adjust       = 10;
   extern bool Lines_Move_to_Right = false;
   extern int  Lines_Shift         = 0;

   double YesterdayHigh;
   double YesterdayLow;
   double YesterdayClose;
   double Day_Price[][6];
   double Pivot,S1,S2,S3,R1,R2,R3;

   double WeekHigh;
   double WeekLow;
   double WeekClose;
   double Weekly_Price[][6];
   double WeekPivot,WS1,WS2,WS3,WR1,WR2,WR3;

   double MonthHigh;
   double MonthLow;
   double MonthClose;
   double Month_Price[][6];
   double MonthPivot,MS1,MS2,MS3,MR1,MR2,MR3;

   datetime endTime=0, startTime=0;
   bool     PlotFactor=false;

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

void OnDeinit(const int reason)
{
   switch(reason)
   {
      case REASON_CHARTCHANGE : break;
      case REASON_CHARTCLOSE  : break;
      case REASON_RECOMPILE   : break;
      case REASON_CLOSE       : break;
      default                 :
      {
        DeleteObjectsByString("Line",0);
        DeleteObjectsByString("Label",0);
      }
   }  
   WindowRedraw();
}

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

ArrayCopyRates(Day_Price,(Symbol()), 1440);

   YesterdayHigh  = Day_Price[1][3];
   YesterdayLow   = Day_Price[1][2];
   YesterdayClose = Day_Price[1][4];

   Pivot = ((YesterdayHigh + YesterdayLow + YesterdayClose)/3);

   R1 = (2*Pivot)-YesterdayLow;
   S1 = (2*Pivot)-YesterdayHigh;

   R2 = Pivot+(R1-S1);
   S2 = Pivot-(R1-S1);

   R3 = (YesterdayHigh + (2*(Pivot-YesterdayLow)));
   S3 = (YesterdayLow - (2*(YesterdayHigh-Pivot)));  

if (Use_Sunday_Data == false)
 {   
   while (DayOfWeek() == 1)
      {  
       YesterdayHigh  = Day_Price[2][3];
       YesterdayLow   = Day_Price[2][2];
       YesterdayClose = Day_Price[2][4];

       Pivot = ((YesterdayHigh + YesterdayLow + YesterdayClose)/3);

       R1 = (2*Pivot)-YesterdayLow;
       S1 = (2*Pivot)-YesterdayHigh;

       R2 = Pivot+(R1-S1);
       S2 = Pivot-(R1-S1);

       R3 = (YesterdayHigh + (2*(Pivot-YesterdayLow)));
       S3 = (YesterdayLow - (2*(YesterdayHigh-Pivot)));
       break;
      }
 }

ArrayCopyRates(Weekly_Price, Symbol(), 10080);

WeekHigh  = Weekly_Price[1][3];
WeekLow   = Weekly_Price[1][2];
WeekClose = Weekly_Price[1][4];

WeekPivot = ((WeekHigh + WeekLow + WeekClose)/3);

      WR1 = (2*WeekPivot)-WeekLow;
      WS1 = (2*WeekPivot)-WeekHigh;

      WR2 = WeekPivot+(WR1-WS1);
      WS2 = WeekPivot-(WR1-WS1);

      WS3 = (WeekLow - (2*(WeekHigh-WeekPivot)));
      WR3 = (WeekHigh + (2*(WeekPivot-WeekLow)));

ArrayCopyRates(Month_Price, Symbol(), 43200);

MonthHigh  = Month_Price[1][3];
MonthLow   = Month_Price[1][2];
MonthClose = Month_Price[1][4];

MonthPivot = ((MonthHigh + MonthLow + MonthClose)/3);

      MR1 = (2*MonthPivot)-MonthLow;
      MS1 = (2*MonthPivot)-MonthHigh;

      MR2 = MonthPivot+(MR1-MS1);
      MS2 = MonthPivot-(MR1-MS1)

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

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

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

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

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

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

Стоимость полного кода
501,20₽ ≈ $6.13