more models wireup
This commit is contained in:
99
test_signal_preservation.py
Normal file
99
test_signal_preservation.py
Normal file
@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import time
|
||||
from web.clean_dashboard import CleanTradingDashboard
|
||||
from core.data_provider import DataProvider
|
||||
from core.orchestrator import TradingOrchestrator
|
||||
from core.trading_executor import TradingExecutor
|
||||
|
||||
print('Testing signal preservation improvements...')
|
||||
|
||||
# Create dashboard instance
|
||||
data_provider = DataProvider()
|
||||
orchestrator = TradingOrchestrator(data_provider)
|
||||
trading_executor = TradingExecutor()
|
||||
|
||||
dashboard = CleanTradingDashboard(
|
||||
data_provider=data_provider,
|
||||
orchestrator=orchestrator,
|
||||
trading_executor=trading_executor
|
||||
)
|
||||
|
||||
print(f'Initial recent_decisions count: {len(dashboard.recent_decisions)}')
|
||||
|
||||
# Add test signals similar to the user's example
|
||||
test_signals = [
|
||||
{'timestamp': '20:39:32', 'action': 'HOLD', 'confidence': 0.01, 'price': 2420.07},
|
||||
{'timestamp': '20:39:02', 'action': 'HOLD', 'confidence': 0.01, 'price': 2416.89},
|
||||
{'timestamp': '20:38:45', 'action': 'BUY', 'confidence': 0.65, 'price': 2415.23},
|
||||
{'timestamp': '20:38:12', 'action': 'SELL', 'confidence': 0.72, 'price': 2413.45},
|
||||
{'timestamp': '20:37:58', 'action': 'HOLD', 'confidence': 0.02, 'price': 2412.89}
|
||||
]
|
||||
|
||||
# Add signals to dashboard
|
||||
for signal_data in test_signals:
|
||||
test_signal = {
|
||||
'timestamp': signal_data['timestamp'],
|
||||
'action': signal_data['action'],
|
||||
'confidence': signal_data['confidence'],
|
||||
'price': signal_data['price'],
|
||||
'symbol': 'ETH/USDT',
|
||||
'executed': False,
|
||||
'blocked': True,
|
||||
'manual': False,
|
||||
'model': 'TEST'
|
||||
}
|
||||
dashboard._process_dashboard_signal(test_signal)
|
||||
|
||||
print(f'After adding {len(test_signals)} signals: {len(dashboard.recent_decisions)}')
|
||||
|
||||
# Test with larger batch to verify new limits
|
||||
print('\nAdding 50 more signals to test preservation...')
|
||||
for i in range(50):
|
||||
test_signal = {
|
||||
'timestamp': f'20:3{i//10}:{i%60:02d}',
|
||||
'action': 'HOLD' if i % 3 == 0 else ('BUY' if i % 2 == 0 else 'SELL'),
|
||||
'confidence': 0.01 + (i * 0.01),
|
||||
'price': 2420.0 + i,
|
||||
'symbol': 'ETH/USDT',
|
||||
'executed': False,
|
||||
'blocked': True,
|
||||
'manual': False,
|
||||
'model': 'BATCH_TEST'
|
||||
}
|
||||
dashboard._process_dashboard_signal(test_signal)
|
||||
|
||||
print(f'After adding 50 more signals: {len(dashboard.recent_decisions)}')
|
||||
|
||||
# Display recent signals
|
||||
print('\nRecent signals (last 10):')
|
||||
for signal in dashboard.recent_decisions[-10:]:
|
||||
timestamp = dashboard._get_signal_attribute(signal, 'timestamp', 'Unknown')
|
||||
action = dashboard._get_signal_attribute(signal, 'action', 'UNKNOWN')
|
||||
confidence = dashboard._get_signal_attribute(signal, 'confidence', 0)
|
||||
price = dashboard._get_signal_attribute(signal, 'price', 0)
|
||||
print(f' {timestamp} {action}({confidence*100:.1f}%) ${price:.2f}')
|
||||
|
||||
# Test cleanup behavior with tick cache
|
||||
print('\nTesting tick cache cleanup behavior...')
|
||||
dashboard.tick_cache = [
|
||||
{'datetime': time.time() - 3600, 'symbol': 'ETHUSDT', 'price': 2400.0}, # 1 hour ago
|
||||
{'datetime': time.time() - 1800, 'symbol': 'ETHUSDT', 'price': 2410.0}, # 30 min ago
|
||||
{'datetime': time.time() - 900, 'symbol': 'ETHUSDT', 'price': 2420.0}, # 15 min ago
|
||||
]
|
||||
|
||||
# This should NOT clear signals aggressively anymore
|
||||
signals_before = len(dashboard.recent_decisions)
|
||||
dashboard._clear_old_signals_for_tick_range()
|
||||
signals_after = len(dashboard.recent_decisions)
|
||||
|
||||
print(f'Signals before cleanup: {signals_before}')
|
||||
print(f'Signals after cleanup: {signals_after}')
|
||||
print(f'Signals preserved: {signals_after}/{signals_before} ({(signals_after/signals_before)*100:.1f}%)')
|
||||
|
||||
print('\n✅ Signal preservation test completed!')
|
||||
print('Changes made:')
|
||||
print('- Increased recent_decisions limit from 20/50 to 200')
|
||||
print('- Made tick cache cleanup much more conservative')
|
||||
print('- Only clears when >500 signals and removes >20% of old data')
|
||||
print('- Extended time range for signal preservation')
|
Reference in New Issue
Block a user