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

pivot_alllevels.mq5

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

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

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

О программе

Этот файл является пользовательским индикатором для MetaTrader 5, написанным на языке MQL5. Индикатор рассчитывает и отображает на графике ценовые уровни, связанные с точкой разворота (Pivot Point), а также уровни поддержки и сопротивления. В коде используются пять буферов индикатора, каждый из которых соответствует определённому уровню: Pivot Point, два уровня сопротивления и два уровня поддержки. Отображение уровней выполняется в виде стрелок на графике.

Индикатор работает на таймфреймах не выше H4: при более старших периодах расчёт прекращается. Для каждого нового дня определяются максимум и минимум предыдущего торгового дня, после чего вычисляется значение Pivot Point по одной из двух формул, выбираемых входным параметром Formula. Уровни сопротивления и поддержки рассчитываются на основе полученного значения Pivot Point и диапазона предыдущего дня.

Все вычисления производятся в основном цикле по барам, начиная с последнего пересчитанного. Индикатор не использует торговые функции и не предназначен для автоматического совершения сделок. Название продукта в исходном коде явно не подтверждено, поэтому в ответе оно не указано.

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

НастройкаОписание
Formula Выбор формулы для расчёта точки разворота (Pivot Point). При значении 0 используется классическая формула (максимум + минимум + цена закрытия) / 3, при любом другом значении — альтернативная формула (максимум + минимум + 2 * цена закрытия) / 4. Влияет на все рассчитываемые уровни поддержки и сопроти
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 LightBlue
#property indicator_color2 Blue
#property indicator_color3 DarkGreen
#property indicator_color4 Red
#property indicator_color5 Magenta

extern int       Formula=0;
int i=1, shift;
double FP=0.0;
double FH=0.0, FL=0.0;
bool result;

double ResBuffer2[];
double ResBuffer[];
double ExtMapBuffer1[];
double SupBuffer[];
double SupBuffer2[];

bool isNewDay(int _shift)
  {

   result=false;
   if (  (TimeHour(Time[_shift])==0)  && (TimeMinute(Time[_shift])==0)   ) result=true;

   return(result);
  }

void GetRSofDay(int _shift)
  {
  int prevDay=TimeDay(Time[_shift+1]);

   i=1;
   while (TimeDay(Time[_shift+i])==prevDay) i++;
   i--;
   FH=High[Highest(NULL,0,MODE_HIGH,i,_shift+1)];
   FL=Low[Lowest(NULL,0,MODE_LOW,i,_shift+1)];
   if (Formula==0) FP=NormalizeDouble((FH+FL+Close[_shift+1])/3.0,Digits); else FP=NormalizeDouble((FH+FL+2*Close[_shift+1])/4.0,Digits);
   ExtMapBuffer1[_shift]=FP;
   ResBuffer[_shift]=NormalizeDouble(FP+(FP-FL),Digits);
   SupBuffer[_shift]=NormalizeDouble(FP-(FH-FP),Digits);
   ResBuffer2[_shift]=NormalizeDouble(FP+(FH-FL),Digits);
   SupBuffer2[_shift]=NormalizeDouble(FP-(FH-FL),Digits);

  }

void CopyLevelsDay(int _shift)
  {
   ExtMapBuffer1[_shift]=ExtMapBuffer1[_shift+1];
   ResBuffer[_shift]=ResBuffer[_shift+1];
   SupBuffer[_shift]=SupBuffer[_shift+1];
   ResBuffer2[_shift]=ResBuffer2[_shift+1];
   SupBuffer2[_shift]=SupBuffer2[_shift+1];
  }

int init()
  {
      // код доступен только после оплаты
   }
   if (Formula!=0)Formula=1;
   string label1=

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

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

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

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

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

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

Стоимость полного кода
263,50₽ ≈ $3.22