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

camarilla_zones_02.mq5

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

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

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

О программе

Индикатор отображает на графике уровни опорных точек: классические пивоты, уровни Камариллы и промежуточные пивоты. Для расчётов используются дневные ценовые данные — открытие, максимум, минимум и закрытие предыдущего торгового дня, а также текущие дневные экстремумы. Часовой пояс корректируется настраиваемым смещением.

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

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

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

НастройкаОписание
GMTshift Смещение GMT — Целочисленный параметр для корректировки смещения часового пояса при расчёте дневных цен
from От бара — Целочисленный параметр, задающий смещение бара для расчёта ценовых уровней
pivots Пивоты — Логический переключатель отображения классических пивотов на графике
camarilla Камарилла — Логический переключатель отображения уровней Камариллы на графике
midpivots Промежуточные пивоты — Логический переключатель отображения промежуточных пивотов на графике
Получить полный код

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

#property indicator_chart_window

extern int  GMTshift=0;
extern int  from=0;
extern bool pivots = false;
extern bool camarilla = true;
extern bool midpivots = false;

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

int deinit()
  {

ObjectDelete("0 R1 Label"); 
ObjectDelete("0 R1 Line");
ObjectDelete("0 R2 Label");
ObjectDelete("0 R2 Line");
ObjectDelete("0 R3 Label");
ObjectDelete("0 R3 Line");
ObjectDelete("0 S1 Label");
ObjectDelete("0 S1 Line");
ObjectDelete("0 S2 Label");
ObjectDelete("0 S2 Line");
ObjectDelete("0 S3 Label");
ObjectDelete("0 S3 Line");
ObjectDelete("0 P Label");
ObjectDelete("0 P Line");
ObjectDelete("0 H5 Label");
ObjectDelete("0 H5 Line");
ObjectDelete("0 H4 Label");
ObjectDelete("0 H4 Line");
ObjectDelete("0 H3 Label");
ObjectDelete("0 H3 Line");
ObjectDelete("0 L3 Label");
ObjectDelete("0 L3 Line");
ObjectDelete("0 L4 Label");
ObjectDelete("0 L4 Line");
ObjectDelete("0 L5 Label");
ObjectDelete("0 L5 Line");
ObjectDelete("0 M5 Label");
ObjectDelete("0 M5 Line");
ObjectDelete("0 M4 Label");
ObjectDelete("0 M4 Line");
ObjectDelete("0 M3 Label");
ObjectDelete("0 M3 Line");
ObjectDelete("0 M2 Label");
ObjectDelete("0 M2 Line");
ObjectDelete("0 M1 Label");
ObjectDelete("0 M1 Line");
ObjectDelete("0 M0 Label");
ObjectDelete("0 M0 Line");

   return(0);
  }

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

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;
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 P=0,Q=0,S=0,R=0,M2=0,M3=0,S1=0,R1=0,M1=0,M4=0,S2=0,R2=0,M0=0,M5=0,S3=0,R3=0,L3=0,L4=0,H3=0,H4=0,nQ=0,nD=0,D=0;
double ch5=0;
double cl5=0;

double D1=0.091667;
double D2=0.183333;
double D3=0.2750;
double D4=0.55;

int cnt=720;
double cur_day=0;
double prev_day=0;

double rates_d1[2][6];

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

datetime time;
int b,b_ = TimeDayOfWeek(Time[from]);

int m;
if(b_==1){
   b = iBarShift(NULL,PERIOD_D1,Time[from])+2;
   time = iTime(NULL,PERIOD_D1,b)-(GMTshift*3600);
   }
else{
   time = Time[from]-(GMTshift*3600);
   b = iBarShift(NULL,PERIOD_D1,Time[from])+1;
   }

today_open = NormalizeDouble(iOpen(NULL,PERIOD_D1,b),5);
yesterday_close = NormalizeDouble(iClose(NULL,PERIOD_D1,b),5);
yesterday_high = NormalizeDouble(iHigh(NULL,PERIOD_D1,b),5);
yesterday_low = NormalizeDouble(iLow(NULL,PERIOD_D1,b),5);

day_high = NormalizeDouble(iHigh(NULL,PERIOD_D1,Highest(NULL,PERIOD_D1,MODE_HIGH,3,b)),5);
day_low  = NormalizeDouble(iLow(NULL,PERIOD_D1,Lowest(NULL,PERIOD_D1,MODE_LOW,3,b)),5);

D = (day_high - day_low);
Q = (yesterday_high - yesterday_low);

P = (yesterday_high + yesterday_low + yesterday_close)/3;//Pivot
R1 = (2*P)-yesterday_low;
S1 = (2*P)-yesterday_high;
R2 = P-S1+R1;
S2 = P-R1+S1;
R3 = (2*P)+(yesterday_high-(2*yesterday_low));
S3 = (2*P)-((2* yesterday_high)-yesterday_low);
M0 = (S2+S3)/2;
M1 = (S1+S2)/2;
M2 = (P+S1)/2;
M3 = (P+R1)/2;
M4 = (R1+R2)/2;
M5 = (R2+R3)/2;

/*
double RANGE = bh-bl;
Print(RANGE,":",bc);
double H4_ = RANGE*1.1 / 2  + bc;
double H3_ = RANGE*1.1 / 4  + bc;
double L3_ = bc - RANGE*1.1 / 4;
double L4_ = bc - RANGE*1.1 / 2;
*/

ch5 = (yesterday_high/yesterday_low)*yesterday_close;
ch4 = ((yesterday_high - yesterday_low)* D4) + yesterday_close;
ch3 = ((yesterday_high - yesterday_low)* D3) + yesterday_close;

