//@version=5
indicator("Genişletilmiş Fibo Seviyeleri Tarayıcı", overlay=true)
// === Kullanıcı Ayarları ===
length = input.int(100, "Swing Aralığı (bar sayısı)", minval=10)
tolerance = input.float(0.002, "Yakınlık toleransı (örnek: 0.002 = %0.2)")
show_alerts = input.bool(true, "Sinyalleri Göster")
show_labels = input.bool(true, "Fibo Etiketlerini Göster")
// === Fibonacci Seviyeleri Seçimi ===
show_0 = input.bool(true, "Fibo 0.0", group="Fibonacci Seviyeleri")
show_0236 = input.bool(true, "Fibo 0.236", group="Fibonacci Seviyeleri")
show_0382 = input.bool(true, "Fibo 0.382", group="Fibonacci Seviyeleri")
show_05 = input.bool(true, "Fibo 0.5", group="Fibonacci Seviyeleri")
show_0618 = input.bool(true, "Fibo 0.618", group="Fibonacci Seviyeleri")
show_0786 = input.bool(true, "Fibo 0.786", group="Fibonacci Seviyeleri")
show_0886 = input.bool(true, "Fibo 0.886", group="Fibonacci Seviyeleri")
show_10 = input.bool(true, "Fibo 1.0", group="Fibonacci Seviyeleri")
show_1272 = input.bool(true, "Fibo 1.272", group="Fibonacci Seviyeleri")
show_1414 = input.bool(true, "Fibo 1.414", group="Fibonacci Seviyeleri")
show_1618 = input.bool(true, "Fibo 1.618", group="Fibonacci Seviyeleri")
// === Swing High / Low ===
swingHigh = ta.highest(high, length)
swingLow = ta.lowest(low, length)
priceRange = swingHigh - swingLow
// === Fibonacci Seviyeleri ===
fibo_0 = swingLow
fibo_0236 = swingHigh - priceRange * 0.236
fibo_0382 = swingHigh - priceRange * 0.382
fibo_05 = swingHigh - priceRange * 0.5
fibo_0618 = swingHigh - priceRange * 0.618
fibo_0786 = swingHigh - priceRange * 0.786
fibo_0886 = swingHigh - priceRange * 0.886
fibo_10 = swingHigh
fibo_1272 = swingHigh + priceRange * 0.272
fibo_1414 = swingHigh + priceRange * 0.414
fibo_1618 = swingHigh + priceRange * 0.618
// === Fiyat Kontrol Fonksiyonu ===
check_level(level, ratio) =>
math.abs(close - level) / math.max(math.abs(level), 0.0001) <= tolerance
// Her seviye için sinyal kontrolü (sadece aktif seviyeler)
signal_0 = show_0 and check_level(fibo_0, 0.0)
signal_0236 = show_0236 and check_level(fibo_0236, 0.236)
signal_0382 = show_0382 and check_level(fibo_0382, 0.382)
signal_05 = show_05 and check_level(fibo_05, 0.5)
signal_0618 = show_0618 and check_level(fibo_0618, 0.618)
signal_0786 = show_0786 and check_level(fibo_0786, 0.786)
signal_0886 = show_0886 and check_level(fibo_0886, 0.886)
signal_10 = show_10 and check_level(fibo_10, 1.0)
signal_1272 = show_1272 and check_level(fibo_1272, 1.272)
signal_1414 = show_1414 and check_level(fibo_1414, 1.414)
signal_1618 = show_1618 and check_level(fibo_1618, 1.618)
// Toplam sinyal (sadece aktif seviyeler)
fiboSignal = signal_0 or signal_0236 or signal_0382 or signal_05 or signal_0618 or signal_0786 or signal_0886 or signal_10 or signal_1272 or signal_1414 or signal_1618
// Aktif seviye belirleme
active_level =
signal_0 ? "0.0" :
signal_0236 ? "0.236" :
signal_0382 ? "0.382" :
signal_05 ? "0.5" :
signal_0618 ? "0.618" :
signal_0786 ? "0.786" :
signal_0886 ? "0.886" :
signal_10 ? "1.0" :
signal_1272 ? "1.272" :
signal_1414 ? "1.414" :
signal_1618 ? "1.618" : ""
// === Görselleştirme ===
// Seçilen Fibo seviyelerini çiz
p0 = plot(show_0 ? fibo_0 : na, "Fibo 0.0", color.new(color.red, 50), linewidth=2)
p236 = plot(show_0236 ? fibo_0236 : na, "Fibo 0.236", color.new(color.orange, 50), linewidth=1)
p382 = plot(show_0382 ? fibo_0382 : na, "Fibo 0.382", color.new(color.yellow, 50), linewidth=1)
p5 = plot(show_05 ? fibo_05 : na, "Fibo 0.5", color.new(color.green, 50), linewidth=2)
p618 = plot(show_0618 ? fibo_0618 : na, "Fibo 0.618", color.new(color.blue, 50), linewidth=1)
p786 = plot(show_0786 ? fibo_0786 : na, "Fibo 0.786", color.new(color.purple, 50), linewidth=1)
p886 = plot(show_0886 ? fibo_0886 : na, "Fibo 0.886", color.new(color.fuchsia, 50), linewidth=1)
p10 = plot(show_10 ? fibo_10 : na, "Fibo 1.0", color.new(color.black, 50), linewidth=2)
p1272 = plot(show_1272 ? fibo_1272 : na, "Fibo 1.272", color.new(color.gray, 50), linewidth=1)
p1414 = plot(show_1414 ? fibo_1414 : na, "Fibo 1.414", color.new(color.silver, 50), linewidth=1)
p1618 = plot(show_1618 ? fibo_1618 : na, "Fibo 1.618", color.new(color.lime, 50), linewidth=2)
// === ETİKET YÖNETİMİ ===
// Etiket ID'lerini saklamak için değişkenler
var label label_0 = na
var label label_0236 = na
var label label_0382 = na
var label label_05 = na
var label label_0618 = na
var label label_0786 = na
var label label_0886 = na
var label label_10 = na
var label label_1272 = na
var label label_1414 = na
var label label_1618 = na
// Seçilen Fibo seviye etiketleri (sadece son barda)
if barstate.islast and show_labels
// Fibo 0.0
if show_0
if na(label_0)
label_0 := label.new(bar_index, fibo_0, "Fibo 0.0", style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)
else
label.set_xy(label_0, bar_index, fibo_0)
else
if not na(label_0)
label.delete(label_0)
label_0 := na
// Fibo 0.236
if show_0236
if na(label_0236)
label_0236 := label.new(bar_index, fibo_0236, "0.236", style=label.style_label_left, color=color.orange, textcolor=color.white, size=size.small)
else
label.set_xy(label_0236, bar_index, fibo_0236)
else
if not na(label_0236)
label.delete(label_0236)
label_0236 := na
// Fibo 0.382
if show_0382
if na(label_0382)
label_0382 := label.new(bar_index, fibo_0382, "0.382", style=label.style_label_left, color=color.yellow, textcolor=color.black, size=size.small)
else
label.set_xy(label_0382, bar_index, fibo_0382)
else
if not na(label_0382)
label.delete(label_0382)
label_0382 := na
// Fibo 0.5
if show_05
if na(label_05)
label_05 := label.new(bar_index, fibo_05, "Fibo 0.5", style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small)
else
label.set_xy(label_05, bar_index, fibo_05)
else
if not na(label_05)
label.delete(label_05)
label_05 := na
// Fibo 0.618
if show_0618
if na(label_0618)
label_0618 := label.new(bar_index, fibo_0618, "0.618", style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small)
else
label.set_xy(label_0618, bar_index, fibo_0618)
else
if not na(label_0618)
label.delete(label_0618)
label_0618 := na
// Fibo 0.786
if show_0786
if na(label_0786)
label_0786 := label.new(bar_index, fibo_0786, "0.786", style=label.style_label_left, color=color.purple, textcolor=color.white, size=size.small)
else
label.set_xy(label_0786, bar_index, fibo_0786)
else
if not na(label_0786)
label.delete(label_0786)
label_0786 := na
// Fibo 0.886
if show_0886
if na(label_0886)
label_0886 := label.new(bar_index, fibo_0886, "0.886", style=label.style_label_left, color=color.fuchsia, textcolor=color.white, size=size.small)
else
label.set_xy(label_0886, bar_index, fibo_0886)
else
if not na(label_0886)
label.delete(label_0886)
label_0886 := na
// Fibo 1.0
if show_10
if na(label_10)
label_10 := label.new(bar_index, fibo_10, "Fibo 1.0", style=label.style_label_left, color=color.black, textcolor=color.white, size=size.small)
else
label.set_xy(label_10, bar_index, fibo_10)
else
if not na(label_10)
label.delete(label_10)
label_10 := na
// Fibo 1.272
if show_1272
if na(label_1272)
label_1272 := label.new(bar_index, fibo_1272, "1.272", style=label.style_label_left, color=color.gray, textcolor=color.white, size=size.small)
else
label.set_xy(label_1272, bar_index, fibo_1272)
else
if not na(label_1272)
label.delete(label_1272)
label_1272 := na
// Fibo 1.414
if show_1414
if na(label_1414)
label_1414 := label.new(bar_index, fibo_1414, "1.414", style=label.style_label_left, color=color.silver, textcolor=color.black, size=size.small)
else
label.set_xy(label_1414, bar_index, fibo_1414)
else
if not na(label_1414)
label.delete(label_1414)
label_1414 := na
// Fibo 1.618
if show_1618
if na(label_1618)
label_1618 := label.new(bar_index, fibo_1618, "Fibo 1.618", style=label.style_label_left, color=color.lime, textcolor=color.black, size=size.small)
else
label.set_xy(label_1618, bar_index, fibo_1618)
else
if not na(label_1618)
label.delete(label_1618)
label_1618 := na
// Sinyal arkaplan rengi
bgcolor(show_alerts and fiboSignal ? color.new(color.green, 85) : na)
// === Bilgi Metni ===
var table info_table = table.new(position.top_right, 1, 1)
if fiboSignal
table.cell(info_table, 0, 0, "Fibo " + active_level + " Seviyesinde",
text_color=color.black, bgcolor=color.yellow)
else
table.cell(info_table, 0, 0, "", bgcolor=color.yellow)
// === Alarm ===
alertcondition(fiboSignal and show_alerts, title="Fiyat Fibonacci Seviyesinde")
// === Swing Noktalarını İşaretleme ===
plotshape(ta.highest(high, length) == high, "Swing High", shape.triangledown,
location.abovebar, color.red, size=size.small)
plotshape(ta.lowest(low, length) == low, "Swing Low", shape.triangleup,
location.belowbar, color.green, size=size.small)
Bu kod, TradingView için geliştirilmiş "Genişletilmiş Fibo Seviyeleri Tarayıcı" adlı bir teknik analiz göstergesidir. İşlevlerini şöyle özetleyebilirim:
Fiyatın Fibonacci seviyelerine yakınlığını tespit eden ve görselleştiren bir tarayıcı/alarm sistemidir.
Swing yüksek ve düşük noktaları arasında 12 farklı Fibonacci seviyesi hesaplar:
Klasik seviyeler: 0.0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0
Genişletilmiş seviyeler: 0.886, 1.272, 1.414, 1.618
Gerçek zamanlı tarama: Mevcut kapanış fiyatının Fibonacci seviyelerine yakın olup olmadığını kontrol eder
Yakınlık toleransı: Kullanıcının belirlediği tolerans dahilinde (%0.2 gibi) sinyal üretir
Görsel uyarılar: Fiyat bir Fibo seviyesine yaklaştığında arka plan rengi değişir (yeşilimsi vurgu)
Alarm sistemi: TradingView alarmı tetiklenebilir
Seviye çizgileri: Her Fibonacci seviyesi farklı renkte yatay çizgilerle gösterilir
Etiketler: Sağ tarafta her seviyenin değeri ve adı görünür
Swing noktaları: Üçgen işaretlerle swing yüksek/alçak noktaları işaretlenir
Bilgi tablosu: Sağ üstte aktif seviyeyi gösteren bir bilgi paneli
Swing periyodu: Kaç barlık swing aralığı kullanılacağı
Seviye seçimi: Hangi Fibonacci seviyelerinin gösterileceği
Tolerans ayarı: Yakınlık hassasiyeti
Görünüm kontrolleri: Etiketlerin ve sinyallerin gösterilip gösterilmeyeceği
Destek/Direnç tespiti: Fibo seviyeleri potansiyel destek/direnç alanlarıdır
Alım/Satım noktaları: Fiyatın Fibo seviyelerinde tepki vermesi beklenebilir
Hedef belirleme: Genişletilmiş seviyeler (1.272, 1.618) hedef alanları olabilir
Trend analizi: Fiyatın hangi Fibo seviyelerinde konsolide olduğunu görmek
Risk yönetimi: Stop-loss seviyeleri için Fibo seviyelerini kullanmak
Belirlenen periyotta (örneğin son 100 barda) swing yüksek ve düşük noktalarını bulur
Bu iki nokta arasındaki farkı hesaplar
Fibonacci oranlarını bu farka uygulayarak seviyeleri belirler
Mevcut fiyatın bu seviyelere yakın olup olmadığını kontrol eder
Yakınsa sinyal üretir ve görselleştirir
Bu gösterge özellikle Fibonacci analizi yapan tradeler için fiyatın kritik Fibo seviyelerine yaklaştığını otomatik olarak tespit etmek ve alarm vermek için tasarlanmıştır.