представляет собой передовой аналитический инструмент, основанный на принципах физики, который извлекает кинематику рынка путем измерения длины ценового пути и энергии волатильности. В отличие от традиционных инструментов, основанных на импульсе, KCI-DX использует динамическую нормализацию по Z-Score в сочетании с сигмоидной функцией активации. Это гарантирует, что выходные значения безупречно ограничены диапазоном от 0 до 100, обеспечивая сверхчувствительную идентификацию силы тренда и направленного смещения без искажений, вызванных историческими экстремумами. KCI Directional Matrix (KCI-DX) — это индикатор количественного направленного анализа, разработанный для измерения эффективности рынка, направленного давления и расширения тренда с помощью запатентованной структуры индекса кинетической компрессии (Kinetic Compression Index).
Ключевые особенности:
В отличие от традиционных осцилляторов импульса, KCI-DX разлагает движение рынка на три независимых измерения:
Индикатор сочетает в себе:
В результате получается стабильная матрица направлений с значениями от 0 до 100, способная определять:
KCI-DX можно использовать как самостоятельный торговый инструмент или как компонент для разработки моделей в рамках советников, систем машинного обучения, сканеров рынка, адаптивных сеток, динамического управления стопами и механизмов принятия решений на уровне портфеля.
Входные параметры:

KCI-DX: ВИЗУАЛЬНОЕ КРАТКОЕ РУКОВОДСТВО
| Визуальный элемент | Цвет и стиль | Что это означает |
|---|---|---|
| Основная линия KCI | Золотой (сплошная) | Сила тренда и сжатие. Показывает, сколько кинематической энергии присутствует на рынке, независимо от направления. |
| Линия +KDI | Синяя (пунктирная) | Бычья энергия. Сила восходящего ценового движения. |
| Линия -KDI | Красная (пунктирная) | Медвежья энергия. Сила нисходящего движения цены. |
| Уровень 80,0 | Серый (точечная линия) | Зона экстремума / исчерпания. Тенденция достигла максимальной силы. |
| Уровень 20,0 | Серый (пунктирная линия) | Зона сжатия / бокового движения. Рынок накапливает энергию. |
Обратите внимание на положение «Золотой линии» (KCI Main), чтобы мгновенно понять рыночную обстановку:
Рис. 1

Визуальные торговые установки (пошагово)
Рис. 2

