camarilla_zones_02.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.