Fan sayfamıza katılın
KCI Standard: A Pure Kinematic Computing Engine for Market Singularity Detection - MetaTrader 5 için gösterge
- Görüntülemeler:
- 37
- Derecelendirme:
- Yayınlandı:
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Özet
Kinetik Sıkıştırma Endeksi (KCI), piyasadaki tükenme durumlarını ve yerel sıkıştırma olaylarını tespit etmek üzere tasarlanmış özel bir osilatördür. KCI, harici standart gösterge işleyicilerine dayanmak yerine kinematik ölçütlerini dahili olarak hesaplayarak ek yükü azaltır ve Uzman Danışman (EA) entegrasyonu için tampon yönetimini basitleştirir. Bu makale, MetaTrader 5'te bu aracı uygulamak isteyen geliştiriciler için matematiksel temeli, sistem mimarisini, tampon eşlemesini ve pratik entegrasyon kılavuzlarını ayrıntılı olarak açıklamaktadır.Giriş
Algoritmik ticarette, birden fazla harici gösterge işleyicisine olan bağımlılığı azaltmak, bir Uzman Danışman'ın mimarisini daha verimli hale getirebilir. Birden fazla iCustom veya standart gösterge işleyicisini (hareketli ortalamalar ve standart sapmalar gibi) çağırmak, bazen tampon yönetimi ve başlatma süreçlerini karmaşıklaştırabilir.
KCI, fiyat ve hacim verilerini tek bir dosya içinde yerel olarak işlemek üzere tasarlanmıştır. Fiyat hareketindeki hızlı yavaşlamayı hacim düşüşleriyle birleştirerek tespit ederek, yerel bir ortalamaya dönüşün istatistiksel olarak muhtemel olduğu noktalar olan tükenme olaylarını belirlemeyi amaçlar.
Sorun Tanımı
KCI mimarisinin temel hedefleri şunlardır:
-
Handle Bağımlılığını Azaltmak: Harici handle kullanımını en aza indirmek için hareketli ortalamaları ve sapmaları gösterge döngüsü içinde yerel olarak hesaplamak.
-
Tekrarlanabilir Metrikler Sağlamak: EA'lara temiz, şeffaf matematiksel metrikler (Hız, Sapma ve Dağılım) sunmak.
-
Asenkron Güvenliği Sağlamak: Yalnızca kapalı çubuklarda doğrulama yapan sinyal tamponları oluşturarak, EA'yı çubuk içi yeniden çizimden ve asenkron tik verisi gecikmelerinden korumak.
Teori ve Matematiksel Temel
KCI, dört temel metrik üzerine kurulmuştur. Tam tekrarlanabilirliği sağlamak için temel formüller şu şekilde tanımlanmıştır (burada $n$, BasePeriod değeridir):

