beef up DQN model, fix training issues
This commit is contained in:
136
test_timezone_with_data.py
Normal file
136
test_timezone_with_data.py
Normal file
@ -0,0 +1,136 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test Timezone Fix with Data Fetching
|
||||
|
||||
This script tests timezone conversion by actually fetching data and checking timestamps.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import pandas as pd
|
||||
from datetime import datetime
|
||||
from core.data_provider import DataProvider
|
||||
|
||||
async def test_timezone_with_data():
|
||||
"""Test timezone conversion with actual data fetching"""
|
||||
print("=== Testing Timezone Fix with Data Fetching ===")
|
||||
|
||||
# Initialize data provider
|
||||
print("1. Initializing data provider...")
|
||||
data_provider = DataProvider()
|
||||
|
||||
# Wait for initialization
|
||||
await asyncio.sleep(2)
|
||||
|
||||
# Test direct Binance API call
|
||||
print("\n2. Testing direct Binance API call:")
|
||||
try:
|
||||
# Call the internal Binance fetch method directly
|
||||
df = data_provider._fetch_from_binance('ETH/USDT', '1h', 5)
|
||||
|
||||
if df is not None and not df.empty:
|
||||
print(f" ✅ Got {len(df)} candles from Binance API")
|
||||
|
||||
# Check timezone
|
||||
if 'timestamp' in df.columns:
|
||||
first_timestamp = df['timestamp'].iloc[0]
|
||||
last_timestamp = df['timestamp'].iloc[-1]
|
||||
|
||||
print(f" First timestamp: {first_timestamp}")
|
||||
print(f" Last timestamp: {last_timestamp}")
|
||||
|
||||
# Check if timezone is Europe/Sofia
|
||||
if hasattr(first_timestamp, 'tz') and first_timestamp.tz is not None:
|
||||
timezone_str = str(first_timestamp.tz)
|
||||
print(f" Timezone: {timezone_str}")
|
||||
|
||||
if 'Europe/Sofia' in timezone_str or 'EET' in timezone_str or 'EEST' in timezone_str:
|
||||
print(f" ✅ Timezone is correct: {timezone_str}")
|
||||
else:
|
||||
print(f" ❌ Timezone is incorrect: {timezone_str}")
|
||||
|
||||
# Show UTC offset
|
||||
if hasattr(first_timestamp, 'utcoffset') and first_timestamp.utcoffset() is not None:
|
||||
offset_hours = first_timestamp.utcoffset().total_seconds() / 3600
|
||||
print(f" UTC offset: {offset_hours:+.0f} hours")
|
||||
|
||||
if offset_hours == 2 or offset_hours == 3: # EET (+2) or EEST (+3)
|
||||
print(" ✅ UTC offset is correct for Europe/Sofia")
|
||||
else:
|
||||
print(f" ❌ UTC offset is incorrect: {offset_hours:+.0f} hours")
|
||||
|
||||
# Compare with UTC time
|
||||
print("\n Timestamp comparison:")
|
||||
for i in range(min(2, len(df))):
|
||||
row = df.iloc[i]
|
||||
local_time = row['timestamp']
|
||||
utc_time = local_time.astimezone(pd.Timestamp.now(tz='UTC').tz)
|
||||
|
||||
print(f" Local (Sofia): {local_time}")
|
||||
print(f" UTC: {utc_time}")
|
||||
print(f" Difference: {(local_time - utc_time).total_seconds() / 3600:+.0f} hours")
|
||||
print()
|
||||
else:
|
||||
print(" ❌ No timestamp column found")
|
||||
else:
|
||||
print(" ❌ No data returned from Binance API")
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Error fetching from Binance: {e}")
|
||||
|
||||
# Test MEXC API call as well
|
||||
print("\n3. Testing MEXC API call:")
|
||||
try:
|
||||
df = data_provider._fetch_from_mexc('ETH/USDT', '1h', 3)
|
||||
|
||||
if df is not None and not df.empty:
|
||||
print(f" ✅ Got {len(df)} candles from MEXC API")
|
||||
|
||||
# Check timezone
|
||||
if 'timestamp' in df.columns:
|
||||
first_timestamp = df['timestamp'].iloc[0]
|
||||
print(f" First timestamp: {first_timestamp}")
|
||||
|
||||
# Check timezone
|
||||
if hasattr(first_timestamp, 'tz') and first_timestamp.tz is not None:
|
||||
timezone_str = str(first_timestamp.tz)
|
||||
print(f" Timezone: {timezone_str}")
|
||||
|
||||
if 'Europe/Sofia' in timezone_str or 'EET' in timezone_str or 'EEST' in timezone_str:
|
||||
print(f" ✅ MEXC timezone is correct: {timezone_str}")
|
||||
else:
|
||||
print(f" ❌ MEXC timezone is incorrect: {timezone_str}")
|
||||
|
||||
# Show UTC offset
|
||||
if hasattr(first_timestamp, 'utcoffset') and first_timestamp.utcoffset() is not None:
|
||||
offset_hours = first_timestamp.utcoffset().total_seconds() / 3600
|
||||
print(f" UTC offset: {offset_hours:+.0f} hours")
|
||||
else:
|
||||
print(" ❌ No data returned from MEXC API")
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Error fetching from MEXC: {e}")
|
||||
|
||||
# Show current timezone info
|
||||
print(f"\n4. Current timezone information:")
|
||||
import pytz
|
||||
sofia_tz = pytz.timezone('Europe/Sofia')
|
||||
current_sofia = datetime.now(sofia_tz)
|
||||
current_utc = datetime.now(pytz.UTC)
|
||||
|
||||
print(f" Current Sofia time: {current_sofia}")
|
||||
print(f" Current UTC time: {current_utc}")
|
||||
print(f" Time difference: {(current_sofia - current_utc).total_seconds() / 3600:+.0f} hours")
|
||||
|
||||
# Check if it's summer time (EEST) or winter time (EET)
|
||||
offset_hours = current_sofia.utcoffset().total_seconds() / 3600
|
||||
if offset_hours == 3:
|
||||
print(" ✅ Currently in EEST (Eastern European Summer Time)")
|
||||
elif offset_hours == 2:
|
||||
print(" ✅ Currently in EET (Eastern European Time)")
|
||||
else:
|
||||
print(f" ❌ Unexpected offset: {offset_hours:+.0f} hours")
|
||||
|
||||
print("\n✅ Timezone fix test with data completed!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(test_timezone_with_data())
|
Reference in New Issue
Block a user