Zulu Quant Supertrend Pro Elite V6
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «zuluquantsupertrend_pro_elite_v6.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Zulu Quant Supertrend Pro Elite V6 — это пользовательский индикатор для MetaTrader 5, построенный на основе алгоритма Supertrend с адаптивным множителем на основе Z-Score. Индикатор отрисовывает два графика: бычий тренд (синий) и медвежий тренд (золотой), а также предоставляет расширенный дашборд с метриками эффективности.
Версия V6 добавляет двухкаскадную систему сглаживания PMax EMA (лямбда-период → основной период EMA), которая при активации используется как источник цены для расчёта Z-Score и центров полос. Также реализованы фильтры подтверждения: анализ объёма (Smart Money), обнаружение трендовости через ADX и многотаймфреймовый сканер.
Индикатор поддерживает систему уведомлений (всплывающие окна, push и email), отображение тегов покупки/продажи на графике и настраиваемый информационный дашборд с отображением вероятности сигнала, коэффициента прибыли и среднего соотношения выигрышей к убыткам. Дашборд поддерживает размещение в четырёх углах платформы с настраиваемыми цветами и размерами.
Настройки программы
| Настройка | Описание |
|---|---|
| ATR Base Period (InpATRPeriod) | Период ATR — Базовый период расчёта индикатора ATR для определения волатильности. |
| Starting Multiplier (InpBaseMult) | Начальный множитель — Начальный множитель ATR для расчёта верхней и нижней полос Supertrend. |
| Statistical Window (Z-Score) (InpStatWindow) | Статистическое окно Z-Score — Количество баров для расчёта статистического окна Z-Score. |
| Adaptive Multiplier (InpUseAdaptive) | Адаптивный множитель — Включает или отключает адаптивный множитель на основе Z-Score. |
| Use PMax EMA Source (instead of raw HL/2 + raw Close Z-Score) (InpUseEMASource) | Источник PMax EMA — Включает или отключает использование PMax EMA каскада в качестве источника цены вместо классического HL/2 и сырого закрытия для Z-Score. |
| Lambda Period (fast pre-filter EMA, stage 1) (InpLambdaPeriod) | Период лямбда EMA — Период быстрой EMA предфильтрации в первой каскаде сглаживания PMax (стадия 1). |
| EMA Period (main average, stage 2 - feeds bands + Z-score) (InpEMAPeriod) | Период основной EMA — Период основной EMA во второй каскаде сглаживания PMax (стадия 2). |
| Volume Confirmation (Smart Money) (InpUseVolFilter) | Подтверждение объёмом — Включает или отключает фильтр подтверждения сигналов через анализ объёма (Smart Money). |
| Volume SMA Period (InpVolPeriod) | Период SMA объёма — Период расчёта скользящей средней объёма для фильтрации. |
| Volume Spike Threshold (e.g. 1.5x) (InpVolMult) | Порог всплеска объёма — Пороговое значение соотношения текущего объёма к среднему для подтверждения сигнала. |
| ADX Regime Detection (InpUseADXRegime) | Обнаружение режима ADX — Включает или отключает фильтр обнаружения режима рынка через ADX (трендовый/флэт). |
| ADX Period (InpADXPeriod) | Период ADX — Период расчёта индикатора ADX для обнаружения силы тренда. |
| Trend Strength Threshold (InpADXThreshold) | Порог силы тренда ADX — Пороговое значение ADX, выше которого рынок считается трендовым. |
| InpTimeframes | Таймфреймы MTF — Список таймфреймов через запятую для многотаймфреймового сканера. |
| InpMTFHistory | Глубина истории MTF — Количество баров истории для расчёта многотаймфреймового сканера. |
| InpShowMTF | Отображение MTF — Включает или отключает отображение данных многотаймфреймового сканера в дашборде. |
| InpUpdateSec | Интервал обновления — Интервал обновления данных многотаймфреймового сканера и дашборда в секундах. |
| Evaluation Lookback (InpEvalBars) | Оценочный период — Количество баров для обратного анализа при оценке эффективности сигналов. |
| Reward-to-Risk Ratio (InpTargetRR) | Соотношение прибыль/риск — Целевое соотношение прибыли к риску для оценки эффективности сигналов. |
| Show Buy/Sell Tags (InpShowTags) | Отображение тегов сигналов — Включает или отключает отображение тегов покупки и продажи на графике при появлении сигналов. |
| Popup Alerts (InpAlertPopup) | Всплывающие уведомления — Включает или отключает всплывающие уведомления при появлении новых сигналов. |
| Push Notifications (InpAlertPush) | Push-уведомления — Включает или отключает push-уведомления при появлении новых сигналов. |
| Email Alerts (InpAlertEmail) | Email-уведомления — Включает или отключает отправку email-уведомлений при появлении новых сигналов. |
| InpShowDash | Отображение дашборда — Включает или отключает отображение информационного дашборда на графике. |
| InpDashColor | Цвет текста дашборда — Цвет текста заголовка дашборда. |
| Corner: 0-TL, 1-TR, 2-BL, 3-BR (InpCorner) | Угол размещения дашборда — Угол платформы для размещения дашборда: 0 — верхний левый, 1 — верхний правый, 2 — нижний левый, 3 — нижний правый. |
| InpXOffset | Смещение по X — Горизонтальное смещение дашборда от угла в пикселях. |
| InpYOffset | Смещение по Y — Вертикальное смещение дашборда от угла в пикселях. |
| InpBgColor | Цвет фона дашборда — Цвет фона дашборда. |
| InpDashWidth | Ширина дашборда — Ширина окна дашборда в пикселях. |
Поиск по коду файла
#property version "6.00"
#property description "Zulu Elite Edition: Advanced UI Engine - PMax EMA Smoothing Toggle"
#property indicator_chart_window
#property indicator_buffers 12
#property indicator_plots 2
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrDodgerBlue
#property indicator_width1 4
#property indicator_label1 "Bullish Quant Trend"
#property indicator_type2 DRAW_LINE
#property indicator_color2 clrGold
#property indicator_width2 4
#property indicator_label2 "Bearish Quant Trend"
input group "=== QUANT ALGORITHM SETTINGS ==="
input int InpATRPeriod = 10; // ATR Base Period
input double InpBaseMult = 6.0; // Starting Multiplier
input int InpStatWindow = 20; // Statistical Window (Z-Score)
input bool InpUseAdaptive = true; // Adaptive Multiplier
input group "=== PMAX EMA SMOOTHING (V6) ==="
input bool InpUseEMASource = true; // Use PMax EMA Source (instead of raw HL/2 + raw Close Z-Score)
input int InpLambdaPeriod = 5; // Lambda Period (fast pre-filter EMA, stage 1)
input int InpEMAPeriod = 18; // EMA Period (main average, stage 2 - feeds bands + Z-score)
input group "=== ELITE FILTERS (CONFLUENCE) ==="
input bool InpUseVolFilter = true; // Volume Confirmation (Smart Money)
input int InpVolPeriod = 20; // Volume SMA Period
input double InpVolMult = 2; // Volume Spike Threshold (e.g. 1.5x)
input bool InpUseADXRegime = true; // ADX Regime Detection
input int InpADXPeriod = 14; // ADX Period
input int InpADXThreshold = 25; // Trend Strength Threshold
input group "=== MTF SCANNER SETTINGS ==="
input string InpTimeframes = "M15,M30,H1,H4,D1";
input int InpMTFHistory = 2500;
input bool InpShowMTF = true;
input int InpUpdateSec = 2;
input group "=== PERFORMANCE TRACKER ==="
input int InpEvalBars = 1000; // Evaluation Lookback
input double InpTargetRR = 2.5; // Reward-to-Risk Ratio
input group "=== SIGNALS & NOTIFICATIONS ==="
input bool InpShowTags = true; // Show Buy/Sell Tags
input bool InpAlertPopup = true; // Popup Alerts
input bool InpAlertPush = false; // Push Notifications
input bool InpAlertEmail = false; // Email Alerts
input group "=== DASHBOARD VISUALS ==="
input bool InpShowDash = true;
input color InpDashColor = clrGold;
input int InpCorner = 0; // Corner: 0-TL, 1-TR, 2-BL, 3-BR
input int InpXOffset = 20;
input int InpYOffset = 40;
input color InpBgColor = C'15,15,15';
input int InpDashWidth = 280;
double g_BuffUp[], g_BuffDn[];
double g_BuffTr[], g_BuffUpB[], g_BuffDnB[];
double g_BuffZScore[], g_BuffProb[];
double g_BuffADX[], g_BuffVolRatio[], g_BuffConviction[];
double g_BuffEMA[]; // PMax-style EMA source, stage 2 (band center + Z-score input when InpUseEMASource = true)
double g_BuffLambdaEMA[]; // PMax-style Lambda pre-filter, stage 1 (fast EMA that feeds stage 2)
int g_hATR = INVALID_HANDLE, g_hADX = INVALID_HANDLE;
string g_UI_PREFIX = "STQ_ELITE_";
datetime g_LastUpdate = 0;
int g_WinCount = 0, g_TotalSignals = 0;
double g_CurrentProb = 0.0, g_ProfitFactor = 0.0, g_AvgWin = 0.0, g_AvgLoss = 0.0;
int g_LastTrend = -1;
ENUM_TIMEFRAMES g_MTF_Periods[];
int g_MTF_HandlesATR[];
int g_MTF_HandlesADX[];
string g_MTF_Names[];
int g_MTF_Trends[];
string g_MTF_Statuses[];
int g_MTF_Count = 0;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason) { EventKillTimer(); DeleteUIPrefix(g_UI_PREFIX); }
int OnCalculate(const int rates_total, const int prev_calculated,
const datetime &time[], const double &open[], const double &high[],
const double &low[], const double &close[], const long &tick_volume[],
const long &volume[], const int &spread[])
{
// код доступен только после оплаты
}
if(rates_total < MathMax(InpStatWindow, InpVolPeriod) + 20) return(0);
double atr[], adx_val[];
if(CopyBuffer(g_hATR, 0, 0, rates_total, atr) < rates_total) return(0);
if(CopyBuffer(g_hADX, 0, 0, rates_total, adx_val) < rates_total) return(0);
int start = (prev_calculated > 0) ? prev_calculated - 1 : InpStatWindow;
double emaK = 2.0 / (InpEMAPeriod + 1.0);
double lambdaK = 2.0 / (InpLambdaPeriod + 1.0);
for(int i = start; i < rates_total; i++)
{
if(InpUseEMASource)
{
if(i == InpStatWindow) g_BuffLambdaEMA[i] = close[i];
else g_BuffLambdaEMA[i] = g_BuffLambdaEMA[i-1] + lambdaK * (close[i] - g_BuffLambdaEMA[i-1]);
if(i == InpStatWindow) g_BuffEMA[i] = g_BuffLambdaEMA[i];
else g_BuffEMA[i] = g_BuffEMA[i-1] + emaK * (g_BuffLambdaEMA[i] - g_BuffEMA[i-1]);
}
else { g_BuffLambdaEMA[i] = close[i]; g_BuffEMA[i] = close[i]; } // unused for math in this mode, kept filled for clean buffer history
double srcPrice = InpUseEMASource ? g_BuffEMA[i] : close[i];
double sum = 0, sum_sq = 0;
for(int j = 0; j < InpStatWindow; j++)
{
double v = InpUseEMASource ? g_BuffEMA[i-j] : close[i-j];
sum += v; sum_sq += v*v;
}
double mean = sum/InpStatWindow;
double std = MathSqrt(MathAbs((sum_sq/InpStatWindow) - mean*mean));
g_BuffZScore[i] = (std > 0) ? (srcPrice - mean)/std : 0;
double mult = InpBaseMult;
if(InpUseAdaptive) mult *= (1.0 + (MathAbs(g_BuffZScore[i])/10.0));
double vol_sum = 0;
for(int v_j = 1; v_j <= InpVolPeriod; v_j++) vol_sum += (double)tick_volume[i-v_j];
double vol_avg = vol_sum / InpVolPeriod;
g_BuffVolRatio[i] = (vol_avg > 0) ? (double)tick_volume[i] / vol_avg : 1.0;
double mid = InpUseEMASource ? g_BuffEMA[i] : (high[i] + low[i]) / 2.0;
double upB = mid + (mult * atr[i]);
double dnB = mid - (mult * atr[i]);
if(i == InpStatWindow) { g_BuffUpB[i] = upB; g_BuffDnB[i] = dnB; g_BuffTr[i] = 1; }
else
{
g_BuffUpB[i] = (upB < g_BuffUpB[i-1] || close[i-1] > g_BuffUpB[i-1]) ? upB : g_BuffUpB[i-1];
g_BuffDnB[i] = (dnB > g_BuffDnB[i-1] || close[i-1] < g_BuffDnB[i-1]) ? dnB : g_BuffDnB[i-1];
int trend = (int)g_BuffTr[i-1];
if(close[i] > g_BuffUpB[i]) trend = 0;
else if(close[i] < g_BuffDnB[i]) trend = 1;
g_BuffTr[i] = (double)trend;
}
bool is_trending = (adx_val[i] >= InpADXThreshold);
bool is_confirmed = (g_BuffVolRatio[i] >= InpVolMult);
g_BuffConviction[i] = (is_trending ? 1.0 : 0.0) + (is_confirmed ? 1.0 : 0.0);
if(g_BuffTr[i] == 0) {
g_BuffUp[i] = g_BuffDnB[i]; g_BuffDn[i] = EMPTY_VALUE;
PlotIndexSetInteger(0, PLOT_LINE_WIDTH, (g_BuffConviction[i] > 1 ? 4 : 2));
PlotIndexSetInteger(0, PLOT_LINE_STYLE, (is_trending ? STYLE_SOLID : STYLE_DOT));
}
else {
g_BuffDn[i] = g_BuffUpB[i]; g_BuffUp[i] = EMPTY_VALUE;
PlotIndexSetInteger(1, PLOT_LINE_WIDTH, (g_BuffConviction[i] > 1 ? 4 : 2));
PlotIndexSetInteger(1, PLOT_LINE_STYLE, (is_trending ? STYLE_SOLID : STYLE_DOT));
}
if(i == rates_total - 1 && g_BuffTr[i] != g_LastTrend) {
TriggerSignalEvent((int)g_BuffTr[i], time[i], close[i], is_confirmed);
g_LastTrend = (int)g_BuffTr[i];
}
}
if(InpShowDash && (TimeCurrent() - g_LastUpdate > 1)) {
UpdateElitПоказано первые 50% кода (символов: 13705)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.