Herkese selamlar, ben Ömer. Financor'un sinyal kartlarında gördüğünüz skor, bölge ve renk rastgele değil; geçmiş fiyat hareketine bakan bir kural zincirinin sonucu. Bu yazıda o zinciri baştan sona açmaya çalışacağım: önce sade bir dille, isteyenler için altında teknik detaylarla.
Bu sistem neyi çözmeye çalışıyor
Financor günlük fiyat tahmini yapmıyor. "Yarın çıkar mı, düşer mi?" sorusuna cevap aramak yerine çok daha eski ve sade bir soruya odaklanıyor.
Bir varlığın fiyatı geçmişte belirli seviyelerde defalarca durmuş ya da oradan geri dönmüşse, o seviye bir destek sayılır; kalabalığın "burası ucuz" dediği bir bölge. Financor bu bölgeleri geçmiş grafikten otomatik buluyor ve güncel fiyatın o bölgeye göre nerede durduğunu gösteriyor. "Alım Bölgesi", fiyatın geçmişte defalarca güçlü destek bulmuş bir seviyeye yakın olduğu anlamına geliyor; kesin bir dip garantisi değil.
Yöntem klasik destek-direnç okuluna dayanıyor: fractal swing-low tespiti, yakınlık bazlı kümeleme, ATR ile bant genişliği, Fibonacci çakışması ve iki doğrulayıcı gösterge (RSI, Mayer Multiple). Tamamı SignalEngine.swift içinde saf fonksiyonlar olarak yazılı; ağ isteği ya da dışarıdan durum yok, aynı mum verisi her zaman aynı skoru üretiyor.
Hesap haftalık mumlar üzerinden, yaklaşık 10 yıllık geçmişe bakarak yapılıyor. Günlük gürültüyü değil büyük resmi hedeflediği için sinyal gün içinde değişmiyor, genelde hafta bazında kayıyor.
"Bölge" tam olarak nedir
Kartta gördüğünüz "Bölge $x – $y" aralığı dört adımda çıkarılıyor.
Adım 1: Dipleri bul
Bir mumun dibi, solundaki ve sağındaki birkaç mumdan daha düşükse orası "yerel bir dip" sayılıyor. Financor on yıllık geçmişte bu dipleri tarıyor.
i. mumun low değeri, solundaki ve sağındaki n mumun hepsinden düşükse swing low sayılıyor. fractalN = 4, bütün varlıklarda sabit.
candles[i].low == window(i-n...i+n).map(\.low).min()Adım 2: Yalnızca güncel yapıyı kullan
On yılın bütün diplerini bir havuza atmak yanıltıcı olurdu: 2018'de kalmış, o zamandan beri geçerliliğini yitirmiş bir seviye sırf çok test edildiği için "güçlü" görünebilirdi. Bu yüzden takvim değil, son kaç dibin kullanılacağı belirleniyor.
| Varlık grubu | Son dip sayısı |
|---|---|
| Altın / Gümüş | 11 |
| Bitcoin / Ethereum / Solana | 5 |
| Altın / Gümüş (aylık görünüm) | 4 |
Pencere recentSwingCount ile sınırlı. Emtialar yıllara yayılan yavaş döngüler yaşadığı için geniş, kripto hızlı hareket ettiği için dar pencere kullanılıyor. Bu ayrım gerçek bir hatayı düzeltti: eski sürümde 2018-19'dan kalma $5-8 bin bandındaki bir Bitcoin bölgesi, fiyat $64 bine çıktıktan sonra bile "en güçlü bölge" seçiliyordu.
Adım 3: Yakın dipleri kümele
Birbirine yakın fiyattaki dipler tek bir bölge sayılıyor. Bir bölgeye ne kadar çok dip düşerse o bölge o kadar çok test edilmiş, yani güçlü sayılıyor.
Sıralı tek geçişli kümeleme, clusterTolerance = 0.02 (%2). Sonuç bir Zone { range, touchCount }; touchCount o kümeye düşen dip sayısı.
Adım 4: En uygun bölgeyi seç, pay ekle
Birden çok bölge varsa fiyata yakın ve çok test edilmiş olan seçiliyor. Sınırlara sabit bir yüzde değil, varlığın güncel oynaklığından türetilen bir pay ekleniyor; gümüş altından daha oynak olduğu için gümüşün bölgesi de doğal olarak daha geniş çıkıyor.
Adaylar lowerBound <= price × 1.05 filtresinden geçiyor, sonra en yüksek touchCount seçiliyor (eşitlikte fiyata yakınlık belirliyor). Bölgeye Wilder ATR(14)'ün yarısı kadar pay ekleniyor:
padded = (zone.low - ATR14/2) ... (zone.high + ATR14/2)Doğrulayıcılar: Fibonacci, RSI, Mayer
Bölge yalnızca "geçmişte burada durmuş" diyor, "şimdi ucuz mu" demiyor. Bu soruyu farklı açılardan cevaplayan göstergeler var.
Fibonacci %38-61 bandı
Son büyük hareketin yaklaşık üçte biri ile üçte ikisi arasının genelde bir duraklama bölgesi olduğu gözlemine dayanıyor. Bu bant geçmiş dip bölgesiyle çakışıyorsa, iki ayrı yöntemin aynı yeri işaret etmesi ekstra güven veriyor.
Son 104 hafta içindeki en yüksek ve en düşük arasında %38,2–%61,8 bandı hesaplanıyor. On yılın tamamı kullanılsaydı bant hep ortada sabitlenir, döngü dipleriyle hiç çakışmazdı. Çakışma varsa hasFibConfluence = true: skora +20, bölgenin touchCount'una +1.
Haftalık RSI(14)
RSI son dönemde alımın mı satımın mı baskın olduğunu 0-100 arasında ölçüyor. Düşük RSI "çok satılmış, tepki gelebilir", yüksek RSI "çok alınmış, pahalı" diyor.
Standart Wilder RSI, 14 periyot, haftalık kapanışlar. RSI < 40 ise +20; RSI > 70 ise bonus yok ve sınıflandırma doğrudan "Pahalı"ya çekiliyor.
Mayer Multiple
Fiyatın kendi 200 haftalık (yaklaşık dört yıllık) ortalamasının kaç katı olduğunu gösteriyor. 1'in altı tarihsel olarak ucuz, belirgin üstü pahalı sayılıyor.
Mayer = fiyat ÷ SMA(200 hafta). < 1 → +25, 1 – 1.2 → +12,5, ≥ 1.2 → bonus yok. 200 haftalık geçmişi olmayan dönemlerde bu doğrulayıcı devre dışı kalıyor, diğerleri etkilenmiyor.
Gümüşe özel: Altın/Gümüş oranı
Bir ons altının kaç ons gümüş ettiğini gösteren tarihsel bir oran. Oran normalden çok yüksekse gümüşün altına göre ucuz kaldığı düşünülüyor.
ratio = altın / gümüş. ratio > 80 ise gümüş skoruna +15; diğer varlıkları etkilemiyor.
0-100 skor nasıl toplanıyor
Her doğrulayıcı skora bir miktar ekliyor ya da eklemiyor; sonunda 0 ile 100 arasında tek bir sayı çıkıyor. Kartlardaki "Skor 21/100" bu toplam.
| Bileşen | Koşul | Katkı |
|---|---|---|
| Bölgenin test sayısı | 21 + (dokunuş − 1) × 7 | ≤ 35 |
| Fibonacci çakışması | bant ile bölge kesişiyor | +20 |
| Mayer Multiple | < 1,0 | +25 |
| Mayer Multiple | 1,0 – 1,2 | +12,5 |
| Haftalık RSI | < 40 | +20 |
| Altın/Gümüş oranı (gümüş) | > 80 | +15 |
Toplam min(total, 100) ile sınırlanıyor. Test sayısı bilinçli olarak yüksek bir taban puanla (21) başlıyor: eski touchCount × 8 formülü taze dipleri sistematik olarak cezalandırıyordu. Gerçek Bitcoin verisiyle yapılan testte RSI ve Mayer teyit ettiği hâlde taze dipler eşiğin birkaç puan altında kalıyordu.
Alım Bölgesi, Bekle, Pahalı
Skor tek başına yetmiyor; fiyatın gerçekten bölgenin içinde ya da altında olması da gerekiyor.
| Koşul | Sonuç |
|---|---|
| skor ≥ 65 ve fiyat ≤ bölge üst sınırı | Alım Bölgesi |
| skor < 40 | Pahalı |
| RSI > 70 | Pahalı |
| hiçbiri | Bekle |
Skor yüksek olsa bile fiyat bölgenin çok üstündeyse "Alım Bölgesi" verilmiyor; bölge geride kalmış demektir. RSI 70'in üstündeyse skor ne olursa olsun sonuç "Pahalı". Bu, güçlü bir yükseliş sırasında yanlışlıkla "Alım Bölgesi" denmesini engelleyen bir güvenlik kapısı.
Gerçek bir kart örneği
"Bölgenin alt sınırı fiyattan yüksek görünüyor, bu nasıl olur?" sorusu sık geliyor. Bölge, fiyatın şu anki konumundan bağımsız olarak geçmiş dip yapısından hesaplanıyor ve seçim kuralı bölgenin fiyatın biraz üstünde başlamasına izin veriyor.
Bölge $77.293 – $83.907 · Pahalı
- Bölge test sayısı: 1 dokunuş (taze dip)+21
- Fibonacci çakışması: yok+0
- Mayer Multiple 1,20: bonus sınırının dışında+0
- Haftalık RSI 56: nötr+0
Fiyat bölgenin alt sınırına yalnızca 15 dolar uzakta. Ama yakınlık tek başına yetmiyor: doğrulayıcılar teyit etmediği için skor 21'de kalıyor ve eşiğin altında olduğu için sonuç "Pahalı".
"Bölge" bir hedef fiyat ya da tahmin değil; geçmişte önemli olmuş bir seviye. Skor sistemi bu yakınlığı RSI ve Mayer gibi bağımsız göstergelerle teyit etmek istiyor.
Gerçek veriyle doğrulama
Yöntemi yalnızca sentetik veriyle değil, gerçek tarihsel dönüm noktalarıyla da test ettim.
Kasım 2022 dibi (~$16,4 bin)
66/100 · Alım Bölgesi
Mart 2020 çöküşü
75/100 · Alım Bölgesi
2022 ayı piyasası dibi
73/100 · Alım Bölgesi
Kontrol senaryosu da çalıştı: bugünkü yüksek fiyatlarda motor yanlış alarm vermiyor ve "Pahalı" (33/100) diyor. Bir istisna var: Bitcoin'in Mart 2020 dibi, Mayer Multiple hesaplanamadığı için yakalanmıyor. Binance verisi 2017'de başladığından o tarihte 200 haftalık geçmiş henüz yoktu. Bu bir veri eksikliği; bugünkü kullanımı etkilemiyor.
Bilinmesi gereken sınırlar
Yatırım tavsiyesi değil
Financor kişisel kullanım için geliştirildi. Skor ve bölge geçmiş fiyat davranışına dayanan bir gözlem; geleceği garanti etmiyor. Piyasa bölgeyi kırıp geçebilir, "Alım Bölgesi" dediği yerden daha da düşebilir.
Yalnızca haftalık veri
Gün içi hareketler, haber akışı ve ani şoklar hesaba girmiyor. Sinyal hafta bazında değişiyor.
Altın ve gümüş dolar bazlı hesaplanıyor
Kartlarda TL/gram görünse de hesap dolar üzerinden yapılıp güncel kurla çevriliyor. TL bazlı hesap denendiğinde, kurun sürekli yükselişi fiyatı da neredeyse hep yükselttiği için "Alım Bölgesi" hemen hiç tetiklenmiyordu.
Altında bilinen bir davranış
Dipten kısa süre sonra, RSI aşırı satımdan çıkarken ve Mayer henüz "ucuz" demiyorken skor hızla "Pahalı"ya düşebiliyor. Bu bilinen ve bilerek dokunulmayan bir davranış.
Aylık görünüm ayrı bir sinyal
Altın ve gümüş kartlarındaki "Ay" rozeti son dört dibe bakan, düzenli küçük alımlar için ayrı bir sinyal. Ana bölgeyle çelişebilir; ikisi farklı sorulara cevap veriyor.
Kısa sözlük
- Swing low
- Etrafındaki mumlardan belirgin şekilde düşük olan yerel dip.
- Bölge
- Yakın diplerin kümelenmesiyle oluşan, oynaklık payıyla genişletilmiş destek aralığı.
- Dokunuş sayısı
- Bir bölgeye kaç ayrı dibin düştüğü. Yüksek sayı, bölgenin defalarca test edildiğini gösterir.
- ATR
- Bir varlığın ortalama oynaklık ölçüsü; bölge genişliği buradan türetiliyor.
- Fibonacci retracement
- Fiyat hareketlerinin belirli oranlarda (%38,2, %61,8) tepki verdiği gözlemine dayanan seviye yöntemi.
- RSI
- Yakın dönemde alım ya da satım baskısını 0-100 arasında ölçen gösterge.
- Mayer Multiple
- Fiyatın 200 haftalık ortalamasına oranı.
Buraya kadar okuduğunuz için teşekkür ederim. Financor hâlâ gelişmeye devam ediyor; yöntemde değişen bir şey olursa bu yazıyı da güncelleyeceğim. Merak ettiğiniz ya da itiraz ettiğiniz bir nokta varsa bana yazmaktan çekinmeyin.