Files

Strategy Manager - 策略管理系统

项目概述

Strategy Manager 是一个用于批量管理交易策略的 Python 系统,支持命令行和 Web 界面两种操作方式。该系统通过进程管理的方式实现策略的启动、停止、重启,以及白名单自动启动等核心功能。

核心特性

  • 多策略管理:支持同时管理多个交易策略,统一监控运行状态
  • 进程隔离:每个策略运行在独立子进程中,互不影响
  • 白名单机制:支持设置期望自动启动的策略列表
  • 定时任务:内置定时重启和白名单自动启动功能
  • 双接口支持提供命令行CLI和 Web API 两种操作方式
  • 日志管理:自动为每个策略生成专属日志文件
  • 状态持久化:策略状态自动保存到 JSON 文件,重启后可恢复
  • Git 版本追踪Web 界面实时显示当前 Git 提交版本信息

功能概览

功能类别 具体功能 说明
策略生命周期管理 启动/停止/重启 支持单个策略和批量操作
进程监控 实时检测策略运行状态
优雅终止 超时后强制kill避免僵尸进程
白名单系统 添加/移除 管理自动启动策略列表
启用/禁用 灵活控制白名单策略状态
自动启动 每日定时启动白名单策略
定时任务 定时重启 每日 08:58 和 20:58 重启所有策略
白名单自动启动 每日 08:58 执行(仅一次)
状态监控 实时状态 获取所有策略运行状态
日志查看 实时查看策略日志
版本信息 显示 Git 提交版本
接口方式 CLI 命令行 完整的命令行操作支持
REST API FastAPI 构建的 Web 接口
前端界面 Vue.js 构建的可视化界面

高级特性

Git 版本信息集成

Web 后端自动获取并展示当前 Git 仓库的最新提交信息,便于版本追踪和问题排查。

# API 响应示例
{
    "timestamp": "2024-01-01T10:00:00",
    "total": 5,
    "running": 3,
    "git_info": "abc1234 - 修复日志重定向问题 (2 hours ago)",
    ...
}

前端静态文件服务

Web 后端集成了 Vue.js 构建的前端应用,提供可视化操作界面:

# 挂载前端静态文件
app.mount("/static", StaticFiles(directory="frontend/dist"), name="static")

@app.get("/")
def serve_frontend():
    return FileResponse("frontend/dist/index.html")

访问 http://localhost:8000 即可使用图形化界面管理策略。

进程守护与优雅关闭

  • 守护进程模式:策略启动时自动脱离终端会话,关闭终端不会影响策略运行
  • 优雅终止:停止策略时先发送 SIGTERM 信号,超时(默认 30 秒)后使用 SIGKILL
  • 资源清理:停止后自动清理 PID 文件和状态记录
# 启动配置
subprocess.Popen(
    [sys.executable, "launcher.py", "--config", str(config_file)],
    stdout=f,
    stderr=subprocess.STDOUT,
    stdin=devnull,  # 从 /dev/null 读取输入
    cwd=Path.cwd()
)

# 停止配置
process.terminate()  # SIGTERM
process.wait(timeout=30)  # 等待优雅终止
process.kill()  # 超时后强制终止

状态持久化

策略状态自动保存到 status.json 文件,系统重启后可恢复策略状态信息:

{
  "timestamp": "2024-01-01T10:00:00",
  "total": 5,
  "running": 3,
  "strategies": {
    "StrategyName_Symbol": {
      "strategy_name": "策略名称",
      "symbol": "交易品种",
      "status": "running",
      "pid": 12345,
      "started_at": "2024-01-01T10:00:00",
      "uptime": "00:30:00",
      "in_whitelist": true,
      "whitelist_enabled": true
    }
  }
}

目录结构

