Makine Öğrenimi ile Formasyon Takibi
- Atakan Ekşi
- 26 Şub
- 3 dakikada okunur
Teknik analiz dünyasında grafik formasyonlarını tanımak, yatırımcılar için kritik bir beceridir. Grafiklerin manuel olarak taranması yerine, YOLOv8 derin öğrenme modeli eğiterek Omuz baş omuz, ikili tepe, ters ikili tepe, yukarı daralan üçgen ve aşağı daralan üçgen gibi önemli formasyonları otomatik olarak tespit etmeyi amaçladım.
Bu yazımda, verileri nasıl topladığım, etiketlediğim, YOLOv8 modelini nasıl eğittiğim ve sonuçları nasıl değerlendirdiğim hakkında detaylı bilgi vereceğim.
Veri Hazırlama
Derin öğrenme modelini eğitmek için kaliteli bir veri kümesi oluşturmak çok önemlidir. Piyasada istediğim gibi bir veri kümesi olmadığından dolayı kendi veri setimi oluşturmam gerekti.
Adım 1: Mum Grafiklerini Oluşturma
Bir Python kodu yazarak koda şu işlemleri yaptırdım:
Rastgele Seçimler:
Binance'deki USDT işlem çiftlerinden rastgele birini seçer.
Belirli zaman aralıklarından rastgele birini seçer.
10 ile 70 arasında rastgele bir mum sayısı seçer.
Veri Çekme:
Binance API'sinden belirtilen işlem çifti, zaman aralığı ve mum sayısına göre klines verisini çeker.
Grafik Oluşturma ve Kaydetme:
Çekilen veriyi işler, grafik çizer ve resim olarak kaydeder.

Koda buradan ulaşabilirsiniz:
Adım 2: Formasyonları Etiketleme
Yeterli sayıda grafik oluşturduktan sonra, içlerinde teknik formasyonlar olanları etiketlemem gerekti. Etiketleme işlemini formasyon olan grafik görselinin tam olarak neresinde formasyon olduğunu txt formatında kaydederek yaptımr
Örn: 4 0.3134765625 0.275390625 0.169921875 0.2109375
Burdaki 4 formasyonun sınıfını diğer sayılarda formasyonun grafik görselinde nerede olduğunu gösteriyor.
Kendi etiketleme yazılımımı geliştirdim, ancak daha kolay bir yol arayanlar için Roboflow önerilebilir.
Toplam Toplanan Görseller: 1000
Formasyon Sınıfları: 5
Omuz baş omuz
İkili tepe
Ters ikili tepe
Yukarı daralan üçgen
Aşağı daralan üçgen
YOLOv8 Model Eğitimi
Veri kümesini hazırladıktan sonra Google Drive’a yükledim ve Google Colab kullanarak eğitimi gerçekleştirdim.
Adım 1: Google Drive Bağlantısı ve Veri Yükleme
Google Drive içindeki verileri Google Colab'e bağlamak için aşağıdaki komutları kullandım:
from google.colab import drive
drive.mount('/content/drive')
Daha sonra yaml dosyasını çalışma dizinine kopyaladım:
!cp /content/drive/MyDrive/dataset.yaml /content/
Google drive'daki yaml dosyası şu şekildeydi:
train: /content/datasets/dataset1/images/train
val: /content/datasets/dataset1/images/val
nc: 5
names: ["ascending_triangle", "descending_triangle", "double_top", "head_and_shoulders", "inverted_double_top"]
Daha sonra dataset’in zip dosyasını yükleyip çıkarttım:
!cp /content/drive/MyDrive/datasets.zip /content/
!unzip /content/datasets.zip -d /content/
Adım 2: Gerekli Kütüphanelerin Kurulumu
YOLOv8 modelini çalıştırmak için aşağıdaki kütüphaneleri yükledim:
!pip install ultralytics
!pip install torch torchvision torchaudio
!pip install opencv-python-headless
!pip install numpy matplotlib
Adım 3: Model Eğitim Parametreleri
YOLOv8s modelini aşağıdaki ayarlarla eğittim:
from ultralytics import YOLO
model = YOLO("yolov8s.pt")
model.train(
data="dataset.yaml",
device=0, # GPU Kullan (CPU ile uğraşma!)
epochs=300, # Daha fazla epoch
batch=8, # Küçük veri setleri için daha küçük batch size
imgsz=512, # Daha büyük input boyutu
optimizer="SGD", # SGD kullanarak daha stabil öğrenme
patience=70, # 🛑 Early Stopping için
lr0=0.004, # Daha düşük başlangıç öğrenme oranı
dropout=0.2, # Overfitting önleme
)
Adım 4: Eğitim Süreci
Kullanılan GPU: Google Colab T4 GPU Eğitim Süresi: Yaklaşık 2 saat
Sonuçlar:
Precision (Doğruluk Oranı): %76
mAP50 (Ortalama Ortalama Hassasiyet @50 IoU): %72
⚠ Herhangi bir augmentation (veri artırma) kullanmadım, çünkü grafiklerde döndürme veya renk değişimi anlamsız olurdu. Model ile ilgili detaylı bilgileri aşağıda inceleyebilirsiniz:




