Camarilla Pivots
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mt4-cams-pivots.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Camarilla Pivots — это пользовательский индикатор для MetaTrader 4, отображающий на графике уровни поддержки и сопротивления, рассчитанные на основе данных предыдущего торгового дня. Индикатор строит несколько горизонтальных линий и соответствующих текстовых меток, помогая трейдеру визуально оценить ключевые ценовые зоны.
Для корректной работы индикатор считывает данные с часового таймфрейма (H1) и определяет максимумы и минимумы предыдущего дня с учётом смещения GMT. Расчёт уровней основан на ценовых значениях предыдущего дня: верхнем и нижнем экстремумах, а также цене закрытия.
Индикатор поддерживает два параметра настройки: логический переключатель отображения уровней и числовой сдвиг часового пояса. При выборе таймфрейма выше дневного индикатор выводит сообщение об ошибке и прекращает работу.
Настройки программы
| Настройка | Описание |
|---|---|
| camarilla | camarilla — Логический переключатель, управляющий отображением горизонтальных линий и текстовых меток уровней на графике. При значении true линии и подписи отрисовываются, при false — нет. |
| gmt_offset | gmt_offset — Целочисленный параметр, задающий смещение часового пояса в часах относительно серверного времени. Используется для определения границ торгового дня при чтении данных с часового таймфрейма. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 EMPTY
extern bool camarilla = true;
extern int gmt_offset = 7;
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 wP=0;
double Q=0;
double CH4,CH3,CH2,CH1,CL4,CL3,CL2,CL1;
double nQ=0;
double nD=0;
double D=0;
double rates_h1[2][6];
double ExtMapBuffer1[];
int init(){
// код доступен только после оплаты
}
int deinit(){
ObjectDelete("CH4 Label");
ObjectDelete("CH4 Line");
ObjectDelete("CH3 Label");
ObjectDelete("CH3 Line");
ObjectDelete("CH2 Label");
ObjectDelete("CH2 Line");
ObjectDelete("CH1 Label");
ObjectDelete("CH1 Line");
ObjectDelete("CL1 Label");
ObjectDelete("CL2 Line");
ObjectDelete("CL3 Label");
ObjectDelete("CL3 Line");
ObjectDelete("CL4 Label");
ObjectDelete("CL4 Line");
return(0);
}
int start(){
// код доступен только после оплаты
}
if(Period() > 1440){
Print("Error - Chart period is greater than 1 day.");
return(-1); // then exit
}
ArrayCopyRates(rates_h1, Symbol(), PERIOD_H1);
for(int i=0;i < 24;i++){
if((TimeHour(rates_h1[i][0]) - gmt_offset) == 0){
yesterday_open = rates_h1[i+24][1];
yesterday_close = rates_h1[i][1];
today_open = rates_h1[i][1];
yesterday_high = rates_h1[i+1][3];
yesterday_low = rates_h1[i+1][2];
for(int j=0;j < 24;j++){
if(rates_h1[i+j][3] > yesterday_high) yesterday_high = rates_h1[i+j][3];
if(rates_h1[i+j][2] < yesterday_low) yesterday_low = rates_h1[i+j][2];
}
day_high = rates_h1[i][3];
day_low = rates_h1[i][2];
while(i>=0){
if(rates_h1[i][3] > day_high) day_high = rates_h1[i][3];
if(rates_h1[i][2] < day_low) day_low = rates_h1[i][2];
i--;
}
break;
}
}
CH4 = (((yesterday_high-yesterday_low)* 1.1)/2)+ yesterday_close;
CH3 = (((yesterday_high-yesterday_low)* 1.1)/4)+ yesterday_close;
CH2 = (((yesterday_high-yesterday_low)* 1.1)/6)+ yesterday_close;
CH1 = (((yesterday_high-yesterday_low)* 1.1)/12)+ yesterday_close;
CL1 = yesterday_close-(((yesterday_high-yesterday_low) * 1.1)/12);
CL2 = yesterday_close-(((yesterday_high-yesterday_low) * 1.1)/6);
CL3 = yesterday_close-(((yesterday_high-yesterday_low)* 1.1)/4);
CL4 = yesterday_close-(((yesterday_high-yesterday_low) * 1.1)/2);
if (Q > 5) {
nQ = Q;
} else {
nQ = Q*10000;
}
if (D > 5){
nD = D;
} else {
nD = D*10000;
}
Comment("High= ",yesterday_high," Previous Days Range= ",nQ,"\nLow= ",yesterday_low," Current Days Range= ",nD,"\nClose= ",yesterday_close);
if (camarilla==true){
if(ObjectFind("CH4label") != 0){
ObjectCreate("CH4label", OBJ_TEXT, 0, Time[20], CH4);
ObjectSetText("CH4label", " H4", 8, "Arial", EMPTY);
} else {
ObjectMove("CH4label", 0, Time[20], CH4);
}
if(ObjectFind("CH3 label") != 0){
ObjectCreate("CH3 label", OBJ_TEXT, 0, Time[20], CH3);
ObjectSetText("CH3 label", " H3", 8, "Arial", DarkGray);
} else {
ObjectMove("CH3 label", 0, Time[20], CH3);
}
if(ObjectFind("CH2 label") != 0){
ObjectCreate("CH2 label", OBJ_TEXT, 0, Time[20], CH2);
ObjectSetText("CH2 label", " H2", 8, "Arial", DarkGray);
} else {
Показано первые 50% кода (символов: 5507)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.