GoshawkVortexAI commited on
Commit
f197921
·
verified ·
1 Parent(s): 1fda94c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -55
app.py CHANGED
@@ -2,14 +2,14 @@
2
  # EUR/USD · ENSEMBLE FORECAST ENGINE · Premium Edition
3
  # 5 Model: Random Forest · Gradient Boosting · AdaBoost · Ridge · SVR
4
  # TP/SL hesaplama · ATR tabanlı risk yönetimi · Backtest analizi
5
- # Veri: Alpha Vantage FX Daily API
6
  # ══════════════════════════════════════════════════════════════════════════════
7
 
8
  import gradio as gr
9
  import pandas as pd
10
  import numpy as np
11
  from datetime import datetime, timedelta
12
- import requests
13
  from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor, AdaBoostRegressor
14
  from sklearn.linear_model import Ridge
15
  from sklearn.svm import SVR
@@ -49,60 +49,19 @@ MODEL_COLORS = [ACCENT, PURPLE, GREEN, AMBER, PINK]
49
  # VERİ KATMANI
50
  # ══════════════════════════════════════════════════════════════════════════════
51
 
52
- ALPHA_VANTAGE_KEY = "Z5LSPHTNP6NI6J7Y"
53
-
54
- def get_forex_data(from_sym: str = "EUR", to_sym: str = "USD") -> pd.DataFrame | None:
55
  """
56
- Alpha Vantage'ten günlük OHLCV verisi indirir.
57
- FX_DAILY endpoint — outputsize=full ile 120+ günlük veri.
58
  """
59
  try:
60
- url = "https://www.alphavantage.co/query"
61
- params = {
62
- "function" : "FX_DAILY",
63
- "from_symbol": from_sym,
64
- "to_symbol" : to_sym,
65
- "outputsize" : "full",
66
- "apikey" : ALPHA_VANTAGE_KEY,
67
- }
68
- resp = requests.get(url, params=params, timeout=30)
69
- resp.raise_for_status()
70
- js = resp.json()
71
-
72
- # Hata kontrolü
73
- if "Error Message" in js:
74
- return None
75
- if "Note" in js:
76
- # API limit aşımı — compact ile tekrar dene
77
- params["outputsize"] = "compact"
78
- resp = requests.get(url, params=params, timeout=30)
79
- js = resp.json()
80
-
81
- ts = js.get("Time Series FX (Daily)", {})
82
- if not ts:
83
  return None
84
-
85
- rows = []
86
- for date_str, v in ts.items():
87
- rows.append({
88
- "Date" : pd.to_datetime(date_str),
89
- "Open" : float(v["1. open"]),
90
- "High" : float(v["2. high"]),
91
- "Low" : float(v["3. low"]),
92
- "Close": float(v["4. close"]),
93
- "Volume": 0.0, # Forex OTC — gerçek hacim yok
94
- })
95
-
96
- df = pd.DataFrame(rows).sort_values("Date").set_index("Date")
97
-
98
- # Son 150 günü al (SMA-50 + lag-7 için yeterli)
99
- df = df.tail(150)
100
-
101
- if len(df) < 60:
102
- return None
103
-
104
- return df
105
-
106
  except Exception:
107
  return None
108
 
@@ -635,9 +594,9 @@ def build_figure(
635
  def predict_eurusd():
636
  try:
637
  # 1. Veri
638
- data = get_forex_data("EUR", "USD")
639
  if data is None:
640
- return "❌ Veri indirilemedi. Alpha Vantage API sınırı veya internet bağlantısını kontrol edin.", None
641
 
642
  # 2. Feature mühendisliği
643
  df = create_features(data)
@@ -824,7 +783,7 @@ HEADER = """
824
  </div>
825
  </div>
826
  <div style="display:flex;gap:10px;flex-wrap:wrap;margin-top:4px;">
827
- <span style="background:#1E293B;border-radius:4px;padding:5px 14px;font-size:.76rem;color:#94A3B8;">📡 Alpha Vantage FX Daily</span>
828
  <span style="background:#1E293B;border-radius:4px;padding:5px 14px;font-size:.76rem;color:#94A3B8;">📐 42 Feature</span>
829
  <span style="background:#1E293B;border-radius:4px;padding:5px 14px;font-size:.76rem;color:#94A3B8;">🧪 10-Gün Backtest</span>
830
  <span style="background:#1E293B;border-radius:4px;padding:5px 14px;font-size:.76rem;color:#94A3B8;">🎯 ATR TP/SL</span>
 
2
  # EUR/USD · ENSEMBLE FORECAST ENGINE · Premium Edition
3
  # 5 Model: Random Forest · Gradient Boosting · AdaBoost · Ridge · SVR
4
  # TP/SL hesaplama · ATR tabanlı risk yönetimi · Backtest analizi
5
+ # Veri: Yahoo Finance (yfinance)
6
  # ══════════════════════════════════════════════════════════════════════════════
7
 
8
  import gradio as gr
9
  import pandas as pd
10
  import numpy as np
11
  from datetime import datetime, timedelta
12
+ import yfinance as yf
13
  from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor, AdaBoostRegressor
14
  from sklearn.linear_model import Ridge
15
  from sklearn.svm import SVR
 
49
  # VERİ KATMANI
50
  # ══════════════════════════════════════════════════════════════════════════════
51
 
52
+ def get_forex_data(symbol: str = "EURUSD=X", period: str = "150d") -> pd.DataFrame | None:
 
 
53
  """
54
+ Yahoo Finance'ten günlük OHLCV verisi indirir.
55
+ 150 günlük pencere — SMA-50 ve lag-7 için yeterli.
56
  """
57
  try:
58
+ raw = yf.download(symbol, period=period, interval="1d", progress=False, auto_adjust=True)
59
+ if raw is None or len(raw) < 60:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  return None
61
+ # MultiIndex sütunlarını düzelt
62
+ if isinstance(raw.columns, pd.MultiIndex):
63
+ raw.columns = raw.columns.get_level_values(0)
64
+ return raw
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  except Exception:
66
  return None
67
 
 
594
  def predict_eurusd():
595
  try:
596
  # 1. Veri
597
+ data = get_forex_data()
598
  if data is None:
599
+ return "❌ Veri indirilemedi. İnternet bağlantınızı kontrol edin.", None
600
 
601
  # 2. Feature mühendisliği
602
  df = create_features(data)
 
783
  </div>
784
  </div>
785
  <div style="display:flex;gap:10px;flex-wrap:wrap;margin-top:4px;">
786
+ <span style="background:#1E293B;border-radius:4px;padding:5px 14px;font-size:.76rem;color:#94A3B8;">📡 Yahoo Finance 150g</span>
787
  <span style="background:#1E293B;border-radius:4px;padding:5px 14px;font-size:.76rem;color:#94A3B8;">📐 42 Feature</span>
788
  <span style="background:#1E293B;border-radius:4px;padding:5px 14px;font-size:.76rem;color:#94A3B8;">🧪 10-Gün Backtest</span>
789
  <span style="background:#1E293B;border-radius:4px;padding:5px 14px;font-size:.76rem;color:#94A3B8;">🎯 ATR TP/SL</span>