Eğittiğim modele aşağıdaki linkten ulaşabilirsiniz.
⚠ Modeli kendi oluşturduğum grafiklerle eğittiğim ve augmentation yapmadığım için bazı grafik görsellerinde verimsiz çalışabilir ⚠
Eğitilmiş Modelin Kullanımı ve Sonuçlar
Eğitim tamamlandıktan sonra modeli .pt formatında dışa aktardım:
Daha sonra, modeli kullanarak 4102 grafik içeren bir klasörde test ettim. Model, formasyonları tespit ederek ayrı bir klasöre kaydetti ve sonuçları analiz ettim.
📊 Sonuçlar:
Toplam İncelenen Dosya Sayısı: 4102
Formasyon Bulunan Dosya Sayısı: 570
📌 Formasyon Türleri ve Dağılımı
Formasyon Türü | Sayı |
Ascending Triangle | 132 |
Descending Triangle | 127 |
Inverted Double Top | 184 |
Double Top | 59 |
Head and Shoulders | 68 |

Modelin tespit ettiği formasyonlar aşağıdaki örnek görsellerde gösterilmektedir:





Yanlış Tespitler ve Model Davranışı
🔹 Model genel olarak başarılı olsa da bazen yanlış tespitler yapabiliyor.
🔹 Daha büyük veri kümesi ve daha iyi etiketleme hataları azaltabilir.
Sonuç
YOLOv8 modelini grafik formasyon tespiti için eğitmek oldukça heyecan verici bir projeydi. %76 doğruluk oranı ve %72 mAP50 değeriyle model oldukça başarılı oldu, ancak geliştirme fırsatları da mevcut.
Modelin test aşamasında 4102 farklı grafik analiz edildi ve bunlardan 570 tanesinde formasyon tespit edildi. Bu, modelin formasyonları makul bir doğruluk oranıyla yakalayabildiğini gösteriyor. En çok tespit edilen formasyon Inverted Double Top (184 adet) olurken, en az tespit edilen formasyon Double Top (59 adet) oldu. Bu dağılım, modelin bazı formasyonları daha iyi tanıyabildiğini ve belirli formasyonlar için veri artırma çalışmalarının gerekebileceğini gösteriyor.
Bundan sonraki aşamada, modelin kullanımını daha pratik hale getirmek için bir arayüz (GUI) tasarlamayı planlıyorum. Bu arayüz sayesinde kullanıcılar formasyon tespitlerini daha kolay gerçekleştirebilecek, grafiklere anlık olarak göz atabilecek ve sonuçları daha hızlı analiz edebilecek. Kullanıcı dostu bir arayüz oluşturduktan sonra, yeni bir yazı hazırlayarak bu dokümana güncelleme ekleyeceğim.
Ayrıca, ilerleyen süreçte modeli daha büyük bir veri seti ile yeniden eğitmeyi, veri dengesizliğini azaltmayı ve daha farklı yapay zeka algoritmaları ile karşılaştırmalar yapmayı hedefliyorum. Bu geliştirmeler, modelin formasyon tespitinde daha güvenilir ve doğru tahminler yapmasını sağlayacaktır.
Comments