pivotcustomtime.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pivotcustomtime.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор Pivot отображает на графике MetaTrader 5 уровни пивотов, линии Камарильи и средние пивоты на основе дневных ценовых данных. Он рассчитывает ключевые уровни поддержки и сопротивления, используя предыдущие дневные максимумы, минимумы и цену закрытия.
Основными вычисляемыми уровнями являются центральный пивот (P), три линии сопротивления (R1–R3) и три линии поддержки (S1–S3). Дополнительно индикатор строит четыре уровня Камарильи (H3, H4, L3, L4) и шесть средних пивотов (M0–M5), которые представляют собой промежуточные значения между основными уровнями.
Отображение каждой группы уровней управляется отдельным переключателем в настройках. Все уровни отрисовываются как горизонтальные линии на графике с текстовыми подписями. Период получения ценовых данных настраивается пользователем.
Настройки программы
| Настройка | Описание |
|---|---|
| pivots | Переключатель включения и выключения отображения линий и подписок основных пивотов на графике. |
| camarilla | Переключатель включения и выключения отображения линий и подписок Камарильи на графике. |
| midpivots | Переключатель включения и выключения отображения линий и подписок средних пивотов на графике. |
| MyPeriod | Таймфрейм для получения ценовых данных, указывается в минутах (например, 1440 для D1, 60 для H1, 240 для H4 и т.д.). |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 EMPTY
extern bool pivots = true;
extern bool camarilla = false;
extern bool midpivots = true;
extern int MyPeriod = PERIOD_D1;
/*+----------------------------------------------------+
MyPeriod = Period in minutes to consideration, could be:
1440 for D1
60 for H1
240 for H4
1 for M1
15 for M15
30 for M30
5 for M5
43200 for MN1
10080 for W1
+-------------------------------------------------------*/
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 today_high=0;
double today_low=0;
double P=0;
double Q=0;
double R1,R2,R3;
double M0,M1,M2,M3,M4,M5;
double S1,S2,S3;
double H4,H3,L4,L3;
double nQ=0;
double nD=0;
double D=0;
double rates_d1[2][6];
double ExtMapBuffer1[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete("R1 Label");
ObjectDelete("R1 Line");
ObjectDelete("R2 Label");
ObjectDelete("R2 Line");
ObjectDelete("R3 Label");
ObjectDelete("R3 Line");
ObjectDelete("S1 Label");
ObjectDelete("S1 Line");
ObjectDelete("S2 Label");
ObjectDelete("S2 Line");
ObjectDelete("S3 Label");
ObjectDelete("S3 Line");
ObjectDelete("P Label");
ObjectDelete("P Line");
ObjectDelete("H4 Label");
ObjectDelete("H4 Line");
ObjectDelete("H3 Label");
ObjectDelete("H3 Line");
ObjectDelete("L3 Label");
ObjectDelete("L3 Line");
ObjectDelete("L4 Label");
ObjectDelete("L4 Line");
ObjectDelete("M5 Label");
ObjectDelete("M5 Line");
ObjectDelete("M4 Label");
ObjectDelete("M4 Line");
ObjectDelete("M3 Label");
ObjectDelete("M3 Line");
ObjectDelete("M2 Label");
ObjectDelete("M2 Line");
ObjectDelete("M1 Label");
ObjectDelete("M1 Line");
ObjectDelete("M0 Label");
ObjectDelete("M0 Line");
return(0);
}
int start()
{
// код доступен только после оплаты
}
if(Period() > 1440)
{
Print("Error - Chart period is greater than 1 day.");
return(-1); // then exit
}
ArrayCopyRates(rates_d1, Symbol(), MyPeriod);
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];
day_high = rates_d1[0][3];
day_low = rates_d1[0][2];
D = (day_high - day_low);
Q = (yesterday_high - yesterday_low);
P = (yesterday_high + yesterday_low + yesterday_close) / 3;
R1 = (2*P)-yesterday_low;
S1 = (2*P)-yesterday_high;
R2 = P+(yesterday_high - yesterday_low);
S2 = P-(yesterday_high - yesterday_low);
H4 = (Q*0.55)+yesterday_close;
H3 = (Q*0.27)+yesterday_close;
R3 = (2*P)+(yesterday_high-(2*yesterday_low));
M5 = (R2+R3)/2;
M4 = (R1+R2)/2;
M3 = (P+R1)/2;
M2 = (P+S1)/2;
M1 = (S1+S2)/2;
S3 = (2*P)-((2* yesterday_high)-yesterday_low);
L3 = yesterday_close-(Q*0.27);
L4 = yesterday_close-(Q*0.55);
M0 = (S2+S3)/2;
if (Q > 5)
{
nQ = Q;
}
else
{
nQ = Q*10000;
}
if (D > 5)
{
nD = D;
}
else
{
nD = D*10000;
}
Comment("High= ",yesterday_high," Previous DaysRange= ",nQ,"\nLow= ",yesterday_low," Current DaysRange= ",nD,"\nClose= ",yesterday_close);
if (pivots==true)
{
if(ObjectFind("R1 label") != 0)
{
ObjectCreate("R1 label", OBJ_TEXT, 0, Time[0], R1);
ObjectSetText("R1 label", " R1", 8, "Arial", EMPTY);
}
else
{
ObjectMove("R1 label", 0, Time[0], R1);
}
if(ObjectFind("R2 label") != 0)
{
ObjectCreate("R2 label", OBJ_TEXT, 0, Time[20], R2);
ObjectSetText("R2 label", " R2", 8, "Arial", EMPTY);
}
else
{
ObjectMove("R2 label", 0, Time[20], R2);
}
if(ObjectFind("R3 label") != 0)
{
ObjectCreate("R3 label", OBJ_TEXT, 0, Time[20], R3);
ObjectSetText("R3 label", " R3", 8, "Arial", EMPTY);
}
else
{
ObjectMove("R3 label", 0, Time[20], R3);
}
if(ObjectFind("P label") != 0)
{
ObjectCreate("P label", OBJ_TEXT, 0, Time[0], P);
ObjectSetText("P label", "Pivot " +DoubleToStr(P,4), 8, "Arial",
EMPTY);
}
else
{
ObjectMove("P label", 0, Time[0], P);
}
if(ObjectFind("S1 label") != 0)
{
ObjectCreate("S1 label", OBJ_TEXT, 0, Time[0], S1);
ObjectSetText("S1 label", "S1", 8, "Arial", EMPTY);
}
else
{
ObjectMove("S1 label", 0, Time[0], S1);
}
if(ObjectFind("S2 label") != 0)
{
ObjectCreate("S2 label", OBJ_TEXT, 0, Time[20], S2);
ObjectSetText("S2 label", "S2", 8, "Arial", EMPTY);
}
else
{
ObjectMove("S2 label", 0, Time[20], S2);
}
if(ObjectFind("S3 label") != 0)
{
ObjectCreate("S3 label", OBJ_TEXT, 0, Time[20], S3);
ObjectSetText("S3 label", "S3", 8, "Arial", EMPTY);
}
else
{
ObjectMove("S3 label", 0, Time[20], S3);
}
if(ObjectFind("S1 line") != 0)
{
ObjectCreate("S1 line", OBJ_HLINE, 0, Time[40], S1);
ObjectSet("S1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("S1 line", OBJPROP_COLOR, MidnightBlue);
}
else
{
ObjectMove("S1 line", 0, Time[40], S1);
}
if(ObjectFind("S2 line") != 0)
{
ObjectCreate("S2 line", OBJ_HLINE, 0, Time[40], S2);
ObjectSet("S2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("S2 line", OBJPROP_COLOR, MidnightBlue);
}
else
{
ObjectMove("S2 line", 0, Time[40], S2);
}
if(ObjectFind("S3 line") != 0)
{
ObjectCreate("S3 line", OBJ_HLINE, 0, Time[40], S3);
ObjectSet("S3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("S3 line", OBJPROP_COLOR, MidnightBlue);
}
else
{
ObjectMove("S3 line", 0, Time[40], S3);
}
if(ObjectПоказано первые 50% кода (символов: 9282)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.