arbitrage / app.py
lykia0's picture
Update app.py
f4953e9 verified
import requests
import random
import streamlit as st
# Proxy listesi (SOCKS5) - En hızlı proxy'leri ekledik
proxy_list = [
'185.46.97.75:1080', # 20 ms, Rusya
'89.104.71.70:1080', # 40 ms, Rusya
'81.200.241.173:1080', # 100 ms, Rusya
'46.241.57.29:1080', # 260 ms, Rusya
'5.183.70.46:1080' # 220 ms, Rusya
]
def get_proxy():
"""Rastgele çalışan bir proxy döndür."""
for _ in range(len(proxy_list)):
proxy = random.choice(proxy_list)
try:
response = requests.get('https://httpbin.org/ip', proxies={'http': f'socks5h://{proxy}', 'https': f'socks5h://{proxy}'}, timeout=10)
if response.status_code == 200:
st.write(f"Proxy bağlantısı başarılı: {proxy}")
return {'http': f'socks5h://{proxy}', 'https': f'socks5h://{proxy}'}
except Exception as e:
st.error(f"Proxy çalışmıyor: {proxy} Hata: {e}")
st.error("Uygun bir proxy bulunamadı. Proxy listesini kontrol edin.")
return None
def get_binance_price(symbol):
try:
url = f"https://api.binance.com/api/v3/depth?symbol={symbol}&limit=5"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
}
proxies = get_proxy()
if not proxies:
return None, None
response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
response.raise_for_status()
order_book = response.json()
best_bid_price = float(order_book['bids'][0][0])
best_ask_price = float(order_book['asks'][0][0])
return best_bid_price, best_ask_price
except Exception as e:
st.error(f"Binance fiyat çekme hatası ({symbol}): {e}")
return None, None
def get_okx_price(symbol):
try:
url = f"https://www.okx.com/api/v5/market/books?instId={symbol}&sz=5"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
}
proxies = get_proxy()
if not proxies:
return None
response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
response.raise_for_status()
order_book = response.json()['data'][0]
best_bid_price = float(order_book['bids'][0][0])
return best_bid_price
except Exception as e:
st.error(f"OKX fiyat çekme hatası ({symbol}): {e}")
return None
st.title("OKX ve Binance Arbitraj Fırsatları")
user_try_amount = st.number_input("İşlem yapmak istediğiniz TRY miktarını girin:", min_value=1, step=1)
if st.button("Hesapla"):
st.write("Fiyatlar çekiliyor...")
binance_fdusd_try_bid, binance_fdusd_try_ask = get_binance_price("FDUSDTRY")
binance_fdusd_usdt_bid, _ = get_binance_price("FDUSDUSDT")
okx_usdt_try = get_okx_price("USDT-TRY")
if binance_fdusd_try_bid and binance_fdusd_try_ask and binance_fdusd_usdt_bid and okx_usdt_try:
st.success("Fiyatlar başarıyla çekildi!")
else:
st.error("Bazı fiyatlar alınamadı, lütfen daha sonra tekrar deneyin.")