Günümüzde algoritmik trading artık sadece “fiyat MA’nın üzerindeyse, al” gibi koşullar yazmakla sınırlı değil. 2026 yılında sektör standardı hibrit sistemlere kaydı: emir yürütme için sağlam bir çekirdek ve sinyalleri filtrelemek için LLM (Large Language Models) veya gradient boosting tabanlı “akıllı” bir katman.
Bu makalede, modern Python stack kullanarak ilk botunuzun mimarisinden çalışan koduna kadar olan süreci adım adım inceleyeceğiz.
1. 2026 Teknoloji Stack’i: Ne Seçmeli?
Sadece belirli bir borsa için kod yazmayı unutun (yalnızca Binance veya yalnızca OKX). Profesyonel yaklaşım, soyutlama katmanlarını kullanmaktır.
- CCXT (CryptoCurrency eXchange Trading Library): De facto standart. 100’den fazla borsayı destekler. 2026’da kütüphane tamamen async (
asyncio) destekli, bu yüksek frekanslı veya çoklu thread stratejiler için kritik öneme sahip. - VectorBT PRO / Backtesting.py: Stratejileri test etmek için. VectorBT, vektörleştirme (NumPy/Numba) sayesinde milyonlarca parametre kombinasyonunu saniyeler içinde çalıştırabilir.
- AI Kütüphaneleri:
LightGBMveyaXGBoost(klasik veriler için) veLangChain/OpenAI SDK(haberler ve sosyal medya duygu analizini gerçek zamanlı yapmak için).
2. Modern Bot Mimarisi
İyi bir bot üç bağımsız modülden oluşur:
- Data Ingestion: WebSocket üzerinden OHLCV (mum verisi) ve orderbook almak.
- Brain: Karar mekanizması. AI burada devreye girer.
- Executor: Emir verme, limit kontrolü ve güvenlikten sorumlu modül.
3. Pratik: Python ile İskelet Kod Yazma
Öncelikle temel kurulum:
pip install ccxt pandas scikit-learn loguru python-dotenvAdım 1: Güvenli Bağlantı
Anahtarlarınızı kod içinde saklamayın. .env dosyası kullanın.
import ccxt.async_support as ccxt # Asenkron versiyon
import asyncio
import os
from dotenv import load_dotenv
load_dotenv()
async def create_exchange_client(exchange_id='binance'):
exchange_class = getattr(ccxt, exchange_id)
client = exchange_class({
'apiKey': os.getenv(f'{exchange_id.upper()}_KEY'),
'secret': os.getenv(f'{exchange_id.upper()}_SECRET'),
'enableRateLimit': True,
'options': {'defaultType': 'future'} # Vadeli işlemler
})
return clientAdım 2: AI Entegrasyonu (Duygu Analizi)
Az bilinen bir gerçek: 2026’da yalnızca teknik göstergelere dayalı fiyat tahminleri, botların yoğunluğu nedeniyle doğruluk kaybetti. Artık duygu belirleyici hale geldi.
İşte LLM (ör. GPT-4o veya lokal Llama 3) kullanarak en son haberleri analiz eden ve girişleri filtreleyen bir örnek fonksiyon:
from openai import OpenAI
client_ai = OpenAI(api_key="YOUR_AI_KEY")
def get_market_sentiment(ticker):
# Gerçekte burada haberler veya Twitter parse edilir
news_snippet = "SEC approves new Bitcoin ETF structures, market reacts positively."
response = client_ai.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "Sen bir finansal analistsin. Metni -1 (ayı) ile 1 (boğa) arasında değerlendir. Sadece sayı döndür."},
{"role": "user", "content": news_snippet}
]
)
return float(response.choices[0].message.content)Adım 3: Stratejinin Temel Mantığı
Teknik analiz ve AI filtresini birleştirelim.
import pandas as pd
async def simple_strategy(exchange, symbol):
# 1. Veriyi al
ohlcv = await exchange.fetch_ohlcv(symbol, timeframe='1h', limit=50)
df = pd.DataFrame(ohlcv, columns=['ts', 'o', 'h', 'l', 'c', 'v'])
# 2. Teknik sinyal (ör. hareketli ortalama kesişimi)
ma = df['c'].rolling(window=20).mean()
last_price = df['c'].iloc[-1]
technical_signal = 1 if last_price > ma.iloc[-1] else -1
# 3. AI filtresi
sentiment = get_market_sentiment(symbol)
# 4. Karar alma
if technical_signal == 1 and sentiment > 0.5:
print(f"BULLISH: {symbol} alıyoruz")
# await exchange.create_market_buy_order(symbol, amount)
elif technical_signal == -1 and sentiment < -0.5:
print(f"BEARISH: {symbol} satıyoruz")
# await exchange.create_market_sell_order(symbol, amount)
4. Profesyonel İpuçları: Kitaplarda Bulamayacağınız Şeyler
- "Dust" Sorunu: Binance’de satış sonrası küçük coin kalıntıları sıkça kalır. Profesyonel botlar bu “dust”u otomatik olarak BNB’ye çevirebilir.
- WebSocket vs REST: Fiyat almak için WebSocket (
ccxt.pro) kullanın. REST API gecikmesi (yukarıdaki örnekte olduğu gibi) 200–500 ms olabilir, ki kripto için uzun bir süre. - Hata Yönetimi (Back-off): Borsalar çok sık istek atıldığında IP’yi engelleyebilir (429 hatası). Her zaman üstel back-off kullanın: hata sonrası 1, 2, 4, 8 saniye bekleyin.
- Donanım: Botu ev bilgisayarında çalıştırmayın. Ping’i minimize etmek için Tokyo veya Frankfurt’ta VPS kullanın.
Daha önce “iskelet”i incelediysek, şimdi “sinir sistemi” ve güvenlik kısmına geçiyoruz — yani karlı bir bot ile bakiyesi boşalan bir hesap arasındaki fark.
5. Gelişmiş Risk Yönetimi (Money Management)
Profesyoneller asla “tüm bakiyeyi” kullanarak işlem yapmaz. 2026’da standart, volatiliteye (ATR — Average True Range) dayalı dinamik pozisyon boyutu kullanmaktır.
Pozisyon boyutu formülü:
Tek bir işlemde bakiyenizin %1’den fazlasını kaybetmemek için şu yaklaşımı kullanın:
def calculate_position_size(balance, risk_percent, stop_loss_dist):
"""
balance: mevcut bakiye (USDT cinsinden)
risk_percent: kaybetmeye razı olduğunuz bakiye yüzdesi (ör. 0.01 = %1)
stop_loss_dist: stop-loss mesafesi (dolar)
"""
risk_amount = balance * risk_percent
position_size = risk_amount / stop_loss_dist
return position_size
# Örnek: Bakiye $1000, risk %1, stop giriş fiyatından $50 uzaklıkta
# position_size = (1000 * 0.01) / 50 = 0.2 BTCAz bilinen ipucu: Sermaye dağılımını optimize etmek için Kelly Kriterini kullanın, ancak AI modelinin hata yapması durumunda büyük kayıpları önlemek için “fractional Kelly” faktörü (0.5 veya daha az) ile.
6. WebSocket ile Gerçek Zamanlı Veri (CCXT Pro)
Fiyatları almak için REST API kullanmak artık “geçmişte kaldı”. Gerçek zamanlı işlem için WebSocket gerekir. Bu, botun fiyat hareketlerine anında tepki vermesini sağlar.
import ccxt.pro as ccxtpro
async def watch_ticker(exchange_id, symbol):
exchange = getattr(ccxtpro, exchange_id)()
while True:
try:
ticker = await exchange.watch_ticker(symbol)
# ticker['last'] gecikmesiz güncel fiyatı gösterir
print(f"{symbol} için yeni fiyat: {ticker['last']}")
except Exception as e:
print(f"Bağlantı hatası: {e}")
break
await exchange.close()
7. İzleme ve Loglama: Kontrol Paneli olarak Telegram Botu
Botunuz “kara kutu” gibi çalışmamalı. Bir uyarı sistemine ihtiyacınız var. loguru olayları kaydetmek için mükemmeldir, aiogram ise sizinle bağlantıda kalmanızı sağlar.
Pratik ipucu: Telegram’a sadece metin değil, işlem grafiklerini de gönderin.
- Bot pozisyon açtığında,
mplfinanceile grafik ekran görüntüsü oluşturup size gönderebilir. Böylece AI’nın “dengesiz davranıp davranmadığını” görsel olarak kontrol edebilirsiniz.
import requests
import os
def send_telegram_msg(message):
token = os.getenv("TG_TOKEN")
chat_id = os.getenv("TG_CHAT_ID")
url = f"https://api.telegram.org/bot{token}/sendMessage?chat_id={chat_id}&text={message}"
requests.get(url)
8. AI’yi Kendi Verinizle Eğitmek (Fine-tuning)
2026 trendi Reinforcement Learning (RL). Bot’a “RSI < 30 olduğunda al” demek yerine ona bir ortam (Gym/Gymnasium) verirsiniz ve kar üzerinden ödüllendirirsiniz.
Kaçınılması Gereken Hatalar (Data Leakage):
AI kullanırken yeni başlayanların yaptığı büyük hata, geleceğe bakmaya çalışmaktır. Eğer tüm veri setini, gelecek fiyatları da dahil ederek normalleştirirseniz, model testlerde %99 doğruluk gösterir, ama canlıda her şeyi kaybeder.
Kural: Verileri sadece “geçmiş” temel alarak normalleştirin (rolling normalization).
9. Vergiler ve Raporlama (Az bilinen bir konu)
Günümüzde Binance ve OKX gibi borsalar, düzenleyicilerin talepleri doğrultusunda veri paylaşmaktadır. Profesyonel bir bot, trade_log.csv tutmalı veya tüm verileri PostgreSQL veritabanına kaydetmelidir.
- Kaydedin: Giriş fiyatı, Çıkış fiyatı, Komisyon (Fee), Slippage (Fiyat kayması).
- Slippage (Fiyat Kayması) — hedeflediğiniz fiyat ile emir gerçekleştiğinde oluşan gerçek fiyat arasındaki farktır. Eğer slippage %0,5’in üzerindeyse, algoritmanız o likidite seviyesinde etkili değildir.
10. Botu “canlı” modda nasıl çalıştırırsınız?
- Paper Trading (Kağıt üzerinde deneme): CCXT, Binance/OKX testnetlerini destekler. Botunuzu en az 1-2 hafta test edin.
- Gecikme İzleme: Sunucudan gelen yanıt süresini kontrol edin. Eğer >100ms ise, VPS lokasyonunuzu değiştirin.
- Kill-Switch: Telegram botunuza basit bir komut
/panicekleyin. Bu komut tüm açık pozisyonları kapatır ve scripti durdurur.
İşte böylece amatör scriptleri kurumsal seviyedeki sistemlerden ayıran en ileri kısıma geldik. 2026’da kâr, diğerlerinin yetişemediği veya fırsatları göremediği yerlerde elde edilir.
11. Borsalar arası arbitraj ve Funding (Binance vs OKX)
En stabil stratejilerden biri, Delta-Neutral Arbitrage (Delta-Nötr Arbitraj) olarak kalmaktadır.
Nasıl çalışır:
Farklı borsalardaki finansman oranlarındaki (Funding Rate) farkları ararsınız.
- Binance’de long için funding %0,03 ve OKX’te %0,01 ise, Binance’de short ve OKX’te aynı miktarda long açabilirsiniz.
- Pozisyonunuz fiyat hareketlerinden korunur (locked), ancak her 8 saatte net farkı kazanırsınız.
Teknik Uygulama: Tickerları eş zamanlı olarak izlemek için ccxt kullanın:
async def check_funding_diff(symbol):
binance_f = await binance.fetch_funding_rate(symbol)
okx_f = await okx.fetch_funding_rate(symbol)
diff = binance_f['fundingRate'] - okx_f['fundingRate']
if abs(diff) > threshold:
# Çift işlem açma mantığı
pass
12. Flash Loans ve DeFi entegrasyonu
2026’da Python ile algoritmik trading, merkezi borsaların (CEX) ötesine geçti. Modern botlar, Aave gibi protokollerde Flash Loans (anlık krediler) kullanabilir.
Kavram: Teminat olmadan $1,000,000$ ödünç alırsınız, Uniswap ve Binance arasında arbitraj yaparsınız ve krediyi faiziyle geri ödersiniz. Tüm bu işlem tek bir blok içinde gerçekleşir.
Araçlar:
Web3.pykütüphanesi. Python bot, smart contract’lar için işlemleri imzalayan bir “orkestra şefi” gibi çalışır.
13. Kod ve API güvenliği
Botunuz kârlı hale geldiğinde güvenlik en önemli konu olur.
IP Whitelisting: En önemli önlem. Borsa API ayarlarında sadece VPS IP’nizden erişime izin verin. Anahtarlar çalınsa bile başka cihazda kullanılamaz.
Kod Obfuscation: Botu bir müşteriye veya partnerinize verirseniz,
PyArmorkullanın. Bu, algoritmanızı (fikri mülkiyet) decompile edilmekten korur.Vaultlar: Büyük fonlar
.envdosyaları yerine HashiCorp Vault veya AWS Secrets Manager kullanır. Anahtarlar dinamik olarak güncellenir ve disk üzerinde açık tutulmaz.
14. Bot “Sağlık” İzleme
Bot “takılabilir”, while True döngüsü çalışmaya devam eder ama veriler güncellenmez (effect “donmuş order book”).
Profesyonel çözüm:
Son ticker zaman damgasını kontrol eden ayrı bir Watchdog thread oluşturun. Eğer veriler 30 saniyeden uzun süredir güncellenmemişse, bot WebSocket bağlantısını yeniden başlatmalı ve Telegram üzerinden uyarı göndermelidir.
import time
last_update = time.time()
def health_check():
if time.time() - last_update > 30:
# Botu yeniden başlat
os.system("python main.py")
15. Özet: Yeni Başlayanlar için Yol Haritası
İlk botunuz son bot olmasın diye şu adımları izleyin:
Adım 1: Veri logger’ı oluşturun. Fiyatları bir CSV’de bir hafta boyunca toplayın.
Adım 2: Bu verilerle backtest yapın (Backtesting.py). Stratejinin komisyonlarda fazla kayıp vermediğinden emin olun.
Adım 3: API Testnet üzerinden Paper Trading yapın.
Adım 4: Minimum hacimde ($10-20$) başlatın ve slippage’ı kontrol edin.
Adım 5: Ölçeklendirme ve AI filtreleri ekleyin.
Sonuç
Algoritmik trading bir oyun değil, altyapı yarışıdır. Kazanan, “gizli gösterge”ye sahip olan değil, hataları daha stabil işleyen, veriyi daha hızlı alan ve risk yönetimini disiplinle uygulayan kişidir. Python, AI ekosistemi ve CCXT gibi kütüphaneler sayesinde bu dünyaya giriş için en iyi bilet olmuştur.