strategy_manager/
├── config/                    # 配置文件目录
│   ├── main.json             # 主配置文件
│   └── whitelist.json        # 白名单配置
├── core/                      # 核心业务模块
│   ├── manager.py            # 策略管理器
│   ├── whitelist_manager.py  # 白名单管理器
│   └── path_utils.py         # 路径工具函数
├── launcher.py               # 策略启动器
├── restart_daemon.py         # 重启守护进程
├── start.py                  # CLI 入口
├── web_backend.py            # Web 后端服务
├── frontend/                 # 前端 Vue.js 应用
│   └── dist/                 # 构建后的静态文件
├── strategies/               # 策略配置文件目录
│   └── {策略名}/
│       └── {品种}.py         # 策略配置
├── logs/                     # 日志目录(运行时生成)
└── pids/                     # PID 文件目录(运行时生成)

核心模块详解

1. StrategyManager策略管理器

文件core/manager.py

StrategyManager 是整个系统的核心类,负责策略的加载、状态管理、启动停止等操作。

主要方法

方法名 功能描述 返回值
__init__(config_path) 初始化管理器,加载配置和扫描策略 -
load_strategies() 递归扫描 strategies 目录,动态加载所有 .py 配置文件 -
get_status() 获取所有策略的运行状态,包含白名单信息 Dict[str, Any]
start_strategy(name) 启动单个策略(守护进程模式) bool
stop_strategy(name, timeout) 停止单个策略,支持优雅终止 bool
restart_strategy(name) 重启单个策略 bool
start_all() 启动所有已启用的策略 -
stop_all() 停止所有运行中的策略 -
add_to_whitelist(name) 添加策略到白名单 bool
remove_from_whitelist(name) 从白名单移除策略 bool
set_whitelist_enabled(name, enabled) 设置策略在白名单中的启用状态 bool
auto_start_whitelist_strategies() 自动启动白名单中所有未运行的策略 Dict[str, bool]

策略数据结构

每个策略的信息结构如下:

{
    "strategy_name": "策略名称",
    "symbol": "交易品种",
    "config_file": "配置文件路径",
    "config": {
        "name": "显示名称",
        "strategy_class": "策略类路径",
        "enabled": True,
        "engine_params": {...},
        "strategy_params": {...}
    },
    "status": "running" | "stopped",
    "pid": 进程ID,
    "started_at": "启动时间戳",
    "uptime": "运行时长",
    "in_whitelist": True | False,
    "whitelist_enabled": True | False
}

状态刷新机制

策略管理器采用双重验证机制确保状态准确性:

  1. PID 文件检查:检查 pids/{策略名}.pid 是否存在
  2. 进程存在验证:使用 psutil.pid_exists() 验证进程是否存活
  3. 进程名验证:确认进程是否为 Python 进程
  4. 资源清理:进程不存在时自动清理 PID 文件
def _refresh_status(self):
    """刷新进程状态 - 双重验证"""
    for name, info in self.strategies.items():
        pid_file = self.pid_dir / "{}.pid".format(name)

        if pid_file.exists():
            try:
                with open(pid_file, 'r') as f:
                    pid = int(f.read().strip())

                if psutil.pid_exists(pid):
                    try:
                        proc = psutil.Process(pid)
                        if "python" in proc.name().lower():
                            info["status"] = "running"
                            # ... 更新其他状态
                            continue
                    except (psutil.NoSuchProcess, psutil.AccessDenied):
                        pass

                self._cleanup_stopped_strategy(name, pid_file)
            except Exception as e:
                self.logger.warning("⚠️ 刷新状态失败 %s: %s", name, e)

2. WhitelistManager白名单管理器

文件core/whitelist_manager.py

WhitelistManager 负责管理白名单策略列表,实现策略的持久化和自动启动控制。

主要方法

