trading.ai/docs/MARKET_SCANNER_DOCKER.md
2025-10-01 09:58:52 +08:00

4.7 KiB

市场扫描Docker定时任务配置

概述

本文档描述如何使用Docker容器定时执行main.py market 200命令进行股票市场扫描分析。

服务组件

1. 市场扫描服务 (trading-market-scanner)

  • 容器名称: trading-ai-market-scanner
  • 功能: 定时执行股票市场扫描和K线形态分析
  • 扫描对象: 同花顺热榜前N只股票
  • 通知: 支持钉钉webhook通知

2. 主要文件

  • market_scanner.py - 市场扫描脚本
  • start_market_scanner.sh - 容器启动脚本
  • crontab/market-scanner - 定时任务配置
  • docker-compose.yml - Docker编排配置

定时任务配置

默认调度计划

# 每个工作日开盘前扫描 (09:00) - 200只股票
0 9 * * 1-5 cd /app && python market_scanner.py 200

# 每个工作日午休时间扫描 (12:30) - 100只股票
30 12 * * 1-5 cd /app && python market_scanner.py 100

# 每个工作日收盘后扫描 (15:30) - 200只股票
30 15 * * 1-5 cd /app && python market_scanner.py 200

# 每周末进行一次深度扫描 (周六 10:00) - 500只股票
0 10 * * 6 cd /app && python market_scanner.py 500

自定义调度

可通过修改 crontab/market-scanner 文件来自定义定时任务:

# 格式: 分钟 小时 日 月 星期 命令
# 每15分钟扫描一次 (交易时间内)
*/15 9-15 * * 1-5 cd /app && python market_scanner.py 50

# 每小时扫描一次
0 * * * * cd /app && python market_scanner.py 100

环境变量配置

必要配置

变量名 默认值 说明
MARKET_SCAN_STOCKS 200 扫描的股票数量
LOG_LEVEL INFO 日志级别
MYSQL_HOST - MySQL主机地址
MYSQL_PORT 26558 MySQL端口
MYSQL_USER root MySQL用户名
MYSQL_PASSWORD - MySQL密码
MYSQL_DATABASE tradingai 数据库名

可选配置

变量名 说明
DINGTALK_WEBHOOK_URL 钉钉通知webhook地址

部署步骤

1. 环境配置

复制并编辑环境变量文件:

cp .env.example .env
# 编辑 .env 文件,配置数据库连接和扫描参数

2. 启动服务

# 启动市场扫描服务
docker-compose up -d trading-market-scanner

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f trading-market-scanner

3. 验证部署

# 查看容器状态
docker ps | grep trading-ai-market-scanner

# 查看定时任务配置
docker exec trading-ai-market-scanner cat /etc/cron.d/market-scanner

# 查看扫描日志
docker exec trading-ai-market-scanner tail -f /app/logs/market_scanner.log

日志管理

日志文件位置

  • /app/logs/market_scanner.log - 市场扫描日志
  • /app/logs/cron.log - Cron执行日志
  • /app/logs/scanner_startup.log - 服务启动日志

日志轮转

  • 日志文件按日轮转
  • 保留30天历史日志
  • 自动压缩旧日志文件

监控和运维

健康检查

服务包含自动重启机制,如果进程异常退出会自动重启。

手动执行扫描

# 进入容器手动执行扫描
docker exec -it trading-ai-market-scanner python market_scanner.py 100

# 查看扫描结果
docker exec trading-ai-market-scanner tail -20 /app/logs/market_scanner.log

修改定时任务

  1. 编辑 crontab/market-scanner 文件
  2. 重启容器使配置生效:
docker-compose restart trading-market-scanner

调试模式

设置更详细的日志级别:

# 在 .env 文件中设置
LOG_LEVEL=DEBUG

# 重启服务
docker-compose restart trading-market-scanner

注意事项

  1. 时区设置: 容器使用 Asia/Shanghai 时区
  2. 资源消耗: 扫描大量股票会消耗较多CPU和内存
  3. 网络依赖: 需要稳定的网络连接访问股票数据API
  4. 数据库连接: 确保MySQL数据库可正常连接
  5. 存储空间: 定期清理日志文件避免磁盘空间不足

故障排除

常见问题

  1. 容器启动失败

    # 查看启动日志
    docker-compose logs trading-market-scanner
    
  2. 定时任务不执行

    # 检查cron服务状态
    docker exec trading-ai-market-scanner service cron status
    
    # 查看cron日志
    docker exec trading-ai-market-scanner tail -f /app/logs/cron.log
    
  3. 数据库连接失败

    # 检查环境变量配置
    docker exec trading-ai-market-scanner env | grep MYSQL
    
  4. 内存不足

    # 减少扫描股票数量
    MARKET_SCAN_STOCKS=50
    

性能优化

  1. 根据服务器性能调整扫描频率和股票数量
  2. 设置合理的日志级别避免过多日志输出
  3. 定期清理历史数据和日志文件
  4. 监控服务器资源使用情况