multi pivots.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «multi pivots.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор отображает на графике несколько систем дневных опорных уровней (пивотов), используя данные предыдущей торговой сессии. Для каждой системы рисуются горизонтальные линии и текстовые метки с названиями уровней. Пользователь может включать или отключать отдельные системы через настройки.
Индикатор считывает дневные данные цены (открытие, максимум, минимум, закрытие) и рассчитывает наборы уровней для выбранных типов пивотов. Обновление происходит при появлении нового бара и при смене торгового дня.
Работает только на таймфреймах вплоть до дневного включительно. При выборе периода крупнее дневного индикатор выводит сообщение об ошибке и прекращает работу. Взаимодействие с графиком осуществляется средствами объектов MetaTrader — горизонтальные линии и текстовые подписи.
Настройки программы
| Настройка | Описание |
|---|---|
| Show_Woodies_Pivots | Включает или отключает отображение системы опорных уровней Вуди на графике. |
| Show_Camarilla_Pivots | Включает или отключает отображение системы опорных уровней Камарилла на графике. |
| Show_Demark_Pivots | Включает или отключает отображение системы опорных уровней Демарк на графике. |
| Show_Standard_Pivots | Включает или отключает отображение стандартных опорных уровней на графике. |
Поиск по коду файла
#property indicator_chart_window
extern int Show_Woodies_Pivots = 1; // 1 = Yes, 0 = No
extern int Show_Camarilla_Pivots = 1; // 1 = Yes, 0 = No
extern int Show_Demark_Pivots = 1; // 1 = Yes, 0 = No
extern int Show_Standard_Pivots = 0; // 1 = Yes, 0 = No
datetime prevtime=0;
datetime prev_day=0;
datetime cur_day=0;
double rates_d1[2][6];
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;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
double r2=0;
double r1=0;
double p=0;
double s1=0;
double s2=0;
double sr3=0;
double sr2=0;
double sr1=0;
double sp=0;
double ss1=0;
double ss2=0;
double ss3=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 D1=0.091667;
double D2=0.183333;
double D3=0.2750;
double D4=0.55;
double dr=0;
double ds=0;
double x=0;
string ch3_text="";
if(Period() > 1440)
{
Print("Error - Chart period is greater than 1 day.");
return(-1); // then exit
}
if(prevtime == Time[0])return(0); // exit unless new bar
prevtime = Time[0]; // reset to current bar time
cur_day = Day();
if(prev_day != cur_day)
{
ArrayCopyRates(rates_d1, Symbol(), PERIOD_D1);
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];
prev_day = cur_day;
}
if(Show_Standard_Pivots == 1)
{
sp = (yesterday_high+yesterday_low+yesterday_close+today_open)/4;
sr1 = (2*sp)-yesterday_low;
ss1 = (2*sp)-yesterday_high;
sr2 = sp+(yesterday_high-yesterday_low);
ss2 = sp-(yesterday_high+yesterday_low);
sr3 = (2*sp)-yesterday_low-yesterday_low+yesterday_high;
ss3 = (2*sp)-yesterday_high-yesterday_high+yesterday_low;
if(ObjectFind("SR1 label") != 0)
{
ObjectCreate("SR1 label", OBJ_TEXT, 0, Time[20], sr1);
ObjectSetText("SR1 label", "R1 "+DoubleToStr(sr1,4), 8, "Arial", White);
}
else
{
ObjectSetText("SR1 label", "R1 "+DoubleToStr(sr1,4), 8, "Arial", White);
ObjectMove("SR1 label", 0, Time[20], sr1);
}
if(ObjectFind("SR2 label") != 0)
{
ObjectCreate("SR2 label", OBJ_TEXT, 0, Time[20], sr2);
ObjectSetText("SR2 label", "R2 "+DoubleToStr(sr2,4), 8, "Arial", White);
}
else
{
ObjectSetText("SR2 label", "R2 "+DoubleToStr(sr2,4), 8, "Arial", White);
ObjectMove("SR2 label", 0, Time[20], sr2);
}
if(ObjectFind("SR3 label") != 0)
{
ObjectCreate("SR3 label", OBJ_TEXT, 0, Time[20], sr3);
ObjectSetText("SR3 label", "R3 "+DoubleToStr(sr3,4), 8, "Arial", White);
}
else
{
ObjectSetText("SR3 label", "R3 "+DoubleToStr(sr3,4), 8, "Arial", White);
ObjectMove("SR3 label", 0, Time[20], sr3);
}
if(ObjectFind("SP label") != 0)
{
ObjectCreate("SP label", OBJ_TEXT, 0, Time[20], sp);
ObjectSetText("SP label", "Pivot "+DoubleToStr(sp,4), 8, "Arial", White);
}
else
{
ObjectSetText("SP label", "Pivot "+DoubleToStr(sp,4), 8, "Arial", White);
ObjectMove("SP label", 0, Time[20], sp);
}
if(ObjectFind("SS1 label") != 0)
{
ObjectCreate("SS1 label", OBJ_TEXT, 0, Time[20], ss1);
ObjectSetText("SS1 label", "S1 "+DoubleToStr(ss1,4), 8, "Arial", White);
}
else
{
ObjectSetText("SS1 label", "S1 "+DoubleToStr(ss1,4), 8, "Arial", White);
ObjectMove("SS1 label", 0, Time[20], ss1);
}
if(ObjectFind("SS2 label") != 0)
{
ObjectCreate("SS2 label", OBJ_TEXT, 0, Time[20], ss2);
ObjectSetText("S2 label", "S2 "+DoubleToStr(ss2,4), 8, "Arial", White);
}
else
{
ObjectSetText("SS2 label", "S2 "+DoubleToStr(ss2,4), 8, "Arial", White);
ObjectMove("SS2 label", 0, Time[20], ss2);
}
if(ObjectFind("SS3 label") != 0)
{
ObjectCreate("SS3 label", OBJ_TEXT, 0, Time[20], ss3);
ObjectSetText("SS3 label", "S3 "+DoubleToStr(ss3,4), 8, "Arial", White);
}
else
{
ObjectSetText("SS3 label", "S3 "+DoubleToStr(ss3,4), 8, "Arial", White);
ObjectMove("SS3 label", 0, Time[20], ss3);
}
if(ObjectFind("SS1 line") != 0)
{
ObjectCreate("SS1 line", OBJ_HLINE, 0, Time[40], ss1);
ObjectSet("SS1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SS1 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("SS1 line", 0, Time[40], ss1);
}
if(ObjectFind("SS2 line") != 0)
{
ObjectCreate("SS2 line", OBJ_HLINE, 0, Time[40], ss2);
ObjectSet("SS2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SS2 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("SS2 line", 0, Time[40], ss2);
}
if(ObjectFind("SS3 line") != 0)
{
ObjectCreate("SS3 line", OBJ_HLINE, 0, Time[40], ss3);
ObjectSet("SS3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SS3 line", OBJPROP_COLOR, LimeGreen);
}
else
{
ObjectMove("SS3 line", 0, Time[40], ss3);
}
if(ObjectFind("SP line") != 0)
{
ObjectCreate("SP line", OBJ_HLINE, 0, Time[40], sp);
ObjectSet("SP line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SP line", OBJPROP_COLOR, Magenta);
}
else
{
ObjectMove("SP line", 0, Time[40], sp);
}
if(ObjectFind("SR1 line") != 0)
{
ObjectCreate("SR1 line", OBJ_HLINE, 0, Time[40], sr1);
ObjectSet("SR1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SR1 line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("SR1 line", 0, Time[40], sr1);
}
if(ObjectFind("SR2 line") != 0)
{
ObjectCreate("SR2 line", OBJ_HLINE, 0, Time[40], sr2);
ObjectSet("SR2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SR2 line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("SR2 line", 0, Time[40], sr2);
}
if(ObjectFind("SR3 line") != 0)
{
ObjectCreate("SR3 line", OBJ_HLINE, 0, Time[40], sr3);
ObjectSet("SR3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("SR3 line", OBJPROP_COLOR, OrangeRed);
}
else
{
ObjectMove("SR3 line", 0, Time[40], sr3);
}
}
if(Show_Woodies_Pivots == 1)
{
p = (yesterday_high + yesterday_low + today_open + today_open) / 4;// Woodies Pivot
r1 = (2*p)-yesterday_low;
s1 = (2*p)-yesterday_high;
r2 = p+(yesterday_high - yesterday_low);
s2 = p-(yesterday_high - yesterday_low);
if(ObjectFind("R1 label") != 0)
{
ObjectCreate("R1 label", OBJ_TEXT, 0, Time[20], r1);
ObjectSetText("R1 label", "Woodies R1 "+DoubleToStr(r1,4), 8, "Arial", White);
}
else
{
ObjectSetText("R1 label", "Woodies R1 "+DoubleToStr(r1,4), 8, "Arial", White);
ObjectMove("R1 label", 0, Time[20], r1);
}
if(ObjectFind("R2 label") != 0)
{
ObjectCreate("R2 label", OBJ_TEXT, 0, Time[20], r2);
ObjectSetText("R2 label", "Woodies R2 "+DoubleToStr(r2,4), 8, "Arial", WhiПоказано первые 50% кода (символов: 10935)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.