方法名 功能描述
add(strategy_key, enabled) 添加策略到白名单
remove(strategy_key) 从白名单移除策略
set_enabled(strategy_key, enabled) 设置策略的启用状态
get_all() 获取所有白名单策略
get(strategy_key) 获取单个策略的配置
is_in_whitelist(strategy_key) 检查策略是否在白名单中
is_enabled_in_whitelist(strategy_key) 检查策略是否在白名单中且已启用
should_auto_start_today() 检查今天是否应该执行自动启动
get_auto_start_status() 获取自动启动状态信息

白名单配置结构

{
    "version": "1.0",
    "last_auto_start_date": "2024-01-01",
    "strategies": {
        "StrategyName_Symbol": {
            "enabled": True,
            "added_at": "2024-01-01T10:00:00",
            "added_by": "web"
        }
    }
}

3. PathUtils路径工具

文件core/path_utils.py

提供路径相关的工具函数,处理项目根路径和策略根路径的动态获取。

主要函数

函数名 功能描述
get_project_root() 获取项目根路径strategy_manager 的父目录)
get_strategy_root(config_path) 动态获取策略代码根路径
add_project_root_to_path() 将项目根路径添加到 sys.path
add_strategy_root_to_path() 将策略根路径添加到 sys.path

4. Launcher策略启动器

文件launcher.py

launcher.py 是策略的实际执行入口,负责通过配置文件启动单个策略。

工作流程

  1. 解析命令行参数,获取配置文件路径
  2. 动态加载配置文件(.py 文件)
  3. 配置策略专属日志logs/{策略名}/{品种}.log
  4. 重定向 print 输出到日志文件
  5. 动态加载策略类
  6. 创建 TqsdkEngine 并执行策略
  7. 处理信号实现优雅关闭

使用方式

python launcher.py --config <config_file>

5. RestartDaemon重启守护进程

文件restart_daemon.py

RestartDaemon 是一个独立的守护进程,负责定时重启所有运行中的策略。

核心特性

  • 定时重启:每日 08:50 和 20:50 自动重启所有策略
  • 进程监控:通过 PID 文件管理策略进程
  • 优雅停止:先尝试 SIGTERM 终止,超时后使用 SIGKILL
  • 自动恢复:重启后自动启动策略

工作流程

  1. 每分钟检查一次当前时间
  2. 到达重启时间点时,扫描所有 PID 文件
  3. 停止所有运行中的策略进程
  4. 等待资源释放2秒
  5. 根据 PID 文件名推导配置路径
  6. 重新启动所有策略

6. Start命令行入口

文件start.py

提供命令行界面CLI操作策略。

支持的命令

命令 功能 示例
status 查看所有策略状态 python start.py status
start --all 启动所有策略 python start.py start --all
start -n <name> 启动单个策略 python start.py start -n DualModeTrendlineHawkesStrategy2_FG
stop -n <name> 停止单个策略 python start.py stop -n DualModeTrendlineHawkesStrategy2_FG
restart -n <name> 重启单个策略 python start.py restart -n DualModeTrendlineHawkesStrategy2_FG
logs -n <name> 查看策略日志 python start.py logs -n DualModeTrendlineHawkesStrategy2_FG -t 50
whitelist 查看白名单 python start.py whitelist
whitelist add -n <name> 添加到白名单 python start.py whitelist add -n DualModeTrendlineHawkesStrategy2_FG
whitelist remove -n <name> 从白名单移除 python start.py whitelist remove -n DualModeTrendlineHawkesStrategy2_FG
whitelist enable -n <name> 启用白名单策略 python start.py whitelist enable -n DualModeTrendlineHawkesStrategy2_FG
whitelist disable -n <name> 禁用白名单策略 python start.py whitelist disable -n DualModeTrendlineHawkesStrategy2_FG
whitelist auto-start 手动触发自动启动 python start.py whitelist auto-start

7. Web BackendWeb 后端)

文件web_backend.py

基于 FastAPI 构建的 Web 后端服务,提供 RESTful API 接口和可视化前端。

定时任务

任务 执行时间 功能 说明
scheduled_restart_task 08:58, 20:58 重启所有运行中的策略 使用 CronTrigger
scheduled_whitelist_auto_start 08:58 自动启动白名单中的策略 每天仅执行一次

