Programlama, Python

İndikatör kullanarak strateji oluşturma

Bu yazımızda daha önce örneklerle anlattığımız bir çok indikatörü kullanarak bir strateji oluşturacağız ve bu stratejiye göre alım – satım işlemi gerçekleştireceğiz.

Bildiğiniz üzere teknik analiz, day trade yaparken kullanılan farklı araç ve göstergeleri içeren bir yöntemler bütünüdür. Hangi teknik analiz yöntemlerini kullanacağınıza karar verirken, kendi deneyiminize, ticaret tarzınıza ve piyasa koşullarına uygun olanları seçmeniz önemlidir. İşte popüler teknik analiz yöntemleri ve kullanılan bazı indikatörler:


Teknik analiz, day trade yaparken kullanılan farklı araç ve göstergeleri içeren bir yöntemler bütünüdür. Hangi teknik analiz yöntemlerini kullanacağınıza karar verirken, kendi deneyiminize, ticaret tarzınıza ve piyasa koşullarına uygun olanları seçmeniz önemlidir. İşte popüler teknik analiz yöntemleri ve kullanılan bazı indikatörler:

  1. SMA ve EMA (Basit Hareketli Ortalama ve Üstel Hareketli Ortalama): Fiyatların belirli bir dönemdeki ortalamasını hesaplayan göstergelerdir. Fiyatların üzerinde veya altında kesişimler, trend değişikliklerini gösterebilir.
  2. RSI (Relative Strength Index): Fiyat değişimlerinin hızını ve büyüklüğünü ölçen bir göstergedir. Aşırı alım veya aşırı satım koşullarını belirlemekte kullanılır.
  3. MACD (Moving Average Convergence Divergence): Hareketli ortalama farkını gösteren bir göstergedir. MACD hattı ile sinyal hattının kesişimleri, trend değişikliklerini belirlemeye yardımcı olabilir.
  4. Bollinger Bantları: Fiyat volatilitesini gösteren ve fiyatın nereye kadar genişleyebileceğini tahmin etmeye yardımcı olan bantlardır. Fiyatın bantların dışına çıkması trend dönüşlerini belirtebilir.
  5. Stokastik Osilatör: Fiyatın kapanış fiyatı aralığına göre nerede olduğunu ölçen bir osilatördür. Aşırı alım veya aşırı satım koşullarını belirlemekte kullanılır.
  6. Fibonacci Retracement: Fiyat hareketlerini önceki tepe ve dipler arasındaki oranlara göre analiz eden bir yöntemdir. Destek ve direnç seviyelerini belirlemeye yardımcı olabilir.
  7. Ichimoku Wolke: Trendleri ve destek/direnç seviyelerini belirlemek için kullanılan bir Japon grafik analiz aracıdır.
  8. Pivot Noktaları: Önceki günün yüksek, düşük ve kapanış fiyatlarından hesaplanan destek ve direnç seviyelerini gösterir.
  9. Volume (Hacim) Analizi: İşlem hacminin artışı veya azalışı, fiyat hareketlerini teyit edebilir veya farklı bir perspektif sunabilir.
  10. Hareketli Ortalama Yakınsama Sapma (Moving Average Convergence Divergence – MACD): Farklı iki hareketli ortalamanın kesişiminden türetilen bir osilatördür ve trend değişimlerini yakalamak için kullanılır.

Küçük bir bilgilendirmeden sonra en basit yöntemle bir strateji oluşturacağız. Örneğin bir ürün seçelim. BTC-USD. Fiyatın 10 günlük hareketli ortalamasının üstünde olduğu ve RSI göstergesi 70’in üzerindeyse “SELL” (sat) sinyali, fiyatın 10 günlük hareketli ortalamasının altında olduğu ve RSI göstergesi 30’un altındaysa “BUY” (al) sinyali, aksi durumda ise elimizde tutacağımız bir kod yazalım. Gerçek bir day trade stratejisi oluştururken, daha fazla gösterge, daha karmaşık koşullar ve daha fazla veri kullanmanız gerekebilir. Ayrıca, stratejinizi gerçek verilerle test etmek ve optimize etmek önemlidir.

