Kodlama | En Tecrübeli Yapay Zeka Aracı Hangisi?
26
●1.752
- 08-03-2025, 23:18:32Youtube de izlediğim videolara göre belli bir günlük kullanım limiti mevcutmuş pro sürümünde deMertcanK adlı üyeden alıntı: mesajı görüntüle
- 08-03-2025, 23:19:37Evet 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.Fizz adlı üyeden alıntı: mesajı görüntüle
- 08-03-2025, 23:20:36Birş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
- 08-03-2025, 23:24:43Backtest, 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 zortluyorMisafir adlı üyeden alıntı: mesajı görüntüle
Sanırım birde claude veya cursor deneyeceğim.
- 08-03-2025, 23:28:36Mesela ne gibi hatalar alıyorsunuz hocam? Kodlama konusunda mı bu dediklerinizertunc23 adlı üyeden alıntı: mesajı görüntüle
- 08-03-2025, 23:41:50Projem ç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.Fizz adlı üyeden alıntı: mesajı görüntüle
Sanırım birde claude veya cursor deneyeceğim.