• 21-07-2026, 19:47:40
    #1
    Merhaba,
    Python kaynak kodu olarak ücretsiz paylaşıyorum. İsteyen exe derleyebilir. Nasıl kullanırım diye PM atanlara cevap verilmeyecektir.
    Sıradaki ücretsiz yazılım için takipte kalın



    import customtkinter as ctk
    import tkinter as tk
    from yahooquery import Ticker
    import pandas as pd
    from ta.trend import EMAIndicator, ADXIndicator
    from ta.momentum import RSIIndicator, ROCIndicator
    from ta.volatility import AverageTrueRange
    
    
    ctk.set_appearance_mode("dark")
    ctk.set_default_color_theme("blue")
    
    
    class GelişmişAnalizBotu:
    def __init__(self, root):
    self.root = root
    self.root.title("BIST Analiz Botu")
    self.root.geometry("800x800")
    self.root.resizable(False, False)
    
    
    self.font_emoji = ("Segoe UI Emoji", 13)
    
    
    self.frame = ctk.CTkFrame(master=root)
    self.frame.pack(padx=20, pady=20, fill="both", expand=True)
    
    
    self.label = ctk.CTkLabel(master=self.frame, text="Hisse Kodu Giriniz:", font=self.font_emoji)
    self.label.pack(pady=10)
    
    
    self.input_hisse = ctk.CTkEntry(master=self.frame, placeholder_text="Örnek: AKBNK veya AKBNK.IS", font=self.font_emoji)
    self.input_hisse.pack(pady=10)
    
    
    self.analyze_btn = ctk.CTkButton(master=self.frame, text="Analiz Et", command=self.analyze_stock, font=self.font_emoji)
    self.analyze_btn.pack(pady=10)
    
    
    self.result_box = ctk.CTkTextbox(master=self.frame, height=280, font=self.font_emoji)
    self.result_box.pack(pady=10, fill="both", expand=True)
    
    
    def analyze_stock(self):
    symbol = self.input_hisse.get().strip().upper()
    if not symbol.endswith(".IS"):
    symbol += ".IS"
    
    
    self.result_box.delete("1.0", tk.END)
    self.result_box.insert(tk.END, f"{symbol} verileri çekiliyor...n")
    
    
    try:
    tkdata = Ticker(symbol)
    df = tkdata.history(period='6mo', interval='1d')
    if df.empty:
    self.result_box.insert(tk.END, "Veri alınamadı veya hisse kodu hatalı.n")
    return
    
    
    if isinstance(df.index, pd.MultiIndex):
    df = df.reset_index(level=0, drop=True)
    
    
    close = df['close']
    high = df['high']
    low = df['low']
    
    
    ema9 = EMAIndicator(close=close, window=9).ema_indicator()
    ema21 = EMAIndicator(close=close, window=21).ema_indicator()
    rsi = RSIIndicator(close=close, window=14).rsi()
    roc = ROCIndicator(close=close, window=12).roc()
    adx = ADXIndicator(high=high, low=low, close=close, window=14).adx()
    atr = AverageTrueRange(high=high, low=low, close=close, window=14).average_true_range()
    
    
    last = df.iloc[-1]
    last_close = float(last['close'])
    ema9_val = float(ema9.iat[-1])
    ema21_val = float(ema21.iat[-1])
    rsi_val = float(rsi.iat[-1])
    roc_val = float(roc.iat[-1])
    adx_val = float(adx.iat[-1])
    atr_val = float(atr.iat[-1])
    
    
    mesaj = (f"📊 {symbol} 6 Aylık Günlük Veriler Analizinn"
    f"Son Kapanış: {last_close:.2f} TRYn"
    f"EMA9: {ema9_val:.2f} | EMA21: {ema21_val:.2f}n"
    f"RSI(14): {rsi_val:.2f}n"
    f"ROC(12): {roc_val:.2f}% (Momentum)n"
    f"ADX(14): {adx_val:.2f} (Trend Gücü)n"
    f"ATR(14): {atr_val:.2f} (Volatilite)nn")
    
    
    if ema9_val > ema21_val and rsi_val > 50:
    mesaj += "🔔 Temel Sinyal: 📈 ALn"
    elif ema9_val < ema21_val and rsi_val < 50:
    mesaj += "🔔 Temel Sinyal: 📉 SATn"
    else:
    mesaj += "🔔 Temel Sinyal: ⚠️ BEKLEn"
    
    
    if roc_val > 0:
    mesaj += "🚀 Momentum: Pozitifn"
    else:
    mesaj += "🐢 Momentum: Negatif veya Düşüşten"
    
    
    if adx_val >= 25:
    mesaj += "💪 Trend Gücü: Güçlün"
    else:
    mesaj += "⚠️ Trend Gücü: Zayıf veya Yan Dalgan"
    
    
    stop_loss = last_close - (atr_val * 1.5)
    take_profit = last_close + (atr_val * 2)
    
    
    mesaj += (f"n🛑 Önerilen Stop Loss: {stop_loss:.2f} TRYn"
    f"🎯 Önerilen Take Profit: {take_profit:.2f} TRYn")
    
    
    self.result_box.insert(tk.END, mesaj)
    
    
    except Exception as e:
    self.result_box.insert(tk.END, f"Hata: {str(e)}n")
    
    
    
    
    if __name__ == "__main__":
    root = ctk.CTk()
    app = GelişmişAnalizBotu(root)
    root.mainloop()
  • 21-07-2026, 19:49:49
    #2
    Eline sağlık hocam
  • 21-07-2026, 19:53:59
    #3
    Elinize sağlık
  • 21-07-2026, 20:08:37
    #4
    Eline sağlık hocam güzel çalışma.