version: '3.8' services: # Signal Generator Scheduler - 定时生成交易信号 scheduler: build: context: . dockerfile: Dockerfile container_name: tradus-scheduler command: python -u scheduler.py env_file: .env volumes: - ./output:/app/output # 输出信号文件 environment: # Symbol Configuration - 多币种支持 - SYMBOLS=BTCUSDT,ETHUSDT - SYMBOL=BTCUSDT # 向后兼容 # Signal generation interval - SIGNAL_INTERVAL_MINUTES=15 # 每15分钟生成一次信号 # Volatility trigger - 波动率触发 - ENABLE_VOLATILITY_TRIGGER=true - VOLATILITY_THRESHOLD=1.0 # 1% 阈值 (原0.5%太敏感) - VOLATILITY_COOLDOWN_MINUTES=5 # 5分钟冷却 (原3分钟太短) # Note: LLM API and DingTalk configs are loaded from .env file - LOG_LEVEL=INFO networks: - tradus-network restart: unless-stopped logging: driver: "json-file" options: max-size: "10m" max-file: "3" # Paper Trading - 模拟盘交易 paper-trading: build: context: . dockerfile: Dockerfile container_name: tradus-paper-trading command: python -u -m trading.realtime_trader env_file: .env volumes: - ./output:/app/output # 共享信号文件和交易状态 environment: # Symbol Configuration - 多币种支持 - SYMBOLS=BTCUSDT,ETHUSDT - SYMBOL=BTCUSDT # 向后兼容 - LOG_LEVEL=INFO depends_on: - scheduler networks: - tradus-network restart: unless-stopped logging: driver: "json-file" options: max-size: "10m" max-file: "3" # Web Dashboard - 模拟盘状态展示 dashboard: build: context: . dockerfile: Dockerfile container_name: tradus-dashboard command: python -m uvicorn web.api:app --host 0.0.0.0 --port 8000 env_file: .env volumes: - ./output:/app/output # 共享交易状态文件 ports: - "18080:8000" # 使用18080端口避免冲突 environment: # Symbol Configuration - 多币种支持 - SYMBOLS=BTCUSDT,ETHUSDT - SYMBOL=BTCUSDT # 向后兼容 - LOG_LEVEL=INFO depends_on: - paper-trading networks: - tradus-network restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/status')"] interval: 30s timeout: 10s retries: 3 start_period: 10s logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: tradus-network: driver: bridge