Files
crypto_news/test_run.py

44 lines
1.5 KiB
Python
Raw Normal View History

2026-03-20 07:49:42 +09:00
"""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())