AutoPivotIndicator
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «autopivotindicator_ver5.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
AutoPivotIndicator — индикатор для MetaTrader 4, отображающий на графике горизонтальные уровни пивотов и поддержек/сопротивлений дневного, недельного и месячного таймфреймов. Уровни рассчитываются на основе данных предыдущего периода (максимум, минимум, закрытие) и обновляются при каждом тике.
Индикатор поддерживает отдельное включение и выключение дневных, недельных и месячных уровней, а также уровней поддержки, сопротивления и промежуточных (mid) уровней. Дополнительно предусмотрен переключатель для корректной обработки данных воскресного бара.
Все элементы отрисовки (горизонтальные линии и текстовые метки) создаются как объекты графика. Цвет каждого типа уровней настраивается независимо. При деинициализации все созданные объекты удаляются с графика.
Настройки программы
| Настройка | Описание |
|---|---|
| Use_Sunday_Data | Использовать данные воскресенья — Определяет, использовать ли данные воскресного бара при расчёте дневных пивотов. При значении False берутся данные за два бара назад. |
| Daily | Дневные уровни — Включает или отключает отображение дневных уровней пивотов и поддержки/сопротивления на графике. |
| Daily_SR_Levels | Дневные уровни поддержки и сопротивления — Включает или отключает отображение дневных уровней поддержки и сопротивления (S1–S3, R1–R3). |
| Daily_Mid_Levels | Промежуточные дневные уровни — Включает или отключает отображение промежуточных дневных уровней (DM1–DM6). |
| Weekly | Недельные уровни — Включает или отключает отображение недельных уровней пивотов и поддержки/сопротивления на графике. |
| Weekly_SR_Levels | Недельные уровни поддержки и сопротивления — Включает или отключает отображение недельных уровней поддержки и сопротивления (S1–S3, R1–R3). |
| Weekly_Mid_Levels | Промежуточные недельные уровни — Включает или отключает отображение промежуточных недельных уровней (WM1–WM6). |
| Monthly | Месячные уровни — Включает или отключает отображение месячных уровней пивотов и поддержки/сопротивления на графике. |
| Monthly_SR_Levels | Месячные уровни поддержки и сопротивления — Включает или отключает отображение месячных уровней поддержки и сопротивления (S1–S3, R1–R3). |
| Monthly_Mid_Levels | Промежуточные месячные уровни — Включает или отключает отображение промежуточных месячных уровней (MM1–MM6). |
| Daily_Pivot | Цвет дневного пивота — Задаёт цвет линии и метки дневного пивота. |
| Daily_S_Levels | Цвет дневных уровней поддержки — Задаёт цвет линий и меток дневных уровней поддержки (S1–S3). |
| Daily_R_Levels | Цвет дневных уровней сопротивления — Задаёт цвет линий и меток дневных уровней сопротивления (R1–R3). |
| Daily_Mid_Level | Цвет промежуточных дневных уровней — Задаёт цвет промежуточных дневных уровней (mid-pivots). |
| Weekly_Pivot | Цвет недельного пивота — Задаёт цвет линии и метки недельного пивота. |
| Weekly_S_Levels | Цвет недельных уровней поддержки — Задаёт цвет линий и меток недельных уровней поддержки (S1–S3). |
| Weekly_R_Levels | Цвет недельных уровней сопротивления — Задаёт цвет линий и меток недельных уровней сопротивления (R1–R3). |
| Weekly_Mid_Level | Цвет промежуточных недельных уровней — Задаёт цвет промежуточных недельных уровней (mid-pivots). |
| Monthly_Pivot | Цвет месячного пивота — Задаёт цвет линии и метки месячного пивота. |
| Monthly_S_Levels | Цвет месячных уровней поддержки — Задаёт цвет линий и меток месячных уровней поддержки (S1–S3). |
| Monthly_R_Levels | Цвет месячных уровней сопротивления — Задаёт цвет линий и меток месячных уровней сопротивления (R1–R3). |
| Monthly_Mid_Level | Цвет промежуточных месячных уровней — Задаёт цвет промежуточных месячных уровней (mid-pivots). |
Поиск по коду файла
#property indicator_chart_window
extern bool Use_Sunday_Data = True;
extern bool Daily = True;
extern bool Daily_SR_Levels = True;
extern bool Daily_Mid_Levels = False;
extern bool Weekly = True;
extern bool Weekly_SR_Levels = False;
extern bool Weekly_Mid_Levels = False;
extern bool Monthly = True;
extern bool Monthly_SR_Levels = False;
extern bool Monthly_Mid_Levels= False;
extern color Daily_Pivot = Blue;
extern color Daily_S_Levels = LimeGreen;
extern color Daily_R_Levels = Red;
extern color Daily_Mid_Level = LightSalmon;
extern color Weekly_Pivot = Magenta;
extern color Weekly_S_Levels = SteelBlue;
extern color Weekly_R_Levels = Peru;
extern color Weekly_Mid_Level = LightPink;
extern color Monthly_Pivot = Gray;
extern color Monthly_S_Levels = Orange;
extern color Monthly_R_Levels = Blue;
extern color Monthly_Mid_Level = LightSalmon;
double YesterdayHigh;
double YesterdayLow;
double YesterdayClose;
double Day_Price[][6];
double Pivot,S1,S2,S3,R1,R2,R3;
double DM1,DM2,DM3,DM4,DM5,DM6; //daily mid-pivots
double WeekHigh;
double WeekLow;
double WeekClose;
double Weekly_Price[][6];
double WeekPivot,WS1,WS2,WS3,WR1,WR2,WR3;
double WM1,WM2,WM3,WM4,WM5,WM6; //weekly mid-pivots
double MonthHigh;
double MonthLow;
double MonthClose;
double Month_Price[][6];
double MonthPivot,MS1,MS2,MS3,MR1,MR2,MR3;
double MM1,MM2,MM3,MM4,MM5,MM6; //monthly mid-pivots
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete("PivotLine");
ObjectDelete("R1_Line");
ObjectDelete("R2_Line");
ObjectDelete("R3_Line");
ObjectDelete("S1_Line");
ObjectDelete("S2_Line");
ObjectDelete("S3_Line");
ObjectDelete("DM1_Line");
ObjectDelete("DM2_Line");
ObjectDelete("DM3_Line");
ObjectDelete("DM4_Line");
ObjectDelete("DM5_Line");
ObjectDelete("DM6_Line");
ObjectDelete("PivotLabel");
ObjectDelete("R1_Label");
ObjectDelete("R2_Label");
ObjectDelete("R3_Label");
ObjectDelete("S1_Label");
ObjectDelete("S2_Label");
ObjectDelete("S3_Label");
ObjectDelete("DM1_Label");
ObjectDelete("DM2_Label");
ObjectDelete("DM3_Label");
ObjectDelete("DM4_Label");
ObjectDelete("DM5_Label");
ObjectDelete("DM6_Label");
ObjectDelete("WeekPivotLine");
ObjectDelete("WR1_Line");
ObjectDelete("WR2_Line");
ObjectDelete("WR3_Line");
ObjectDelete("WS1_Line");
ObjectDelete("WS2_Line");
ObjectDelete("WS3_Line");
ObjectDelete("WM1_Line");
ObjectDelete("WM2_Line");
ObjectDelete("WM3_Line");
ObjectDelete("WM4_Line");
ObjectDelete("WM5_Line");
ObjectDelete("WM6_Line");
ObjectDelete("WeekPivotLabel");
ObjectDelete("WR1_Label");
ObjectDelete("WR2_Label");
ObjectDelete("WR3_Label");
ObjectDelete("WS1_Label");
ObjectDelete("WS2_Label");
ObjectDelete("WS3_Label");
ObjectDelete("WM1_Label");
ObjectDelete("WM2_Label");
ObjectDelete("WM3_Label");
ObjectDelete("WM4_Label");
ObjectDelete("WM5_Label");
ObjectDelete("WM6_Label");
ObjectDelete("MonthPivotLine");
ObjectDelete("MR1_Line");
ObjectDelete("MR2_Line");
ObjectDelete("MR3_Line");
ObjectDelete("MS1_Line");
ObjectDelete("MS2_Line");
ObjectDelete("MS3_Line");
ObjectDelete("MM1_Line");
ObjectDelete("MM2_Line");
ObjectDelete("MM3_Line");
ObjectDelete("MM4_Line");
ObjectDelete("MM5_Line");
ObjectDelete("MM6_Line");
ObjectDelete("MonthPivotLabel");
ObjectDelete("MR1_Label");
ObjectDelete("MR2_Label");
ObjectDelete("MR3_Label");
ObjectDelete("MS1_Label");
ObjectDelete("MS2_Label");
ObjectDelete("MS3_Label");
ObjectDelete("MM1_Label");
ObjectDelete("MM2_Label");
ObjectDelete("MM3_Label");
ObjectDelete("MM4_Label");
ObjectDelete("MM5_Label");
ObjectDelete("MM6_Label");
return(0);
}
int start()
{
// код доступен только после оплаты
}
ArrayCopyRates(Day_Price,(Symbol()), 1440);
YesterdayHigh = Day_Price[1][3];
YesterdayLow = Day_Price[1][2];
YesterdayClose = Day_Price[1][4];
Pivot = ((YesterdayHigh + YesterdayLow + YesterdayClose)/3);
R1 = (2*Pivot)-YesterdayLow;
S1 = (2*Pivot)-YesterdayHigh;
R2 = Pivot+(R1-S1);
S2 = Pivot-(R1-S1);
R3 = (YesterdayHigh + (2*(Pivot-YesterdayLow)));
S3 = (YesterdayLow - (2*(YesterdayHigh-Pivot)));
DM1 = S3 + ((S2-S3) / 2);
DM2 = S2 + ((S1-S2) / 2);
DM3 = S1 + ((Pivot-S1) / 2);
DM4 = Pivot + ((R1-Pivot) / 2);
DM5 = R1 + ((R2-R1) / 2);
DM6 = R2 + ((R3-R2) / 2);
if (Use_Sunday_Data == false)
{
Comment("Sunday Bar ignored","");
while (DayOfWeek() == 1)
{
Comment("Not using Sunday Data for Daily Pivots. ",
" Today is Monday");
YesterdayHigh = Day_Price[2][3];
YesterdayLow = Day_Price[2][2];
YesterdayClose = Day_Price[2][4];
Pivot = ((YesterdayHigh + YesterdayLow + YesterdayClose)/3);
R1 = (2*Pivot)-YesterdayLow;
S1 = (2*Pivot)-YesterdayHigh;
R2 = Pivot+(R1-S1);
S2 = Pivot-(R1-S1);
R3 = (YesterdayHigh + (2*(Pivot-YesterdayLow)));
S3 = (YesterdayLow - (2*(YesterdayHigh-Pivot)));
DM1 = S3 + ((S2-S3) / 2);
DM2 = S2 + ((S1-S2) / 2);
DM3 = S1 + ((Pivot-S1) / 2);
DM4 = Pivot + ((R1-Pivot) / 2);
DM5 = R1 + ((R2-R1) / 2);
DM6 = R2 + ((R3-R2) / 2);
break;
}
}
ArrayCopyRates(Weekly_Price, Symbol(), 10080);
WeekHigh = Weekly_Price[1][3];
WeekLow = Weekly_Price[1][2];
WeekClose = Weekly_Price[1][4];
WeekPivot = ((WeekHigh + WeekLow + WeekClose)/3);
WR1 = (2*WeekPivot)-WeekLow;
WS1 = (2*WeekPivot)-WeekHigh;
WR2 = WeekPivot+(WR1-WS1);
WS2 = WeekPivot-(WR1-WS1);
WS3 = (WeekLow - (2*(WeekHigh-WeekPivot)));
WR3 = (WeekHigh + (2*(WeekPivot-WeekLow)));
WM1 = WS3 + ((WS2-WS3) / 2);
WM2 = WS2 + ((WS1-WS2) / 2);
WM3 = WS1 + ((WeekPivot-WS1) / 2);
WM4 = WeekPivot + ((WR1-WeekPivot) / 2);
WM5 = WR1 + ((WR2-WR1) / 2);
WM6 = WR2 + ((WR3-WR2) / 2);
ArrayCopyRates(Month_Price, Symbol(), 43200);
MonthHigh = Month_Price[1][3];
MonthLow = Month_Price[1][2];
MonthClose = Month_Price[1][4];
MonthPivot = ((MonthHigh + MonthLow + MonthClose)/3);
MR1 = (2*MonthPivot)-MonthLow;
MS1 = (2*MonthPivot)-MonthHigh;
MR2 = MonthPivot+(MR1-MS1);
MS2 = MonthPivot-(MR1-MS1);
MS3 = (MonthLow - (2*(MonthHigh-MonthPivot)));
MR3 = (MonthHigh + (2*(MonthPivot-MonthLow)));
MM1 = MS3 + ((MS2-MS3) / 2);
MM2 = MS2 + ((MS1-MS2) / 2);
MM3 = MS1 + ((MonthPivot-MS1) / 2);
MM4 = MonthPivot + ((MR1-MonthPivot) / 2);
MM5 = MR1 + ((MR2-MR1) / 2);
MM6 = MR2 + ((MR3-MR2) / 2);
if (Daily==true)
{
TimeToStr(CurTime());
if(ObjectFind("PivotLine") != 0)
{
ObjectCreate("PivotLine", OBJ_HLINE,0, CurTime(),Pivot);
ObjectSet("PivotLine", OBJPROP_COLOR, Daily_Pivot);
ObjectSet("PivotLine", OBJPROP_STYLE, STYLE_DASH);
}
else
{
ObjectMove("PivotLine", 0, Time[20], Pivot);
}
if(ObjectFind("PivotLabel") != 0)
{
ObjectCreate("PivotLabel", OBJ_TEXT, 0, Time[20], Pivot);
ObjectSetText("PivotLabel", ("Daily Pivot"), 8, "Arial", Daily_Pivot);
}
else
{
ObjectMove("PivotLabel", 0, Time[20], Pivot);
}
ObjectsRedraw();
if (Daily_SR_Levels==true)
{
if(ObjectFind("R1_Line") != 0)
{
ObjectCreate("R1_Line", OBJ_HLINE,0, CurTime(),R1);
ObjectSet("R1_Line", OBJPROP_COLOR, Daily_R_Levels);
ObjectSet("R1_Line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
}
else
{
ObjectMove("R1_Line", 0, Time[20], R1);
}
if(ObjectFind("R1_Label") != 0)
{
ObjectCreate("R1_Label", OBJ_TEXT, 0, Time[20], R1);
ObjectSetText("R1_Label", "Daily R1", 8, "Arial", Daily_R_Levels);
}
else
{
ObjectMove("R1_Label", 0, Time[20], R1);
}
if(ObjectFind("R2_Line") != 0)
{
ObjectCreate("R2_Line", OBJ_HLINE,0, CurTime(),R2);
ObjectSet("R2_Line", OBJPROP_COLOR, Daily_R_Levels);
ObjectSet("R2_Line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
}
else
{
ObjectMove("R2_Line", 0, Time[20], R2);
}
if(ObjectFind("R2_Label") != 0)
{
ObjectCreate("R2_Label", OBJ_TEXT, 0, Time[20], R2);
ObjectSetText("R2_Label", "Daily R2", 8, "Arial", Daily_R_Levels);
}
else
{
ObjectMove("R2_Label", 0, Time[20], R2);
}
if(ObjectFind("R3_Line") != 0)
{
ObjectCreate("R3_Line", OBJ_HLINE,0, CurTime(),R3);
ObjectSet("R3_Line", OBJPROP_COLOR, Daily_R_Levels);
ObjectSet("R3_Line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
}
else
{
ObjectMove("R3_Line", 0, Time[20], R3);
}
if(ObjectFind("R3_Label") != 0)
{
ObjectCreate("R3_Label", OBJ_TEXT, 0, Time[20], R3);
ObjectSetText("R3_Label", "Daily R3", 8, "Arial", Daily_R_Levels);
}
else
{
ObjectMove("R3_Label", 0, Time[20], R3);
}
if(ObjectFind("S1_Line") != 0)
{
ObjectCreate("S1_Line", OBJ_HLINE,0, CurTime(),S1);
ObjectSet("S1_Line", OBJPROP_COLOR, Daily_S_Levels);
ObjectSet("S1_Line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
}
else
{
ObjectMove("S1_Line", 0, Time[20], S1);
}
if(ObjectFind("S1_Label") != 0)
{
ObjectCreate("S1_Label", OBJ_TEXT, 0, Time[20], S1);
ObjectSetText("S1_Label", "Daily S1", 8, "Arial", Daily_S_Levels);
}
else
{
ObjectMove("S1_Label", 0, Time[20], S1);
}
if(ObjectFind("S2_Line") != 0)
{
ObjectCreate("S2_Line", OBJ_HLINE,0, CurTime(),S2);
ObjectSet("S2_Line", OBJPROP_COLOR, Daily_S_Levels);
ObjectSet("S2_Line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
}
else
{
ObjectMove("S2_Line", 0, Time[20], S2);
}
if(ObjectFind("S2_Label") != 0)
{
ObjectCreate("S2_Label", OBJ_TEXT, 0, Time[20], S2);
ObjectSetText("S2_Label", "Daily S2", 8, "Arial", Daily_S_Levels);
}
else
{
ObjectMove("S2_Label", 0, Time[20], S2);
}
if(ObjectFind("S3_Line") != 0)
{
ObjectCreate("S3_Line", OBJ_HLINE,0, CurTime(),S3);
ObjectSet("S3_Line", OBJPROP_COLOR, Daily_S_Levels);
ObjectSet("S3_Line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
}
else
{
ObjectMove("S3_Line", 0, Time[20], S3);
}
if(ObjectFind("S3_Label") != 0)
{
ObjectCreate("S3_Label", OBJ_TEXT, 0, Time[20], S3);
ObjectSetText("S3_Label", "Daily S3", 8, "Arial", Daily_S_Levels);
}
else
{
ObjectMove("S3_Label", 0, Time[20], S3);
}
}
ObjectsRedraw();
}
if (Daily_Mid_Levels==True)
{
if(ObjectFind("DM1_Line") != 0)
{
ObjectCreate("DM1_Line", OBJ_HLINE,0, CurTime(),DM1);
ObjectSet("DM1_Line", OBJPROP_COLOR, Daily_Mid_Level);
ObjectSet("DM1_Line", OBJPROP_STYLE, STYLE_DOT);
}
else
{
ObjectMove("DM1_Line", 0, Time[15], DM1);
}
if(ObjectFind("DM1_Label") != 0)
{
ObjectCreate("DM1_Label", OBJ_TEXT, 0, Time[15], DM1);
ObjectSetText("DM1_Label", "DM1", 8, "Arial", Daily_Mid_Level);
}
else
{
ObjectMove("DM1_Label", 0, Time[15], DM1);
}
if(ObjectFind("DM2_Line") != 0)
{
ObjectCreate("DM2_Line", OBJ_HLINE,0, CurTime(),DM2);
ObjectSet("DM2_Line", OBJPROP_COLOR, Daily_Mid_Level);
ObjectSet("DM2_Line", OBJPROP_STYLE, STYLE_DOT);
}
else
{
ObjectMove("DM2_Line", 0, Time[15], DM2);
}
if(ObjectFind("DM2_Label") != 0)
{
ObjectCreate("DM2_Label", OBJ_TEXT, 0, Time[15], DM2);
ObjectSetText("DM2_Label", "DM2", 8, "Arial", Daily_Mid_Level);
}
else
{
ObjectMove("DM2_Label", 0, Time[15], DM2);
}
if(ObjectFind("DM3_Line") != 0)
{
ObjectCreate("DM3_Line", OBJ_HLINE,0, CurTime(),DM3);
ObjectSet("DM3_Line", OBJPROP_COLOR, Daily_Mid_Level);
ObjectSet("DM3_Line", OBJPROP_STYLE, STYLE_DOT);
}
else
{
ObjectMove("DM3_Line", 0, Time[15], DM3);
}
if(ObjectFind("DM3_Label") != 0)
{
ObjectCreate("DM3_Label", OBJ_TEXT, 0, Time[15], DM3);
ObjectSetText("DM3_Label", "DM3", 8, "Arial", Daily_Mid_Level);
}
else
{
ObjectMove("DM3_Label", 0, Time[15], DM3);
}
if(ObjectFind("DM4_Line") != 0)
{
ObjectCreate("DM4_Line", OBJ_HLINE,0, CurTime(),DM4);
ObjectSet("DM4_Line", OBJPROP_COLOR, Daily_Mid_Level);
ObjectSet("DM4_Line", OBJPROP_STYLE, STYLE_DOT);
}
else
{
ObjectMove("DM4_Line", 0, Time[15], DM4);
}
if(ObjectFind("DM4_Label") != 0)
{
ObjectCreate("DM4_Label", OBJ_TEXT, 0, Time[15], DM4);
ObjectSetText("DM4_Label", "DM4", 8, "Arial", Daily_Mid_Level);
}
else
{
ObjectMove("DM4_Label", 0, Time[15], DM4);
}
if(ObjectFind("DM5_Line") != 0)
{
ObjectCreate("DM5_Line", OBJ_HLINE,0, CurTime(),DM5);
ObjectSet("DM5_Line", OBJPROP_COLOR, Daily_Mid_Level);
ObjectSet("DM5_Line", OBJPROP_STYLE, STYLE_DOT);
}
else
{
ObjectMove("DM5_Line", 0, Time[15], DM5);
}
if(ObjectFind("DM5_Label") != 0)
{
ObjectCreate("DM5_Label", OBJ_TEXT, 0, Time[15], DM5);
ObjectSetText("DM5_Label", "DM5", 8, "Arial", Daily_Mid_Level);
}
else
{
ObjectMove("DM5_Label", 0, Time[15], DM5);
}
if(ObjectFind("DM6_Line") != 0)
{
ObjectCreate("DM6_Line", OBJ_HLINE,0, CurTime(),DM6);
ObjectSet("DM6_Line", OBJPROP_COLOR, Daily_Mid_Level);
ObjectSet("DM6_Line", OBJPROP_STYLE, STYLE_DOT);
}
else
{
ObjectMove("DM6_Line", 0, Time[15], DM6);
}
if(ObjectFind("DM6_Label") != 0)
{
ObjectCreate("DM6_Label", OBJ_TEXT, 0, Time[15], DM6);
ObjectSetText("DM6_Label", "DM6", 8, "Arial", Daily_Mid_Level);
}
else
{
ObjectMove("DM6_Label", 0, Time[15], DM6);
}
ObjectsRedraw();
}
if (Weekly==true)
{
if(ObjectFind("WeekPivotLine") != 0)
{
ObjectCreate("WeekPivotLine", OBJ_HLINE,0, CurTime(),WeekPivot);
ObjectSet("WeekPivotLine", OBJPROP_COLOR, Weekly_Pivot);
ObjectSet("WeekPivotLПоказано первые 50% кода (символов: 22060)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.