37 teknik göstergenin detaylı açıklamaları, hesaplama formülleri ve kullanım amaçları.
| Kategori | Sayı | Açıklama |
|---|---|---|
| Returns | 3 | Log return hesaplamaları |
| Moving Averages | 4 | Trend göstergeleri |
| Momentum | 7 | Momentum osilatörleri |
| Volatility | 7 | Oynaklık ölçümleri |
| Volume | 2 | Hacim göstergeleri |
| Candlestick | 6 | Mum formasyonları |
| Price Position | 2 | Fiyat konumu |
| Lagged | 6 | Gecikmeli değerler |
| Toplam | 37 |
Tanım: 1-bar logaritmik getiri
Formül:
log_return_1 = np.log(close / close.shift(1))Kullanım: Kısa vadeli fiyat değişimi, model için temel input
Aralık: Tipik olarak [-0.05, 0.05] (saatlik BTC için)
Tanım: 4-bar logaritmik getiri
Formül:
log_return_4 = np.log(close / close.shift(4))Kullanım: Kısa-orta vade trend göstergesi
Tanım: 24-bar (1 gün) logaritmik getiri
Formül:
log_return_24 = np.log(close / close.shift(24))Kullanım: Günlük trend göstergesi
Tanım: 24-bar Simple Moving Average
Formül:
sma_24 = close.rolling(24).mean()Kullanım: Günlük ortalama fiyat, trend yönü
Tanım: 12-bar Exponential Moving Average
Formül:
ema_12 = close.ewm(span=12, adjust=False).mean()Kullanım: Kısa vadeli trend, MACD hesaplaması için
Tanım: 26-bar Exponential Moving Average
Formül:
ema_26 = close.ewm(span=26, adjust=False).mean()Kullanım: Orta vadeli trend, MACD hesaplaması için
Tanım: Close / SMA oranı
Formül:
close_to_sma_24 = close / sma_24Kullanım: Fiyatın ortalamaya göre konumu
- > 1.0: Ortalamanın üzerinde (bullish)
- < 1.0: Ortalamanın altında (bearish)
Tanım: 14-bar Relative Strength Index
Formül:
delta = close.diff()
gain = delta.where(delta > 0, 0).rolling(14).mean()
loss = (-delta.where(delta < 0, 0)).rolling(14).mean()
rs = gain / loss
rsi_14 = 100 - (100 / (1 + rs))Aralık: [0, 100]
Kullanım:
- < 30: Oversold (alım fırsatı)
- > 70: Overbought (satım fırsatı)
Tanım: 12-bar Rate of Change
Formül:
roc_12 = (close - close.shift(12)) / close.shift(12)Kullanım: Fiyat momentum'u, trend gücü
Tanım: 24-bar Rate of Change
Formül:
roc_24 = (close - close.shift(24)) / close.shift(24)Kullanım: Günlük momentum
Tanım: Moving Average Convergence Divergence
Formül:
macd = ema_12 - ema_26Kullanım: Trend değişimi sinyali
Tanım: MACD Signal Line
Formül:
macd_signal = macd.ewm(span=9, adjust=False).mean()Kullanım: MACD crossover sinyalleri için
Tanım: MACD Histogram
Formül:
macd_hist = macd - macd_signalKullanım: MACD momentum'u
- Pozitif ve artıyor: Strong bullish
- Negatif ve azalıyor: Strong bearish
Tanım: 12-bar absolute momentum
Formül:
momentum_12 = close - close.shift(12)Kullanım: Fiyat değişimi (USD cinsinden)
Tanım: 24-bar rolling standard deviation
Formül:
rolling_std_24 = close.rolling(24).std()Kullanım: Günlük volatilite (fiyat cinsinden)
Tanım: 14-bar Average True Range
Formül:
tr = pd.concat([
high - low,
(high - close.shift(1)).abs(),
(low - close.shift(1)).abs()
], axis=1).max(axis=1)
atr_14 = tr.rolling(14).mean()Kullanım: Volatilite ölçümü, stop loss belirleme
Tanım: Bollinger Band Upper
Formül:
sma_20 = close.rolling(20).mean()
std_20 = close.rolling(20).std()
bb_upper = sma_20 + (2 * std_20)Kullanım: Üst direnç seviyesi
Tanım: Bollinger Band Lower
Formül:
bb_lower = sma_20 - (2 * std_20)Kullanım: Alt destek seviyesi
Tanım: Bollinger Band Width
Formül:
bb_width = (bb_upper - bb_lower) / sma_20Kullanım: Volatilite genişliği
- Dar band: Düşük volatilite (breakout beklentisi)
- Geniş band: Yüksek volatilite
Tanım: 24-bar realized volatility
Formül:
realized_vol_24 = log_return_1.rolling(24).std() * np.sqrt(24)Kullanım: Annualize edilmemiş günlük volatilite
Tanım: Normalized high-low range
Formül:
high_low_range = (high - low) / closeKullanım: Bar içi volatilite
Tanım: 24-bar volume SMA
Formül:
volume_sma_24 = volume.rolling(24).mean()Kullanım: Ortalama hacim referansı
Tanım: Current volume / Average volume
Formül:
volume_ratio = volume / volume_sma_24Kullanım: Hacim spike detection
- > 2.0: Yüksek hacim (önemli hareket)
- < 0.5: Düşük hacim (düşük ilgi)
Tanım: Mum gövde büyüklüğü
Formül:
body_size = np.abs(close - open) / closeKullanım: Hareket gücü
Tanım: Üst gölge büyüklüğü
Formül:
upper_shadow = (high - np.maximum(open, close)) / closeKullanım: Satış baskısı
- Uzun üst gölge: Alıcılar reddedildi
Tanım: Alt gölge büyüklüğü
Formül:
lower_shadow = (np.minimum(open, close) - low) / closeKullanım: Alım baskısı
- Uzun alt gölge: Satıcılar reddedildi
Tanım: Toplam mum aralığı
Formül:
candle_range = (high - low) / closeKullanım: Bar volatilitesi
Tanım: Body / Range oranı
Formül:
body_ratio = body_size / candle_rangeKullanım: Mum karakteri
- Yüksek ratio: Güçlü yönlü hareket
- Düşük ratio: Doji benzeri (kararsızlık)
Tanım: Mum yönü
Formül:
direction = np.where(close > open, 1, -1)Kullanım: Basit yön göstergesi
Tanım: Close'un bar içindeki pozisyonu
Formül:
close_position = (close - low) / (high - low)Aralık: [0, 1]
Kullanım:
- 1.0: Close = High (bullish)
- 0.0: Close = Low (bearish)
Tanım: 24-bar yüksekten uzaklık
Formül:
high_24 = high.rolling(24).max()
dist_from_high_24 = (high_24 - close) / high_24Kullanım: Günlük zirveye göre pozisyon
Formül: rsi_14.shift(1)
Kullanım: Önceki bar RSI değeri
Formül: rsi_14.shift(4)
Kullanım: 4 bar önceki RSI
Formül: macd_hist.shift(1)
Kullanım: Önceki bar MACD histogram
Formül: macd_hist.shift(4)
Kullanım: 4 bar önceki MACD histogram
Formül: volume_ratio.shift(1)
Kullanım: Önceki bar volume ratio
Formül: volume_ratio.shift(4)
Kullanım: 4 bar önceki volume ratio
Tüm feature'lar sadece geçmiş veriden hesaplanır:
# DOĞRU: Geriye bakan pencere
sma = close.rolling(24).mean()
# YANLIŞ: Merkez pencere (gelecek bilgisi içerir!)
# sma = close.rolling(24, center=True).mean()- İlk N bar'da rolling hesaplamalar NaN üretir
dropna()ile temizlenir- Warmup period: En az 26 bar (en uzun pencere)
- Fiyat bazlı feature'lar (
/close) normalize edilmiş - StandardScaler modelde uygulanıyor
- Feature'lar aynı ölçekte
LogisticRegression coefficients ile en önemli feature'lar bulunabilir:
import numpy as np
coefs = model.pipeline.named_steps['classifier'].coef_[0]
features = model.get_feature_names()
# En önemli 10 feature
importance = sorted(zip(features, np.abs(coefs)), key=lambda x: x[1], reverse=True)
for feat, imp in importance[:10]:
print(f"{feat}: {imp:.4f}")