//@version=5
indicator(title="3EMA + ATR Gelişmiş Yatay Piyasa", shorttitle="3EMA+ATR Pro", overlay=true)
// EMA Ayarları
len1 = input.int(13, minval=1, title="EMA 13 Length")
len2 = input.int(48, minval=1, title="EMA 48 Length")
len3 = input.int(200, minval=1, title="EMA 200 Length")
// EMA Hesaplamaları
ema13 = ta.ema(close, len1)
ema48 = ta.ema(close, len2)
ema200 = ta.ema(close, len3)
// EMA Çizimleri
plot(ema13, color=color.black, linewidth=2, title="EMA 13")
plot(ema48, color=color.blue, linewidth=1, title="EMA 48")
plot(ema200, color=color.lime, linewidth=1, title="EMA 200")
// ATR Ayarları
atrLength = input.int(14, minval=1, title="ATR Length")
atr = ta.atr(atrLength)
// GELİŞMİŞ YATAY PİYASA TESPİTİ
lookbackShort = input.int(20, minval=10, title="Kısa Periyot Yatay Kontrol")
lookbackLong = input.int(50, minval=20, title="Uzun Periyot Yatay Kontrol")
// 1. Fiyat Dalgalanma Oranı (Kısa ve Uzun Periyot)
highestHighShort = ta.highest(high, lookbackShort)
lowestLowShort = ta.lowest(low, lookbackShort)
priceRangeShort = highestHighShort - lowestLowShort
avgPriceShort = (highestHighShort + lowestLowShort) / 2
volatilityRatioShort = priceRangeShort / avgPriceShort
highestHighLong = ta.highest(high, lookbackLong)
lowestLowLong = ta.lowest(low, lookbackLong)
priceRangeLong = highestHighLong - lowestLowLong
avgPriceLong = (highestHighLong + lowestLowLong) / 2
volatilityRatioLong = priceRangeLong / avgPriceLong
// 2. EMA Yakınsaklık Kontrolü
emaDistance13_48 = math.abs(ema13 - ema48) / close * 100
emaDistance13_200 = math.abs(ema13 - ema200) / close * 100
emasConverging = emaDistance13_48 < 0.5 and emaDistance13_200 < 1.0
// 3. ATR Trend Analizi
atrShort = ta.atr(7) // Daha kısa ATR
atrLong = ta.atr(21) // Daha uzun ATR
atrDecreasing = atrShort < atrLong * 0.8 // ATR düşüş trendinde
// 4. Volume Analizi
volumeAvg = ta.sma(volume, 20)
currentVolume = volume
lowVolume = currentVolume < volumeAvg * 0.7 // Düşük volume yatay piyasa işareti
// 5. DOĞRU ADX HESAPLAMASI - DÜZELTİLDİ
adxLength = input.int(14, title="ADX Length")
[dip, din, adx] = ta.dmi(adxLength, adxLength)
weakTrend = adx < 20 // ADX 20'nin altında zayıf trend
// ÇOKLU KRİTERLİ YATAY PİYASA TESPİTİ
isSidewaysMarketBasic = volatilityRatioShort < 0.03 and volatilityRatioLong < 0.04
isSidewaysMarketAdvanced = (volatilityRatioShort < 0.04 or volatilityRatioLong < 0.05) and emasConverging and atrDecreasing
isSidewaysMarketStrict = volatilityRatioShort < 0.025 and emasConverging and atrDecreasing and weakTrend
// Yatay Piyasa Seviyeleri
isSidewaysLevel1 = isSidewaysMarketBasic // Hafif Yatay
isSidewaysLevel2 = isSidewaysMarketAdvanced // Orta Yatay
isSidewaysLevel3 = isSidewaysMarketStrict // Güçlü Yatay
// Görsel Uyarılar - Renk Kodlamalı
bgcolor(isSidewaysLevel3 ? color.new(color.red, 85) : isSidewaysLevel2 ? color.new(color.orange, 85) : isSidewaysLevel1 ? color.new(color.yellow, 85) : na, title="Yatay Piyasa Seviyeleri")
// ATR Bazlı Bollinger Bantları
atrMultiplier = input.float(2.0, minval=0.5, maxval=3.0, title="ATR Çarpanı")
upperBand = ema13 + (atr * atrMultiplier)
lowerBand = ema13 - (atr * atrMultiplier)
plot(upperBand, color=color.gray, linewidth=1, title="ATR Üst Band")
plot(lowerBand, color=color.gray, linewidth=1, title="ATR Alt Band")
// Alım/Satım Sinyalleri (Yatay piyasa dışında)
buySignal = not isSidewaysLevel2 and ta.crossover(ema13, ema200) and ema13 > ema200
sellSignal = not isSidewaysLevel2 and ta.crossunder(ema13, ema200) and ema13 < ema200
plotshape(buySignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Alım Sinyali")
plotshape(sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Satım Sinyali")
// GELİŞMİŞ BİLGİ PANELİ
var table infoTable = table.new(position.top_right, 2, 8, bgcolor=color.white, border_width=1)
if barstate.islast
table.cell(infoTable, 0, 0, "ATR Değeri:", bgcolor=color.gray)
table.cell(infoTable, 1, 0, str.tostring(atr, "#.##"), bgcolor=color.gray)
table.cell(infoTable, 0, 1, "ATR %:", bgcolor=color.gray)
table.cell(infoTable, 1, 1, str.tostring((atr/close)*100, "#.##") + "%", bgcolor=color.gray)
table.cell(infoTable, 0, 2, "Volatilite(K):", bgcolor=color.gray)
table.cell(infoTable, 1, 2, str.tostring(volatilityRatioShort*100, "#.##") + "%", bgcolor=color.gray)
table.cell(infoTable, 0, 3, "Volatilite(U):", bgcolor=color.gray)
table.cell(infoTable, 1, 3, str.tostring(volatilityRatioLong*100, "#.##") + "%", bgcolor=color.gray)
table.cell(infoTable, 0, 4, "EMA Yakınlık:", bgcolor=color.gray)
table.cell(infoTable, 1, 4, emasConverging ? "EVET" : "HAYIR", bgcolor=emasConverging ? color.orange : color.gray)
table.cell(infoTable, 0, 5, "ADX:", bgcolor=color.gray)
table.cell(infoTable, 1, 5, str.tostring(adx, "#.##"), bgcolor=weakTrend ? color.orange : color.gray)
table.cell(infoTable, 0, 6, "Volume:", bgcolor=color.gray)
table.cell(infoTable, 1, 6, lowVolume ? "DÜŞÜK" : "NORMAL", bgcolor=lowVolume ? color.orange : color.gray)
table.cell(infoTable, 0, 7, "Piyasa Durumu:", bgcolor=color.gray)
table.cell(infoTable, 1, 7, isSidewaysLevel3 ? "GÜÇLÜ YATAY" : isSidewaysLevel2 ? "ORTA YATAY" : isSidewaysLevel1 ? "HAFİF YATAY" : "TREND",
bgcolor=isSidewaysLevel3 ? color.red : isSidewaysLevel2 ? color.orange : isSidewaysLevel1 ? color.yellow : color.green)
// Erken Uyarı Sinyalleri
earlySidewaysWarning = volatilityRatioShort < 0.035 and atrDecreasing
plotshape(earlySidewaysWarning and not earlySidewaysWarning[1], style=shape.circle, location=location.abovebar, color=color.blue, size=size.tiny, title="Erken Yatay Uyarısı")
// Uyarılar
alertcondition(buySignal, title="Alım Sinyali", message="EMA 13, EMA 200'ün üzerine çıktı")
alertcondition(sellSignal, title="Satım Sinyali", message="EMA 13, EMA 200'ün altına düştü")
alertcondition(earlySidewaysWarning and not earlySidewaysWarning[1], title="Erken Yatay Uyarısı", message="Yatay piyasa oluşumu başlıyor")
Bu kod, TradingView için gelişmiş bir yatay piyasa (sideways/range market) tespit indikatörüdür. Hem trendli hem de yatay piyasa koşullarında işlem yapmak için tasarlanmıştır.
1. Çoklu EMA Analizi:
EMA 13 (kısa dönem)
EMA 48 (orta dönem)
EMA 200 (uzun dönem)
EMA'ların birbirine yakınlığını ölçerek yatay piyasa tespiti
2. Gelişmiş Yatay Piyasa Tespiti:
Fiyat Dalgalanma Oranı: Kısa ve uzun periyotlarda fiyat değişim oranı
EMA Yakınsaklık Kontrolü: EMA'ların birbirine yaklaşması
ATR Trend Analizi: Volatilite düşüşünü tespit etme
Volume Analizi: Düşük hacim tespiti
ADX Göstergesi: Trend zayıflığını ölçme
3. Üç Seviyeli Yatay Piyasa Tespiti:
Hafif Yatay (Sarı renk)
Orta Yatay (Turuncu renk)
Güçlü Yatay (Kırmızı renk)
4. İşlem Sinyalleri:
Alım Sinyali: EMA 13'ün EMA 200'ü yukarı kırması (yatay piyasa dışında)
Satım Sinyali: EMA 13'ün EMA 200'ü aşağı kırması (yatay piyasa dışında)
Erken Yatay Uyarısı: Yatay piyasanın başladığını gösteren mavi daire
5. ATR Tabanlı Bollinger Bantları:
EMA 13 etrafında ATR ile hesaplanan üst/alt bantlar
Fiyatın normal dalgalanma aralığını gösterir
6. Bilgi Paneli:
Sağ üstte tüm önemli verileri gösteren tablo
ATR değeri, volatilite, ADX, hacim durumu, piyasa durumu
Piyasa Koşulunu Belirleme: Piyasanın trend mi yoksa yatay mı olduğunu anlamak
İşlem Stratejisi Seçimi: Yatay piyasada range trading, trendli piyasada trend following
Risk Yönetimi: Yatay piyasada stop-loss'ları daraltma
Volatilite Analizi: Piyasa volatilitesinin düşük olup olmadığını tespit etme
Erken Uyarı: Yatay piyasanın başlangıcını erkenden fark etme
Birden fazla göstergeyi birleştirerek daha doğru yatay piyasa tespiti
Görsel renk kodlamasıyla hızlı anlaşılırlık
Hem yatay hem trendli piyasalar için sinyal üretme
Detaylı bilgi paneli ile tüm verileri bir arada görme
Bu indikatör özellikle yatay piyasalarda sık sık "whipsaw" (yanlış kırılma) sinyalleri veren trend göstergelerini filtrelemek için kullanışlıdır.