#!/usr/bin/env python3 """ Report Data Crawler Usage Example This script demonstrates how to use the new report data crawler to generate comprehensive trading reports for different pairs. """ import sys import os import logging from datetime import datetime # Add the project root to the Python path sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from core.data_provider import DataProvider # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) def generate_reports_example(): """Example of generating reports for multiple trading pairs""" try: logger.info("Initializing DataProvider...") data_provider = DataProvider() # Wait for initial data to load logger.info("Waiting for initial data to load...") import time time.sleep(3) # Generate reports for different pairs symbols = ['BTC/USDT', 'ETH/USDT'] for symbol in symbols: logger.info(f"Generating report for {symbol}...") # Method 1: Generate formatted report text report_text = data_provider.generate_trading_report(symbol) if report_text: print(f"\n{'='*80}") print(f"TRADING REPORT FOR {symbol}") print(f"{'='*80}") print(report_text) print(f"{'='*80}") else: logger.error(f"Failed to generate report for {symbol}") # Method 2: Get raw report data for analysis logger.info("Getting raw report data for analysis...") report_data = data_provider.crawl_comprehensive_report('BTC/USDT') if report_data: print(f"\nRaw Data Analysis for BTC/USDT:") print(f"- Current Price: ${report_data.current_price:,.2f}") print(f"- EMA20: ${report_data.current_ema20:,.2f}") print(f"- MACD: {report_data.current_macd:.3f}") print(f"- RSI (7): {report_data.current_rsi_7:.1f}") print(f"- Open Interest: {report_data.open_interest_latest:,.0f}") print(f"- Funding Rate: {report_data.funding_rate:.2e}") print(f"- Price Trend: {len(report_data.mid_prices)} data points") # Method 3: Batch processing multiple pairs logger.info("Batch processing multiple pairs...") results = data_provider.get_report_data_for_multiple_pairs(symbols) print(f"\nBatch Results:") for symbol, data in results.items(): if data: print(f"āœ… {symbol}: ${data.current_price:,.2f} (RSI: {data.current_rsi_7:.1f})") else: print(f"āŒ {symbol}: Failed to get data") return True except Exception as e: logger.error(f"Example failed with error: {e}") import traceback traceback.print_exc() return False def main(): """Main example function""" logger.info("Report Data Crawler Usage Example") logger.info(f"Started at: {datetime.now()}") success = generate_reports_example() if success: logger.info("Example completed successfully!") print("\nšŸŽ‰ Report Data Crawler is ready for use!") print("\nUsage:") print("1. data_provider.generate_trading_report('BTC/USDT') - Get formatted report") print("2. data_provider.crawl_comprehensive_report('BTC/USDT') - Get raw data") print("3. data_provider.get_report_data_for_multiple_pairs(['BTC/USDT', 'ETH/USDT']) - Batch processing") else: logger.error("Example failed!") sys.exit(1) if __name__ == "__main__": main()