Files
gogo2/examples/report_crawler_example.py
2025-10-20 11:16:27 +03:00

108 lines
3.7 KiB
Python

#!/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()