unified cache. LLM report
This commit is contained in:
107
examples/report_crawler_example.py
Normal file
107
examples/report_crawler_example.py
Normal file
@@ -0,0 +1,107 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user