Artık ne yazsam diye düşünmeme gerek kalmadı. Bu haftaki kod konumuz:
Öncelikle kullanacağımız kütüphaneleri ekleyeceğiz. Daha sonra listelemede kullanacağımız enstrümanları belirleyeceğiz. 50 ve 200 günlük hareketli ortalamalar ile birlikte RSI değerlerini hesaplayıp birde alçalan üçgen formasyonumuzu tanımlayıp mevcut görselimize ekleyeceğiz.
Hemen kodumuza başlayalım:
import yfinance as yf
import pandas as pd
import numpy as np
import streamlit as st
import matplotlib.pyplot as plt
from mplfinance.original_flavor import candlestick_ohlc
import matplotlib.dates as mpl_dates
from datetime import datetime
from ta.trend import SMAIndicator
from ta.momentum import RSIIndicator
# Coin listesi, istediğiniz coinleri ekleyebilirsiniz.
coin_list = ['eth', 'avax', 'arp', 'sol', 'near', 'fet', 'ai', 'xai', 'op', 'wld', 'manta', 'eos']
# Streamlit arayüzü oluştur
st.title('Kripto Para Analizi')
# Kullanıcıdan coin seçimini al
coin = st.selectbox('Lütfen bir kripto para birimi seçin:', coin_list)
time_interval = st.selectbox('Lütfen bir zaman dilimi seçin:', ['1h', '4h', '1d', '1wk'])
# Kullanıcıdan tarih aralığını al
start_date = st.date_input('Başlangıç Tarihi', value=(datetime.now() - pd.DateOffset(months=3)))
end_date = st.date_input('Bitiş Tarihi', value=datetime.now())
# Verileri yükle
coin_str = coin.upper() + '-USD'
coin_data = yf.download(coin_str, start=start_date, end=end_date, interval=time_interval)
coin_data['SMA50'] = coin_data['Close'].rolling(window=50).mean()
coin_data['SMA200'] = coin_data['Close'].rolling(window=200).mean()
rsi_period = 14
coin_data['RSI'] = RSIIndicator(close=coin_data['Close'], window=rsi_period).rsi()
# Alçalan üçgen formasyonu tanımla
def descending_triangle(data):
support_line = [(data.index[0], data['Low'].min()), (data.index[-1], data['Low'].min())]
resistance_line = [(data.index[0], data['High'].max()), (data.index[-1], data['High'].max() * 0.8)]
return support_line, resistance_line
# Alçalan üçgen formasyonunu grafiğe ekle
def plot_descending_triangle(ax, data):
support_line, resistance_line = descending_triangle(data)
ax.plot([mpl_dates.date2num(support_line[0][0]), mpl_dates.date2num(support_line[1][0])],
[support_line[0][1], support_line[1][1]], color='green', linestyle='--', linewidth=1.5)
ax.plot([mpl_dates.date2num(resistance_line[0][0]), mpl_dates.date2num(resistance_line[1][0])],
[resistance_line[0][1], resistance_line[1][1]], color='red', linestyle='--', linewidth=1.5)
# Grafiği oluşturun
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), sharex=True)
coin_data['Date'] = pd.to_datetime(coin_data.index)
coin_data['Date'] = coin_data['Date'].apply(mpl_dates.date2num)
ohlc = coin_data[['Date', 'Open', 'High', 'Low', 'Close']].values
candlestick_ohlc(ax1, ohlc, width=0.6, colorup='green', colordown='red', alpha=0.8)
ax1.plot(coin_data['Date'], coin_data['SMA50'].values, label='50-day SMA', color='blue')
ax1.plot(coin_data['Date'], coin_data['SMA200'].values, label='200-day SMA', color='orange')
ax1.legend()
ax1.set_title('Mum Grafikleri ve Hareketli Ortalamalar')
# Alçalan üçgen formasyonu
plot_descending_triangle(ax1, coin_data)
# RSI grafiği
ax2.plot(coin_data['Date'], coin_data['RSI'].values, label='RSI', color='purple')
ax2.axhline(70, color='red', linestyle='--')
ax2.axhline(30, color='green', linestyle='--')
ax2.legend()
ax2.set_title('RSI')
st.pyplot(fig)
Sonuç çıktımız: