Files
Reynov Christian eb33b7c6ea feat: Major v2.0 enhancements and new features
🔧 Core System Improvements:
- Enhanced backtesting engine with realistic spread modeling and ATR-based risk management
- Improved bot controller with better error handling and status tracking
- Optimized MT5 integration with symbol verification and market watch integration
- Strengthened database queries with better performance and reliability

🎯 New Strategy Features:
- Added index strategies (Index Momentum, Index Breakout Pro) for stock market trading
- Implemented market condition detector for dynamic strategy adaptation
- Created performance scorer for strategy evaluation and ranking
- Added strategy switcher system for automatic strategy optimization

📚 Educational Framework:
- New beginner guide documentation for newcomer onboarding
- Enhanced FAQ section with common trading questions
- Quick start guide for rapid setup and deployment
- Improved AI mentor integration with personalized guidance

🌍 Multi-Asset Expansion:
- Extended data collection for 20+ trading instruments (Forex, Crypto, Indices)
- Enhanced broker compatibility with FBS and other platforms
- Improved symbol migration system for seamless broker switching
- Added holiday integration for culturally-aware trading automation

🧪 Testing & Validation:
- Added comprehensive index strategy testing suite
- Enhanced holiday integration validation
- Dynamic strategy signal testing for improved reliability
- EURUSD optimization testing with London session focus

 Performance & UI:
- Frontend JavaScript optimizations for better trading bot management
- Enhanced templates with improved user experience
- Database migration system for smooth version upgrades
- Optimized data download scripts for better efficiency

📊 Analytics & Monitoring:
- Strengthened Flask application architecture with better routing
- Improved logging system for production deployment
- Enhanced error handling across all components
- Better API response handling and status reporting
2025-09-09 00:10:38 +08:00

141 lines
5.2 KiB
Python

# core/routes/api_ramadan.py
"""
API endpoints for Ramadan Trading Mode features
"""
from flask import Blueprint, jsonify
from core.seasonal.holiday_manager import holiday_manager
import logging
api_ramadan = Blueprint('api_ramadan', __name__)
logger = logging.getLogger(__name__)
@api_ramadan.route('/api/ramadan/status')
def get_ramadan_status():
"""Get current Ramadan trading mode status"""
try:
current_holiday = holiday_manager.get_current_holiday_mode()
if not current_holiday or current_holiday.name != "Ramadan Trading Mode":
return jsonify({
'success': True,
'is_ramadan': False,
'message': 'Currently not in Ramadan trading mode'
})
return jsonify({
'success': True,
'is_ramadan': True,
'holiday_name': current_holiday.name,
'start_date': current_holiday.start_date.isoformat(),
'end_date': current_holiday.end_date.isoformat(),
'trading_adjustments': current_holiday.trading_adjustments,
'ui_theme': current_holiday.ui_theme,
'greeting': holiday_manager.get_holiday_greeting()
})
except Exception as e:
logger.error(f"Error getting Ramadan status: {e}")
return jsonify({
'success': False,
'error': str(e)
}), 500
@api_ramadan.route('/api/ramadan/features')
def get_ramadan_features():
"""Get Ramadan-specific features data"""
try:
ramadan_features = holiday_manager.get_ramadan_features()
if not ramadan_features:
return jsonify({
'success': True,
'is_ramadan': False,
'message': 'Currently not in Ramadan trading mode'
})
return jsonify({
'success': True,
'is_ramadan': True,
'features': ramadan_features
})
except Exception as e:
logger.error(f"Error getting Ramadan features: {e}")
return jsonify({
'success': False,
'error': str(e)
}), 500
@api_ramadan.route('/api/ramadan/pause-status')
def get_ramadan_pause_status():
"""Check if trading is currently paused due to Ramadan prayer times"""
try:
is_paused = holiday_manager.is_trading_paused()
pause_reason = ""
if is_paused:
# Determine which prayer time is causing the pause
current_holiday = holiday_manager.get_current_holiday_mode()
if current_holiday and current_holiday.name == "Ramadan Trading Mode":
from datetime import datetime
now = datetime.now()
current_time = (now.hour, now.minute)
adjustments = current_holiday.trading_adjustments
# Check Sahur pause
if 'sahur_pause' in adjustments:
start_hour, start_min, end_hour, end_min = adjustments['sahur_pause']
if (start_hour, start_min) <= current_time <= (end_hour, end_min):
pause_reason = "Sahur time - time for spiritual reflection and preparation"
# Check Iftar pause
if 'iftar_pause' in adjustments:
start_hour, start_min, end_hour, end_min = adjustments['iftar_pause']
if (start_hour, start_min) <= current_time <= (end_hour, end_min):
pause_reason = "Iftar time - breaking fast and family time"
# Check Tarawih pause
if 'tarawih_pause' in adjustments:
start_hour, start_min, end_hour, end_min = adjustments['tarawih_pause']
if (start_hour, start_min) <= current_time <= (end_hour, end_min):
pause_reason = "Tarawih prayers - spiritual devotion time"
return jsonify({
'success': True,
'is_paused': is_paused,
'pause_reason': pause_reason,
'message': pause_reason if is_paused else "Trading is active"
})
except Exception as e:
logger.error(f"Error checking Ramadan pause status: {e}")
return jsonify({
'success': False,
'error': str(e)
}), 500
@api_ramadan.route('/api/ramadan/zakat-calculator')
def get_zakat_calculator():
"""Get Zakat calculation information"""
try:
current_holiday = holiday_manager.get_current_holiday_mode()
if not current_holiday or current_holiday.name != "Ramadan Trading Mode":
return jsonify({
'success': True,
'is_ramadan': False,
'message': 'Zakat calculator only available during Ramadan'
})
zakat_info = holiday_manager._calculate_zakat_info()
return jsonify({
'success': True,
'is_ramadan': True,
'zakat_info': zakat_info
})
except Exception as e:
logger.error(f"Error getting Zakat calculator: {e}")
return jsonify({
'success': False,
'error': str(e)
}), 500