API 接口

策略管理接口
方法 路径 功能 请求参数 响应示例
GET /api/status 获取所有策略状态 详见下方
POST /api/strategy/{name}/start 启动策略 name: 策略标识符 {"success": true}
POST /api/strategy/{name}/stop 停止策略 name: 策略标识符 {"success": true}
POST /api/strategy/{name}/restart 重启策略 name: 策略标识符 {"success": true}
GET /api/logs/{name} 获取策略日志 name: 策略标识符, lines: 行数(默认50) {"lines": [...]}
白名单管理接口
方法 路径 功能 请求参数 响应示例
GET /api/whitelist 获取白名单列表 详见下方
POST /api/whitelist/{name}/add 添加策略到白名单 name: 策略标识符 {"success": true, "message": "..."}
POST /api/whitelist/{name}/remove 从白名单移除策略 name: 策略标识符 {"success": true, "message": "..."}
POST /api/whitelist/{name}/enable 启用白名单中的策略 name: 策略标识符 {"success": true, "message": "..."}
POST /api/whitelist/{name}/disable 禁用白名单中的策略 name: 策略标识符 {"success": true, "message": "..."}
POST /api/whitelist/auto-start 手动触发白名单自动启动 详见下方

API 响应示例

GET /api/status 响应:

{
  "timestamp": "2024-01-01T10:00:00",
  "total": 5,
  "running": 3,
  "whitelist_auto_start_today": true,
  "whitelist_last_date": "2024-01-01",
  "whitelist_total": 2,
  "whitelist_enabled": 2,
  "git_info": "abc1234 - 修复日志重定向问题 (2 hours ago)",
  "strategies": {
    "DualModeTrendlineHawkesStrategy2_FG": {
      "strategy_name": "DualModeTrendlineHawkesStrategy2",
      "symbol": "FG",
      "config_file": "strategies/dual_mode_trendline_hawkes/FG.py",
      "status": "running",
      "pid": 12345,
      "started_at": "2024-01-01T09:30:00",
      "uptime": "00:30:00",
      "in_whitelist": true,
      "whitelist_enabled": true,
      "config": {...}
    }
  }
}

GET /api/whitelist 响应:

{
  "whitelist": {
    "DualModeTrendlineHawkesStrategy2_FG": {
      "enabled": true,
      "added_at": "2024-01-01T10:00:00",
      "added_by": "web"
    }
  },
  "auto_start_status": {
    "should_auto_start": true,
    "last_auto_start_date": "2024-01-01",
    "whitelist_count": 2,
    "enabled_count": 2
  }
}

POST /api/whitelist/auto-start 响应:

{
  "success": true,
  "results": {
    "StrategyName_Symbol": true,
    "AnotherStrategy_RB": false
  },
  "count": 2,
  "success_count": 1,
  "fail_count": 1
}

Git 版本信息

Web 后端自动获取 Git 仓库的最新提交信息,返回格式:

{git_commit_hash} - {commit_message} ({relative_time})

示例:abc1234 - 修复日志重定向问题 (2 hours ago)

此功能便于在 Web 界面快速确认当前部署的代码版本。

前端集成

Web 后端集成了 Vue.js 构建的前端应用:

# 静态文件挂载
app.mount("/static", StaticFiles(directory="frontend/dist"), name="static")

# SPA 路由支持
@app.get("/")
def serve_frontend():
    return FileResponse("frontend/dist/index.html")

访问 http://localhost:8000 可使用可视化界面,包括:

  • 策略状态总览
  • 一键启动/停止/重启
  • 日志实时查看
  • 白名单管理
  • Git 版本信息显示

依赖说明

Python 依赖

fastapi>=0.100.0
uvicorn>=0.22.0
apscheduler>=3.10.0
psutil>=5.9.0

依赖说明