cl3 = yesterday_close - ((yesterday_high - yesterday_low)*(D3));
cl4 = yesterday_close - ((yesterday_high - yesterday_low)*(D4));
cl5 = yesterday_close - (ch5 - yesterday_close);

if (Q > 5) 
{
	nQ = Q;
}
else
{
	nQ = Q*10000;
}

if (D > 5)
{
	nD = D;
}
else
{
	nD = D*10000;
}

 if (pivots==true)
   {
if(ObjectFind("0 R1 label") != 0)
      {
      ObjectCreate("0 R1 label", OBJ_TEXT, 0, Time[from+0], R1);
      ObjectSetText("0 R1 label", " R1", 8, "Arial", EMPTY);
      }
      else
      {
      ObjectMove("0 R1 label", 0, Time[from+0], R1);
      }

      if(ObjectFind("0 R2 label") != 0)
      {
      ObjectCreate("0 R2 label", OBJ_TEXT, 0, Time[from+20], R2);
      ObjectSetText("0 R2 label", " R2", 8, "Arial", EMPTY);
      }
      else
      {
      ObjectMove("0 R2 label", 0, Time[from+20], R2);
      }

      if(ObjectFind("0 R3 label") != 0)
      {
      ObjectCreate("0 R3 label", OBJ_TEXT, 0, Time[from+20], R3);
      ObjectSetText("0 R3 label", " R3", 8, "Arial", EMPTY);
      }
      else
      {
      ObjectMove("0 R3 label", 0, Time[from+20], R3);
      }

      if(ObjectFind("0 P label") != 0)
      {
      ObjectCreate("0 P label", OBJ_TEXT, 0, Time[from+0], P);
      ObjectSetText("0 P label", "Pivot  " +DoubleToStr(P,4), 8, "Arial", EMPTY);
      }
      else
      {
      ObjectMove("0 P label", 0, Time[0], P);
      }

      if(ObjectFind("0 S1 label") != 0)
      {
      ObjectCreate("0 S1 label", OBJ_TEXT, 0, Time[from+0], S1);
      ObjectSetText("0 S1 label", "S1", 8, "Arial", EMPTY);
      }
      else
      {
      ObjectMove("0 S1 label", 0, Time[from+0], S1);
      }

      if(ObjectFind("0 S2 label") != 0)
      {
      ObjectCreate("0 S2 label", OBJ_TEXT, 0, Time[from+20], S2);
      ObjectSetText("0 S2 label", "S2", 8, "Arial", EMPTY);
      }
      else
      {
      ObjectMove("0 S2 label", 0, Time[from+20], S2);
      }

      if(ObjectFind("0 S3 label") != 0)
      {
      ObjectCreate("0 S3 label", OBJ_TEXT, 0, Time[from+20], S3);
      ObjectSetText("0 S3 label", "S3", 8, "Arial", EMPTY);
      }
      else
      {
      ObjectMove("0 S3 label", 0, Time[from+20], S3);
      }

      if(ObjectFind("0 S1 line") != 0)
      {
      ObjectCreate("0 S1 line", OBJ_HLINE, 0, Time[from+40], S1);
      ObjectSet("0 S1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
      ObjectSet("0 S1 line", OBJPROP_COLOR, MidnightBlue);
      }
      else
      {
      ObjectMove("0 S1 line", 0, Time[from+40], S1);
      }

      if(ObjectFind("0 S2 line") != 0)
      {
      ObjectCreate("0 S2 line", OBJ_HLINE, 0, Time[from+40], S2);
      ObjectSet("0 S2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
      ObjectSet("0 S2 line", OBJPROP_COLOR, MidnightBlue);
      }
      else
      {
      ObjectMove("0 S2 line", 0, Time[from+40], S2);
      }

      if(ObjectFind("0 S3 line") != 0)
      {
      ObjectCreate("0 S3 line", OBJ_HLINE, 0, Time[from+40], S3);
      ObjectSet("0 S3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
      ObjectSet("0 S3 line", OBJPROP_COLOR, MidnightBlue);
      }
      else
      {
      ObjectMove("0 S3 line", 0, Time[from+40], S3);
      }

      if(ObjectFind("0 P line") != 0)
      {
      ObjectCreate("0 P line", OBJ_HLINE, 0, Time[from+40], P);
      ObjectSet("0 P line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("0 P line", OBJPROP_COLOR, Lime);
      }
      else
      {
      ObjectMove("0 P line", 0, Time[from+40], P);
      }

      if(ObjectFind("0 R1 line") != 0)
      {
      ObjectCreate("0 R1 line", OBJ_HLINE, 0, Time[from+40], R1);
      ObjectSet("0 R1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
      ObjectSet("0 R1 line", OBJPROP_COLOR, FireBrick);
      }
      else
      {
      ObjectMove("0 R1 line", 0, Time[from+40], R1);
      }

      if(ObjectFind("0 R2 line") != 0)
      {
      ObjectCreate("0 R2 line", OBJ_HLINE, 0, Time[from+40], R2);
      ObjectSet("0 R2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
      ObjectSet("0 R2 line", OBJPROP_COLOR, FireBrick);
      }
      else
      {
      ObjectMove("0 R2 line", 0, Time[from+40], R2);
      }

      if(ObjectFind("0 R3 line") != 0)
      {
      ObjectCreate("0 R3 line", OBJ_HLINE, 0, Time[from+40], R3);
      ObjectSet("0 R3 l

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

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

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

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

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

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

Стоимость полного кода
1 136,40₽ ≈ $13.89