44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
|
|
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())
|