依赖包 用途
fastapi Web 后端框架,提供 RESTful API
uvicorn ASGI 服务器,用于运行 FastAPI 应用
apscheduler 定时任务调度器,支持 CronTrigger
psutil 进程监控获取进程状态和PID信息

安装依赖

pip install -r requirements.txt

故障排查

常见问题

1. 策略启动失败

症状:调用 /api/strategy/{name}/start 返回失败

排查步骤

  1. 检查策略配置文件是否存在:strategies/{策略名}/{品种}.py
  2. 查看管理器日志:logs/manager.log
  3. 检查策略专属日志:logs/{策略名}/{品种}.log
  4. 确认配置文件包含正确的 CONFIG 变量

常见原因

  • 策略配置文件路径错误
  • CONFIG 变量定义不正确
  • 策略类路径不存在
  • 端口被占用(如果是网络相关错误)

2. 策略状态不正确

症状:策略显示已停止但实际在运行,或相反

排查步骤

  1. 检查 PID 文件:pids/{策略名}.pid
  2. 验证进程是否存在:ps aux | grep python
  3. 查看状态刷新日志

解决方案

# 查看进程
ps aux | grep python

# 查看 PID 文件
cat pids/StrategyName_Symbol.pid

# 手动清理僵尸进程
kill -9 <pid>

3. 白名单自动启动未执行

症状:每日 08:58 白名单策略未自动启动

排查步骤

  1. 检查 Web 服务是否运行
  2. 查看调度器日志
  3. 确认白名单配置:config/whitelist.json
  4. 检查今日是否已执行

解决方案

# 手动触发自动启动
python start.py whitelist auto-start

# 检查白名单状态
python start.py whitelist list

4. 端口被占用

症状Web 服务启动失败,端口 8000 已被占用

解决方案

# 查看占用端口的进程
netstat -ano | findstr :8000

# 终止占用进程
taskkill /PID <pid> /F

# 或使用其他端口启动
uvicorn web_backend:app --host 0.0.0.0 --port 8001

5. 日志文件不生成

症状:策略日志文件未创建

排查步骤

  1. 检查日志目录权限
  2. 确认 logs 目录存在
  3. 查看 launch.py 日志配置

解决方案

# 手动创建日志目录
mkdir -p logs

# 检查目录权限
ls -la logs/

日志级别配置

默认日志级别为 INFO可通过环境变量调整

# 设置调试日志
export LOG_LEVEL=DEBUG

# Windows
set LOG_LEVEL=DEBUG

性能监控

查看系统资源

# CPU 和内存使用
top

# 进程详细信息
ps -p <pid> -o %cpu,%mem,etime

策略进程监控

# 查看所有策略进程
ps aux | grep launcher.py

# 查看特定策略
ps aux | grep FG2305

最佳实践

1. 策略配置

  • 为每个策略创建独立的配置文件
  • 使用有意义的策略名称
  • 合理设置 enabled 状态

2. 白名单管理

  • 仅将需要长期运行的策略加入白名单
  • 定期检查白名单策略状态
  • 禁用不再使用的策略而非直接移除

3. 定时任务

  • 定时重启时间建议设置在交易时段外
  • 白名单自动启动建议在开市前执行
  • 监控重启任务的执行日志

4. 日志管理

  • 定期清理过期日志文件
  • 使用日志聚合工具(如 ELK进行集中管理
  • 设置合适的日志级别减少磁盘占用

5. 进程监控

  • 定期检查策略运行状态
  • 设置告警机制(如进程异常停止时发送通知)
  • 监控服务器资源使用情况

配置文件

主配置文件config/main.json

主配置文件位于 config/main.json,控制策略管理器的核心行为:

{
  "strategy_root": "AUTO_DETECT",
  "logs_dir": "logs",
  "status_file": "status.json",
  "pid_dir": "pids"
}
配置项 说明 默认值 允许值
strategy_root 策略代码根路径 AUTO_DETECT 目录路径或 "AUTO_DETECT"
logs_dir 日志目录 logs 目录路径
status_file 状态文件 status.json 文件路径
pid_dir PID 文件目录 pids 目录路径

strategy_root 说明

  • AUTO_DETECT(推荐):自动检测策略根目录,扫描 strategies/ 目录下的所有 .py 文件
  • 自定义路径:指定具体的策略目录路径,例如 "D:/trading_strategies"

白名单配置config/whitelist.json

白名单配置位于 config/whitelist.json,管理自动启动的策略列表:

{
  "version": "1.0",
  "last_auto_start_date": null,
  "strategies": {
    "StrategyName_Symbol": {
      "enabled": true,
      "added_at": "2024-01-01T10:00:00",
      "added_by": "web"
    }
  }
}
字段 类型 说明
version string 配置版本号
last_auto_start_date string | null 上次自动启动日期ISO 格式
strategies object 策略配置字典
strategies.{key}.enabled boolean 是否启用自动启动
strategies.{key}.added_at string 添加时间
strategies.{key}.added_by string 添加方式web/cli

策略配置文件strategies/{策略名}/{品种}.py

策略配置文件定义单个策略的运行参数,位于 strategies/{策略名}/{品种}.py

from src.strategies.dual_mode_trendline_hawkes import DualModeTrendlineHawkesStrategy2

CONFIG = {
    "name": "双模趋势线霍克斯策略2",
    "strategy_class": "strategies.dual_mode_trendline_hawkes.DualModeTrendlineHawkesStrategy2",
    "enabled": True,
    "engine_params": {
        "symbol": "FG2305",
        "duration_seconds": 0.5,
        "roll_over_mode": "daily",
        "history_length": 120,
        "close_bar_delta": 1
    },
    "strategy_params": {
        # 策略参数...
    }
}

策略配置字段说明

字段 类型 必填 说明
name string 策略显示名称
strategy_class string 策略类路径import 路径)
enabled boolean 是否启用该策略
engine_params object 引擎参数
engine_params.symbol string 交易品种代码
engine_params.duration_seconds number K线周期
engine_params.roll_over_mode string 展期模式
engine_params.history_length number 历史K线数量
engine_params.close_bar_delta number 收盘K线增量
strategy_params object 策略具体参数

使用指南

快速开始

  1. 启动 Web 服务(推荐)
cd strategy_manager
python start.py

Web 服务将在 http://localhost:8000 启动。

  1. 使用命令行管理策略
# 查看所有策略状态
python start.py status

# 启动所有策略
python start.py start --all

# 启动单个策略
python start.py start -n StrategyName_Symbol

# 停止单个策略
python start.py stop -n StrategyName_Symbol
  1. 启动重启守护进程
python restart_daemon.py

白名单管理

  1. 添加策略到白名单
python start.py whitelist add -n StrategyName_Symbol
  1. 启用/禁用白名单中的策略
# 启用
python start.py whitelist enable -n StrategyName_Symbol

# 禁用
python start.py whitelist disable -n StrategyName_Symbol
  1. 手动触发自动启动
python start.py whitelist auto-start

查看日志

# 查看最近50行日志
python start.py logs -n StrategyName_Symbol -t 50

架构设计

进程模型

┌─────────────────────────────────────────────────────────┐
│                    Strategy Manager                      │
├─────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐      │
│  │  Strategy1  │  │  Strategy2  │  │  StrategyN  │      │
│  │  (subprocess)│  │  (subprocess)│  │  (subprocess)│  │
│  └─────────────┘  └─────────────┘  └─────────────┘      │
└─────────────────────────────────────────────────────────┘

数据流向

配置文件 (.py)
     │
     ▼
┌──────────────────┐
│  StrategyManager │◄──── WhitelistManager
│    load_strategies()│
└────────┬─────────┘
         │
         ▼
┌──────────────────┐
│   状态管理       │──► status.json
│   (psutil)       │
└────────┬─────────┘
         │
         ▼
┌──────────────────┐
│   子进程管理     │──► launcher.py
│   (subprocess)   │──► pids/*.pid
└──────────────────┘

模块依赖关系

start.py
    │
    ├──► core/manager.py
    │         │
    │         ├──► core/whitelist_manager.py
    │         └──► core/path_utils.py
    │
    ├──► web_backend.py
    │         │
    │         └──► core/manager.py
    │
    └──► launcher.py
              │
              └──► core/path_utils.py

restart_daemon.py
    │
    └──► launcher.py

日志系统

日志目录结构

logs/
├── manager.log           # 策略管理器日志
├── restart_daemon.log    # 重启守护进程日志
└── {策略名}/
    └── {品种}.log        # 策略专属日志

日志格式

2024-01-01 10:00:00,000 [INFO] [策略名称] 正在启动...
2024-01-01 10:00:00,001 [INFO] 日志文件: logs/StrategyName/Symbol.log

注意事项

  1. 进程独立性:每个策略运行在独立子进程中,关闭终端不会影响策略运行
  2. 白名单限制自动启动每天只执行一次08:58
  3. 定时重启:每日 08:50 和 20:50 自动重启所有策略(由 restart_daemon.py 执行)
  4. 配置路径:策略配置文件需放在 strategies/{策略名}/{品种}.py
  5. 日志重定向:策略内的 print 语句会自动写入日志文件

扩展开发

添加新的策略

  1. strategies/ 目录下创建策略目录
  2. 编写策略配置文件 {品种}.py
  3. 定义 CONFIG 变量
  4. 策略将自动被加载

添加新的 API 接口

web_backend.py 中添加新的路由:

@app.get("/api/new-endpoint")
def new_endpoint():
    # 实现逻辑
    return {"result": "data"}

自定义定时任务

web_backend.pylifespan 函数中添加:

scheduler.add_job(
    your_task_function,
    CronTrigger(hour=XX, minute=XX),
    id="your_task_id",
    replace_existing=True
)

快速参考

常用命令速查

操作 CLI 命令 API 调用
查看状态 python start.py status GET /api/status
启动所有 python start.py start --all -
启动单个 python start.py start -n <name> POST /api/strategy/{name}/start
停止单个 python start.py stop -n <name> POST /api/strategy/{name}/stop
重启单个 python start.py restart -n <name> POST /api/strategy/{name}/restart
查看日志 python start.py logs -n <name> -t 50 GET /api/logs/{name}?lines=50
查看白名单 python start.py whitelist list GET /api/whitelist
添加白名单 python start.py whitelist add -n <name> POST /api/whitelist/{name}/add
移除白名单 python start.py whitelist remove -n <name> POST /api/whitelist/{name}/remove
手动触发启动 python start.py whitelist auto-start POST /api/whitelist/auto-start

定时任务时间表

任务 执行时间 说明
白名单自动启动 每日 08:58 仅执行一次
策略定时重启 每日 08:58, 20:58 重启所有运行中的策略

文件路径速查

用途 路径
主配置 config/main.json
白名单配置 config/whitelist.json
管理器日志 logs/manager.log
策略日志 logs/{策略名}/{品种}.log
PID 文件 pids/{策略名}.pid
状态文件 status.json
策略配置 strategies/{策略名}/{品种}.py

端口与服务

服务 地址 说明
Web 服务 http://localhost:8000 FastAPI 后端 + Vue.js 前端
API 基础路径 /api RESTful API 根路径
静态资源 /static 前端静态资源

策略标识符格式

策略标识符由策略名和品种组合而成,格式为:{策略名}_{品种}

示例:DualModeTrendlineHawkesStrategy2_FG

获取策略标识符:

# 通过 CLI 查看
python start.py status

# 通过 API 获取
curl http://localhost:8000/api/status