İşlem otomasyonu: avantajını kodla, duyguyu çıkar
Gece 3. Sweep setup’ın tetikleniyor. Sen uykudasın.
Botun işlemi açıyor, stopu koyuyor, 3R hedefliyor. Sen rüya görürken.
Sabah 6. Uyanıyorsun. Pozisyon kapanmış. +2,8R kâr. Kahve daha güzel geliyor.
🎯 Otomasyonun vaadi
FOMO yok. Korku yok. Tereddüt yok. Sadece kurallarını her seferinde kusursuz uygulayan kod.
Bu bilimkurgu değil. 2024’te profesyoneller böyle işlem yapıyor.
📉 VAKA ÇALIŞMASI: Mike’ın 19.000 dolarlık teminat tamamlama çağrısı
Kurulum: Mike Sullivan (bileşik örnek), Python geliştiricisi, 200.000 dolarlık hesap. Alpaca API üzerinde bot (RSI<30 iken SPY al). 2020-2023 backtest: %67 kazanma oranı, +140.000 dolar. SIFIR güvenlik kontrolüyle devreye alındı.
Felaket (bir enflasyon şoku sabahı): Bot 8 hafta çalıştı (+14.000 dolar, %71 kazanma oranı). SPY -%2,8 boşlukla 510 dolardan açtı. Bot RSI’ı 22 gördü ve almaya devam etti: 510, 505, 495 ve 490 dolardan 200.000’er dolar = 800.000 dolarlık pozisyon (4 kat kaldıraç, ortalama maliyet 499,87 dolar). Saat 15.00’te: SPY 488 dolar — önceki kapanışın %7 altında — pozisyonun değeri 781.000 dolar, zarar 19.005 dolar ve teminat tamamlama çağrısı geldi. Mike işteydi, hiçbir şey yapamadı.
Toparlanma: Patlamadan sonra hesap: 195.000 dolar. 5 kontrolle yeniden kuruldu: en fazla 50.000 dolarlık pozisyon, VIX>25 = kapalı, günde en çok 3 işlem, zirveden -%5’te uyarı, -%10’da tam kapanış. Sonraki 8 aydaki sonuç: 195.000 dolar → 218.000 dolar (+%12) ve hiçbir kontrol bir kez bile devreye girmemezlik etmedi.
Ders: Güvenlik kontrollerini ÖNCE kodla: (1) pozisyon limitleri, (2) volatilite filtreleri, (3) azami drawdown kesicisi, (4) acil durdurma. Backtest yalan söyler; siyah kuğuları atlar.
Soru: Mike’ın botu TEK BİR SABAHTA teminat tamamlama çağrısı yedi. Sebep neydi?
⚡ Yarın için hızlı kazanımlar (açmak için tıkla)
- Önce kâğıt üzerinde dene — Test edilmemiş bir otomasyonun arkasına asla gerçek para koyma. Önce kâğıt üzerinde, ve 2. Bölüm’e göre bu haftalar değil aylar demek.
- Pozisyon limitleri ekle — Azami pozisyon büyüklüğünü koda göm: işlem başına hesabın %2’si risk VE bir nominal tavan; çünkü %2 risk, %2 maruziyet demek değil.
- Bir acil durdurma yap — Tek tıkla ya da tek komutla botun tüm faaliyetini kesen manuel bir kapatma oluştur.
Trading’deki insan sorunu
Bir stratejiyi 6 ay boyunca cilaladın. Backtest yaptın. İleriye dönük test ettin. Kazanma oranı: %62. Ortalama R: 2,3. Avantaj doğrulandı.
Gerçek parayla işlem yapmaya başlıyorsun. Sonuç?
| Ay | Stratejinin performansı (kusursuz uygulanırsa) | Senin gerçek performansın | Sorun |
|---|---|---|---|
| 1. ay | +4.200 dolar (%62 kazanma) | +1.800 dolar (%48 kazanma) | 3 setup atlandı (kayıp serisinden sonra korku) |
| 2. ay | +3.900 dolar (%60 kazanma) | -2.100 dolar (%38 kazanma) | İntikam işlemleri, kayıptan sonra büyüklüğü ikiye katlama |
| 3. ay | +5.100 dolar (%65 kazanma) | +900 dolar (%52 kazanma) | Kırılım setuplarında tereddüt, sinyallerin %40’ı kaçtı |
Acı gerçek: Elinde kârlı bir strateji var. Ama zayıf halka SENSİN.
Emir uygulamasını öldüren üç şey
1. Tereddüt (korkuyla atlamak)
- Az önce 2 kayıp aldın. 3 numaralı setup beliriyor. Düşünüyorsun: «Belki teyit beklerim…»
- Bekliyorsun. Fiyat sensiz gidiyor. 4R’lik bir kazançtı. Korku yüzünden kaçırdın.
- Etkisi: Kazananları atlamak pozitif beklentiyi yok eder
2. Aşırı işlem (FOMO girişleri)
- Piyasa yukarı fırlıyor. Stratejin «setup yok» diyor. Ama seyretmeye dayanamıyorsun. Yine de giriyorsun.
- Stop yok. Plan yok. Sadece umut. Dönüyor. Kaybediyorsun.
- Etkisi: Rastgele girişler avantajını gürültüyle sulandırır
3. Tutarsız pozisyon büyüklüğü
- Setup A: %1 riske giriyorsun (son kayıptan sonra temkinli)
- Setup B: %5 riske giriyorsun (kendine güvenli, «bunu hissediyorum»)
- Setup A 3R kazandırıyor. %3 yapıyorsun. Setup B 1R kaybettiriyor. %5 kaybediyorsun. Net: -%2.
- Etkisi: Büyüklükle ilgili tek bir yanlış karar 3 iyi işlemi siler
💡 Otomasyon neyi çözer
Otomatik bir işlem botu şu şekilde uygular: kusursuz disiplin:
- Tereddüt yok: Setup beliriyor → işlem açılıyor (üst üste 5 kayıptan sonra bile)
- FOMO yok: Setup belirmiyor → bot bekliyor (piyasa ne kadar sıkıcı olursa olsun)
- Kusursuz büyüklük: Her işlem tam olarak %2 (ya da ne programladıysan) riske giriyor, her seferinde
Sonuç: Backtest performansın gerçek performansın oluyor. Test ettiğin avantaj, elde ettiğin avantaj oluyor.
Ölçek sorunu (manuel işlemin sınırları)
Manuel işlem potansiyeline tavan koyar:
| Kısıt | Manuel sınır | Otomatik potansiyel |
|---|---|---|
| Piyasalar | 1-3 sembol izlemek (insan dikkatinin sınırı) | 50’den fazla sembolü aynı anda izlemek |
| Zaman dilimleri | En fazla 1-2 zaman dilimi takip etmek | 5d, 15d, 1s ve günlüğü aynı anda taramak |
| Saatler | Günde 6-8 saat işlem yapmak (tükenme riski) | Kesintisiz işlem yapmak (kripto) ya da tüm seans boyunca (hisse) |
| Setuplar | Haftada 5-10 setup yakalamak (ihtiyari trader için gerçekçi) | Haftada 50-200 setup yakalamak (bot uyumaz, kaçırmaz) |
Örnek: Manuel bir trader ES’i (S&P vadelisi) 15 dakikalık grafikte izliyor. Haftada yaklaşık 8 setup yakalıyor. Ayda ortalama 3.200 dolar kazanıyor — setup başına yaklaşık 92 dolar.
Aynı trader, otomatikleştirilmiş hâlde: Bot ES, NQ ve RTY’yi (endeks vadelileri) artı GC ve CL’yi (metal ve enerji) 5d, 15d ve 1s üzerinde tarıyor. Haftada yaklaşık 24 setup yakalıyor. Setup başına aynı 92 dolarla bu ayda 9.600 dolar eder.
Kilidi açan şey: Daha iyi işlem yapmıyorsun. DAHA ÇOK işlem yapıyorsun — tükenmeden.
Ve tavan: ES, MES, SPY ve QQQ büyük ölçüde aynı işlemdir. Korelasyonlu sembol eklemek sinyal sayını çoğaltır, avantajını değil — ve dördü aynı anda tetiklendiğinde riskini çoğaltır. Ticker değil, korelasyonsuz fırsat say.
Otomasyon ne zaman mantıklıdır (ve ne zaman değildir)
Otomasyon en iyi şunlarda çalışır:
- Kural tabanlı stratejiler: Net giriş/çıkış ölçütleri (ör. «fiyat bir dibi süpürüp geri aldığında al»)
- Sık görülen setuplar: Haftada 10’dan fazla tetiklenen stratejiler (hacim, kod yazma süresini haklı çıkarır)
- Sıkıcı uygulama: İhtiyari kararın değer katmadığı stratejiler (mekanik avantajlar)
Otomasyon şunlarda zorlanır:
- İhtiyari setuplar: «Bunu sadece *içime sindiğinde* alırım» (sezgi kodlanamaz)
- Bağlama bağlı işlemler: «Bu kırılım, hacim ortalamanın 2 katını aşarsa VE bir haber katalizörü varsa çalışır» (karmaşık bağlamı sayısallaştırmak zordur)
- Düşük frekanslı stratejiler: Ayda 1-2 kez tetiklenen setuplar (kodlama çabasına değmez)
⚠️ Otomasyon kötü bir stratejiyi düzeltmez
Sık yapılan hata: «Stratejim manuel çalışmıyor. Belki bir bot onu kârlı yapar?»
Gerçek: Otomasyon stratejini TAM OLARAK kodladığın gibi uygular. Stratejinin avantajı yoksa bot istikrarla kaybeder — sadece daha hızlı ve daha verimli.
Kural: YALNIZCA 100’den fazla manuel işlemde pozitif beklentisi kanıtlanmış stratejileri otomatikleştir. Otomasyon avantajı büyütür. Avantaj yaratmaz.
Aracı kurum API karşılaştırması
Her aracı kurum otomatik işlemi desteklemez. Destekleyenler de kalite, maliyet ve özellik açısından çok farklıdır.
Otomatik işlem için en iyi aracı kurum API’leri
| Aracı kurum | Varlık sınıfları | API kalitesi | Maliyetler | Şunun için en iyisi |
|---|---|---|---|---|
| Alpaca | Hisse, ETF, kripto | ⭐⭐⭐⭐⭐ Mükemmel (RESTful + WebSocket, iyi belgelenmiş) | Hissede komisyon yok, kriptoda %0,1-0,25 | Yeni başlayanlar (en kolay API, ücretsiz kâğıt üzerinde işlem, Python kütüphanesi) |
| Interactive Brokers (IBKR) | Hisse, opsiyon, vadeli, döviz, CFD (küresel piyasalar) | ⭐⭐⭐⭐ İyi (güçlü ama karmaşık, öğrenme eğrisi dik) | Hissede 0,005 dolar/adet, opsiyonda 0,65 dolar/kontrat | İleri düzey trader’lar (opsiyon ve vadeliyi otomatikleştirmek, küresel erişim isteyenler) |
| Binance | Kripto (600’den fazla parite; ana borsa ABD’de ikamet edenlere kapalı — Binance.US ayrı ve çok daha küçük bir mekân) | ⭐⭐⭐⭐⭐ Mükemmel (REST + WebSocket, yüksek iş hacmi) | Spotta %0,1, vadelide %0,02-0,04 (BNB indirimiyle) | Kripto algo trader’ları (kesintisiz piyasa, yüksek likidite) |
| Schwab (eski adıyla TD Ameritrade / thinkorswim) | Hisse, opsiyon, vadeli | ⭐⭐⭐ Orta (eski TD Ameritrade API’si 2024’te kapatıldı; yerine gelen Schwab Trader API hâlâ olgunlaşıyor) | Hissede 0 dolar, opsiyonda 0,65 dolar/kontrat | Mevcut Schwab müşterileri (hesabı zaten var, otomatikleştirmek istiyor) |
| TradeStation | Hisse, opsiyon, vadeli | ⭐⭐⭐⭐ İyi (EasyLanguage ile kodlama, dahili backtesting) | Hissede 0 dolar, opsiyonda 0,60 dolar/kontrat | Aktif trader’lar (dışarıda kod yazmadan bütünleşik platform isteyenler) |
Hızlı karar rehberi
Alpaca’yı seç eğer: otomasyonu öğreniyorsan (en kolay API, ücretsiz kâğıt üzerinde işlem, en iyi dokümantasyon). Interactive Brokers’ı seç eğer: opsiyon, vadeli ya da küresel piyasalar gerekiyorsa (tüm varlık sınıfları, 0,005 dolar/adet, kurumsal seviye). Binance’i seç eğer: sadece kripto yapıyorsan (kesintisiz piyasa, 600’den fazla parite, %0,1 komisyon).
💡 Profesyonel ipucu: her zaman kâğıt üzerinde işlemle başla
Yukarıdaki her aracı kurum kâğıt üzerinde işlem sunuyor (gerçek veriyle sahte parayla işlem).
Önerilen takvim:
- 1-2. hafta: API’ye bağlan, temel emir gönderimini test et (alış, satış, zarar durdur)
- 3-8. hafta: Stratejini kodla, kâğıt üzerinde çalıştır, her gün izle
- 9-12. hafta: Stratejinin performansını doğrula (backtest ile örtüşüyor mu?)
- 4. aydan itibaren: Kâğıt üzerinde 3 ay üst üste kârlıysa sermayenin %10’uyla gerçeğe geç
- 6. aydan itibaren: Hâlâ kârlıysa tam dağılıma çık
Kâğıt üzerinde işlemi asla atlama. Mike (yukarıdaki vaka çalışması) atladı ve bir sabahta teminat tamamlama çağrısı yedi.
İşlem fikrinden çalıştırılabilir koda
Elinde manuel bir strateji var. Onu bir botun uygulayabileceği koda nasıl çevirirsin?
Stratejiyi çevirmenin 5 adımlı çerçevesi
Adım 1: giriş koşullarını tanımla (yalnızca açık kurallar)
Manuel trader şöyle düşünür: «Fiyat bir dibi süpürüp yukarı döndüğünde alırım.»
Bu bir bot için fazla belirsiz. Bota kesin mantık gerekir:
- «Sweep» nedir? → Mevcut mumun dibi, önceki salınım dibinin en az %0,3 altına iner
- «Yukarı dönmek» nedir? → Fiyat 1-3 mum içinde salınım dibinin üstünde kapanır
- «Salınım dibi» nedir? → Son 20 mumun en düşük dibi
Kodlanmış hâli:
swing_low = min([bar.low for bar in last_20_bars])
current_low = current_bar.low
current_close = current_bar.close
if current_low < swing_low * 0.997: # %0,3 altina supuruldu
if current_close > swing_low: # geri alindi
ENTRY = True # sweep setup onaylandi
Adım 2: çıkış koşullarını tanımla (stop ve hedef)
Manuel trader: «Stopu sweep’in altına koyarım, kârı 3’e 1 risk-getiri oranında alırım.»
Kodlanmış hâli:
entry_price = current_close
stop_loss = swing_low * 0.995 # sweep'in hemen altinda
stop_distance = entry_price - stop_loss
target = entry_price + (stop_distance * 3) # 3R hedefi
Adım 3: pozisyon büyüklüğünü tanımla (risk yönetimi)
Manuel trader: «İşlem başına yaklaşık %2 riske girerim.»
Kodlanmış hâli:
account_equity = 100000 # 100.000 dolarlik hesap
risk_per_trade = 0.02 # %2
risk_amount = account_equity * risk_per_trade # 2.000 dolar
stop_distance = entry_price - stop_loss
position_size = risk_amount / stop_distance # alinacak hisse
# Ornek: giris 520 dolar, stop 518 dolar, mesafe 2 dolar
# Pozisyon buyuklugu = 2.000 dolar / 2 dolar = 1.000 hisse
# ...yani 100.000 dolarlik hesapta 520.000 dolarlik SPY. %2 risk
# kurali nominal hakkinda hicbir sey soylemez: dar stop kaldirac satin alir.
max_notional = account_equity * 1.5 # sert tavan: ozkaynagin 1,5 kati
position_size = min(position_size, max_notional / entry_price)
# Tavanla: 288 hisse. Gercek risk artik 2.000 degil 576 dolar -
# bedeli bu, ve seni oyunda tutan sey tam olarak bu.
Adım 4: işlem yönetimini tanımla (isteğe bağlı)
Kademeli mi çıkıyorsun? Stopu takip ettiriyor musun? Kısmi kâr alıyor musun?
Örnek: «2R’de %50 kâr alırım, kalanı 3R’ye kadar koştururum.»
if current_price >= entry_price + (stop_distance * 2):
SELL_HALF = True # 2R'de %50 kapat
# Kalan %50 icin stopu basabasa cek
Adım 5: filtreleri tanımla (kötü setupları engelle)
Hangi koşullar setupı geçersiz kılar?
- Zaman filtresi: Yalnızca seansın ilk 2 saatinde işlem yap (ET ile 9.30-11.30)
- Volatilite filtresi: VIX 30’un üzerindeyken işlemleri atla (fazla dalgalı)
- Trend filtresi: Uzun setupları yalnızca fiyat 50 periyotluk EMA’nın üzerindeyken al
if VIX > 30:
SKIP_TRADE = True # piyasa cok volatil
if current_time < "09:30" or current_time > "11:30":
SKIP_TRADE = True # islem penceresinin disinda
✅ Tam strateji örneği (sweep botunun mantığı)
5 adımın tamamı çalıştırılabilir sözde koda dönüştürülmüş hâli:
# Adim 1: giris kosullari
swing_low = min([bar.low for bar in last_20_bars])
if current_bar.low < swing_low * 0.997: # sweep
if current_bar.close > swing_low: # geri alindi
# Adim 2: cikislar
entry = current_bar.close
stop = swing_low * 0.995
target = entry + ((entry - stop) * 3)
# Adim 3: pozisyon buyuklugu
risk_amount = account_equity * 0.02
size = risk_amount / (entry - stop)
# Adim 4: islem yonetimi (2R'de %50)
profit_target_partial = entry + ((entry - stop) * 2)
# Adim 5: filtreler
if VIX < 30 and time_in_window():
PLACE_ORDER(symbol, size, entry, stop, target)
Artık çalıştırılabilir. Bir bot bu kuralları her seferinde kusursuz uygulayabilir.
Botun tam uygulaması (sweep dönüş stratejisi)
import alpaca_trade_api as tradeapi
from alpaca_trade_api.rest import TimeFrame
import os, time
# Kurulum
API_KEY = os.getenv('ALPACA_API_KEY') # ASLA koda gomme!
API_SECRET = os.getenv('ALPACA_API_SECRET')
api = tradeapi.REST(API_KEY, API_SECRET, 'https://paper-api.alpaca.markets')
MAX_NOTIONAL_MULT = 1.5 # ozkaynagin 1,5 katindan fazlasini asla tutma
MAX_DAILY_LOSS = 0.03 # acil durdurma: -%3'te o gun icin cekil
def get_swing_low(bars, lookback=20):
# Mevcut mumu disarida birak. Icine katarsan salinim dibi zaten mevcut
# dibin kendisi olur, sweep testi asla dogru cikmaz, bot hic tetiklenmez.
lows = [bar.l for bar in bars[-(lookback + 1):-1]]
return min(lows)
def check_sweep(current_price, current_low, swing_low):
# Sweep = mevcut dip < salinim dibi (%0,3), sonra ustune geri alis
if current_low < swing_low * 0.997 and current_price > swing_low:
return True
return False
def calculate_position_size(api, entry, stop):
equity = float(api.get_account().equity)
risk_amount = equity * 0.02 # %2 risk
by_risk = risk_amount / (entry - stop)
by_notional = (equity * MAX_NOTIONAL_MULT) / entry # Mike'in atladigi kontrol
return int(min(by_risk, by_notional))
def kill_switch_tripped(api):
acct = api.get_account()
move = (float(acct.equity) - float(acct.last_equity)) / float(acct.last_equity)
return move <= -MAX_DAILY_LOSS
def in_position(api, symbol):
# Aracina sor; yerel degiskene guvenme. Gece dolup kapanmis bir bracket
# yarinki setupi engellememeli.
try:
api.get_position(symbol)
return True
except Exception:
return False
def place_bracket_order(api, symbol, size, entry, stop, target):
try:
order = api.submit_order(
symbol=symbol, qty=size, side='buy', type='limit',
limit_price=entry, time_in_force='gtc',
order_class='bracket',
stop_loss={'stop_price': stop},
take_profit={'limit_price': target}
)
print(f"✓ Emir: {size} hisse @ ${entry} | Stop: ${stop} | Hedef: ${target}")
return order
except Exception as e:
print(f"✗ Emir basarisiz: {e}")
return None
def run_bot(symbol='SPY'):
print(f"Bot calisiyor. {symbol} uzerinde sweep setuplari izleniyor...")
while True:
try:
if not api.get_clock().is_open: # kontrol 1: seans saatleri
time.sleep(60)
continue
if kill_switch_tripped(api): # kontrol 2: gunluk zarar limiti
print("🛑 Gunluk zarar limitine ulasildi. Cekiliyorum.")
break
bars = api.get_bars(symbol, TimeFrame.Minute, limit=50)
current_price = bars[-1].c
current_low = bars[-1].l
swing_low = get_swing_low(bars)
if not in_position(api, symbol) and check_sweep(current_price, current_low, swing_low):
print(f"🎯 Sweep tespit edildi @ ${current_price}")
entry = current_price
stop = swing_low * 0.995
target = entry + (entry - stop) * 3 # 3R
size = calculate_position_size(api, entry, stop) # kontrol 3: nominal tavan
if size > 0:
place_bracket_order(api, symbol, size, entry, stop, target)
time.sleep(60) # her dakika kontrol et
except Exception as e:
print(f"Hata: {e}")
time.sleep(60)
run_bot() # ~75 satir - ve en cok onemli olan uc tanesi kontroller.
Bu ne yapıyor: Alpaca’ya bağlanıyor, SPY’ın 1 dakikalık mumlarını çekiyor, sweep sonrası dönüşleri tespit ediyor (dip, salınım dibinin altını süpürüp sonra geri alıyor), büyüklüğü %2 riskle hesaplıyor nominal tavanla sınırlayarak, bracket emri veriyor (giriş + stop + 3R hedefi) ve bunu her 60 saniyede bir tekrarlıyor — ama yalnızca piyasa açıkken, yalnızca aracı kurum pozisyon yok dediğinde ve gün -%3’teyken asla. Kusursuz disiplin, sıfır duygu ve üç fren.
💡 jeton düşme anı
İnsan katmanını az önce çıkardın. Artık «bunu alsam mı?» yok. Artık «belki beklerim» yok.
Setup beliriyor → bot işlem yapıyor. Belirmiyor → bot bekliyor. Kusursuz disiplin.
Kâğıt üzerinde işlem ≠ gerçek işlem
Botun kâğıt üzerinde kusursuz çalışıyor. Gerçeğe alıyorsun. Çöküyor. Emirler reddediliyor. Şaşkınsın.
Canlı ortama hoş geldin.
Sık görülen hatalar (ve nasıl ele alınır)
Sık görülen hatalar: Bağlantı zaman aşımı, reddedilen emir, kısmi gerçekleşmeler, istek limitleri, kapalı piyasa. Çözümler: Yeniden deneme mantığı (3× üstel bekleme), ön kontroller (bakiye, saatler, fiyat), kısmi gerçekleşme yönetimi, istek sınırlama (dakikada 200), seans saati kontrolü (ET ile 9.30-16). Profesyonel botlar hataları zarifçe karşılar.
Yeniden deneme mantığı (şart)
import uuid
def place_order_with_retry(api, **order_params):
"""Emir gonderimini 3 kez yeniden dene"""
max_retries = 3
# Her denemede ayni id. Ilk istek gercekten aracina ulastiysa ve sadece
# yanit kaybolduysa, yeniden deneme mukerrer sayilip reddedilir; boylece
# pozisyonun ikiye katlanmaz.
order_params.setdefault('client_order_id', f"bot-{uuid.uuid4()}")
for attempt in range(max_retries):
try:
order = api.submit_order(**order_params)
return order # Basarili!
except Exception as e:
if attempt < max_retries - 1:
wait = 2 ** attempt # 1s sonra 2s (ustel bekleme)
print(f"Emir basarisiz: {e}. {wait}s sonra tekrar...")
time.sleep(wait)
else:
# Son deneme de basarisiz
print(f"{max_retries} denemeden sonra emir basarisiz: {e}")
# Uyari gonder (e-posta, SMS)
raise # Istisnayi yeniden firlat
İzleme ve uyarılar (kritik)
Botun bulutta bir VPS üzerinde çalışıyor. Sen akşam yemeğindesin. Bot bir hataya tosluyor.
Şu an yolun yarısındasın. Temel stratejileri öğrendin.
Harika ilerleme! Gerekiyorsa kısa bir esneme molası ver, ardından sıradaki ileri düzey kavramlara geçelim.
Bunu nasıl öğreneceksin?
Cevap: Uyarılarla.
import smtplib
from email.mime.text import MIMEText
def send_alert(subject, message):
"""E-posta ile uyari gonder"""
msg = MIMEText(message)
msg['Subject'] = subject
msg['From'] = 'bot@yourbot.com'
msg['To'] = 'you@gmail.com'
# Gmail SMTP ile gonderim - burada hesap sifresi degil Gmail uygulama
# sifresi gerekir; temel kimlik dogrulama 2022'de kapatildi.
with smtplib.SMTP('smtp.gmail.com', 587) as server:
server.starttls()
server.login('bot@yourbot.com', os.getenv('EMAIL_PASSWORD'))
server.send_message(msg)
# Kullanim
try:
# Islem mantigi
pass
except Exception as e:
send_alert(
subject="🚨 Islem botu hatasi",
message=f"Bot bir hataya tosladi: {e}"
)
raise
Artık bir şey bozulursa dakikalar içinde haberin olur.
🚨 Acil durdurma (pazarlığa kapalı)
Botun şu durumlarda otomatik olarak işlemi kesmeli:
- Günlük drawdown -%3’ü aştığında (Mike’ın yeniden kurduğu sürüm ayrıca zirveden -%10’da tamamen kapanıyordu)
- Üst üste 5 kayıp geldiğinde
- API hataları saatte 10’u aştığında
- Beklenmedik davranış tespit edildiğinde
Bunu kodla. Test et. Hesabın buna bağlı.
Barındırma: botunu nerede çalıştırmalısın
Ev bilgisayarı neden başarısız olur
- Elektrik kesintisi: Bilgisayar kapanır, bot durur
- İnternet kesintisi: Bağlantı yok = kaçan işlemler
- Windows güncellemeleri: Gece 3’te otomatik yeniden başlatma = bot öldü
- Sen: «Bilgisayarı bir saniye yeniden başlatayım…»
Çalışma süresi: %95 (algo işlem için kabul edilemez)
Bulut VPS neden kazanır
- %99,9 çalışma süresi: AWS, DigitalOcean, Linode
- Elektrik kesintisi yok: Yedekli güç, yedeklemeler
- Hızlı internet: Aracı kurum API’lerine düşük gecikme
- Otomatik yeniden başlatma: Bot çöktü mü? 30 saniyede geri gelir
Maliyet: Ayda 5-20 dolar (satın alacağın en ucuz avantaj yükselticisi)
Otomasyon «kur ve unut» değildir
Botunu devreye alıyorsun. Bir ay işlem yapıyor. Başarı oranı: %65. Tıpkı backtest gibi. Havalara uçuyorsun.
2. ay: başarı oranı %48’e düşüyor. Şaşkınsın.
Ne oldu?
Piyasa rejimi değişti. Stratejin trendli piyasalarda çalışıyor. Piyasa yataya geçti. Botun işlem yapmayı sürdürdü. Sonuçlar bozuldu.
🚨 Acı gerçek
Otomasyon avantajını büyütür. Ama rejim değişimlerine kendiliğinden uyum sağlamaz.
Yine de izlemen, gözden geçirmen ve ayar yapman gerekir. Sadece daha seyrek.
Botun aylık bakım listesi
1. Performans ölçütleri: Kazanma oranı backtest’in %5 içinde mi? Ortalama R pozitif mi? Drawdown kabul edilebilir mi? Slippage kötüleşti mi? 2. Hata kayıtları: Bağlantı hataları, reddedilen emirler, uç durumlar. 3. Rejim kontrolü: Piyasa hâlâ stratejiye uygun mu? VIX yüksek → duraklat. Düşük volatilite → kırılımlar zorlanır.
🎓 Öne çıkanlar
- Otomasyon duyguyu çıkarır ama kötü bir stratejiyi düzeltmez
- Kolay API erişimi için Alpaca (hisse) ya da Binance (kripto) ile başla
- Gerçeğe geçmeden önce 3-6 ay kâğıt üzerinde işlem yap
- Hata yönetimi kritik: yeniden deneme mantığı, uyarılar, acil durdurma
- %99,9 çalışma süresi için bulut VPS’te barındır (ayda 5-20 dolar)
- Ayda bir kontrol et: performans, hatalar, rejime uygunluk
📝 Uygulama alıştırması
İlk API işlem betiğini yaz
- Alpaca kâğıt üzerinde işlem hesabı aç
- alpaca.markets üzerinden kaydol (kâğıt üzerinde işlem ücretsiz)
- API anahtarını ve gizli anahtarını üret
- Python kütüphanesini kur:
pip install alpaca-trade-api
- Basit bir strateji betiği yaz
- Alpaca API’sine bağlan
- Her 60 saniyede SPY fiyatını çek
- Temel mantığı uygula: fiyat 20 periyotluk SMA’yı yukarı keserse alış emri ver
- Pozisyon büyüklüğü hesabını ekle (işlem başına %2 risk)
- -1R’ye zarar durdur koy
- Hata yönetimi ekle
- API çağrılarını try/except bloklarına sar
- Tüm hataları bir dosyaya kaydet
- Yeniden deneme mantığını uygula (3 deneme)
- Kâğıt üzerinde 1 hafta test et
- Uygulamayı izle: emirler düzgün gerçekleşiyor mu?
- Kayıtlara bak: bağlantı hatası var mı?
- Performansı gözden geçir: backtest ile örtüşüyor mu?
Amaç: İlk otomatik işlem betiğini kur ve kâğıt üzerinde işlem modunda çalıştır. Gerçek sermayeyi riske atmadan önce temeli sağlamlaştır.
🎮 Anladığını sına (baskı yok)
Soru 1: kâğıt üzerinde kusursuz çalışan bir bot yazdın. Gerçeğe geçmeden önceki asgari test süresi nedir?
Soru 2: botunun başarı oranı backtest’te %65’ti ama 2 ay sonra gerçekte %48. En olası sebep nedir?
Buraya kadar geldiysen, otomasyonun sihir olmadığını anladın: ölçekte disiplinli uygulamadır. Avantajını kodla. Titizlikle test et. Dikkatle devreye al. Aralıksız izle.
İlgili dersler
Trading’de makine öğrenmesi
Otomatik işlem sinyalleri üretmek için ML modelleri kullan.
Dersi oku →İleri düzey backtesting
Otomatik stratejilerini gerçeğe almadan önce test et.
Dersi oku →Performans ayrıştırması
Hangi otomatik stratejilerin getiriye katkı verdiğini analiz et.
Dersi oku →⏭️ Sırada
Ders #58: ileri düzey portföy teorisi — Modern portföy teorisi, etkin sınır, risk paritesi ve profesyonel portföy kurma çerçeveleri.
💬 Tartışma (0 yorum)
Yorumlar yükleniyor…
Yalnızca eğitim amaçlıdır. İşlem yapmak önemli ölçüde kayıp riski taşır. Finansal tavsiye değildir. Geçmiş performans gelecekteki sonuçları garanti etmez.