import ccxt import pandas as pd import time from datetime import datetime # Binance Futures Testnet API bilgileri api_key = '980dfd4f95d62accd3868d1509e4a79350202b62931631ae4ccfaa388d1d1051' api_secret = '8b17a87c40903b71ffb7a247a017d3932037452a83f4ce34b26c445443410f41' exchange = ccxt.binance({ 'apiKey': api_key, 'secret': api_secret, 'enableRateLimit': True, 'options': { 'defaultType': 'future', }, 'urls': { 'api': { 'public': 'https://testnet.binancefuture.com/fapi/v1', 'private': 'https://testnet.binancefuture.com/fapi/v1', }, } }) def get_ohlcv(symbol, timeframe='1h', limit=4): ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=limit) df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume']) df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms') return df def check_patterns(df): # Son mumdan önceki 3 mum birbirinden düşük, son mum büyük if df['close'].iloc[-2] < df['close'].iloc[-3] < df['close'].iloc[-4] and df['close'].iloc[-1] > df['close'].iloc[-2]: return 'long' # Son 3 mum yükseliş, son mum düşüş elif df['close'].iloc[-2] > df['close'].iloc[-3] > df['close'].iloc[-4] and df['close'].iloc[-1] < df['close'].iloc[-2]: return 'short' return None def place_order(symbol, side, leverage=5, tp_ratio=0.2, sl_ratio=0.1): try: # Leverage ayarlama exchange.fapiPrivate_post_leverage({'symbol': symbol.replace('/', ''), 'leverage': leverage}) # Pozisyon açma if side == 'long': order = exchange.create_market_buy_order(symbol, 1) # Miktarı ihtiyacınıza göre ayarlayın else: order = exchange.create_market_sell_order(symbol, 1) # Take profit ve stop loss ayarları tp_price = order['price'] * (1 + tp_ratio) if side == 'long' else order['price'] * (1 - tp_ratio) sl_price = order['price'] * (1 - sl_ratio) if side == 'long' else order['price'] * (1 + sl_ratio) params = { 'stopPrice': sl_price, 'price': tp_price, 'quantity': order['filled'], 'reduceOnly': True, } if side == 'long': exchange.fapiPrivate_post_order({'symbol': symbol.replace('/', ''), 'side': 'SELL', 'type': 'STOP_MARKET', **params}) else: exchange.fapiPrivate_post_order({'symbol': symbol.replace('/', ''), 'side': 'BUY', 'type': 'STOP_MARKET', **params}) print(f'{symbol} için {side} pozisyonu açıldı. TP: {tp_price}, SL: {sl_price}') except Exception as e: print(f'{symbol} için sipariş yerleştirme hatası: {e}') def trade(symbols): positions = {} while True: for symbol in symbols: try: df = get_ohlcv(symbol) print(f'{symbol} için OHLCV verisi alındı:\n{df}') signal = check_patterns(df) if signal: print(f'{symbol} için sinyal bulundu: {signal}') place_order(symbol, signal) positions[symbol] = {'side': signal, 'entry_time': datetime.now()} time.sleep(60) else: print(f'{symbol} için sinyal bulunamadı.') except Exception as e: print(f'{symbol} için hata: {e}') time.sleep(120) symbols = ['BTC/USDT', 'BNB/USDT', 'XRP/USDT', 'ETH/USDT', 'SOL/USDT'] trade(symbols)