Update app.py
Browse files
app.py
CHANGED
|
@@ -17,28 +17,52 @@ def fetch_binance_data(symbol, timeframe, limit=2000):
|
|
| 17 |
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
|
| 18 |
return df
|
| 19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
def fetch_yfinance_data(pair: str, period: str, interval: str) -> pd.DataFrame:
|
| 21 |
"""
|
| 22 |
-
pair: e.g. "BCH/USDT"
|
| 23 |
period: e.g. "100d"
|
| 24 |
-
interval: e.g. "1d", "
|
| 25 |
"""
|
| 26 |
-
# Yahoo uses e.g. "BCH-USD" for BCH/USDT
|
| 27 |
ticker = pair.replace("/USDT", "-USD")
|
| 28 |
df = yf.download(ticker, period=period, interval=interval)
|
| 29 |
-
df = df.reset_index().rename(columns={
|
| 30 |
-
'Datetime': 'timestamp',
|
| 31 |
-
'Date': 'timestamp',
|
| 32 |
-
'Open': 'open',
|
| 33 |
-
'High': 'high',
|
| 34 |
-
'Low': 'low',
|
| 35 |
-
'Close': 'close',
|
| 36 |
-
'Volume': 'volume'
|
| 37 |
-
})
|
| 38 |
-
# ensure we have a timestamp column in datetime
|
| 39 |
-
df['timestamp'] = pd.to_datetime(df['timestamp'])
|
| 40 |
-
return df
|
| 41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
# Rolling Window Normalizer
|
| 43 |
class RollingWindowNormalizer:
|
| 44 |
def __init__(self, window=24):
|
|
|
|
| 17 |
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
|
| 18 |
return df
|
| 19 |
|
| 20 |
+
# def fetch_yfinance_data(pair: str, period: str, interval: str) -> pd.DataFrame:
|
| 21 |
+
# """
|
| 22 |
+
# pair: e.g. "BCH/USDT" or "BTC/USDT"
|
| 23 |
+
# period: e.g. "100d"
|
| 24 |
+
# interval: e.g. "1d", "60m", "90m", "1h"
|
| 25 |
+
# """
|
| 26 |
+
# # Yahoo uses e.g. "BCH-USD" for BCH/USDT
|
| 27 |
+
# ticker = pair.replace("/USDT", "-USD")
|
| 28 |
+
# df = yf.download(ticker, period=period, interval=interval)
|
| 29 |
+
# df = df.reset_index().rename(columns={
|
| 30 |
+
# 'Datetime': 'timestamp',
|
| 31 |
+
# 'Date': 'timestamp',
|
| 32 |
+
# 'Open': 'open',
|
| 33 |
+
# 'High': 'high',
|
| 34 |
+
# 'Low': 'low',
|
| 35 |
+
# 'Close': 'close',
|
| 36 |
+
# 'Volume': 'volume'
|
| 37 |
+
# })
|
| 38 |
+
# # ensure we have a timestamp column in datetime
|
| 39 |
+
# df['timestamp'] = pd.to_datetime(df['timestamp'])
|
| 40 |
+
# return df
|
| 41 |
+
|
| 42 |
def fetch_yfinance_data(pair: str, period: str, interval: str) -> pd.DataFrame:
|
| 43 |
"""
|
| 44 |
+
pair: e.g. "BCH/USDT"
|
| 45 |
period: e.g. "100d"
|
| 46 |
+
interval: e.g. "1d", "1h", "4h"
|
| 47 |
"""
|
|
|
|
| 48 |
ticker = pair.replace("/USDT", "-USD")
|
| 49 |
df = yf.download(ticker, period=period, interval=interval)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
+
# bring the DateTimeIndex into a column, whatever its name was
|
| 52 |
+
df = df.reset_index()
|
| 53 |
+
df.rename(columns={df.columns[0]: 'timestamp'}, inplace=True)
|
| 54 |
+
|
| 55 |
+
# standardize OHLCV
|
| 56 |
+
df.rename(columns={
|
| 57 |
+
'Open': 'open',
|
| 58 |
+
'High': 'high',
|
| 59 |
+
'Low': 'low',
|
| 60 |
+
'Close': 'close',
|
| 61 |
+
'Volume': 'volume'
|
| 62 |
+
}, inplace=True)
|
| 63 |
+
|
| 64 |
+
return df
|
| 65 |
+
|
| 66 |
# Rolling Window Normalizer
|
| 67 |
class RollingWindowNormalizer:
|
| 68 |
def __init__(self, window=24):
|