anotation system operational
This commit is contained in:
@@ -38,6 +38,7 @@ sys.path.insert(0, str(annotate_dir))
|
||||
try:
|
||||
from core.annotation_manager import AnnotationManager
|
||||
from core.training_simulator import TrainingSimulator
|
||||
from core.data_loader import HistoricalDataLoader, TimeRangeManager
|
||||
except ImportError:
|
||||
# Try alternative import path
|
||||
import importlib.util
|
||||
@@ -59,6 +60,16 @@ except ImportError:
|
||||
train_module = importlib.util.module_from_spec(train_spec)
|
||||
train_spec.loader.exec_module(train_module)
|
||||
TrainingSimulator = train_module.TrainingSimulator
|
||||
|
||||
# Load data_loader
|
||||
data_spec = importlib.util.spec_from_file_location(
|
||||
"data_loader",
|
||||
annotate_dir / "core" / "data_loader.py"
|
||||
)
|
||||
data_module = importlib.util.module_from_spec(data_spec)
|
||||
data_spec.loader.exec_module(data_module)
|
||||
HistoricalDataLoader = data_module.HistoricalDataLoader
|
||||
TimeRangeManager = data_module.TimeRangeManager
|
||||
|
||||
# Setup logging
|
||||
logging.basicConfig(
|
||||
@@ -113,6 +124,10 @@ class AnnotationDashboard:
|
||||
self.annotation_manager = AnnotationManager()
|
||||
self.training_simulator = TrainingSimulator(self.orchestrator) if self.orchestrator else None
|
||||
|
||||
# Initialize data loader with existing DataProvider
|
||||
self.data_loader = HistoricalDataLoader(self.data_provider) if self.data_provider else None
|
||||
self.time_range_manager = TimeRangeManager(self.data_loader) if self.data_loader else None
|
||||
|
||||
# Setup routes
|
||||
self._setup_routes()
|
||||
|
||||
@@ -191,24 +206,30 @@ class AnnotationDashboard:
|
||||
data = request.get_json()
|
||||
symbol = data.get('symbol', 'ETH/USDT')
|
||||
timeframes = data.get('timeframes', ['1s', '1m', '1h', '1d'])
|
||||
start_time = data.get('start_time')
|
||||
end_time = data.get('end_time')
|
||||
start_time_str = data.get('start_time')
|
||||
end_time_str = data.get('end_time')
|
||||
|
||||
if not self.data_provider:
|
||||
if not self.data_loader:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': {
|
||||
'code': 'DATA_PROVIDER_UNAVAILABLE',
|
||||
'message': 'Data provider not available'
|
||||
'code': 'DATA_LOADER_UNAVAILABLE',
|
||||
'message': 'Data loader not available'
|
||||
}
|
||||
})
|
||||
|
||||
# Fetch data for each timeframe
|
||||
# Parse time strings if provided
|
||||
start_time = datetime.fromisoformat(start_time_str.replace('Z', '+00:00')) if start_time_str else None
|
||||
end_time = datetime.fromisoformat(end_time_str.replace('Z', '+00:00')) if end_time_str else None
|
||||
|
||||
# Fetch data for each timeframe using data loader
|
||||
chart_data = {}
|
||||
for timeframe in timeframes:
|
||||
df = self.data_provider.get_historical_data(
|
||||
df = self.data_loader.get_data(
|
||||
symbol=symbol,
|
||||
timeframe=timeframe,
|
||||
start_time=start_time,
|
||||
end_time=end_time,
|
||||
limit=500
|
||||
)
|
||||
|
||||
@@ -313,8 +334,11 @@ class AnnotationDashboard:
|
||||
}
|
||||
})
|
||||
|
||||
# Generate test case
|
||||
test_case = self.annotation_manager.generate_test_case(annotation)
|
||||
# Generate test case with market context
|
||||
test_case = self.annotation_manager.generate_test_case(
|
||||
annotation,
|
||||
data_provider=self.data_provider
|
||||
)
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
@@ -440,6 +464,36 @@ class AnnotationDashboard:
|
||||
'message': str(e)
|
||||
}
|
||||
})
|
||||
|
||||
@self.server.route('/api/available-models', methods=['GET'])
|
||||
def get_available_models():
|
||||
"""Get list of available models"""
|
||||
try:
|
||||
if not self.training_simulator:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': {
|
||||
'code': 'TRAINING_UNAVAILABLE',
|
||||
'message': 'Training simulator not available'
|
||||
}
|
||||
})
|
||||
|
||||
models = self.training_simulator.get_available_models()
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'models': models
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error getting available models: {e}")
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': {
|
||||
'code': 'MODEL_LIST_ERROR',
|
||||
'message': str(e)
|
||||
}
|
||||
})
|
||||
|
||||
def run(self, host='127.0.0.1', port=8051, debug=False):
|
||||
"""Run the application"""
|
||||
|
||||
Reference in New Issue
Block a user