import os os.environ["SMC_CREDIT"] = "0" import asyncio 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() engine = ICTEngine() mtf = MultiTimeframeAnalyzer(engine) confluence = ConfluenceChecker() sg = SignalGenerator(engine, mtf, confluence, EntryRules(), ExitRules()) syms = ["BTC/USDT", "ETH/USDT", "FET/USDT", "ADA/USDT", "SOL/USDT", "MATIC/USDT", "DOT/USDT", "AVAX/USDT", "LINK/USDT", "DOGE/USDT"] for sym in syms: await feed.fetch_multi_timeframe(sym) try: signal = await sg.generate(sym, feed) if signal: print("TRADE SIGNAL: %s %s @ $%.4f | SL=$%.4f TP=$%.4f | RR=%.2f | conf=%d | reasons=%s" % ( signal.direction.value, signal.symbol, signal.entry_price, signal.stop_loss, signal.take_profit, signal.risk_reward_ratio, signal.confidence, signal.reasons)) else: print("%s: No signal" % sym) except Exception as e: print("%s: Error - %s" % (sym, e)) await client.disconnect() asyncio.run(test())