blubbb mightyzones [kokoveni].mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «blubbb mightyzones [kokoveni].mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, работающий в окне графика. Анализирует ценовые бары на выбранном пользователем таймфрейме и формирует зоны потенциальной поддержки и сопротивления, отображая их в виде прямоугольных областей и линий с помощью графических объектов. Индикатор отслеживает пересечение ценой построенных уровней и может генерировать оповещения через звук, комментарии на графике и электронную почту.
Настройки программы
| Настройка | Описание |
|---|---|
| In Minutes: 1, 5, 15, 30, 60, 240, 1440 (CustomPeriod) | Пользовательский период — Временной интервал для анализа ценовых данных |
| Bars to be processed (to save CPU time) (MaxBars) | Максимум баров — Ограничение количества обрабатываемых баров для экономии ресурсов |
| Minimum multiple of previous bar to cause a line (MinFactor) | Минимальный множитель — Порог минимального изменения для отображения линии зоны |
| Отправка почтой — Включает отправку email-уведомлений при наступлении событий | |
| SoundFile | Файл звука — Имя звукового файла для воспроизведения при оповещениях |
| ColLineLong | Цвет линии роста — Цвет линии для зоны долгосрочного роста |
| ColLineShort | Цвет линии падения — Цвет линии для зоны краткосрочного падения |
| ColZoneLong | Цвет зоны роста — Цвет заливки зоны долгосрочного роста |
| ColZoneShort | Цвет зоны падения — Цвет заливки зоны краткосрочного падения |
| ColZoneLongOld | Цвет старой зоны роста — Цвет заливки устаревшей зоны долгосрочного роста |
| ColZoneShortOld | Цвет старой зоны падения — Цвет заливки устаревшей зоны краткосрочного падения |
Поиск по коду файла
#property indicator_chart_window
extern int CustomPeriod = 0; // In Minutes: 1, 5, 15, 30, 60, 240, 1440
extern int MaxBars = 500; // Bars to be processed (to save CPU time)
extern double MinFactor = 2; // Minimum multiple of previous bar to cause a line
extern bool Mail = false;
extern string SoundFile = "alert.wav";
extern color ColLineLong = Lime;
extern color ColLineShort = Red;
extern color ColZoneLong = Green;
extern color ColZoneShort = Maroon;
extern color ColZoneLongOld = 0x004000;
extern color ColZoneShortOld = 0x000040;
int MaxLines = 2000;
double L[2000], S[2000];
double LM[2000], SM[2000];
datetime LT[2000], ST[2000];
int Trend;
double RealPoint;
string PeriodNice;
int init() {
// код доступен только после оплаты
}
int deinit() {
for(int j = 0; j < MaxLines; j++) {
ObjectDelete("ZS"+j+PeriodNice);
ObjectDelete("ZSA"+j+PeriodNice);
ObjectDelete("ZSB"+j+PeriodNice);
ObjectDelete("ZL"+j+PeriodNice);
ObjectDelete("ZLA"+j+PeriodNice);
ObjectDelete("ZLB"+j+PeriodNice);
}
for(j = 0; j < Trend; j++) ObjectDelete("ZR"+j+PeriodNice);
return(0);
}
double GetRealPoint() {
switch (Digits) {
case 3: return(0.01);
case 5: return(0.0001);
}
return(Point);
}
string GetPeriodNice(int s) {
if (s == 0) s = Period();
if (s % 60 > 0) return("M"+s);
s /= 60;
if (s % 24 > 0) return("H"+s);
s /= 24;
if (s % 7 > 0) return("D"+s);
return("W"+s);
}
double Ti(int s) {
return(iTime(NULL, CustomPeriod, s));
}
double Op(int s) {
return(iOpen(NULL, CustomPeriod, s));
}
double Cl(int s) {
return(iClose(NULL, CustomPeriod, s));
}
string GetTimeDiffNice(int t) {
t = Time[0] - t;
if (t < 120) return(t+" seconds ago");
t /= 60;
if (t < 120) return(t+" minutes ago");
t /= 60;
if (t < 48) return(t+" hours ago");
t /= 24;
return(t+" days ago");
}
void DisplayAlert(string s) {
if (SoundFile != "") PlaySound(SoundFile);
Alert(s);
Comment(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+s);
if (Mail) SendMail(s, s);
}
int start() {
// код доступен только после оплаты
}
static double old = 0;
static datetime latestWicking = 0;
if ((Time[0] > latestWicking) && (old > 0)) for(int j = 0; j < MaxLines; j++) {
if ((S[j] > 0) && (Close[0] > S[j]) && (old <= S[j])) {
DisplayAlert("Look for a "+Symbol()+" SHORT on "+PeriodNice+" (MightyZone)");
latestWicking = Time[0];
break;
}
if ((L[j] > 0) && (Close[0] < L[j]) && (old >= L[j])) {
DisplayAlert("Look for a "+Symbol()+" LONG on "+PeriodNice+" (MightyZone)");
latestWicking = Time[0];
break;
}
}
old = Close[0];
static datetime latest = 0;
int changed = Bars - IndicatorCounted();
if (changed < 2) return(0);
for(int i = MathMin(changed-1, MaxBars); i > 0; i--) {
if (latest >= Ti(i)) continue;
latest = Ti(i);
for(j = 0; j < MaxLines; j++) {
if ((L[j] > 0) && (Cl(i) <= LM[j])) {
string n = "ZR"+Trend+PeriodNice;
ObjectCreate(n, OBJ_RECTANGLE, 0, 0, 0);
ObjectSet(n, OBJPROP_TIME1, LT[j]);
ObjectSet(n, OBJPROP_PRICE1, L[j]);
ObjectSet(n, OBJPROP_TIME2, Ti(i));
ObjectSet(n, OBJPROP_PRICE2, LM[j]);
ObjectSet(n, OBJPROP_COLOR, ColZoneLongOld);
ObjectSet(n, OBJPROP_BACK, true);
L[j] = 0;
Trend++;
}
if ((S[j] > 0) && (Cl(i) >= SM[j])) {
n = "ZR"+Trend+PeriodNice;
ObjectCreate(n, OBJ_RECTANGLE, 0, 0, 0);
ObjectSet(n, OBJPROP_TIME1, ST[j]);Показано первые 50% кода (символов: 5648)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.