← К каталогу
Исходный код · ID 4384

Zulu Quant Supertrend Pro Elite V6

zuluquantsupertrend_pro_elite_v6.mq5

Похожие материалы по тегам

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

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 и перейдите к оплате.

Стоимость полного кода
1 370,50₽ ≈ $16.75