• 08-03-2025, 23:17:56
    #10
    Cloud Code var istersen onu deneyebilirsin apiyle çalışıyor mesela 5 dolar atıyorsun 5 dolarlıık api ile senin istediğin kodu direk yazıyor
  • 08-03-2025, 23:18:32
    #11
    MertcanK adlı üyeden alıntı: mesajı görüntüle
    ChatGPT ile ne denediysem başaramadım maalesef. Basit projeler için ChatGPT 4o da gayet iyi ancak karmaşık projelerde raydan çıkıyor.

    o3 mini high da bir yere kadar iyi. Basit araçlar yaparken sorunsuz, iş biraz uzayınca ipin ucunu yine kaçırıyor. Şimdi Grok ile denemeler yapıyorum, ondan da henüz emin değilim.

    Claude Pro için herkes aynısını söylüyor. Pro sürümünde herhangi bir kısıtlama var mı biliyor musunuz?
    Youtube de izlediğim videolara göre belli bir günlük kullanım limiti mevcutmuş pro sürümünde de
  • 08-03-2025, 23:19:37
    #12
    Fizz adlı üyeden alıntı: mesajı görüntüle
    Youtube de izlediğim videolara göre belli bir günlük kullanım limiti mevcutmuş pro sürümünde de
    Evet ona takıldım ben de. Basit işleri zaten hemen hemen tüm yapay zekalar yapıyor. Grok da gayet başarılı bence bu konuda. Karmaşık işler yapmaya çalışıp limitlere takılacaksak yine anlamı yok.
  • 08-03-2025, 23:20:36
    #13
    Birşeyler deniyorum
    Claude free

    import tkinter as tk
    from tkinter import messagebox, scrolledtext
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from webdriver_manager.chrome import ChromeDriverManager
    from datetime import datetime
    import time
    import threading
    import os
    import signal
    import sys
    
    class BinanceGridBotApp:
        def __init__(self, root):
            self.root = root
            self.root.title("Binance Futures Grid Bot Otomasyonu")
            self.root.geometry("600x500")
            self.root.resizable(True, True)
            
            self.is_running = False
            self.emergency_stop = False
            self.driver = None
            self.thread = None
            
            # GUI Bileşenleri
            self.create_widgets()
            
            # Acil durdurma için olay
            self.stop_event = threading.Event()
            
            # Uygulama kapatıldığında temizlik yapmak için
            self.root.protocol("WM_DELETE_WINDOW", self.on_closing)
            
        def create_widgets(self):
            # Kontrol butonları
            control_frame = tk.Frame(self.root)
            control_frame.pack(pady=10, fill=tk.X)
            
            self.start_button = tk.Button(control_frame, text="Başlat", command=self.start_bot, 
                                          bg="green", fg="white", width=15, height=2)
            self.start_button.pack(side=tk.LEFT, padx=10)
            
            self.stop_button = tk.Button(control_frame, text="DURDUR", command=self.emergency_stop_bot, 
                                         bg="red", fg="white", width=15, height=2, state=tk.DISABLED)
            self.stop_button.pack(side=tk.LEFT, padx=10)
            
            # Log alanı
            log_frame = tk.Frame(self.root)
            log_frame.pack(pady=10, fill=tk.BOTH, expand=True)
            
            log_label = tk.Label(log_frame, text="İşlem Günlüğü:")
            log_label.pack(anchor=tk.W)
            
            self.log_area = scrolledtext.ScrolledText(log_frame, width=70, height=20)
            self.log_area.pack(fill=tk.BOTH, expand=True, padx=10)
            
            # Durum çubuğu
            self.status_var = tk.StringVar()
            self.status_var.set("Durum: Hazır")
            status_bar = tk.Label(self.root, textvariable=self.status_var, bd=1, relief=tk.SUNKEN, anchor=tk.W)
            status_bar.pack(side=tk.BOTTOM, fill=tk.X)
            
        def log(self, message):
            timestamp = datetime.now().strftime("%H:%M:%S.%f")[:-3] # Milisaniye hassasiyeti
            log_message = f"[{timestamp}] {message}"
            self.root.after(0, lambda: self.log_area.insert(tk.END, log_message + "\n"))
            self.root.after(0, lambda: self.log_area.see(tk.END))
            print(log_message)
        
        def update_status(self, message):
            self.root.after(0, lambda: self.status_var.set(f"Durum: {message}"))
            
        def start_bot(self):
            if self.is_running:
                return
                
            self.is_running = True
            self.emergency_stop = False
            self.stop_event.clear()
            
            self.start_button.config(state=tk.DISABLED)
            self.stop_button.config(state=tk.NORMAL)
            
            self.log("Bot başlatılıyor...")
            self.update_status("Çalışıyor")
            
            # Bot işlemini ayrı bir thread'de başlat
            self.thread = threading.Thread(target=self.run_bot)
            self.thread.daemon = True
            self.thread.start()
        
        def stop_bot(self):
            if not self.is_running:
                return
                
            self.is_running = False
            self.stop_event.set()
            self.log("Bot durduruluyor...")
            self.update_status("Durduruluyor")
            
            # Tarayıcıyı kapat
            if self.driver:
                try:
                    self.log("Tarayıcı kapatılıyor...")
                    self.driver.quit()
                    self.driver = None
                    self.log("Tarayıcı kapatıldı.")
                except Exception as e:
                    self.log(f"Tarayıcı kapatılırken hata: {str(e)}")
            
            self.start_button.config(state=tk.NORMAL)
            self.stop_button.config(state=tk.DISABLED)
            self.update_status("Durduruldu")
        
        def emergency_stop_bot(self):
            """Acil durdurma: Milisaniye hassasiyetinde durması için optimize edilmiş"""
            self.log("ACİL DURDURMA İSTEĞİ ALINDI!")
            self.emergency_stop = True
            self.stop_event.set()
            self.is_running = False
            
            # Tarayıcıyı hemen sonlandır
            if self.driver:
                try:
                    # Tarayıcı sürecini doğrudan sonlandır
                    self.log("Tarayıcı süreci anında sonlandırılıyor...")
                    if hasattr(self.driver, 'service') and hasattr(self.driver.service, 'process'):
                        if self.driver.service.process:
                            pid = self.driver.service.process.pid
                            try:
                                if sys.platform == 'win32':
                                    import ctypes
                                    PROCESS_TERMINATE = 1
                                    handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, pid)
                                    ctypes.windll.kernel32.TerminateProcess(handle, 0)
                                    ctypes.windll.kernel32.CloseHandle(handle)
                                else:
                                    os.kill(pid, signal.SIGKILL)
                                self.log(f"Tarayıcı süreci (PID: {pid}) anında sonlandırıldı!")
                            except Exception as e:
                                self.log(f"Süreç sonlandırma hatası: {str(e)}")
                    self.driver = None
                except Exception as e:
                    self.log(f"Acil tarayıcı kapatma hatası: {str(e)}")
            
            # GUI'yi hemen güncelle
            self.start_button.config(state=tk.NORMAL)
            self.stop_button.config(state=tk.DISABLED)
            self.update_status("ACİL DURDURULDU!")
            
            # Aktif işlemleri iptal et
            if hasattr(self, 'active_orders') and self.active_orders:
                self.log("Aktif işlemler iptal ediliyor...")
                # İşlem iptali için gerekli kodlar burada yer alacak
                
            self.log("Tüm işlemler durduruldu!")
        
        def on_closing(self):
            """Uygulama kapatıldığında çağrılır"""
            if self.is_running:
                self.emergency_stop_bot()
            self.root.destroy()
        
        def check_stop_signal(self):
            """Durdurma sinyalini kontrol eder - tüm döngülerde çağrılmalıdır"""
            if self.stop_event.is_set() or self.emergency_stop or not self.is_running:
                raise Exception("Durdurma sinyali alındı")
            return False
        
        def run_bot(self):
            try:
                # Tarayıcı ayarlarını yapılandır
                self.log("Tarayıcı başlatılıyor...")
                chrome_options = Options()
                chrome_options.add_argument("--start-maximized")
                # chrome_options.add_argument("--headless") # Başsız modda çalıştırmak istiyorsanız bu satırı açın
                chrome_options.add_experimental_option("detach", False) # Tarayıcının ayrı süreç olarak çalışmasını engelle
                
                service = Service(ChromeDriverManager().install())
                self.driver = webdriver.Chrome(service=service, options=chrome_options)
                
                # Ana işlem döngüsü
                while self.is_running:
                    self.check_stop_signal() # Her döngü başında durdurma sinyalini kontrol et
                    self.execute_trading_cycle()
                    
                    # 2 dakika boyunca bekle veya Take Profit gerçekleşene kadar
                    self.log("İşlem 2 dakika boyunca izleniyor...")
                    wait_time = 120 # 2 dakika
                    start_time = time.time()
                    
                    # Daha sık kontrol ile durdurma sinyaline hızlı yanıt ver
                    while self.is_running and (time.time() - start_time) < wait_time:
                        self.check_stop_signal() # Her döngüde kontrol et
                        
                        # Take Profit durumunu kontrol et
                        try:
                            if self.check_take_profit():
                                self.log("Take Profit gerçekleşti. Yeni işlem başlatılıyor.")
                                break
                        except Exception as e:
                            if "Durdurma sinyali alındı" in str(e):
                                raise
                            self.log(f"Take Profit kontrolü sırasında hata: {str(e)}")
                        
                        # Daha kısa aralıklarla kontrol et (0.1 saniye)
                        for _ in range(10): # 1 saniyeyi 10 parçaya böl
                            self.check_stop_signal()
                            time.sleep(0.1)
                    
            except Exception as e:
                if "Durdurma sinyali alındı" in str(e):
                    self.log("Bot kontrollü şekilde durduruldu.")
                else:
                    self.log(f"Bot çalışması sırasında hata: {str(e)}")
            finally:
                # Bot thread tamamlandığında GUI'yi güncelle
                if self.is_running:
                    self.root.after(0, self.stop_bot)
        
        def execute_trading_cycle(self):
            try:
                # 1. Binance Futures Grid Bot sayfasına giriş yap
                self.log("Binance Futures Grid Bot sayfasına giriş yapılıyor...")
                self.check_stop_signal()
                self.driver.get("https://www.binance.com/en/futures/trading-bot")
                
                # Sayfanın yüklenmesi için bekle
                for _ in range(30): # 30 saniye timeout
                    self.check_stop_signal()
                    try:
                        if self.driver.find_element(By.XPATH, "//div[contains(text(), 'Grid Bot')]"):
                            break
                    except:
                        pass
                    time.sleep(1)
                
                self.log("Sayfa başarıyla yüklendi.")
                
                # 2. x50 kaldıraçlı ve maksimum 25$ giriş miktarı olan botları filtrele
                self.log("Filtreler uygulanıyor...")
                self.check_stop_signal()
                
                # Filtre butonlarını bul ve tıkla
                for _ in range(10): # 10 saniye timeout
                    self.check_stop_signal()
                    try:
                        filter_btn = self.driver.find_element(By.XPATH, "//button[contains(text(), 'Filter')]")
                        filter_btn.click()
                        break
                    except:
                        time.sleep(0.5)
                
                # Kaldıraç filtresini ayarla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        leverage_filter = self.driver.find_element(By.XPATH, "//div[contains(text(), 'Leverage')]/following-sibling::div//input")
                        leverage_filter.clear()
                        leverage_filter.send_keys("50")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # Maksimum giriş miktarı filtresini ayarla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        amount_filter = self.driver.find_element(By.XPATH, "//div[contains(text(), 'Max Investment')]/following-sibling::div//input")
                        amount_filter.clear()
                        amount_filter.send_keys("25")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # Filtre uygula butonuna tıkla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        apply_btn = self.driver.find_element(By.XPATH, "//button[contains(text(), 'Apply')]")
                        apply_btn.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                        
                self.log("Filtreler başarıyla uygulandı.")
                
                # 3. PNL'si en yüksek olan botu seç ve "Copy" yap
                self.log("PNL'si en yüksek olan bot seçiliyor...")
                self.check_stop_signal()
                
                # Botları PNL'ye göre sırala
                for _ in range(10):
                    try:
                        sort_btn = self.driver.find_element(By.XPATH, "//div[contains(text(), 'PNL')]")
                        sort_btn.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                        
                time.sleep(1) # Sıralamanın uygulanması için kısa bekle
                self.check_stop_signal()
                
                # En üstteki botu (en yüksek PNL) seç
                for _ in range(10):
                    try:
                        top_bot = self.driver.find_element(By.XPATH, "(//button[contains(text(), 'Copy')])[1]")
                        top_bot.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                        
                self.log("PNL'si en yüksek bot seçildi.")
                
                # 4. Tekrar "Copy" butonuna basarak işlemi onayla
                self.log("İşlem onaylanıyor...")
                self.check_stop_signal()
                
                for _ in range(10):
                    try:
                        confirm_copy = self.driver.find_element(By.XPATH, "//button[contains(text(), 'Copy')]")
                        confirm_copy.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # 5. Investment, Stop Loss ve Take Profit değerlerini ayarla
                self.log("Parametreler ayarlanıyor...")
                self.check_stop_signal()
                
                # Investment miktarını ayarla
                for _ in range(10):
                    try:
                        investment_input = self.driver.find_element(By.XPATH, "//label[contains(text(), 'Investment')]/following-sibling::div//input")
                        investment_input.clear()
                        investment_input.send_keys("25")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # Stop Loss değerini ayarla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        stop_loss_input = self.driver.find_element(By.XPATH, "//label[contains(text(), 'Stop Loss')]/following-sibling::div//input")
                        stop_loss_input.clear()
                        stop_loss_input.send_keys("1")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # Take Profit değerini ayarla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        take_profit_input = self.driver.find_element(By.XPATH, "//label[contains(text(), 'Take Profit')]/following-sibling::div//input")
                        take_profit_input.clear()
                        take_profit_input.send_keys("0.50")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                        
                self.log("Parametreler başarıyla ayarlandı.")
                
                # 6. "Create" butonuna basarak işlemi başlat
                self.log("İşlem başlatılıyor...")
                self.check_stop_signal()
                
                for _ in range(10):
                    try:
                        create_btn = self.driver.find_element(By.XPATH, "//button[contains(text(), 'Create')]")
                        create_btn.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # İşlemin başlatıldığını doğrula
                successful = False
                for _ in range(20): # 10 saniye timeout
                    self.check_stop_signal()
                    try:
                        self.driver.find_element(By.XPATH, "//div[contains(text(), 'Bot Created Successfully')]")
                        successful = True
                        break
                    except:
                        time.sleep(0.5)
                        
                if successful:
                    self.log("İşlem başarıyla başlatıldı.")
                else:
                    self.log("İşlem başlatma onayı alınamadı, ama devam ediliyor.")
                
            except Exception as e:
                if "Durdurma sinyali alındı" in str(e):
                    raise
                self.log(f"İşlem döngüsü sırasında hata: {str(e)}")
                raise
        
        def check_take_profit(self):
            try:
                self.check_stop_signal()
                # Bu fonksiyon Take Profit'in gerçekleşip gerçekleşmediğini kontrol eder
                profit_element = self.driver.find_element(By.XPATH, "//div[contains(@class, 'profit-value')]")
                profit_text = profit_element.text
                
                # Profit değerini al ve Take Profit değeriyle karşılaştır
                profit_value = float(profit_text.replace("$", "").strip())
                take_profit_value = 0.50
                
                return profit_value >= take_profit_value
                
            except Exception as e:
                if "Durdurma sinyali alındı" in str(e):
                    raise
                self.log(f"Take Profit kontrolü sırasında hata: {str(e)}")
                return False
    
    def main():
        root = tk.Tk()
        app = BinanceGridBotApp(root)
        root.mainloop()
    
    if __name__ == "__main__":
        main()

    Chatgpt

    import time
    import threading
    import tkinter as tk
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from webdriver_manager.chrome import ChromeDriverManager
    
    # Botun çalışıp çalışmadığını kontrol eden değişken
    bot_running = False
    
    # Tarayıcı başlatma fonksiyonu
    def start_browser():
        global driver
        options = webdriver.ChromeOptions()
        options.add_argument("--start-maximized")
        driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
    
    # Binance Grid Bot işlemlerini yapan fonksiyon
    def run_bot():
        global bot_running
        start_browser()
        
        driver.get("https://www.binance.com/en/futures/grid-trading")
        time.sleep(3)
    
        while bot_running:
            try:
                # **Filtreleme**: x50 kaldıraç ve max 25$ yatırım miktarı
                filter_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Filter')]")
                filter_button.click()
                time.sleep(1)
    
                leverage_option = driver.find_element(By.XPATH, "//option[contains(text(), 'x50')]")
                leverage_option.click()
                time.sleep(1)
    
                investment_filter = driver.find_element(By.XPATH, "//input[@placeholder='Max Investment']")
                investment_filter.send_keys(Keys.CONTROL + "a") # Önce var olanı temizle
                investment_filter.send_keys("25")
                investment_filter.send_keys(Keys.RETURN)
                time.sleep(2)
    
                # **PNL'si en yüksek olan botu seç ve 'Copy' yap**
                top_bot = driver.find_element(By.XPATH, "(//button[contains(text(), 'Copy')])[1]")
                top_bot.click()
                time.sleep(1)
    
                copy_confirm = driver.find_element(By.XPATH, "//button[contains(text(), 'Copy')]")
                copy_confirm.click()
                time.sleep(2)
    
                # **Ayarları yap**
                investment_input = driver.find_element(By.XPATH, "//input[@name='investment']")
                investment_input.send_keys(Keys.CONTROL + "a")
                investment_input.send_keys("25")
    
                stop_loss_input = driver.find_element(By.XPATH, "//input[@name='stopLoss']")
                stop_loss_input.send_keys(Keys.CONTROL + "a")
                stop_loss_input.send_keys("1")
    
                take_profit_input = driver.find_element(By.XPATH, "//input[@name='takeProfit']")
                take_profit_input.send_keys(Keys.CONTROL + "a")
                take_profit_input.send_keys("0.50")
    
                # **"Create" butonuna basarak işlemi başlat**
                create_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Create')]")
                create_button.click()
                time.sleep(2)
    
                # **İşlemi 2 dakika bekleyip kontrol et**
                time.sleep(120)
                driver.refresh()
                time.sleep(3)
    
                # **Take Profit gerçekleştiyse yeni işlem aç**
                try:
                    profit_status = driver.find_element(By.XPATH, "//span[contains(text(), 'Take Profit')]")
                    print("✅ Kâr alındı, yeni işlem başlatılıyor...")
                    driver.get("https://www.binance.com/en/futures/grid-trading")
                except:
                    print("⏳ İşlem devam ediyor...")
    
            except Exception as e:
                print(f"⚠️ Hata oluştu: {e}")
                break
    
        driver.quit()
    
    # **Botu başlatma fonksiyonu**
    def start_bot():
        global bot_running
        if not bot_running:
            bot_running = True
            threading.Thread(target=run_bot).start()
    
    # **Botu durdurma fonksiyonu**
    def stop_bot():
        global bot_running
        bot_running = False
    
    # **GUI Arayüzü**
    root = tk.Tk()
    root.title("Binance Futures Grid Bot")
    root.geometry("300x200")
    
    start_button = tk.Button(root, text="Başlat", command=start_bot, bg="green", fg="white", font=("Arial", 12))
    start_button.pack(pady=20)
    
    stop_button = tk.Button(root, text="Dur
    dur", command=stop_bot, bg="red", fg="white", font=("Arial", 12))
    stop_button.pack(pady=20)
    
    root.mainloop()
    Manuel yaptığım işlemi chrome ile otomasyon istedim
    Henüz bakmadım ama ikisi de çalışır bunların
    • Fizz
    Fizz bunu beğendi.
    1 kişi bunu beğendi.
  • 08-03-2025, 23:24:43
    #14
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Birşeyler deniyorum
    Claude free

    import tkinter as tk
    from tkinter import messagebox, scrolledtext
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from webdriver_manager.chrome import ChromeDriverManager
    from datetime import datetime
    import time
    import threading
    import os
    import signal
    import sys
    
    class BinanceGridBotApp:
        def __init__(self, root):
            self.root = root
            self.root.title("Binance Futures Grid Bot Otomasyonu")
            self.root.geometry("600x500")
            self.root.resizable(True, True)
            
            self.is_running = False
            self.emergency_stop = False
            self.driver = None
            self.thread = None
            
            # GUI Bileşenleri
            self.create_widgets()
            
            # Acil durdurma için olay
            self.stop_event = threading.Event()
            
            # Uygulama kapatıldığında temizlik yapmak için
            self.root.protocol("WM_DELETE_WINDOW", self.on_closing)
            
        def create_widgets(self):
            # Kontrol butonları
            control_frame = tk.Frame(self.root)
            control_frame.pack(pady=10, fill=tk.X)
            
            self.start_button = tk.Button(control_frame, text="Başlat", command=self.start_bot,
                                          bg="green", fg="white", width=15, height=2)
            self.start_button.pack(side=tk.LEFT, padx=10)
            
            self.stop_button = tk.Button(control_frame, text="DURDUR", command=self.emergency_stop_bot,
                                         bg="red", fg="white", width=15, height=2, state=tk.DISABLED)
            self.stop_button.pack(side=tk.LEFT, padx=10)
            
            # Log alanı
            log_frame = tk.Frame(self.root)
            log_frame.pack(pady=10, fill=tk.BOTH, expand=True)
            
            log_label = tk.Label(log_frame, text="İşlem Günlüğü:")
            log_label.pack(anchor=tk.W)
            
            self.log_area = scrolledtext.ScrolledText(log_frame, width=70, height=20)
            self.log_area.pack(fill=tk.BOTH, expand=True, padx=10)
            
            # Durum çubuğu
            self.status_var = tk.StringVar()
            self.status_var.set("Durum: Hazır")
            status_bar = tk.Label(self.root, textvariable=self.status_var, bd=1, relief=tk.SUNKEN, anchor=tk.W)
            status_bar.pack(side=tk.BOTTOM, fill=tk.X)
            
        def log(self, message):
            timestamp = datetime.now().strftime("%H:%M:%S.%f")[:-3] # Milisaniye hassasiyeti
            log_message = f"[{timestamp}] {message}"
            self.root.after(0, lambda: self.log_area.insert(tk.END, log_message + "\n"))
            self.root.after(0, lambda: self.log_area.see(tk.END))
            print(log_message)
        
        def update_status(self, message):
            self.root.after(0, lambda: self.status_var.set(f"Durum: {message}"))
            
        def start_bot(self):
            if self.is_running:
                return
                
            self.is_running = True
            self.emergency_stop = False
            self.stop_event.clear()
            
            self.start_button.config(state=tk.DISABLED)
            self.stop_button.config(state=tk.NORMAL)
            
            self.log("Bot başlatılıyor...")
            self.update_status("Çalışıyor")
            
            # Bot işlemini ayrı bir thread'de başlat
            self.thread = threading.Thread(target=self.run_bot)
            self.thread.daemon = True
            self.thread.start()
        
        def stop_bot(self):
            if not self.is_running:
                return
                
            self.is_running = False
            self.stop_event.set()
            self.log("Bot durduruluyor...")
            self.update_status("Durduruluyor")
            
            # Tarayıcıyı kapat
            if self.driver:
                try:
                    self.log("Tarayıcı kapatılıyor...")
                    self.driver.quit()
                    self.driver = None
                    self.log("Tarayıcı kapatıldı.")
                except Exception as e:
                    self.log(f"Tarayıcı kapatılırken hata: {str(e)}")
            
            self.start_button.config(state=tk.NORMAL)
            self.stop_button.config(state=tk.DISABLED)
            self.update_status("Durduruldu")
        
        def emergency_stop_bot(self):
            """Acil durdurma: Milisaniye hassasiyetinde durması için optimize edilmiş"""
            self.log("ACİL DURDURMA İSTEĞİ ALINDI!")
            self.emergency_stop = True
            self.stop_event.set()
            self.is_running = False
            
            # Tarayıcıyı hemen sonlandır
            if self.driver:
                try:
                    # Tarayıcı sürecini doğrudan sonlandır
                    self.log("Tarayıcı süreci anında sonlandırılıyor...")
                    if hasattr(self.driver, 'service') and hasattr(self.driver.service, 'process'):
                        if self.driver.service.process:
                            pid = self.driver.service.process.pid
                            try:
                                if sys.platform == 'win32':
                                    import ctypes
                                    PROCESS_TERMINATE = 1
                                    handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, pid)
                                    ctypes.windll.kernel32.TerminateProcess(handle, 0)
                                    ctypes.windll.kernel32.CloseHandle(handle)
                                else:
                                    os.kill(pid, signal.SIGKILL)
                                self.log(f"Tarayıcı süreci (PID: {pid}) anında sonlandırıldı!")
                            except Exception as e:
                                self.log(f"Süreç sonlandırma hatası: {str(e)}")
                    self.driver = None
                except Exception as e:
                    self.log(f"Acil tarayıcı kapatma hatası: {str(e)}")
            
            # GUI'yi hemen güncelle
            self.start_button.config(state=tk.NORMAL)
            self.stop_button.config(state=tk.DISABLED)
            self.update_status("ACİL DURDURULDU!")
            
            # Aktif işlemleri iptal et
            if hasattr(self, 'active_orders') and self.active_orders:
                self.log("Aktif işlemler iptal ediliyor...")
                # İşlem iptali için gerekli kodlar burada yer alacak
                
            self.log("Tüm işlemler durduruldu!")
        
        def on_closing(self):
            """Uygulama kapatıldığında çağrılır"""
            if self.is_running:
                self.emergency_stop_bot()
            self.root.destroy()
        
        def check_stop_signal(self):
            """Durdurma sinyalini kontrol eder - tüm döngülerde çağrılmalıdır"""
            if self.stop_event.is_set() or self.emergency_stop or not self.is_running:
                raise Exception("Durdurma sinyali alındı")
            return False
        
        def run_bot(self):
            try:
                # Tarayıcı ayarlarını yapılandır
                self.log("Tarayıcı başlatılıyor...")
                chrome_options = Options()
                chrome_options.add_argument("--start-maximized")
                # chrome_options.add_argument("--headless") # Başsız modda çalıştırmak istiyorsanız bu satırı açın
                chrome_options.add_experimental_option("detach", False) # Tarayıcının ayrı süreç olarak çalışmasını engelle
                
                service = Service(ChromeDriverManager().install())
                self.driver = webdriver.Chrome(service=service, options=chrome_options)
                
                # Ana işlem döngüsü
                while self.is_running:
                    self.check_stop_signal() # Her döngü başında durdurma sinyalini kontrol et
                    self.execute_trading_cycle()
                    
                    # 2 dakika boyunca bekle veya Take Profit gerçekleşene kadar
                    self.log("İşlem 2 dakika boyunca izleniyor...")
                    wait_time = 120 # 2 dakika
                    start_time = time.time()
                    
                    # Daha sık kontrol ile durdurma sinyaline hızlı yanıt ver
                    while self.is_running and (time.time() - start_time) < wait_time:
                        self.check_stop_signal() # Her döngüde kontrol et
                        
                        # Take Profit durumunu kontrol et
                        try:
                            if self.check_take_profit():
                                self.log("Take Profit gerçekleşti. Yeni işlem başlatılıyor.")
                                break
                        except Exception as e:
                            if "Durdurma sinyali alındı" in str(e):
                                raise
                            self.log(f"Take Profit kontrolü sırasında hata: {str(e)}")
                        
                        # Daha kısa aralıklarla kontrol et (0.1 saniye)
                        for _ in range(10): # 1 saniyeyi 10 parçaya böl
                            self.check_stop_signal()
                            time.sleep(0.1)
                    
            except Exception as e:
                if "Durdurma sinyali alındı" in str(e):
                    self.log("Bot kontrollü şekilde durduruldu.")
                else:
                    self.log(f"Bot çalışması sırasında hata: {str(e)}")
            finally:
                # Bot thread tamamlandığında GUI'yi güncelle
                if self.is_running:
                    self.root.after(0, self.stop_bot)
        
        def execute_trading_cycle(self):
            try:
                # 1. Binance Futures Grid Bot sayfasına giriş yap
                self.log("Binance Futures Grid Bot sayfasına giriş yapılıyor...")
                self.check_stop_signal()
                self.driver.get("https://www.binance.com/en/futures/trading-bot")
                
                # Sayfanın yüklenmesi için bekle
                for _ in range(30): # 30 saniye timeout
                    self.check_stop_signal()
                    try:
                        if self.driver.find_element(By.XPATH, "//div[contains(text(), 'Grid Bot')]"):
                            break
                    except:
                        pass
                    time.sleep(1)
                
                self.log("Sayfa başarıyla yüklendi.")
                
                # 2. x50 kaldıraçlı ve maksimum 25$ giriş miktarı olan botları filtrele
                self.log("Filtreler uygulanıyor...")
                self.check_stop_signal()
                
                # Filtre butonlarını bul ve tıkla
                for _ in range(10): # 10 saniye timeout
                    self.check_stop_signal()
                    try:
                        filter_btn = self.driver.find_element(By.XPATH, "//button[contains(text(), 'Filter')]")
                        filter_btn.click()
                        break
                    except:
                        time.sleep(0.5)
                
                # Kaldıraç filtresini ayarla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        leverage_filter = self.driver.find_element(By.XPATH, "//div[contains(text(), 'Leverage')]/following-sibling::div//input")
                        leverage_filter.clear()
                        leverage_filter.send_keys("50")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # Maksimum giriş miktarı filtresini ayarla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        amount_filter = self.driver.find_element(By.XPATH, "//div[contains(text(), 'Max Investment')]/following-sibling::div//input")
                        amount_filter.clear()
                        amount_filter.send_keys("25")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # Filtre uygula butonuna tıkla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        apply_btn = self.driver.find_element(By.XPATH, "//button[contains(text(), 'Apply')]")
                        apply_btn.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                        
                self.log("Filtreler başarıyla uygulandı.")
                
                # 3. PNL'si en yüksek olan botu seç ve "Copy" yap
                self.log("PNL'si en yüksek olan bot seçiliyor...")
                self.check_stop_signal()
                
                # Botları PNL'ye göre sırala
                for _ in range(10):
                    try:
                        sort_btn = self.driver.find_element(By.XPATH, "//div[contains(text(), 'PNL')]")
                        sort_btn.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                        
                time.sleep(1) # Sıralamanın uygulanması için kısa bekle
                self.check_stop_signal()
                
                # En üstteki botu (en yüksek PNL) seç
                for _ in range(10):
                    try:
                        top_bot = self.driver.find_element(By.XPATH, "(//button[contains(text(), 'Copy')])[1]")
                        top_bot.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                        
                self.log("PNL'si en yüksek bot seçildi.")
                
                # 4. Tekrar "Copy" butonuna basarak işlemi onayla
                self.log("İşlem onaylanıyor...")
                self.check_stop_signal()
                
                for _ in range(10):
                    try:
                        confirm_copy = self.driver.find_element(By.XPATH, "//button[contains(text(), 'Copy')]")
                        confirm_copy.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # 5. Investment, Stop Loss ve Take Profit değerlerini ayarla
                self.log("Parametreler ayarlanıyor...")
                self.check_stop_signal()
                
                # Investment miktarını ayarla
                for _ in range(10):
                    try:
                        investment_input = self.driver.find_element(By.XPATH, "//label[contains(text(), 'Investment')]/following-sibling::div//input")
                        investment_input.clear()
                        investment_input.send_keys("25")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # Stop Loss değerini ayarla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        stop_loss_input = self.driver.find_element(By.XPATH, "//label[contains(text(), 'Stop Loss')]/following-sibling::div//input")
                        stop_loss_input.clear()
                        stop_loss_input.send_keys("1")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # Take Profit değerini ayarla
                self.check_stop_signal()
                for _ in range(10):
                    try:
                        take_profit_input = self.driver.find_element(By.XPATH, "//label[contains(text(), 'Take Profit')]/following-sibling::div//input")
                        take_profit_input.clear()
                        take_profit_input.send_keys("0.50")
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                        
                self.log("Parametreler başarıyla ayarlandı.")
                
                # 6. "Create" butonuna basarak işlemi başlat
                self.log("İşlem başlatılıyor...")
                self.check_stop_signal()
                
                for _ in range(10):
                    try:
                        create_btn = self.driver.find_element(By.XPATH, "//button[contains(text(), 'Create')]")
                        create_btn.click()
                        break
                    except:
                        self.check_stop_signal()
                        time.sleep(0.5)
                
                # İşlemin başlatıldığını doğrula
                successful = False
                for _ in range(20): # 10 saniye timeout
                    self.check_stop_signal()
                    try:
                        self.driver.find_element(By.XPATH, "//div[contains(text(), 'Bot Created Successfully')]")
                        successful = True
                        break
                    except:
                        time.sleep(0.5)
                        
                if successful:
                    self.log("İşlem başarıyla başlatıldı.")
                else:
                    self.log("İşlem başlatma onayı alınamadı, ama devam ediliyor.")
                
            except Exception as e:
                if "Durdurma sinyali alındı" in str(e):
                    raise
                self.log(f"İşlem döngüsü sırasında hata: {str(e)}")
                raise
        
        def check_take_profit(self):
            try:
                self.check_stop_signal()
                # Bu fonksiyon Take Profit'in gerçekleşip gerçekleşmediğini kontrol eder
                profit_element = self.driver.find_element(By.XPATH, "//div[contains(@class, 'profit-value')]")
                profit_text = profit_element.text
                
                # Profit değerini al ve Take Profit değeriyle karşılaştır
                profit_value = float(profit_text.replace("$", "").strip())
                take_profit_value = 0.50
                
                return profit_value >= take_profit_value
                
            except Exception as e:
                if "Durdurma sinyali alındı" in str(e):
                    raise
                self.log(f"Take Profit kontrolü sırasında hata: {str(e)}")
                return False
    
    def main():
        root = tk.Tk()
        app = BinanceGridBotApp(root)
        root.mainloop()
    
    if __name__ == "__main__":
        main()
    Chatgpt

    import time
    import threading
    import tkinter as tk
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from webdriver_manager.chrome import ChromeDriverManager
    
    # Botun çalışıp çalışmadığını kontrol eden değişken
    bot_running = False
    
    # Tarayıcı başlatma fonksiyonu
    def start_browser():
        global driver
        options = webdriver.ChromeOptions()
        options.add_argument("--start-maximized")
        driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
    
    # Binance Grid Bot işlemlerini yapan fonksiyon
    def run_bot():
        global bot_running
        start_browser()
        
        driver.get("https://www.binance.com/en/futures/grid-trading")
        time.sleep(3)
    
        while bot_running:
            try:
                # **Filtreleme**: x50 kaldıraç ve max 25$ yatırım miktarı
                filter_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Filter')]")
                filter_button.click()
                time.sleep(1)
    
                leverage_option = driver.find_element(By.XPATH, "//option[contains(text(), 'x50')]")
                leverage_option.click()
                time.sleep(1)
    
                investment_filter = driver.find_element(By.XPATH, "//input[@placeholder='Max Investment']")
                investment_filter.send_keys(Keys.CONTROL + "a") # Önce var olanı temizle
                investment_filter.send_keys("25")
                investment_filter.send_keys(Keys.RETURN)
                time.sleep(2)
    
                # **PNL'si en yüksek olan botu seç ve 'Copy' yap**
                top_bot = driver.find_element(By.XPATH, "(//button[contains(text(), 'Copy')])[1]")
                top_bot.click()
                time.sleep(1)
    
                copy_confirm = driver.find_element(By.XPATH, "//button[contains(text(), 'Copy')]")
                copy_confirm.click()
                time.sleep(2)
    
                # **Ayarları yap**
                investment_input = driver.find_element(By.XPATH, "//input[@name='investment']")
                investment_input.send_keys(Keys.CONTROL + "a")
                investment_input.send_keys("25")
    
                stop_loss_input = driver.find_element(By.XPATH, "//input[@name='stopLoss']")
                stop_loss_input.send_keys(Keys.CONTROL + "a")
                stop_loss_input.send_keys("1")
    
                take_profit_input = driver.find_element(By.XPATH, "//input[@name='takeProfit']")
                take_profit_input.send_keys(Keys.CONTROL + "a")
                take_profit_input.send_keys("0.50")
    
                # **"Create" butonuna basarak işlemi başlat**
                create_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Create')]")
                create_button.click()
                time.sleep(2)
    
                # **İşlemi 2 dakika bekleyip kontrol et**
                time.sleep(120)
                driver.refresh()
                time.sleep(3)
    
                # **Take Profit gerçekleştiyse yeni işlem aç**
                try:
                    profit_status = driver.find_element(By.XPATH, "//span[contains(text(), 'Take Profit')]")
                    print("✅ Kâr alındı, yeni işlem başlatılıyor...")
                    driver.get("https://www.binance.com/en/futures/grid-trading")
                except:
                    print("⏳ İşlem devam ediyor...")
    
            except Exception as e:
                print(f"⚠️ Hata oluştu: {e}")
                break
    
        driver.quit()
    
    # **Botu başlatma fonksiyonu**
    def start_bot():
        global bot_running
        if not bot_running:
            bot_running = True
            threading.Thread(target=run_bot).start()
    
    # **Botu durdurma fonksiyonu**
    def stop_bot():
        global bot_running
        bot_running = False
    
    # **GUI Arayüzü**
    root = tk.Tk()
    root.title("Binance Futures Grid Bot")
    root.geometry("300x200")
    
    start_button = tk.Button(root, text="Başlat", command=start_bot, bg="green", fg="white", font=("Arial", 12))
    start_button.pack(pady=20)
    
    stop_button = tk.Button(root, text="Dur
    dur", command=stop_bot, bg="red", fg="white", font=("Arial", 12))
    stop_button.pack(pady=20)
    
    root.mainloop()
    Manuel yaptığım işlemi chrome ile otomasyon istedim
    Henüz bakmadım ama ikisi de çalışır bunların
    Backtest, simülasyon ve al-sat botları konusunda bende bir kaç bir şey denedim. İlk 3-4 promtta GPT ile temel oluşturabildim ama daha karmaşık hale getirmek istediğimde saçmalaya başladı. Temel iskelet oluşturma konusunda başarılılar ama iş geliştirme, güncellemeye gelince biraz zortluyor Sanırım birde claude veya cursor deneyeceğim.
  • 08-03-2025, 23:26:41
    #15
    Cursor claude 3.7 saçmalayamaya başladı.Hiçbir şeyi düzgün yapmıyor bu aralar
  • 08-03-2025, 23:28:36
    #16
    ertunc23 adlı üyeden alıntı: mesajı görüntüle
    Cursor claude 3.7 saçmalayamaya başladı.Hiçbir şeyi düzgün yapmıyor bu aralar
    Mesela ne gibi hatalar alıyorsunuz hocam? Kodlama konusunda mı bu dedikleriniz
  • 08-03-2025, 23:41:50
    #17
    Fizz adlı üyeden alıntı: mesajı görüntüle
    Mesela ne gibi hatalar alıyorsunuz hocam? Kodlama konusunda mı bu dedikleriniz
    Projem çok büyüdü hocam.Dün mesela tek seferde deiğimi anlıyordu bu gün 10 defa şunu yap bunu yapma vs gibi yazıyorum çözemiyor.
  • 08-03-2025, 23:43:10
    #18
    trae ve claud kullanıyorum