Metin Şekil :
1. **Velocity Quotient (VQ)** – Measures the rate of price change. VQ_i=\frac{Close_i-Close_{i-n}}{n} Where: - \(Close_i\) = current closing price - \(Close_{i-n}\) = closing price \(n\) bars ago - \(n\) = lookback period 2. **Kinetic Displacement (KD)** – Measures the deviation of the current price from its local mean. KD_i=Close_i-SMA(Close,n)_i Where: - \(SMA(Close,n)_i\) = Simple Moving Average of the closing price over the last \(n\) periods. 3. **Energy Dispersion (ED)** – Acts as a dynamic volatility proxy, calculated as the standard deviation of the closing price. ED_i=\sqrt{\frac{\sum_{j=0}^{n-1}\left(Close_{i-j}-SMA_i\right)^2}{n}} Where: - \(SMA_i\) = local Simple Moving Average at bar \(i\). 4. **Phase Velocity (PV)** – Tracks the immediate momentum of the Velocity Quotient. PV_i=VQ_i-VQ_{i-1} Where: - \(VQ_i\) = current Velocity Quotient - \(VQ_{i-1}\) = previous Velocity Quotient // Or 1. Velocity Quotient (VQ) VQ(i) = (Close(i) - Close(i-n)) / n 2. Kinetic Displacement (KD) KD(i) = Close(i) - SMA(Close, n) 3. Energy Dispersion (ED) n-1 ----- \ ED(i) = sqrt( / (Close(i-j) - SMA(i))² / n ) ----- j=0 4. Phase Velocity (PV) PV(i) = VQ(i) - VQ(i-1)
Z-Skoru Normalleştirme: Bu dört gösterge farklı ölçeklere sahip olduğundan (örneğin, fiyat noktaları ile saf oranlar), Raw_KCI'ye toplanmadan önce tanımlanmış bir ZScorePeriod boyunca hareketli bir Z-Skoru kullanılarak normalleştirilir.
Sistem Mimarisi ve Birleştirilmiş Tampon Haritası
CopyBuffer() çağrıları sırasında sıkça görülen "Endeks Sınır Dışı" veya uyumsuz tampon hatalarını önlemek için KCI, aşağıdaki birleşik tampon haritasına sıkı sıkıya bağlı kalır. Bu eşleme, #property bildirimleri, SetIndexBuffer() ve EA entegrasyonu genelinde tutarlıdır.| Tampon İndeksi | Tampon Adı | Tür | Amaç |
| 0 | KCI_Main | INDICATOR_DATA | Görsel Polarize Osilatör hattı |
| 1 | KCI_Renk | GÖSTERGEC_RENK_ENDEKSI | Ana çizgi için dinamik renk eşlemesi |
| 2 | Signal_Buy | GÖSTERGESİ_VERİ | Alım Sinyali (1,0 = Al, 0,0 = Nötr) |
| 3 | Satış Sinyali | GÖSTERG_VERİ | Satış Sinyali (1,0 = Sat, 0,0 = Nötr) |
| 4 | Internal_VQ | GÖSTERGELER_HESAPLAMALARI | Hız Katsayısı dizisi |
| 5 | Internal_KD | GÖSTERGELER_HESAPLAMALARI | Kinetik Yer Değişimi dizisi |
| 6 | Internal_ED | GÖSTERGELERİN HESAPLANMASI | Enerji Dağılımı dizisi (SL/TP için kullanılır) |
| 7 | Internal_PV | GÖSTERGELER_HESAPLAMALARI | Faz Hızı dizisi |
| 8 | Ham_KCI | GÖSTERGELERİN HESAPLANMASI | Normalleştirilmiş matrislerin toplamı |
Kod Açıklaması: EA Entegrasyonu ve Risk Yönetimi
Bir EA'dan KCI çağrıldığında, kod göstergenin tanıtıcısının yaşam döngüsünü yönetmeli, CopyBuffer'ın verileri başarıyla aldığını doğrulamalı ve Stop Loss (SL) ile Take Profit (TP) için tüm fiyat hesaplamalarını sembolün basamak sayısına göre normalleştirmelidir.
İşte düzeltilmiş, sağlam EA entegrasyon şablonu:
#include <Trade\Trade.mqh> CTrade trade; int handle_kci; datetime last_bar_time = 0; double buf_buy[], buf_sell[], buf_ed[]; int OnInit() { // KCI tanıtıcısını başlat handle_kci = iCustom(_Symbol, _Period, "KCI", 50, 2.0, 14); if(handle_kci == INVALID_HANDLE) { Print("Failed to create KCI handle!"); return(INIT_FAILED); } ArraySetAsSeries(buf_buy, true); ArraySetAsSeries(buf_sell, true); ArraySetAsSeries(buf_ed, true); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { if(handle_kci != INVALID_HANDLE) IndicatorRelease(handle_kci); } void OnTick() { datetime current_time = (datetime)SeriesInfoInteger(_Symbol, _Period, SERIES_LASTBAR_DATE); if(current_time == last_bar_time) return; // Temel filtre: her sembol için yalnızca bir konum if(PositionsTotal() > 0) { for(int i = PositionsTotal() - 1; i >= 0; i--) { if(PositionGetSymbol(i) == _Symbol) return; } } // Verileri Al (Tampon 2 = Alış, Tampon 3 = Satış, Tampon 6 = ED) if(CopyBuffer(handle_kci, 2, 1, 1, buf_buy) <= 0) return; if(CopyBuffer(handle_kci, 3, 1, 1, buf_sell) <= 0) return; if(CopyBuffer(handle_kci, 6, 1, 1, buf_ed) <= 0) return; // Veriler başarıyla kopyalandıktan SONRA zaman kilidi uygulanmalıdır last_bar_time = current_time; double dynamic_volatility = buf_ed[0]; if(dynamic_volatility == 0) return; double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT); int digits = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS); double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); // Normalleştirilmiş Dinamik Oynaklık Stop Loss’u Kullanan Yürütme Mantığı if(buf_buy[0] == 1.0) { double sl = NormalizeDouble(ask - (dynamic_volatility * 1.5), digits); double tp = NormalizeDouble(ask + (dynamic_volatility * 3.0), digits); trade.Buy(0.01, _Symbol, ask, sl, tp, "KCI Buy"); } if(buf_sell[0] == 1.0) { double sl = NormalizeDouble(bid + (dynamic_volatility * 1.5), digits); double tp = NormalizeDouble(bid - (dynamic_volatility * 3.0), digits); trade.Sell(0.01, _Symbol, bid, sl, tp, "KCI Sell"); } }
Performans ve Sınırlamalar
Gerçekçi beklentiler oluşturmak için, geliştiriciler aşağıdaki yapısal sınırlamaları dikkate almalıdır:
-
Tick Hacmi Bağımlılığı: Forex/CFD'ler için tick_volume, gerçek likiditeyi değil, fiyat değişikliklerinin sıklığını temsil eder. Hacimsel sıkıştırma metriği, gerçek hacmin mevcut olduğu merkezi borsalarda (Hisse Senetleri/Vadeli İşlemler) farklı davranabilir.
-
Ortalamaya Dönüş Hassasiyeti: Sınırlı bir osilatör olan KCI, hareketin tükenmesini yakalamayı amaçlar. Güçlü, trendli bir piyasada, arka arkaya erken tersine dönüş sinyalleri üretebilir. Daha yüksek zaman dilimindeki bir trend filtresi (örn. EMA 200) ile birlikte kullanılmalıdır.
-
Düşük Zaman Diliminde Gürültü: Bu göstergenin M1 veya M5 zaman dilimlerinde kullanılması, mantığını mikro yapı gürültüsüne maruz bırakır. Z-Skoru normalizasyonu istikrarlı bir dağılım gerektirir ve bu da M15 ve üzeri zaman dilimlerinde daha iyi bulunur.
Sonuç
Kinetic Compression Index, birden fazla standart göstergenin üst üste eklenmesine şeffaf ve yerel olarak hesaplanan bir alternatif sunar. Birleştirilmiş bir tampon haritası aracılığıyla hem kapalı çubuklardaki yön sinyallerini hem de dinamik bir volatilite göstergesini (Enerji Dağılımı) ortaya koyarak, MQL5 Uzman Danışmanları için güvenilir bir yapısal bileşen görevi görür.Grafikte Uygulama: (KCI Custom)
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/74580
EA KCI Embeded Sniper
KCI Embedded Sniper, yüksek hassasiyetli ters yönlü girişler için tasarlanmış bir algoritmik işlem çözümüdür. Harici göstergelere bağımlı olan (ve genellikle iş parçacığı senkronizasyon bozukluğu ve gecikme sorunları yaşayan) geleneksel Uzman Danışmanların aksine, bu Uzman Danışman tamamen entegre bir Kinetic Compression Index (KCI) motoruna sahiptir. KCI’nin matematiksel çerçevesinin tamamını — Hız Katsayıları, Kinetik Yer Değişimi, Enerji Dağılımı ve Faz Hızını hesaplama — doğrudan EA’nın temel mantığına aktararak, “asenkron gecikmeyi” ortadan kaldırdık. Sonuç olarak, piyasa tükenmesini (Singularity) ve momentum uç değerlerini (Williams %R) mikrosaniye hassasiyetinde doğrulayan, sıfır yeniden çizim performansı sağlamak için yalnızca tamamlanmış çubuklar üzerinde çalışan, yıldırım hızında bir sniper motoru ortaya çıkmıştır.
RSI Histogram
This is an MQL5 custom indicator for MetaTrader 5 called RSI Histogram. It plots the standard RSI line in a separate window, plus a color-coded histogram version of the same RSI values that changes color based on momentum:
GoldLondonBreakout
Locks in the Asian session range on XAUUSD, then places an OCO breakout pair (BuyStop/SellStop) for the London open, with ATR-based stops and risk-percent position sizing. No indicators, no discretion — the range is measured, not guessed.
Market Structure SMC: Swings, BOS/CHoCH, Order Blocks, FVG, QML
MT5 için SMC/ICT piyasa yapısı göstergesi: kapanışta teyit edilen salınım tepe/dip noktaları, BOS (devam) ve CHoCH (tersine dönüş), Emir Blokları, Gerçek Değer Açıkları ve QML (Quasimodo) seviyeleri. Her özellik açılıp kapatılabilir; salınım hassasiyeti ve renkler ayarlanabilir. Herhangi bir sembol ve zaman diliminde çalışır.