СОВЕТ ОТ ПРОФЕССИОНАЛА: Никогда не открывайте сделку, если синяя и красная линии переплетены ниже уровня 20. Дождитесь их четкого разделения и прорыва «Золотой линии»!
KCI Directional Matrix Logic for Expert Advisors (EAs)
Если этот индикатор используется в рамках советника, можно применять следующие торговые правила:
Это наиболее оптимальный и рекомендуемый метод. Советник будет вызывать файл KCI-Directional_X.ex5, расположенный в папке «Indicators».
Фрагмент кода:
//+------------------------------------------------------------------+ //| EA_KCI_iCustom.mq5 | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, Ritz" #property version "1.00" int kci_handle; double KCI_Main[], KDI_Plus[], KDI_Minus[]; int OnInit() { // Создать дескриптор пользовательского индикатора. // Убедитесь, что файл «KCI-Directional_X.ex5» находится в нужном месте // в каталоге MQL5/Indicators. kci_handle = iCustom(_Symbol, _Period, "KCI-Directional_X", 9, 30, 1.5); if(kci_handle == INVALID_HANDLE) { Print("Failed to load the KCI-DX indicator."); return(INIT_FAILED); } // Настроить буферы индикаторов как временные ряды // (Индекс 0 = текущий бар). ArraySetAsSeries(KCI_Main, true); ArraySetAsSeries(KDI_Plus, true); ArraySetAsSeries(KDI_Minus, true); return(INIT_SUCCEEDED); } void OnTick() { // Получить последние значения индикаторов // (текущий бар и последний закрытый бар). if(CopyBuffer(kci_handle, 0, 0, 2, KCI_Main) <= 0) return; if(CopyBuffer(kci_handle, 1, 0, 2, KDI_Plus) <= 0) return; if(CopyBuffer(kci_handle, 2, 0, 2, KDI_Minus) <= 0) return; // ------------------------------------------------------------ // Торговая логика KCI-DX // Все торговые решения принимаются на основе последней завершившейся свечи // (Индекс 1) — чтобы исключить сигналы от свечи, которая ещё формируется. // ------------------------------------------------------------ // Определить, находится ли рынок в трендовом состоянии. bool isTrending = KCI_Main[1] > 20.0; // Определить пересечение линий, указывающее на бычий тренд. bool buySignal = (KDI_Plus[1] > KDI_Minus[1]) && (KDI_Plus[2] <= KDI_Minus[2]); // Обнаружить пересечение линий, указывающее на медвежью тенденцию. bool sellSignal = (KDI_Minus[1] > KDI_Plus[1]) && (KDI_Minus[2] <= KDI_Plus[2]); // Обнаружить резкое усиление тренда. bool isExtreme = KCI_Main[1] >= 80.0; // Пример логики выполнения торговой операции. if(isTrending && buySignal) { Print("KCI-DX BUY signal detected."); // Разместите ордер на покупку // (OrderSend или CTrade::Buy) здесь. } else if(isTrending && sellSignal) { Print("KCI-DX SELL signal detected."); // Разместите ордер на ПРОДАЖУ // (OrderSend или CTrade::Sell) здесь. } // Дополнительные инструменты управления сделками при выраженных рыночных трендах. if(isExtreme) { Print("Extreme trend detected. Consider activating a trailing stop or managing existing positions."); } }
Этот метод позволяет встроить ваш математический алгоритм непосредственно в советник без использования внешних файлов индикаторов. Поскольку для расчета Z-Score требуются исторические данные, мы используем специальную функцию внутри советника для обработки массива цен.
Фрагмент кода:
//+------------------------------------------------------------------+ //| EA_KCI_Embedded.mq5 | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, Ritz" #property version "1.00" input int InpBasePeriod = 9; input int InpZScorePeriod = 30; input double InpSensitivity = 1.5; // Структура, используемая для возврата всех трёх значений KCI-DX // на основе одного расчёта. struct KCI_Result { double main; double plus; double minus; }; // Вычислить внутренний Z-показатель, используемый для // динамическая нормализация. double EmbeddedZScore(double &data_array[], int period) { if(period < 2) return 0.0; double sum = 0.0; double sum_sq = 0.0; for(int i = 0; i < period; i++) { sum += data_array[i]; sum_sq += data_array[i] * data_array[i]; } double mean = sum / period; double variance = (sum_sq / period) - (mean * mean); if(variance <= 1 e-10) return 0.0; return (data_array[0] - mean) / MathSqrt(variance); } // Вычислить значения KCI-DX для указанного // историческая полоса (сдвиг). KCI_Result CalculateKCI(int shift) { KCI_Result res; res.main = 0.0; res.plus = 0.0; res.minus = 0.0; // Получить достаточный объем исторических данных о ценах закрытия // как для базового периода, так и для окна Z-Score. int required_bars = InpZScorePeriod + InpBasePeriod; double close[]; ArraySetAsSeries(close, true); if(CopyClose(_Symbol, _Period, shift, required_bars, close) < required_bars) return res; // Недостаточно исторических данных. double raw_plus[]; double raw_minus[]; double raw_trend[]; ArrayResize(raw_plus, InpZScorePeriod); ArrayResize(raw_minus, InpZScorePeriod); ArrayResize(raw_trend, InpZScorePeriod); // ------------------------------------------------------------ // Этап 1: // Кинематическое определение направления // ------------------------------------------------------------ for(int i = 0; i < InpZScorePeriod; i++) { double path_len = 0.000001; double net_up = 0.0; double net_dn = 0.0; double mean_p = 0.0; for(int j = 0; j < InpBasePeriod; j++) { double diff = close[i + j] - close[i + j + 1]; path_len += MathAbs(diff); if(diff > 0) net_up += diff; else net_dn -= diff; mean_p += close[i + j]; } mean_p /= InpBasePeriod; double var_p = 0.0; for(int j = 0; j < InpBasePeriod; j++) var_p += MathPow(close[i + j] - mean_p, 2); double energy = MathSqrt(var_p / InpBasePeriod); raw_plus[i] = (net_up / path_len) * energy; raw_minus[i] = (net_dn / path_len) * energy; raw_trend[i] = (MathAbs(net_up - net_dn) / path_len) * energy; } // ------------------------------------------------------------ // Этап 2: // Динамическая сигмоидная нормализация // ------------------------------------------------------------ double z_plus = EmbeddedZScore(raw_plus, InpZScorePeriod); double z_minus = EmbeddedZScore(raw_minus, InpZScorePeriod); double z_trend = EmbeddedZScore(raw_trend, InpZScorePeriod); res.plus = 100.0 / (1.0 + MathExp(-InpSensitivity * z_plus)); res.minus = 100.0 / (1.0 + MathExp(-InpSensitivity * z_minus)); res.main = 100.0 / (1.0 + MathExp(-InpSensitivity * z_trend)); return res; } void OnTick() { // Рассчитать значения KCI-DX для // две последние завершенные свечи. KCI_Result kci_current = CalculateKCI(1); KCI_Result kci_prev = CalculateKCI(2); // ------------------------------------------------------------ // Пример торговой логики // Определить пересечение линий, указывающее на бычий тренд. // ------------------------------------------------------------ bool buySignal = (kci_current.plus > kci_current.minus) && (kci_prev.plus <= kci_prev.minus); // Запускать торговую логику только тогда, когда рынок // находится в состоянии, соответствующем тренду. if(kci_current.main > 20.0 && buySignal) { Print("Embedded KCI-DX detected a BUY signal."); // Разместите ордер на покупку // (OrderSend или CTrade::Buy) здесь. } }
Прежде чем компилировать и приступать к торговле, учтите следующие рекомендации, чтобы получить максимальную отдачу от KCI-Directional Matrix:
Гибкость в выборе активов: Параметры по умолчанию (BasePeriod=9, ZScorePeriod=30) отличаются высокой отзывчивостью и демонстрируют исключительно хорошие результаты на основных валютных парах. Однако, если вы применяете этот советник к высоковолатильным инструментам, таким как золото (XAUUSD), криптовалюты (BTC/ETH) или индексы, рассмотрите возможность небольшого увеличения значения ZScorePeriod (например, до 40 или 50), чтобы отфильтровать избыточный шум.
Алгоритмическая оптимизация: Разработчикам советников, создающим сложные или мультисимвольные системы, настоятельно рекомендуется использовать описанный выше метод встроенных вычислений. Он позволяет сохранить чрезвычайно низкую нагрузку на процессор и гарантирует, что ваш советник останется полностью автономным, без необходимости вызова внешних индикаторов.
Сочетание для достижения синергии: KCI-DX — это специализированный движок, основанный на кинематике и волатильности. Хотя он и обеспечивает превосходный самостоятельный направленный уклон, он становится по-настоящему мощным в сочетании с вашими любимыми структурными фильтрами (такими как зоны поддержки/сопротивления) или детекторами аномалий объёма для подтверждения окончательного входа в рынок.
Примечание автора / Заключение: Благодарю вас за изучение KCI-Directional Matrix. Этот код был разработан с четкой ориентацией на предоставление сообществу MQL5 лёгкого, математически строгого и высокоадаптивного аналитического инструмента. Независимо от того, являетесь ли вы трейдером, торгующим вручную и ищущим точные точки исчерпания импульса, или разработчиком, интегрирующим машиночитаемые данные в советник, я надеюсь, что этот индикатор станет надёжной основой для ваших проектов.
Если вы считаете этот код полезным для своих торговых систем, пожалуйста, не стесняйтесь оставлять отзывы, делиться своими творческими модификациями или задавать вопросы в разделе обсуждения ниже. Давайте вместе продолжим расширять границы алгоритмической торговли!
Удачного программирования и успешной торговли, — Ritz
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/74839
EA KCI N-Matrix engine
Вершина алгоритмической сетки и кинетического импульса. Добро пожаловать в KCI Native Matrix Engine — безжалостный, основанный на математических алгоритмах гигант, разработанный специально для MetaTrader 5. Созданный для условий высокочастотной торговли (HFT), этот советник отказывается от громоздких стандартных библиотек и работает непосредственно на уровне маршрутизации сервера.
Envelope SAR
Данный индикатор представляет собой осциллятор тренда и импульса, который отслеживает положение цены относительно канала структурной волатильности с помощью нормализованного соотношения между индикаторами «Параболический SAR» и «Огибающие».
Daily Zone Recovery EA mt5 for GOLD
Daily Zone Recovery — это многостратегический торговый советник для MetaTrader 5, работающий на основе максимумов и минимумов предыдущего торгового дня. Советник отслеживает поведение цен вблизи дневных экстремумов, использует три независимые стратегии входа и может управлять позициями с помощью сетки фиксированного объема.
Double Enevlopes (Historical Gauged)
Инструмент и система для управления бизнесом по уходу за детьми :D