ist ein fortschrittliches, von der Physik inspiriertes Analysewerkzeug, das Marktkinematik durch die Messung der Kursweglänge und der Volatilitätsenergie ermittelt. Im Gegensatz zu herkömmlichen Momentum-Instrumenten nutzt KCI-DX eine dynamische Z-Score-Normalisierung in Kombination mit einer sigmoiden Aktivierungsfunktion. Dies gewährleistet, dass der Ausgabewert lückenlos zwischen 0 und 100 begrenzt ist, und ermöglicht so eine äußerst reaktionsschnelle Erkennung der Trendstärke und der Richtungsneigung ohne Verzerrung durch historische Extremwerte. Die KCI-Richtungsmatrix (KCI-DX) ist ein quantitativer Indikator zur Richtungsanalyse, der entwickelt wurde, um Markteffizienz, Richtungsdruck und Trendaufbau mithilfe eines proprietären „Kinetic Compression Index“-Rahmenwerks zu messen.
Wichtigste Merkmale:
Im Gegensatz zu herkömmlichen Momentum-Oszillatoren zerlegt der KCI-DX die Marktbewegung in drei unabhängige Dimensionen:
Der Indikator kombiniert:
Das Ergebnis ist eine stabile Richtungsmatrix im Bereich von 0 bis 100, mit der Folgendes identifiziert werden kann:
KCI-DX kann als eigenständiges Handelsinstrument oder als Komponente für das Feature-Engineering in Expert Advisors, Machine-Learning-Systemen, Marktscannern, adaptiven Grids, dynamischem Stop-Management und Entscheidungsmodulen auf Portfolioebene eingesetzt werden.
Eingabeparameter:

KCI-DX: VISUELLE SCHNELLSTARTANLEITUNG
| Visuelles Element | Farbe & Stil | Bedeutung |
|---|---|---|
| KCI-Hauptlinie | Gold (durchgezogen) | Trendstärke und Kompression. Zeigt an, wie viel kinetische Energie am Markt vorhanden ist, unabhängig von der Richtung. |
| +KDI-Linie | Blau (gestrichelt) | Bullische Energie. Die Stärke der Aufwärtsbewegung des Kurses. |
| -KDI-Linie | Rot (gestrichelt) | Bärische Energie. Die Stärke der Abwärtsbewegung des Kurses. |
| Level 80,0 | Grau (gepunktet) | Extrem-/Erschöpfungszone. Der Trend hat seine maximale Ausprägung erreicht. |
| Niveau 20,0 | Grau (gepunktet) | Kompressions-/Seitwärtszone. Der Markt sammelt Energie. |
Beobachten Sie die Position der Goldlinie (KCI Main), um das Marktumfeld sofort zu erfassen:
Abbildung 1

Visuelle Handelskonstellationen (Schritt für Schritt)
Abb. 2

