"""Quick test of signal generation pipeline.""" import os, asyncio os.environ['SMC_CREDIT'] = '0' os.environ['SANDBOX_MODE'] = 'true' os.environ['PYTHONIOENCODING'] = 'utf-8' from execution.paper_exchange import PaperExchangeClient from core.data_feed import DataFeed from indicators.ict_engine import ICTEngine from indicators.multi_timeframe import MultiTimeframeAnalyzer from indicators.confluence import ConfluenceChecker from strategy.signal_generator import SignalGenerator from strategy.entry_rules import EntryRules from strategy.exit_rules import ExitRules async def test(): client = PaperExchangeClient(300) await client.connect() feed = DataFeed(client) await feed.connect() await feed.fetch_multi_timeframe('BTC/USDT') engine = ICTEngine() mtf = MultiTimeframeAnalyzer(engine) confluence = ConfluenceChecker() sg = SignalGenerator(engine, mtf, confluence, EntryRules(), ExitRules()) try: signal = await sg.generate('BTC/USDT', feed) if signal: print(f'SIGNAL: {signal.direction.value} {signal.symbol} @ ${signal.entry_price:,.2f}') print(f' SL: ${signal.stop_loss:,.2f} | TP: ${signal.take_profit:,.2f}') print(f' R:R = {signal.risk_reward_ratio:.2f} | Confidence: {signal.confidence}/6') print(f' Reasons: {signal.reasons}') else: print('No signal generated (market conditions not met)') except Exception as e: import traceback traceback.print_exc() await client.disconnect() asyncio.run(test())