import asyncio import logging import os import sys # Add src to path sys.path.append(os.path.join(os.path.dirname(__file__), '..')) from src.data_collector.database import DatabaseManager from src.data_collector.custom_timeframe_generator import CustomTimeframeGenerator # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) async def main(): logger.info("Starting custom timeframe generation...") # DB connection settings from env or defaults db_host = os.getenv('DB_HOST', 'localhost') db_port = int(os.getenv('DB_PORT', 5432)) db_name = os.getenv('DB_NAME', 'btc_data') db_user = os.getenv('DB_USER', 'btc_bot') db_password = os.getenv('DB_PASSWORD', '') db = DatabaseManager( host=db_host, port=db_port, database=db_name, user=db_user, password=db_password ) await db.connect() try: generator = CustomTimeframeGenerator(db) await generator.initialize() # Generate 37m from 1m logger.info("Generating 37m candles from 1m data...") count_37m = await generator.generate_historical('37m') logger.info(f"Generated {count_37m} candles for 37m") # Generate 148m from 37m # Note: 148m generation relies on 37m data existing logger.info("Generating 148m candles from 37m data...") count_148m = await generator.generate_historical('148m') logger.info(f"Generated {count_148m} candles for 148m") logger.info("Done!") except Exception as e: logger.error(f"Error generating custom timeframes: {e}") import traceback traceback.print_exc() finally: await db.disconnect() if __name__ == "__main__": asyncio.run(main())