PROFI-TIPP: Handeln Sie niemals, wenn die blaue und die rote Linie unterhalb der 20er-Marke ineinander verschlungen sind. Warten Sie auf eine klare Trennung und einen Ausbruch der Goldlinie!
KCI Directional Matrix Logic for Expert Advisors (EAs)
Wird dieser Indikator in einem EA verwendet, können die folgenden Handelsregeln angewendet werden:
Dies ist die optimale und empfohlene Methode. Der EA ruft die Datei „KCI-Directional_X.ex5“ auf, die sich im Ordner „Indicators“ befindet.
Code-Ausschnitt:
//+------------------------------------------------------------------+ //| 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() { // Erstellen Sie den Handle für den benutzerdefinierten Indikator. // Stelle sicher, dass sich „KCI-Directional_X.ex5“ an folgendem Speicherort befindet // im Verzeichnis „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); } // Indikatorpuffer als Zeitreihen konfigurieren // (Index 0 = aktueller Balken). ArraySetAsSeries(KCI_Main, true); ArraySetAsSeries(KDI_Plus, true); ArraySetAsSeries(KDI_Minus, true); return(INIT_SUCCEEDED); } void OnTick() { // Die aktuellen Indikatorwerte abrufen // (aktuelle Kerze und die zuletzt geschlossene Kerze). 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-Handelslogik // Alle Handelsentscheidungen basieren auf der zuletzt abgeschlossenen Kerze // (Index 1), um Signale der sich noch bildenden Kerze zu vermeiden. // ------------------------------------------------------------ // Ermitteln, ob sich der Markt in einer Trendphase befindet. bool isTrending = KCI_Main[1] > 20.0; // Erkennen eines bullischen Richtungs-Crossovers. bool buySignal = (KDI_Plus[1] > KDI_Minus[1]) && (KDI_Plus[2] <= KDI_Minus[2]); // Einen bärischen Richtungs-Crossover erkennen. bool sellSignal = (KDI_Minus[1] > KDI_Plus[1]) && (KDI_Minus[2] <= KDI_Plus[2]); // Eine extreme Trendausweitung erkennen. bool isExtreme = KCI_Main[1] >= 80.0; // Beispiel für eine Logik zur Handelsausführung. if(isTrending && buySignal) { Print("KCI-DX BUY signal detected."); // Ausführen Ihrer KAUF-Order // (OrderSend oder CTrade::Buy) hier. } else if(isTrending && sellSignal) { Print("KCI-DX SELL signal detected."); // Ausführen Ihrer VERKAUF-Order // (OrderSend oder CTrade::Sell) hier. } // Optionale Handelssteuerung bei starken Markttrends. if(isExtreme) { Print("Extreme trend detected. Consider activating a trailing stop or managing existing positions."); } }
Bei dieser Methode wird Ihr mathematischer Algorithmus direkt in den EA integriert, ohne dass externe Indikator-Dateien erforderlich sind. Da die Berechnung historische Daten für den Z-Score benötigt, verwenden wir eine spezielle Funktion innerhalb des EA, um das Kurs-Array zu verarbeiten.
Codeausschnitt:
//+------------------------------------------------------------------+ //| 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; // Struktur zur Rückgabe aller drei KCI-DX-Werte // aus einer einzigen Berechnung. struct KCI_Result { double main; double plus; double minus; }; // Berechnung des internen Z-Werts, der für // dynamische Normalisierung. 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); } // Berechne die KCI-DX-Werte für einen angegebenen // historischer Balken (Shift). KCI_Result CalculateKCI(int shift) { KCI_Result res; res.main = 0.0; res.plus = 0.0; res.minus = 0.0; // Ausreichend viele historische Schlusskurse abrufen // sowohl für den Basiszeitraum als auch für das Z-Score-Fenster. int required_bars = InpZScorePeriod + InpBasePeriod; double close[]; ArraySetAsSeries(close, true); if(CopyClose(_Symbol, _Period, shift, required_bars, close) < required_bars) return res; // Unzureichende historische Daten. double raw_plus[]; double raw_minus[]; double raw_trend[]; ArrayResize(raw_plus, InpZScorePeriod); ArrayResize(raw_minus, InpZScorePeriod); ArrayResize(raw_trend, InpZScorePeriod); // ------------------------------------------------------------ // Phase 1: // Kinematische Richtungsermittlung // ------------------------------------------------------------ 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; } // ------------------------------------------------------------ // Phase 2: // Dynamische Sigmoid-Normalisierung // ------------------------------------------------------------ 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() { // Berechne die KCI-DX-Werte für die // die beiden zuletzt abgeschlossenen Kerzen. KCI_Result kci_current = CalculateKCI(1); KCI_Result kci_prev = CalculateKCI(2); // ------------------------------------------------------------ // Beispiel für eine Handelslogik // Erkennen eines bullischen Richtungs-Crossovers. // ------------------------------------------------------------ bool buySignal = (kci_current.plus > kci_current.minus) && (kci_prev.plus <= kci_prev.minus); // Handelslogik nur ausführen, wenn der Markt // befindet sich in einem gültigen Trendzustand. if(kci_current.main > 20.0 && buySignal) { Print("Embedded KCI-DX detected a BUY signal."); // Ausführen Ihrer KAUF-Order // (OrderSend oder CTrade::Buy) hier. } }
Bevor Sie den EA kompilieren und im Handel einsetzen, sollten Sie diese bewährten Vorgehensweisen beachten, um das Beste aus der KCI-Directional-Matrix herauszuholen:
Flexibilität bei den Vermögenswerten: Die Standardparameter (BasePeriod=9, ZScorePeriod=30) reagieren sehr schnell und erzielen bei den wichtigsten Währungspaaren außergewöhnlich gute Ergebnisse. Wenn Sie diese Methode jedoch auf hochvolatile Instrumente wie Gold (XAUUSD), Kryptowährungen (BTC/ETH) oder Indizes anwenden, sollten Sie erwägen, den ZScorePeriod-Wert leicht zu erhöhen (z. B. auf 40 oder 50), um übermäßiges Rauschen herauszufiltern.
Algorithmische Optimierung: Für EA-Entwickler, die komplexe oder Systeme mit mehreren Symbolen erstellen, wird die Verwendung der oben beschriebenen „Embedded Calculation“-Methode dringend empfohlen. Sie hält die CPU-Auslastung unglaublich gering und stellt sicher, dass Ihr Expert Advisor vollständig eigenständig bleibt, ohne dass externe Indikatoraufrufe erforderlich sind.
Kombination für optimale Ergebnisse: KCI-DX ist eine spezielle Engine für Kinematik und Volatilität. Sie liefert zwar bereits für sich genommen eine hervorragende Richtungsneigung, entfaltet ihr volles Potenzial jedoch erst in Kombination mit Ihren bevorzugten strukturellen Filtern (wie Unterstützungs-/Widerstandszonen) oder Detektoren für Volumenanomalien, um den endgültigen Einstieg zu validieren.
Anmerkung des Autors / Fazit: Vielen Dank, dass Sie sich mit der KCI-Directional Matrix beschäftigt haben. Diese Codebasis wurde mit dem klaren Ziel entwickelt, der MQL5-Community ein ressourcenschonendes, mathematisch fundiertes und hochgradig anpassungsfähiges Analysewerkzeug zur Verfügung zu stellen. Ganz gleich, ob Sie als manueller Trader nach präzisen Momentum-Erschöpfungspunkten suchen oder als Entwickler maschinenlesbare Daten in einen Expert Advisor integrieren – ich hoffe, dass dieser Indikator als solide Grundlage für Ihre Projekte dient.
Wenn Sie diesen Code für Ihre Handelssysteme als wertvoll erachten, können Sie gerne eine Bewertung hinterlassen, Ihre kreativen Anpassungen teilen oder im Diskussionsbereich unten eine Frage stellen. Lassen Sie uns gemeinsam die Grenzen des algorithmischen Handels weiter verschieben!
Viel Spaß beim Programmieren und viel Erfolg beim Trading – Ritz
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/74839
EA KCI N-Matrix engine
Der Gipfel des algorithmischen Rasters und des kinetischen Momentums. Willkommen bei der KCI Native Matrix Engine – einem gnadenlosen, mathematisch gesteuerten algorithmischen Giganten, der nativ für MetaTrader 5 entwickelt wurde. Dieser für Hochfrequenzhandelsumgebungen (HFT) konzipierte EA verzichtet auf aufgeblähte Standardbibliotheken und arbeitet direkt auf der Ebene des Server-Routings.
Envelope SAR
Dieser Indikator ist ein Trend-Momentum-Oszillator, der anhand eines normierten Verhältnisses zwischen dem Parabolic SAR und den Envelopes verfolgt, wo sich der Kurs im Verhältnis zu seinem strukturellen Volatilitätskanal befindet.
Double Enevlopes (Historical Gauged)
Ein Tool und System zur Verwaltung von Babysitter-Aufträgen :D
KCI Volatility Distance
Der KCI Volatility Distance ist ein fortschrittlicher, adaptiver Algorithmus, der sorgfältig entwickelt wurde, um die Marktdynamik und die Trendrichtung mit höchster Präzision abzubilden. Mithilfe einer proprietären, matrixbasierten Berechnung filtert dieses Tool Marktstörungen dynamisch heraus und liefert eine streng quantitative Perspektive auf die Stärke der Trendrichtung. Aufgebaut auf einem hochoptimierten Kern aus objektorientierter Programmierung (OOP) ist es sowohl auf visuelle Klarheit beim Handel als auch auf die nahtlose Integration in Expert Advisors oder Machine-Learning-Module ausgelegt und gewährleistet eine extrem geringe CPU-Belastung bei der Analyse mehrerer Vermögenswerte.