import yfinance as yf
import talib
import numpy as np
import matplotlib.pyplot as plt

# Kripto para sembolü ve veri aralığı
symbol = "BTC-USD"
start_date = "2022-01-01"
end_date = "2023-01-01"

# Kripto para fiyat verilerini al
data = yf.download(symbol, start=start_date, end=end_date)

# Kapanış fiyatlarını al
close_prices = data["Close"].values

# Hareketli Ortalama göstergesi (10 günlük ve 100 günlük SMA)
sma10 = talib.SMA(close_prices, timeperiod=10)
sma100 = talib.SMA(close_prices, timeperiod=100)

# RSI göstergesi
rsi = talib.RSI(close_prices, timeperiod=14)

# Alım-satım sinyallerini oluştur
signals = []
for i in range(len(close_prices)):
    if i < 100:
        signals.append("HOLD")
    else:
        if close_prices[i] > sma100[i] and rsi[i] > 70:
            signals.append("SELL")
        elif close_prices[i] < sma10[i] and rsi[i] < 30:
            signals.append("BUY")
        else:
            signals.append("HOLD")

# Grafiği çiz
plt.figure(figsize=(12, 6))
plt.plot(data.index, close_prices, label="Kapanış Fiyatları", color="blue")
plt.plot(data.index, sma10, label="10 Günlük SMA", color="orange")
plt.plot(data.index, sma100, label="100 Günlük SMA", color="green")
plt.title(f"{symbol} Kapanış Fiyatları ve Hareketli Ortalama")
plt.xlabel("Tarih")
plt.ylabel("Fiyat")
plt.legend()

# Alım-satım sinyallerini grafiğe ekleyin
for i, signal in enumerate(signals):
    if signal == "BUY":
        plt.scatter(data.index[i], close_prices[i], marker="^", color="green", label="Alım Sinyali")
    elif signal == "SELL":
        plt.scatter(data.index[i], close_prices[i], marker="v", color="red", label="Satım Sinyali")

plt.legend()
plt.show()

Ekran çıktımız:

Şimdide en çok kullandığımız indikatörlerden biri olan ATR (Average True Range) kullanarak alım-satım sinyali oluşturalım:

import yfinance as yf
import talib
import numpy as np
import matplotlib.pyplot as plt

# Kripto para sembolü ve veri aralığı
symbol = "BTC-USD"
start_date = "2022-01-01"
end_date = "2023-01-01"

# Kripto para fiyat verilerini al
data = yf.download(symbol, start=start_date, end=end_date)

# Kapanış fiyatlarını ve ATR değerlerini al
close_prices = data["Close"].values
high_prices = data["High"].values
low_prices = data["Low"].values
atr = talib.ATR(high_prices, low_prices, close_prices, timeperiod=14)

# Alım-satım sinyallerini oluştur
signals = []
for i in range(len(close_prices)):
    if i < 14:
        signals.append("HOLD")
    else:
        if close_prices[i] > close_prices[i-1] + atr[i-1] and close_prices[i] > high_prices[i-1]:
            signals.append("SELL")
        elif close_prices[i] < close_prices[i-1] - atr[i-1] and close_prices[i] < low_prices[i-1]:
            signals.append("BUY")
        else:
            signals.append("HOLD")

# Grafiği çiz
plt.figure(figsize=(12, 6))
plt.plot(data.index, close_prices, label="Kapanış Fiyatları", color="blue")
plt.title(f"{symbol} Kapanış Fiyatları ve ATR")
plt.xlabel("Tarih")
plt.ylabel("Fiyat")
plt.legend()

# Alım-satım sinyallerini grafiğe ekleyin
for i, signal in enumerate(signals):
    if signal == "BUY":
        plt.scatter(data.index[i], close_prices[i], marker="^", color="green", label="Alım Sinyali")
    elif signal == "SELL":
        plt.scatter(data.index[i], close_prices[i], marker="v", color="red", label="Satım Sinyali")

plt.legend()
plt.show()

Ekran çıktımız:

14370cookie-checkİndikatör kullanarak strateji oluşturma

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir