Yllvar commited on
Commit
bb68b44
·
verified ·
1 Parent(s): 245719f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -3
app.py CHANGED
@@ -71,6 +71,12 @@ def fetch_and_upload_data():
71
  if not data or data[-1][0] == last_timestamp:
72
  break
73
 
 
 
 
 
 
 
74
  ohlcv.extend(data)
75
  last_timestamp = data[-1][0]
76
  current_since = data[-1][0] + 1
@@ -90,6 +96,13 @@ def fetch_and_upload_data():
90
 
91
  # Convert to DataFrame and process
92
  df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
 
 
 
 
 
 
 
93
  df['datetime'] = pd.to_datetime(df['timestamp'], unit='ms')
94
  df['symbol'] = symbol
95
  df['market_type'] = data_type
@@ -99,11 +112,26 @@ def fetch_and_upload_data():
99
  # Save to CSV
100
  base_symbol = symbol.split('/')[0]
101
  filename = f"{base_symbol}_USDT_Binance_{data_type}_{timeframe}.csv"
102
- subfolder = "data/futures" if data_type == "futures" else "data/spot"
103
  os.makedirs(subfolder, exist_ok=True)
104
  filepath = os.path.join(subfolder, filename)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  df.to_csv(filepath, index=False)
106
-
107
  # Upload to Hugging Face
108
  api = HfApi(token=HF_TOKEN)
109
  api.upload_file(
@@ -113,7 +141,7 @@ def fetch_and_upload_data():
113
  repo_type="dataset",
114
  commit_message=f"Update {filename}"
115
  )
116
- msg = f"Successfully uploaded {filepath}"
117
  output_messages.append(msg)
118
  latest_output = output_messages.copy()
119
 
 
71
  if not data or data[-1][0] == last_timestamp:
72
  break
73
 
74
+ # Validate data structure
75
+ if not all(len(candle) == 6 for candle in data):
76
+ msg = f"Invalid data structure for {symbol} {timeframe} {data_type}"
77
+ output_messages.append(msg)
78
+ break
79
+
80
  ohlcv.extend(data)
81
  last_timestamp = data[-1][0]
82
  current_since = data[-1][0] + 1
 
96
 
97
  # Convert to DataFrame and process
98
  df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
99
+
100
+ # Validate data types and ranges
101
+ if df['timestamp'].isna().any() or df['open'].isna().any():
102
+ msg = f"Invalid data detected for {symbol} {timeframe} {data_type}"
103
+ output_messages.append(msg)
104
+ continue
105
+
106
  df['datetime'] = pd.to_datetime(df['timestamp'], unit='ms')
107
  df['symbol'] = symbol
108
  df['market_type'] = data_type
 
112
  # Save to CSV
113
  base_symbol = symbol.split('/')[0]
114
  filename = f"{base_symbol}_USDT_Binance_{data_type}_{timeframe}.csv"
115
+ subfolder = f"data/{data_type}"
116
  os.makedirs(subfolder, exist_ok=True)
117
  filepath = os.path.join(subfolder, filename)
118
+
119
+ # Verify timeframe consistency
120
+ if timeframe == '1d':
121
+ time_diff = df['timestamp'].diff().median() / (1000 * 60 * 60 * 24)
122
+ if not (0.9 < time_diff < 1.1): # Allow 10% deviation
123
+ msg = f"Inconsistent daily intervals detected for {symbol} {timeframe} {data_type}"
124
+ output_messages.append(msg)
125
+ continue
126
+ elif timeframe == '1h':
127
+ time_diff = df['timestamp'].diff().median() / (1000 * 60 * 60)
128
+ if not (0.9 < time_diff < 1.1): # Allow 10% deviation
129
+ msg = f"Inconsistent hourly intervals detected for {symbol} {timeframe} {data_type}"
130
+ output_messages.append(msg)
131
+ continue
132
+
133
  df.to_csv(filepath, index=False)
134
+
135
  # Upload to Hugging Face
136
  api = HfApi(token=HF_TOKEN)
137
  api.upload_file(
 
141
  repo_type="dataset",
142
  commit_message=f"Update {filename}"
143
  )
144
+ msg = f"Successfully uploaded {filepath} ({len(df)} records)"
145
  output_messages.append(msg)
146
  latest_output = output_messages.copy()
147