ZSR V1
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «zsr v1.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой индикатор для платформы MetaTrader 5, который рассчитывает и отображает на графике зоны поддержки и сопротивления. Зоны формируются на основе анализа фрактальных точек ценового движения и окрашиваются в различные цвета в зависимости от их силы и статуса.
Индикатор поддерживает настройку временных периодов, отображение фракталов, а также систему оповещений — всплывающие уведомления, звуковые сигналы и отправку электронной почты при касании ценой определённых зон. Пользователь может управлять видимостью, стилем отрисовки и объединением зон.
Настройки позволяют гибко управлять визуальным представлением: цвета для каждого уровня силы, толщина и стиль линий, сдвиг подписей. Доступна также работа с глобальными переменными терминала для хранения данных о зонах между сессиями.
Настройки программы
| Настройка | Описание |
|---|---|
| BackLimit | Граница поиска (баров) — Задаёт максимальное количество баров назад, в пределах которых рассчитываются фрактальные точки и формируются зоны поддержки и сопротивления. |
| TimeFrame | Таймфрейм расчёта — Устанавливает таймфрейм, на котором выполняется расчёт зон поддержки и сопротивления. |
| TimeString | Справка таймфреймов — Отображает справочную строку с соответствием числовых значений таймфреймов их стандартным обозначениям. |
| color_support_weak | Цор слабой поддержки — Цор залегочной зоны слабой поддержки. |
| color_support_untested | Цор непроверенной поддержки — Цор залегочной зоны поддержки, которая ещё не была проверена ценой. |
| color_support_verified | Цор верифицированной поддержки — Цор залегочной зоны поддержки с уровнем верификации. |
| color_support_proven | Цор доказанной поддержки — Цор залегочной зоны поддержки с уровнем доказанности. |
| color_support_turncoat | Цор разворотной поддержки — Цор залегочной зоны поддержки разворотного типа. |
| color_resist_weak | Цор слабого сопротивления — Цор залегочной зоны слабого сопротивления. |
| color_resist_untested | Цор непроверенного сопротивления — Цор залегочной зоны сопротивления, которая ещё не была проверена ценой. |
| color_resist_verified | Цор верифицированного сопротивления — Цор залегочной зоны сопротивления с уровнем верификации. |
| color_resist_proven | Цор доказанного сопротивления — Цор залегочной зоны сопротивления с уровнем доказанности. |
| color_resist_turncoat | Цор разворотного сопротивления — Цор залегочной зоны сопротивления разворотного типа. |
| zone_show_weak | Показывать слабые зоны — Включает или отключает отображение зон слабой силы на графике. |
| zone_fuzzfactor | Коэффициент неопределённости зон — Коэффициент неопределённости, используемый при расчёте верхней и нижней границ зон. |
| zone_solid | Сплошная залегочка — Управляет стилем залегочки зон — сплошная залегочка или прозрачная. |
| zone_linewidth | Толщина линий зон — Устанавливает толщину линий, используемых для отрисовки зон на графике. |
| zone_style | Стиль линий зон — Устанавливает стиль линий зон (сплошной, пунктирный и т. д.) на графике. |
| zone_label_shift | Сдвиг подписей зон — Задаёт величину сдвига подписей зон на графике относительно их стандартного положения. |
| zone_show_alerts | Показывать оповещения о зонах — Включает или отключает систему оповещений при касании ценой зон поддержки и сопротивления. |
| zone_alert_popups | Всплывающие оповещения — Включает или отключает всплывающие уведомления на графике при касании ценой зоны. |
| zone_alert_sounds | Звуковые оповещения — Включает или отключает воспроизведение звукового сигнала при касании ценой зоны. |
| send_email | Отправлять email-уведомления — Включает или отключает отправку электронного письма при касании ценой зоны. |
| zone_alert_waitseconds | Пауза между оповещениями (сек) — Задаёт интервал в секундах между последовательными оповещениями о касании зон. |
| zone_merge | Объединять зоны — Включает или отключает объединение пересекающихся или смежных зон в одну. |
| zone_extend | Расширять границы зон — Включает или отключает расширение границ зон на основе коэффициента неопределённости. |
| fractals_show | Отображать фракталы — Включает или отключает отображение фрактальных точек на графике в виде стрелок. |
| fractal_fast_factor | Коэффициент быстрых фракталов — Коэффициент, определяющий чувствительность быстрого расчёта фрактальных точек. |
| fractal_slow_factor | Коэффициент медленных фракталов — Коэффициент, определяющий чувствительность медленного расчёта фрактальных точек. |
| SetGlobals | Использовать глобальные переменные — Включает или отключает сохранение данных о зонах в глобальных переменных терминала MetaTrader 5 для доступа между сессиями. |
Поиск по коду файла
#property version "4.00"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 DodgerBlue
#property indicator_color4 DodgerBlue
extern int BackLimit = 1000;
extern int TimeFrame = 0;
extern string TimeString = "0=Current, 60=H1, 240=H4, 1440=Day, 10080=Week, 43200=Month";
extern color color_support_weak = DarkSlateGray;
extern color color_support_untested = SeaGreen;
extern color color_support_verified = Green;
extern color color_support_proven = LimeGreen;
extern color color_support_turncoat = OliveDrab;
extern color color_resist_weak = Indigo;
extern color color_resist_untested = Orchid;
extern color color_resist_verified = Crimson;
extern color color_resist_proven = Red;
extern color color_resist_turncoat = DarkOrange;
extern bool zone_show_weak = true;
extern double zone_fuzzfactor = 0.40;
extern bool zone_solid = true;
extern int zone_linewidth = 1;
extern int zone_style = 0;
bool zone_show_info = false;
extern int zone_label_shift = 5;
extern bool zone_show_alerts = false;
extern bool zone_alert_popups = false;
extern bool zone_alert_sounds = false;
extern bool send_email = false;
extern int zone_alert_waitseconds = 300;
extern bool zone_merge = true;
extern bool zone_extend = true;
extern bool fractals_show = false;
extern double fractal_fast_factor = 3.0;
extern double fractal_slow_factor = 6.0;
extern bool SetGlobals = true;
double FastDnPts[], FastUpPts[];
double SlowDnPts[], SlowUpPts[];
double zone_hi[1000], zone_lo[1000];
int zone_start[1000], zone_hits[1000], zone_type[1000], zone_strength[1000], zone_count = 0;
bool zone_turn[1000];
#define ZONE_SUPPORT 1
#define ZONE_RESIST 2
#define ZONE_WEAK 0
#define ZONE_TURNCOAT 1
#define ZONE_UNTESTED 2
#define ZONE_VERIFIED 3
#define ZONE_PROVEN 4
#define UP_POINT 1
#define DN_POINT -1
int time_offset = 0;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
DeleteZones();
DeleteGlobalVars();
return(0);
}
int start()
{
// код доступен только после оплаты
}
void CheckAlerts()
{
static int lastalert = 0;
if (zone_show_alerts == false)
return;
if (Time[0] - lastalert > zone_alert_waitseconds)
if (CheckEntryAlerts() == true)
lastalert = Time[0];
}
bool CheckEntryAlerts()
{
for (int i=0; i<zone_count; i++)
{
if (Close[0] >= zone_lo[i] && Close[0] < zone_hi[i])
{
if (zone_show_alerts == true)
{
if (zone_alert_popups == true)
{
if (zone_type[i] == ZONE_SUPPORT)
Alert(Symbol() + TimeFrameToString(TimeFrame) + ": Касание зоны поддержки");
else
Alert(Symbol() + TimeFrameToString(TimeFrame) + ": Касание зоны сопротивления");
}
if (zone_alert_sounds == true)
PlaySound("alert.wav");
}
if (send_email == true)
{
string dir = "";
string msg = StringConcatenate(Symbol(), "-", TimeFrameToString(TimeFrame), " at ", TimeToStr(Time[0], TIME_DATE|TIME_SECONDS),
" ", dir, " Zone Entered");
if (zone_type[i] == ZONE_SUPPORT)
{
dir = "Support";
SendMail("ZSR alert", msg);
}
else
{
dir = "Resistance";
SendMail("ZSR alert", msg);
}
}
return(true);
}
}
return(false);
}
void DeleteGlobalVars()
{
if (SetGlobals == false)
return;
GlobalVariableDel("SSSR_Count_"+Symbol()+TimeFrame);
GlobalVariableDel("SSSR_Updated_"+Symbol()+TimeFrame);
int old_count = zone_count;
zone_count = 0;
DeleteOldGlobalVars(old_count);
}
void DeleteOldGlobalVars(int old_count)
{
if (SetGlobals == false)
return;
for (int i=zone_count; i<old_count; i++)
{
GlobalVariableDel("SSSR_HI_"+Symbol()+TimeFrame+i);
GlobalVariableDel("SSSR_LO_"+Symbol()+TimeFrame+i);
GlobalVariableDel("SSSR_HITS_"+Symbol()+TimeFrame+i);
GlobalVariableDel("SSSR_STRENGTH_"+Symbol()+TimeFrame+i);
GlobalVariableDel("SSSR_AGE_"+Symbol()+TimeFrame+i);
}
}
void FindZones()
{
int i, j, shift, bustcount=0, testcount = 0;
double hival, loval;
bool turned = false, hasturned = false;
double temp_hi[1000], temp_lo[1000];
int temp_start[1000], temp_hits[1000], temp_strength[1000], temp_count = 0;
bool temp_turn[1000], temp_merge[1000];
int merge1[1000], merge2[1000], merge_count = 0;
for (shift=MathMin(iBars(NULL, TimeFrame)-1, BackLimit); shift>5; shift--)
{
double atr = iATR(NULL, TimeFrame, 7, shift);
double fu = atr/2 * zone_fuzzfactor;
bool isWeak;
bool touchOk = false;
bool isBust = false;
double close = iClose(NULL, TimeFrame, shift);
double high = iHigh(NULL, TimeFrame, shift);
double low = iLow(NULL, TimeFrame, shift);
double hi_i;
double lo_i;
if (FastUpPts[shift] > 0.001)
{
isWeak = true;
if (SlowUpPts[shift] > 0.001)
isWeak = false;
hival = high;
if (zone_extend == true)
hival += fu;
loval = MathMax(MathMin(close, high-fu), high-fu*2);
turned = false;
hasturned = false;
isBust = false;
bustcount = 0;
testcount = 0;
for (i=shift-1; i>=0; i--)
{
hi_i = iHigh(NULL, TimeFrame, i);
lo_i = iLow(NULL, TimeFrame, i);
if ((turned == false && FastUpPts[i] >= loval && FastUpPts[i] <= hival) ||
(turned == true && FastDnPts[i] <= hival && FastDnPts[i] >= loval))
{
touchOk = true;
for (j=i+1; j<i+11; j++)
{
if ((turned == false && FastUpPts[j] >= loval && FastUpPts[j] <= hival) ||
(turned == true && FastDnPts[j] <= hival && FastDnPts[j] >= loval))
{
touchOk = false;
break;
}
}
if (touchOk == true)
{
bustcount = 0;
testcount++;
}
}
if ((turned == false && hi_i > hival) ||
(turned == true && lo_i < loval))
{
bustcount++;
if (bustcount > 1 || isWeak == true)
{
isBust = true;
break;
}
if (turned == true)
turned = false;
else if (turned == false)
turned = true;
hasturned = true;
testcount = 0;
}
}
if (isBust == false)
{
temp_hi[temp_count] = hival;
temp_lo[temp_count] = loval;
temp_turn[temp_count] = hasturned;
temp_hits[temp_count] = testcount;
temp_start[temp_count] = shift;
temp_merge[temp_count] = false;
if (testcount > 3)
temp_strength[temp_count] = ZONE_PROVEN;
else if (testcount > 0)
temp_strength[temp_count] = ZONE_VERIFIED;
else if (hasturned == true)
temp_strength[temp_count] = ZONE_TURNCOAT;
else if (isWeak == false)
temp_strength[temp_count] = ZONE_UNTESTED;
else
temp_strength[temp_count] = ZONE_WEAK;
temp_count++;
}
}
else if (FastDnPts[shift] > 0.001)
{
isWeak = true;
if (SlowDnPts[shift] > 0.001)
isWeak = false;
loval = low;
if (zone_extend == true)
loval -= fu;
hival = MathMin(MathMax(close, low+fu), low+fu*2);
turned = false;
hasturned = false;
bustcount = 0;
testcount = 0;
isBust = false;
for (i=shift-1; i>=0; i--)
{
hi_i = iHigh(NULL, TimeFrame, i);
lo_i = iLow(NULL, TimeFrame, i);
if ((turned == true && FastUpPts[i] >= loval && FastUpPts[i] <= hival) ||
(turned == false && FastDnPts[i] <= hival && FastDnPts[i] >= loval))
{
touchOk = trПоказано первые 50% кода (символов: 14832)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.